1jQuery(window).on('load', function() { 2 initOpenClose(); 3 initFitVids(); 4 initCustomForms(); 5 initSlickCarousel(); 6 initDotDotDot(); 7}); 8 9 10// open-close init 11function initOpenClose() { 12 ResponsiveHelper.addRange({ 13 '..1023': { 14 on: function() { 15 jQuery('.open-close').openClose({ 16 activeClass: 'outer-active', 17 opener: '.outer-opener', 18 slider: '.outer-slide', 19 animSpeed: 400, 20 effect: 'slide' 21 }); 22 }, 23 off: function() { 24 jQuery('.open-close').openClose('destroy'); 25 } 26 } 27 }); 28 29 jQuery('.inner-open-close').openClose({ 30 activeClass: 'inner-active', 31 opener: '.inner-opener', 32 slider: '.inner-slide', 33 activeClass: 'active', 34 animSpeed: 400, 35 effect: 'none', 36 37 onInit: function(self) { 38 var items = self.holder.find('.sidebar-menu li'); 39 var instance = self.holder.data('OpenClose'); 40 41 items.each( function() { 42 var item = jQuery(this); 43 44 45 if(item.hasClass(self.options.activeClass) && !(self.holder.hasClass(self.options.activeClass))) { 46 self.showSlide(); 47 } 48 }); 49 50 } 51 }); 52} 53 54// handle flexible video size 55function initFitVids() { 56 jQuery('.video-holder').fitVids(); 57} 58 59// initialize custom form elements 60function initCustomForms() { 61 jcf.setOptions('Select', { 62 wrapNative: false, 63 multipleCompactStyle: true 64 }); 65 jcf.replaceAll(); 66} 67 68// slick init 69function initSlickCarousel() { 70 jQuery('.news-slider').slick({ 71 slidesToScroll: 1, 72 slidesToShow: 3, 73 prevArrow: '<button class="slick-prev icon-arrow-left"></button>', 74 nextArrow: '<button class="slick-next icon-arrow-right"></button>', 75 pauseOnHover: false, 76 responsive: [ 77 { 78 breakpoint: 768, 79 settings: { 80 slidesToShow: 2 81 } 82 }, 83 { 84 breakpoint: 600, 85 settings: { 86 slidesToShow: 1 87 } 88 } 89 ] 90 }); 91} 92 93function initDotDotDot(){ 94 jQuery('.news-content').each(function(){ 95 var block = jQuery(this); 96 var lineHeight = parseInt(block.css('line-height'), 10); 97 var rowQuantity = 3; 98 99 block.dotdotdot({ 100 height : lineHeight * rowQuantity, 101 after: 'a.read-more' 102 }); 103 }); 104} 105 106/* 107 * jQuery Open/Close plugin 108 */ 109 ;(function($) { 110 function OpenClose(options) { 111 this.options = $.extend({ 112 addClassBeforeAnimation: true, 113 hideOnClickOutside: false, 114 activeClass: 'active', 115 opener: '.opener', 116 slider: '.slide', 117 animSpeed: 400, 118 effect: 'fade', 119 event: 'click' 120 }, options); 121 this.init(); 122 } 123 OpenClose.prototype = { 124 init: function() { 125 if (this.options.holder) { 126 this.findElements(); 127 this.attachEvents(); 128 this.makeCallback('onInit', this); 129 } 130 }, 131 findElements: function() { 132 this.holder = $(this.options.holder); 133 this.opener = this.holder.find(this.options.opener); 134 this.slider = this.holder.find(this.options.slider); 135 }, 136 attachEvents: function() { 137 // add handler 138 var self = this; 139 this.eventHandler = function(e) { 140 e.preventDefault(); 141 if (self.slider.hasClass(slideHiddenClass)) { 142 self.showSlide(); 143 } else { 144 self.hideSlide(); 145 } 146 }; 147 self.opener.on(self.options.event, this.eventHandler); 148 149 // hover mode handler 150 if (self.options.event === 'hover') { 151 self.opener.on('mouseenter', function() { 152 if (!self.holder.hasClass(self.options.activeClass)) { 153 self.showSlide(); 154 } 155 }); 156 self.holder.on('mouseleave', function() { 157 self.hideSlide(); 158 }); 159 } 160 161 // outside click handler 162 self.outsideClickHandler = function(e) { 163 if (self.options.hideOnClickOutside) { 164 var target = $(e.target); 165 if (!target.is(self.holder) && !target.closest(self.holder).length) { 166 self.hideSlide(); 167 } 168 } 169 }; 170 171 // set initial styles 172 if (this.holder.hasClass(this.options.activeClass)) { 173 $(document).on('click touchstart', self.outsideClickHandler); 174 } else { 175 this.slider.addClass(slideHiddenClass); 176 } 177 }, 178 showSlide: function() { 179 var self = this; 180 if (self.options.addClassBeforeAnimation) { 181 self.holder.addClass(self.options.activeClass); 182 } 183 self.slider.removeClass(slideHiddenClass); 184 $(document).on('click touchstart', self.outsideClickHandler); 185 186 self.makeCallback('animStart', true); 187 toggleEffects[self.options.effect].show({ 188 box: self.slider, 189 speed: self.options.animSpeed, 190 complete: function() { 191 if (!self.options.addClassBeforeAnimation) { 192 self.holder.addClass(self.options.activeClass); 193 } 194 self.makeCallback('animEnd', true); 195 } 196 }); 197 }, 198 hideSlide: function() { 199 var self = this; 200 if (self.options.addClassBeforeAnimation) { 201 self.holder.removeClass(self.options.activeClass); 202 } 203 $(document).off('click touchstart', self.outsideClickHandler); 204 205 self.makeCallback('animStart', false); 206 toggleEffects[self.options.effect].hide({ 207 box: self.slider, 208 speed: self.options.animSpeed, 209 complete: function() { 210 if (!self.options.addClassBeforeAnimation) { 211 self.holder.removeClass(self.options.activeClass); 212 } 213 self.slider.addClass(slideHiddenClass); 214 self.makeCallback('animEnd', false); 215 } 216 }); 217 }, 218 destroy: function() { 219 this.slider.removeClass(slideHiddenClass).css({ 220 display: '' 221 }); 222 this.opener.off(this.options.event, this.eventHandler); 223 this.holder.removeClass(this.options.activeClass).removeData('OpenClose'); 224 $(document).off('click touchstart', this.outsideClickHandler); 225 }, 226 makeCallback: function(name) { 227 if (typeof this.options[name] === 'function') { 228 var args = Array.prototype.slice.call(arguments); 229 args.shift(); 230 this.options[name].apply(this, args); 231 } 232 } 233 }; 234 235 // add stylesheet for slide on DOMReady 236 var slideHiddenClass = 'js-slide-hidden'; 237 (function() { 238 var tabStyleSheet = $('<style type="text/css">')[0]; 239 var tabStyleRule = '.' + slideHiddenClass; 240 tabStyleRule += '{position:absolute !important;left:-9999px !important;top:-9999px !important;display:block !important}'; 241 if (tabStyleSheet.styleSheet) { 242 tabStyleSheet.styleSheet.cssText = tabStyleRule; 243 } else { 244 tabStyleSheet.appendChild(document.createTextNode(tabStyleRule)); 245 } 246 $('head').append(tabStyleSheet); 247 }()); 248 249 // animation effects 250 var toggleEffects = { 251 slide: { 252 show: function(o) { 253 o.box.stop(true).hide().slideDown(o.speed, o.complete); 254 }, 255 hide: function(o) {
256 o.box.stop(true).slideUp(o.speed, o.complete); 257 } 258 }, 259 fade: { 260 show: function(o) { 261 o.box.stop(true).hide().fadeIn(o.speed, o.complete); 262 }, 263 hide: function(o) { 264 o.box.stop(true).fadeOut(o.speed, o.complete); 265 } 266 }, 267 none: { 268 show: function(o) { 269 o.box.hide().show(0, o.complete); 270 }, 271 hide: function(o) { 272 o.box.hide(0, o.complete); 273 } 274 } 275 }; 276 277 // jQuery plugin interface 278 $.fn.openClose = function(opt) { 279 var args = Array.prototype.slice.call(arguments); 280 var method = args[0]; 281 282 return this.each(function() { 283 var $holder = jQuery(this); 284 var instance = $holder.data('OpenClose'); 285 286 if (typeof opt === 'object' || typeof opt === 'undefined') { 287 $holder.data('OpenClose', new OpenClose($.extend({ 288 holder: this 289 }, opt))); 290 } else if (typeof method === 'string' && instance) { 291 if (typeof instance[method] === 'function') { 292 args.shift(); 293 instance[method].apply(instance, args); 294 } 295 } 296 }); 297 }; 298}(jQuery)); 299 300/* 301 * Responsive Layout helper 302 */ 303 window.ResponsiveHelper = (function($){ 304 // init variables 305 var handlers = [], 306 prevWinWidth, 307 win = $(window), 308 nativeMatchMedia = false; 309 310 // detect match media support 311 if(window.matchMedia) { 312 if(window.Window && window.matchMedia === Window.prototype.matchMedia) { 313 nativeMatchMedia = true; 314 } else if(window.matchMedia.toString().indexOf('native') > -1) { 315 nativeMatchMedia = true; 316 } 317 } 318 319 // prepare resize handler 320 function resizeHandler() { 321 var winWidth = win.width(); 322 if(winWidth !== prevWinWidth) { 323 prevWinWidth = winWidth; 324 325 // loop through range groups 326 $.each(handlers, function(index, rangeObject){ 327 // disable current active area if needed 328 $.each(rangeObject.data, function(property, item) { 329 if(item.currentActive && !matchRange(item.range[0], item.range[1])) { 330 item.currentActive = false; 331 if(typeof item.disableCallback === 'function') { 332 item.disableCallback(); 333 } 334 } 335 }); 336 337 // enable areas that match current width 338 $.each(rangeObject.data, function(property, item) { 339 if(!item.currentActive && matchRange(item.range[0], item.range[1])) { 340 // make callback 341 item.currentActive = true; 342 if(typeof item.enableCallback === 'function') { 343 item.enableCallback(); 344 } 345 } 346 }); 347 }); 348 } 349 } 350 win.bind('load resize orientationchange', resizeHandler); 351 352 // test range 353 function matchRange(r1, r2) { 354 var mediaQueryString = ''; 355 if(r1 > 0) { 356 mediaQueryString += '(min-width: ' + r1 + 'px)'; 357 } 358 if(r2 < Infinity) { 359 mediaQueryString += (mediaQueryString ? ' and ' : '') + '(max-width: ' + r2 + 'px)'; 360 } 361 return matchQuery(mediaQueryString, r1, r2); 362 } 363 364 // media query function 365 function matchQuery(query, r1, r2) { 366 if(window.matchMedia && nativeMatchMedia) { 367 return matchMedia(query).matches; 368 } else if(window.styleMedia) { 369 return styleMedia.matchMedium(query); 370 } else if(window.media) { 371 return media.matchMedium(query); 372 } else { 373 return prevWinWidth >= r1 && prevWinWidth <= r2; 374 } 375 } 376 377 // range parser 378 function parseRange(rangeStr) { 379 var rangeData = rangeStr.split('..'); 380 var x1 = parseInt(rangeData[0], 10) || -Infinity; 381 var x2 = parseInt(rangeData[1], 10) || Infinity; 382 return [x1, x2].sort(function(a, b){ 383 return a - b; 384 }); 385 } 386 387 // export public functions 388 return { 389 addRange: function(ranges) { 390 // parse data and add items to collection 391 var result = {data:{}}; 392 $.each(ranges, function(property, data){ 393 result.data[property] = { 394 range: parseRange(property), 395 enableCallback: data.on, 396 disableCallback: data.off 397 }; 398 }); 399 handlers.push(result); 400 401 // call resizeHandler to recalculate all events 402 prevWinWidth = null; 403 resizeHandler(); 404 } 405 }; 406}(jQuery)); 407 408/*! 409 * JavaScript Custom Forms 410 * 411 * Copyright 2014-2015 PSD2HTML - http://psd2html.com/jcf 412 * Released under the MIT license (LICENSE.txt) 413 * 414 * Version: 1.1.3 415 */ 416 ;(function(root, factory) { 417 'use strict'; 418 if (typeof define === 'function' && define.amd) { 419 define(['jquery'], factory); 420 } else if (typeof exports === 'object') { 421 module.exports = factory(require('jquery')); 422 } else { 423 root.jcf = factory(jQuery); 424 } 425 }(this, function($) { 426 'use strict'; 427 428 // define version 429 var version = '1.1.3'; 430 431 // private variables 432 var customInstances = []; 433 434 // default global options 435 var commonOptions = { 436 optionsKey: 'jcf', 437 dataKey: 'jcf-instance', 438 rtlClass: 'jcf-rtl', 439 focusClass: 'jcf-focus', 440 pressedClass: 'jcf-pressed', 441 disabledClass: 'jcf-disabled', 442 hiddenClass: 'jcf-hidden', 443 resetAppearanceClass: 'jcf-reset-appearance', 444 unselectableClass: 'jcf-unselectable' 445 }; 446 447 // detect device type 448 var isTouchDevice = ('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch, 449 isWinPhoneDevice = /Windows Phone/.test(navigator.userAgent); 450 commonOptions.isMobileDevice = !!(isTouchDevice || isWinPhoneDevice); 451 452 var isIOS = /(iPad|iPhone).*OS ([0-9_]*) .*/.exec(navigator.userAgent); 453 if(isIOS) isIOS = parseFloat(isIOS[2].replace(/_/g, '.')); 454 commonOptions.ios = isIOS; 455 456 // create global stylesheet if custom forms are used 457 var createStyleSheet = function() { 458 var styleTag = $('<style>').appendTo('head'), 459 styleSheet = styleTag.prop('sheet') || styleTag.prop('styleSheet'); 460 461 // crossbrowser style handling 462 var addCSSRule = function(selector, rules, index) { 463 if (styleSheet.insertRule) { 464 styleSheet.insertRule(selector + '{' + rules + '}', index); 465 } else { 466 styleSheet.addRule(selector, rules, index); 467 } 468 }; 469 470 // add special rules 471 addCSSRule('.' + commonOptions.hiddenClass, 'position:absolute !important;left:-9999px !important;height:1px !important;width:1px !important;margin:0 !important;border-width:0 !important;-webkit-appearance:none;-moz-appearance:none;appearance:none'); 472 addCSSRule('.' + commonOptions.rtlClass + ' .' + commonOptions.hiddenClass, 'right:-9999px !important; left: auto !important'); 473 addCSSRule('.' + commonOptions.unselectableClass, '-webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-tap-highlight-color: rgba(0,0,0,0);'); 474 addCSSRule('.' + commonOptions.resetAppearanceClass, 'background: none; border: none; -webkit-appearance: none; appearance: none; opacity: 0; filter: alpha(opacity=0);'); 475 476 // detect rtl pages 477 var html = $('html'), body = $('body'); 478 if (html.css('direction') === 'rtl' || body.css('direction') === 'rtl') { 479 html.addClass(commonOptions.rtlClass); 480 } 481 482 // handle form reset event 483 html.on('reset', function() { 484 setTimeout(function() { 485 api.refreshAll(); 486 }, 0); 487 }); 488 489 // mark stylesheet as created 490 commonOptions.styleSheetCreated = true; 491 }; 492 493 // simplified pointer events handler 494 (function() { 495 var pointerEventsSupported = navigator.pointerEnabled || navigator.msPointerEnabled, 496 touchEventsSupported = ('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch, 497 eventList, eventMap = {}, eventPrefix = 'jcf-'; 498 499 // detect events to attach 500 if (pointerEventsSupported) { 501 eventList = { 502 pointerover: navigator.pointerEnabled ? 'pointerover' : 'MSPointerOver', 503 pointerdown: navigator.pointerEnabled ? 'pointerdown' : 'MSPointerDown', 504 pointermove: navigator.pointerEnabled ? 'pointermove' : 'MSPointerMove', 505 pointerup: navigator.pointerEnabled ? 'pointerup' : 'MSPointerUp' 506 }; 507 } else { 508 eventList = { 509 pointerover: 'mouseover', 510 pointerdown: 'mousedown' + (touchEventsSupported ? ' touchstart' : ''), 511 pointermove: 'mousemove' + (touchEventsSupported ? ' touchmove' : ''), 512 pointerup: 'mouseup' + (touchEventsSupported ? ' touchend' : '') 513 }; 514 } 515 516 // create event map 517 $.each(eventList, function(targetEventName, fakeEventList) { 518 $.each(fakeEventList.split(' '), function(index, fakeEventName) { 519 eventMap[fakeEventName] = targetEventName; 520 }); 521 }); 522 523 // jQuery event hooks 524 $.each(eventList, function(eventName, eventHandlers) { 525 eventHandlers = eventHandlers.split(' '); 526 $.event.special[eventPrefix + eventName] = { 527 setup: function() { 528 var self = this; 529 $.each(eventHandlers, function(index, fallbackEvent) { 530 if (self.addEventListener) self.addEventListener(fallbackEvent, fixEvent, commonOptions.isMobileDevice ? {passive: false} : false); 531 else self['on' + fallbackEvent] = fixEvent; 532 });
533 }, 534 teardown: function() { 535 var self = this; 536 $.each(eventHandlers, function(index, fallbackEvent) { 537 if (self.addEventListener) self.removeEventListener(fallbackEvent, fixEvent, commonOptions.isMobileDevice ? {passive: false} : false); 538 else self['on' + fallbackEvent] = null; 539 }); 540 } 541 }; 542 }); 543 544 // check that mouse event are not simulated by mobile browsers 545 var lastTouch = null; 546 var mouseEventSimulated = function(e) { 547 var dx = Math.abs(e.pageX - lastTouch.x), 548 dy = Math.abs(e.pageY - lastTouch.y), 549 rangeDistance = 25; 550 551 if (dx <= rangeDistance && dy <= rangeDistance) { 552 return true; 553 } 554 }; 555 556 // normalize event 557 var fixEvent = function(e) { 558 var origEvent = e || window.event, 559 touchEventData = null, 560 targetEventName = eventMap[origEvent.type]; 561 562 e = $.event.fix(origEvent); 563 e.type = eventPrefix + targetEventName; 564 565 if (origEvent.pointerType) { 566 switch (origEvent.pointerType) { 567 case 2: e.pointerType = 'touch'; break; 568 case 3: e.pointerType = 'pen'; break; 569 case 4: e.pointerType = 'mouse'; break; 570 default: e.pointerType = origEvent.pointerType; 571 } 572 } else { 573 e.pointerType = origEvent.type.substr(0, 5); // "mouse" or "touch" word length 574 } 575 576 if (!e.pageX && !e.pageY) { 577 touchEventData = origEvent.changedTouches ? origEvent.changedTouches[0] : origEvent; 578 e.pageX = touchEventData.pageX; 579 e.pageY = touchEventData.pageY; 580 } 581 582 if (origEvent.type === 'touchend') { 583 lastTouch = { x: e.pageX, y: e.pageY }; 584 } 585 if (e.pointerType === 'mouse' && lastTouch && mouseEventSimulated(e)) { 586 return; 587 } else { 588 return ($.event.dispatch || $.event.handle).call(this, e); 589 } 590 }; 591 }()); 592 593 // custom mousewheel/trackpad handler 594 (function() { 595 var wheelEvents = ('onwheel' in document || document.documentMode >= 9 ? 'wheel' : 'mousewheel DOMMouseScroll').split(' '), 596 shimEventName = 'jcf-mousewheel'; 597 598 $.event.special[shimEventName] = { 599 setup: function() { 600 var self = this; 601 $.each(wheelEvents, function(index, fallbackEvent) { 602 if (self.addEventListener) self.addEventListener(fallbackEvent, fixEvent, false); 603 else self['on' + fallbackEvent] = fixEvent; 604 }); 605 }, 606 teardown: function() { 607 var self = this; 608 $.each(wheelEvents, function(index, fallbackEvent) { 609 if (self.addEventListener) self.removeEventListener(fallbackEvent, fixEvent, false); 610 else self['on' + fallbackEvent] = null; 611 }); 612 } 613 }; 614 615 var fixEvent = function(e) { 616 var origEvent = e || window.event; 617 e = $.event.fix(origEvent); 618 e.type = shimEventName; 619 620 // old wheel events handler 621 if ('detail' in origEvent) { e.deltaY = -origEvent.detail; } 622 if ('wheelDelta' in origEvent) { e.deltaY = -origEvent.wheelDelta; } 623 if ('wheelDeltaY' in origEvent) { e.deltaY = -origEvent.wheelDeltaY; } 624 if ('wheelDeltaX' in origEvent) { e.deltaX = -origEvent.wheelDeltaX; } 625 626 // modern wheel event handler 627 if ('deltaY' in origEvent) { 628 e.deltaY = origEvent.deltaY; 629 } 630 if ('deltaX' in origEvent) { 631 e.deltaX = origEvent.deltaX; 632 } 633 634 // handle deltaMode for mouse wheel 635 e.delta = e.deltaY || e.deltaX; 636 if (origEvent.deltaMode === 1) { 637 var lineHeight = 16; 638 e.delta *= lineHeight; 639 e.deltaY *= lineHeight; 640 e.deltaX *= lineHeight; 641 } 642 643 return ($.event.dispatch || $.event.handle).call(this, e); 644 }; 645 }()); 646 647 // extra module methods 648 var moduleMixin = { 649 // provide function for firing native events 650 fireNativeEvent: function(elements, eventName) { 651 $(elements).each(function() { 652 var element = this, eventObject; 653 if (element.dispatchEvent) { 654 eventObject = document.createEvent('HTMLEvents'); 655 eventObject.initEvent(eventName, true, true); 656 element.dispatchEvent(eventObject); 657 } else if (document.createEventObject) { 658 eventObject = document.createEventObject(); 659 eventObject.target = element; 660 element.fireEvent('on' + eventName, eventObject); 661 } 662 }); 663 }, 664 // bind event handlers for module instance (functions beggining with "on") 665 bindHandlers: function() { 666 var self = this; 667 $.each(self, function(propName, propValue) { 668 if (propName.indexOf('on') === 0 && $.isFunction(propValue)) { 669 // dont use $.proxy here because it doesn't create unique handler 670 self[propName] = function() { 671 return propValue.apply(self, arguments); 672 }; 673 } 674 }); 675 } 676 }; 677 678 // public API 679 var api = { 680 version: version, 681 modules: {}, 682 getOptions: function() { 683 return $.extend({}, commonOptions); 684 }, 685 setOptions: function(moduleName, moduleOptions) { 686 if (arguments.length > 1) { 687 // set module options 688 if (this.modules[moduleName]) { 689 $.extend(this.modules[moduleName].prototype.options, moduleOptions); 690 } 691 } else { 692 // set common options 693 $.extend(commonOptions, moduleName); 694 } 695 }, 696 addModule: function(proto) { 697 // add module to list 698 var Module = function(options) { 699 // save instance to collection 700 if (!options.element.data(commonOptions.dataKey)) { 701 options.element.data(commonOptions.dataKey, this); 702 } 703 customInstances.push(this); 704 705 // save options 706 this.options = $.extend({}, commonOptions, this.options, getInlineOptions(options.element), options); 707 708 // bind event handlers to instance 709 this.bindHandlers(); 710 711 // call constructor 712 this.init.apply(this, arguments); 713 }; 714 715 // parse options from HTML attribute 716 var getInlineOptions = function(element) { 717 var dataOptions = element.data(commonOptions.optionsKey), 718 attrOptions = element.attr(commonOptions.optionsKey); 719 720 if (dataOptions) { 721 return dataOptions; 722 } else if (attrOptions) { 723 try { 724 return $.parseJSON(attrOptions); 725 } catch (e) { 726 // ignore invalid attributes 727 } 728 } 729 }; 730 731 // set proto as prototype for new module 732 Module.prototype = proto; 733 734 // add mixin methods to module proto 735 $.extend(proto, moduleMixin); 736 if (proto.plugins) { 737 $.each(proto.plugins, function(pluginName, plugin) { 738 $.extend(plugin.prototype, moduleMixin); 739 }); 740 } 741 742 // override destroy method 743 var originalDestroy = Module.prototype.destroy; 744 Module.prototype.destroy = function() { 745 this.options.element.removeData(this.options.dataKey); 746 747 for (var i = customInstances.length - 1; i >= 0; i--) { 748 if (customInstances[i] === this) { 749 customInstances.splice(i, 1); 750 break; 751 } 752 } 753 754 if (originalDestroy) { 755 originalDestroy.apply(this, arguments); 756 } 757 }; 758 759 // save module to list 760 this.modules[proto.name] = Module; 761 }, 762 getInstance: function(element) { 763 return $(element).data(commonOptions.dataKey); 764 }, 765 replace: function(elements, moduleName, customOptions) { 766 var self = this, 767 instance; 768 769 if (!commonOptions.styleSheetCreated) { 770 createStyleSheet(); 771 } 772 773 $(elements).each(function() { 774 var moduleOptions, 775 element = $(this); 776 777 instance = element.data(commonOptions.dataKey); 778 if (instance) { 779 instance.refresh();
780 } else { 781 if (!moduleName) { 782 $.each(self.modules, function(currentModuleName, module) { 783 if (module.prototype.matchElement.call(module.prototype, element)) { 784 moduleName = currentModuleName; 785 return false; 786 } 787 }); 788 } 789 if (moduleName) { 790 moduleOptions = $.extend({ element: element }, customOptions); 791 instance = new self.modules[moduleName](moduleOptions); 792 } 793 } 794 }); 795 return instance; 796 }, 797 refresh: function(elements) { 798 $(elements).each(function() { 799 var instance = $(this).data(commonOptions.dataKey); 800 if (instance) { 801 instance.refresh(); 802 } 803 }); 804 }, 805 destroy: function(elements) { 806 $(elements).each(function() { 807 var instance = $(this).data(commonOptions.dataKey); 808 if (instance) { 809 instance.destroy(); 810 } 811 }); 812 }, 813 replaceAll: function(context) { 814 var self = this; 815 $.each(this.modules, function(moduleName, module) { 816 $(module.prototype.selector, context).each(function() { 817 if (this.className.indexOf('jcf-ignore') < 0) { 818 self.replace(this, moduleName); 819 } 820 }); 821 }); 822 }, 823 refreshAll: function(context) { 824 if (context) { 825 $.each(this.modules, function(moduleName, module) { 826 $(module.prototype.selector, context).each(function() { 827 var instance = $(this).data(commonOptions.dataKey); 828 if (instance) { 829 instance.refresh(); 830 } 831 }); 832 }); 833 } else { 834 for (var i = customInstances.length - 1; i >= 0; i--) { 835 customInstances[i].refresh(); 836 } 837 } 838 }, 839 destroyAll: function(context) { 840 if (context) { 841 $.each(this.modules, function(moduleName, module) { 842 $(module.prototype.selector, context).each(function(index, element) { 843 var instance = $(element).data(commonOptions.dataKey); 844 if (instance) { 845 instance.destroy(); 846 } 847 }); 848 }); 849 } else { 850 while (customInstances.length) { 851 customInstances[0].destroy(); 852 } 853 } 854 } 855 }; 856 857 // always export API to the global window object 858 window.jcf = api; 859 860 return api; 861})); 862 863 /*! 864 * JavaScript Custom Forms : Select Module 865 * 866 * Copyright 2014-2015 PSD2HTML - http://psd2html.com/jcf 867 * Released under the MIT license (LICENSE.txt) 868 * 869 * Version: 1.1.3 870 */ 871 ;(function($, window) { 872 'use strict'; 873 874 jcf.addModule({ 875 name: 'Select', 876 selector: 'select', 877 options: { 878 element: null, 879 multipleCompactStyle: false 880 }, 881 plugins: { 882 ListBox: ListBox, 883 ComboBox: ComboBox, 884 SelectList: SelectList 885 }, 886 matchElement: function(element) { 887 return element.is('select'); 888 }, 889 init: function() { 890 this.element = $(this.options.element); 891 this.createInstance(); 892 }, 893 isListBox: function() { 894 return this.element.is('[size]:not([jcf-size]), [multiple]'); 895 }, 896 createInstance: function() { 897 if (this.instance) { 898 this.instance.destroy(); 899 } 900 if (this.isListBox() && !this.options.multipleCompactStyle) { 901 this.instance = new ListBox(this.options); 902 } else { 903 this.instance = new ComboBox(this.options); 904 } 905 }, 906 refresh: function() { 907 var typeMismatch = (this.isListBox() && this.instance instanceof ComboBox) || 908 (!this.isListBox() && this.instance instanceof ListBox); 909 910 if (typeMismatch) { 911 this.createInstance(); 912 } else { 913 this.instance.refresh(); 914 } 915 }, 916 destroy: function() { 917 this.instance.destroy(); 918 } 919 }); 920 921 // combobox module 922 function ComboBox(options) { 923 this.options = $.extend({ 924 wrapNative: true, 925 wrapNativeOnMobile: true, 926 fakeDropInBody: true, 927 useCustomScroll: true, 928 flipDropToFit: true, 929 maxVisibleItems: 10, 930 fakeAreaStructure: '<span class="jcf-select"><span class="jcf-select-text"></span><span class="jcf-select-opener"></span></span>', 931 fakeDropStructure: '<div class="jcf-select-drop"><div class="jcf-select-drop-content"></div></div>', 932 optionClassPrefix: 'jcf-option-', 933 selectClassPrefix: 'jcf-select-', 934 dropContentSelector: '.jcf-select-drop-content', 935 selectTextSelector: '.jcf-select-text',
936 dropActiveClass: 'jcf-drop-active', 937 flipDropClass: 'jcf-drop-flipped' 938 }, options); 939 this.init(); 940 } 941 $.extend(ComboBox.prototype, { 942 init: function() { 943 this.initStructure(); 944 this.bindHandlers(); 945 this.attachEvents(); 946 this.refresh(); 947 }, 948 initStructure: function() { 949 // prepare structure 950 this.win = $(window); 951 this.doc = $(document); 952 this.realElement = $(this.options.element); 953 this.fakeElement = $(this.options.fakeAreaStructure).insertAfter(this.realElement); 954 this.selectTextContainer = this.fakeElement.find(this.options.selectTextSelector); 955 this.selectText = $('<span></span>').appendTo(this.selectTextContainer); 956 makeUnselectable(this.fakeElement); 957 958 // copy classes from original select 959 this.fakeElement.addClass(getPrefixedClasses(this.realElement.prop('className'), this.options.selectClassPrefix)); 960 961 // handle compact multiple style 962 if (this.realElement.prop('multiple')) { 963 this.fakeElement.addClass('jcf-compact-multiple'); 964 } 965 966 // detect device type and dropdown behavior 967 if (this.options.isMobileDevice && this.options.wrapNativeOnMobile && !this.options.wrapNative) { 968 this.options.wrapNative = true; 969 } 970 971 if (this.options.wrapNative) { 972 // wrap native select inside fake block 973 this.realElement.prependTo(this.fakeElement).css({ 974 position: 'absolute', 975 height: '100%', 976 width: '100%' 977 }).addClass(this.options.resetAppearanceClass); 978 } else { 979 // just hide native select 980 this.realElement.addClass(this.options.hiddenClass); 981 this.fakeElement.attr('title', this.realElement.attr('title')); 982 this.fakeDropTarget = this.options.fakeDropInBody ? $('body') : this.fakeElement; 983 } 984 }, 985 attachEvents: function() { 986 // delayed refresh handler 987 var self = this; 988 this.delayedRefresh = function() { 989 setTimeout(function() { 990 self.refresh(); 991 if (self.list) { 992 self.list.refresh(); 993 self.list.scrollToActiveOption(); 994 } 995 }, 1); 996 }; 997 998 // native dropdown event handlers 999 if (this.options.wrapNative) { 1000 this.realElement.on({ 1001 focus: this.onFocus, 1002 change: this.onChange, 1003 click: this.onChange, 1004 keydown: this.onChange 1005 }); 1006 } else { 1007 // custom dropdown event handlers 1008 this.realElement.on({ 1009 focus: this.onFocus, 1010 change: this.onChange, 1011 keydown: this.onKeyDown 1012 }); 1013 this.fakeElement.on({ 1014 'jcf-pointerdown': this.onSelectAreaPress 1015 }); 1016 } 1017 }, 1018 onKeyDown: function(e) { 1019 if (e.which === 13) { 1020 this.toggleDropdown(); 1021 } else if (this.dropActive) { 1022 this.delayedRefresh(); 1023 } 1024 }, 1025 onChange: function() { 1026 this.refresh(); 1027 }, 1028 onFocus: function() { 1029 if (!this.pressedFlag || !this.focusedFlag) { 1030 this.fakeElement.addClass(this.options.focusClass); 1031 this.realElement.on('blur', this.onBlur); 1032 this.toggleListMode(true); 1033 this.focusedFlag = true; 1034 } 1035 }, 1036 onBlur: function() { 1037 if (!this.pressedFlag) { 1038 this.fakeElement.removeClass(this.options.focusClass); 1039 this.realElement.off('blur', this.onBlur); 1040 this.toggleListMode(false); 1041 this.focusedFlag = false; 1042 } 1043 }, 1044 onResize: function() { 1045 if (this.dropActive) { 1046 this.hideDropdown(); 1047 } 1048 }, 1049 onSelectDropPress: function() { 1050 this.pressedFlag = true; 1051 }, 1052 onSelectDropRelease: function(e, pointerEvent) { 1053 this.pressedFlag = false; 1054 if (pointerEvent.pointerType === 'mouse') { 1055 this.realElement.focus(); 1056 } 1057 }, 1058 onSelectAreaPress: function(e) { 1059 // skip click if drop inside fake element or real select is disabled 1060 var dropClickedInsideFakeElement = !this.options.fakeDropInBody && $(e.target).closest(this.dropdown).length; 1061 if (dropClickedInsideFakeElement || e.button > 1 || this.realElement.is(':disabled')) { 1062 return; 1063 } 1064 1065 // toggle dropdown visibility 1066 this.selectOpenedByEvent = e.pointerType; 1067 this.toggleDropdown(); 1068 1069 // misc handlers 1070 if (!this.focusedFlag) { 1071 if (e.pointerType === 'mouse') { 1072 this.realElement.focus(); 1073 } else { 1074 this.onFocus(e); 1075 } 1076 } 1077 this.pressedFlag = true; 1078 this.fakeElement.addClass(this.options.pressedClass); 1079 this.doc.on('jcf-pointerup', this.onSelectAreaRelease); 1080 }, 1081 onSelectAreaRelease: function(e) { 1082 if (this.focusedFlag && e.pointerType === 'mouse') { 1083 this.realElement.focus(); 1084 } 1085 this.pressedFlag = false; 1086 this.fakeElement.removeClass(this.options.pressedClass); 1087 this.doc.off('jcf-pointerup', this.onSelectAreaRelease); 1088 }, 1089 onOutsideClick: function(e) { 1090 var target = $(e.target), 1091 clickedInsideSelect = target.closest(this.fakeElement).length || target.closest(this.dropdown).length; 1092 1093 if (!clickedInsideSelect) { 1094 this.hideDropdown(); 1095 } 1096 }, 1097 onSelect: function() { 1098 this.refresh();
1099 1100 if (this.realElement.prop('multiple')) { 1101 this.repositionDropdown(); 1102 } else { 1103 this.hideDropdown(); 1104 } 1105 1106 this.fireNativeEvent(this.realElement, 'change'); 1107 }, 1108 toggleListMode: function(state) { 1109 if (!this.options.wrapNative) { 1110 if (state) { 1111 // temporary change select to list to avoid appearing of native dropdown 1112 this.realElement.attr({ 1113 size: 4, 1114 'jcf-size': '' 1115 }); 1116 } else { 1117 // restore select from list mode to dropdown select 1118 if (!this.options.wrapNative) { 1119 this.realElement.removeAttr('size jcf-size'); 1120 } 1121 } 1122 } 1123 }, 1124 createDropdown: function() { 1125 // destroy previous dropdown if needed 1126 if (this.dropdown) { 1127 this.list.destroy(); 1128 this.dropdown.remove(); 1129 } 1130 1131 // create new drop container 1132 this.dropdown = $(this.options.fakeDropStructure).appendTo(this.fakeDropTarget); 1133 this.dropdown.addClass(getPrefixedClasses(this.realElement.prop('className'), this.options.selectClassPrefix)); 1134 makeUnselectable(this.dropdown); 1135 1136 // handle compact multiple style 1137 if (this.realElement.prop('multiple')) { 1138 this.dropdown.addClass('jcf-compact-multiple'); 1139 } 1140 1141 // set initial styles for dropdown in body 1142 if (this.options.fakeDropInBody) { 1143 this.dropdown.css({ 1144 position: 'absolute', 1145 top: -9999 1146 }); 1147 } 1148 1149 // create new select list instance 1150 this.list = new SelectList({ 1151 useHoverClass: true, 1152 handleResize: false, 1153 alwaysPreventMouseWheel: true, 1154 maxVisibleItems: this.options.maxVisibleItems, 1155 useCustomScroll: this.options.useCustomScroll, 1156 holder: this.dropdown.find(this.options.dropContentSelector), 1157 multipleSelectWithoutKey: this.realElement.prop('multiple'), 1158 element: this.realElement 1159 }); 1160 $(this.list).on({ 1161 select: this.onSelect, 1162 press: this.onSelectDropPress, 1163 release: this.onSelectDropRelease 1164 }); 1165 }, 1166 repositionDropdown: function() { 1167 var selectOffset = this.fakeElement.offset(), 1168 selectWidth = this.fakeElement.outerWidth(), 1169 selectHeight = this.fakeElement.outerHeight(), 1170 dropHeight = this.dropdown.css('width', selectWidth).outerHeight(), 1171 winScrollTop = this.win.scrollTop(), 1172 winHeight = this.win.height(), 1173 calcTop, calcLeft, bodyOffset, needFlipDrop = false; 1174 1175 // check flip drop position 1176 if (selectOffset.top + selectHeight + dropHeight > winScrollTop + winHeight && selectOffset.top - dropHeight > winScrollTop) { 1177 needFlipDrop = true; 1178 } 1179 1180 if (this.options.fakeDropInBody) { 1181 bodyOffset = this.fakeDropTarget.css('position') !== 'static' ? this.fakeDropTarget.offset().top : 0; 1182 if (this.options.flipDropToFit && needFlipDrop) { 1183 // calculate flipped dropdown position 1184 calcLeft = selectOffset.left; 1185 calcTop = selectOffset.top - dropHeight - bodyOffset; 1186 } else { 1187 // calculate default drop position 1188 calcLeft = selectOffset.left; 1189 calcTop = selectOffset.top + selectHeight - bodyOffset; 1190 } 1191 1192 // update drop styles 1193 this.dropdown.css({ 1194 width: selectWidth, 1195 left: calcLeft, 1196 top: calcTop 1197 }); 1198 } 1199 1200 // refresh flipped class 1201 this.dropdown.add(this.fakeElement).toggleClass(this.options.flipDropClass, this.options.flipDropToFit && needFlipDrop); 1202 }, 1203 showDropdown: function() { 1204 // do not show empty custom dropdown 1205 if (!this.realElement.prop('options').length) { 1206 return; 1207 } 1208 1209 // create options list if not created 1210 if (!this.dropdown) { 1211 this.createDropdown(); 1212 } 1213 1214 // show dropdown 1215 this.dropActive = true; 1216 this.dropdown.appendTo(this.fakeDropTarget); 1217 this.fakeElement.addClass(this.options.dropActiveClass); 1218 this.refreshSelectedText(); 1219 this.repositionDropdown(); 1220 this.list.setScrollTop(this.savedScrollTop); 1221 this.list.refresh(); 1222 1223 // add temporary event handlers 1224 this.win.on('resize', this.onResize); 1225 this.doc.on('jcf-pointerdown', this.onOutsideClick); 1226 }, 1227 hideDropdown: function() { 1228 if (this.dropdown) { 1229 this.savedScrollTop = this.list.getScrollTop(); 1230 this.fakeElement.removeClass(this.options.dropActiveClass + ' ' + this.options.flipDropClass); 1231 this.dropdown.removeClass(this.options.flipDropClass).detach(); 1232 this.doc.off('jcf-pointerdown', this.onOutsideClick); 1233 this.win.off('resize', this.onResize); 1234 this.dropActive = false; 1235 if (this.selectOpenedByEvent === 'touch') { 1236 this.onBlur(); 1237 } 1238 } 1239 }, 1240 toggleDropdown: function() { 1241 if (this.dropActive) { 1242 this.hideDropdown(); 1243 } else { 1244 this.showDropdown(); 1245 } 1246 }, 1247 refreshSelectedText: function() { 1248 // redraw selected area 1249 var selectedIndex = this.realElement.prop('selectedIndex'), 1250 selectedOption = this.realElement.prop('options')[selectedIndex], 1251 selectedOptionImage = selectedOption ? selectedOption.getAttribute('data-image') : null, 1252 selectedOptionText = '', 1253 selectedOptionClasses, 1254 self = this; 1255 1256 if (this.realElement.prop('multiple')) { 1257 $.each(this.realElement.prop('options'), function(index, option) { 1258 if (option.selected) {
1259 selectedOptionText += (selectedOptionText ? ', ' : '') + option.innerHTML; 1260 } 1261 }); 1262 if (!selectedOptionText) { 1263 selectedOptionText = self.realElement.attr('placeholder') || ''; 1264 } 1265 this.selectText.removeAttr('class').html(selectedOptionText); 1266 } else if (!selectedOption) { 1267 if (this.selectImage) { 1268 this.selectImage.hide(); 1269 } 1270 this.selectText.removeAttr('class').empty(); 1271 } else if (this.currentSelectedText !== selectedOption.innerHTML || this.currentSelectedImage !== selectedOptionImage) { 1272 selectedOptionClasses = getPrefixedClasses(selectedOption.className, this.options.optionClassPrefix); 1273 this.selectText.attr('class', selectedOptionClasses).html(selectedOption.innerHTML); 1274 1275 if (selectedOptionImage) { 1276 if (!this.selectImage) { 1277 this.selectImage = $('<img>').prependTo(this.selectTextContainer).hide(); 1278 } 1279 this.selectImage.attr('src', selectedOptionImage).show(); 1280 } else if (this.selectImage) { 1281 this.selectImage.hide(); 1282 } 1283 1284 this.currentSelectedText = selectedOption.innerHTML; 1285 this.currentSelectedImage = selectedOptionImage; 1286 } 1287 }, 1288 refresh: function() { 1289 // refresh fake select visibility 1290 if (this.realElement.prop('style').display === 'none') { 1291 this.fakeElement.hide(); 1292 } else { 1293 this.fakeElement.show(); 1294 } 1295 1296 // refresh selected text 1297 this.refreshSelectedText(); 1298 1299 // handle disabled state 1300 this.fakeElement.toggleClass(this.options.disabledClass, this.realElement.is(':disabled')); 1301 }, 1302 destroy: function() { 1303 // restore structure 1304 if (this.options.wrapNative) { 1305 this.realElement.insertBefore(this.fakeElement).css({ 1306 position: '', 1307 height: '', 1308 width: '' 1309 }).removeClass(this.options.resetAppearanceClass); 1310 } else { 1311 this.realElement.removeClass(this.options.hiddenClass); 1312 if (this.realElement.is('[jcf-size]')) { 1313 this.realElement.removeAttr('size jcf-size'); 1314 } 1315 } 1316 1317 // removing element will also remove its event handlers 1318 this.fakeElement.remove(); 1319 1320 // remove other event handlers 1321 this.doc.off('jcf-pointerup', this.onSelectAreaRelease); 1322 this.realElement.off({ 1323 focus: this.onFocus 1324 }); 1325 } 1326 }); 1327 1328 // listbox module 1329 function ListBox(options) { 1330 this.options = $.extend({ 1331 wrapNative: true, 1332 useCustomScroll: true, 1333 fakeStructure: '<span class="jcf-list-box"><span class="jcf-list-wrapper"></span></span>', 1334 selectClassPrefix: 'jcf-select-', 1335 listHolder: '.jcf-list-wrapper' 1336 }, options); 1337 this.init(); 1338 } 1339 $.extend(ListBox.prototype, { 1340 init: function() { 1341 this.bindHandlers(); 1342 this.initStructure(); 1343 this.attachEvents(); 1344 }, 1345 initStructure: function() { 1346 this.realElement = $(this.options.element); 1347 this.fakeElement = $(this.options.fakeStructure).insertAfter(this.realElement); 1348 this.listHolder = this.fakeElement.find(this.options.listHolder); 1349 makeUnselectable(this.fakeElement); 1350 1351 // copy classes from original select 1352 this.fakeElement.addClass(getPrefixedClasses(this.realElement.prop('className'), this.options.selectClassPrefix)); 1353 this.realElement.addClass(this.options.hiddenClass); 1354 1355 this.list = new SelectList({ 1356 useCustomScroll: this.options.useCustomScroll, 1357 holder: this.listHolder, 1358 selectOnClick: false, 1359 element: this.realElement 1360 }); 1361 }, 1362 attachEvents: function() { 1363 // delayed refresh handler 1364 var self = this; 1365 this.delayedRefresh = function(e) { 1366 if (e && e.which === 16) { 1367 // ignore SHIFT key 1368 return; 1369 } else { 1370 clearTimeout(self.refreshTimer); 1371 self.refreshTimer = setTimeout(function() { 1372 self.refresh(); 1373 self.list.scrollToActiveOption(); 1374 }, 1); 1375 } 1376 }; 1377 1378 // other event handlers 1379 this.realElement.on({ 1380 focus: this.onFocus, 1381 click: this.delayedRefresh, 1382 keydown: this.delayedRefresh 1383 }); 1384 1385 // select list event handlers 1386 $(this.list).on({ 1387 select: this.onSelect, 1388 press: this.onFakeOptionsPress, 1389 release: this.onFakeOptionsRelease 1390 }); 1391 }, 1392 onFakeOptionsPress: function(e, pointerEvent) { 1393 this.pressedFlag = true; 1394 if (pointerEvent.pointerType === 'mouse') { 1395 this.realElement.focus(); 1396 } 1397 }, 1398 onFakeOptionsRelease: function(e, pointerEvent) { 1399 this.pressedFlag = false; 1400 if (pointerEvent.pointerType === 'mouse') { 1401 this.realElement.focus(); 1402 } 1403 }, 1404 onSelect: function() { 1405 this.fireNativeEvent(this.realElement, 'change'); 1406 this.fireNativeEvent(this.realElement, 'click'); 1407 }, 1408 onFocus: function() { 1409 if (!this.pressedFlag || !this.focusedFlag) { 1410 this.fakeElement.addClass(this.options.focusClass); 1411 this.realElement.on('blur', this.onBlur); 1412 this.focusedFlag = true; 1413 } 1414 }, 1415 onBlur: function() { 1416 if (!this.pressedFlag) { 1417 this.fakeElement.removeClass(this.options.focusClass); 1418 this.realElement.off('blur', this.onBlur); 1419 this.focusedFlag = false; 1420 } 1421 }, 1422 refresh: function() { 1423 this.fakeElement.toggleClass(this.options.disabledClass, this.realElement.is(':disabled')); 1424 this.list.refresh();
1425 }, 1426 destroy: function() { 1427 this.list.destroy(); 1428 this.realElement.insertBefore(this.fakeElement).removeClass(this.options.hiddenClass); 1429 this.fakeElement.remove(); 1430 } 1431 }); 1432 1433 // options list module 1434 function SelectList(options) { 1435 this.options = $.extend({ 1436 holder: null, 1437 maxVisibleItems: 10, 1438 selectOnClick: true, 1439 useHoverClass: false, 1440 useCustomScroll: false, 1441 handleResize: true, 1442 multipleSelectWithoutKey: false, 1443 alwaysPreventMouseWheel: false, 1444 indexAttribute: 'data-index', 1445 cloneClassPrefix: 'jcf-option-', 1446 containerStructure: '<span class="jcf-list"><span class="jcf-list-content"></span></span>', 1447 containerSelector: '.jcf-list-content', 1448 captionClass: 'jcf-optgroup-caption', 1449 disabledClass: 'jcf-disabled', 1450 optionClass: 'jcf-option', 1451 groupClass: 'jcf-optgroup', 1452 hoverClass: 'jcf-hover', 1453 selectedClass: 'jcf-selected', 1454 scrollClass: 'jcf-scroll-active' 1455 }, options); 1456 this.init(); 1457 } 1458 $.extend(SelectList.prototype, { 1459 init: function() { 1460 this.initStructure(); 1461 this.refreshSelectedClass(); 1462 this.attachEvents(); 1463 }, 1464 initStructure: function() { 1465 this.element = $(this.options.element); 1466 this.indexSelector = '[' + this.options.indexAttribute + ']'; 1467 this.container = $(this.options.containerStructure).appendTo(this.options.holder); 1468 this.listHolder = this.container.find(this.options.containerSelector); 1469 this.lastClickedIndex = this.element.prop('selectedIndex'); 1470 this.rebuildList(); 1471 }, 1472 attachEvents: function() { 1473 this.bindHandlers(); 1474 this.listHolder.on('jcf-pointerdown', this.indexSelector, this.onItemPress); 1475 this.listHolder.on('jcf-pointerdown', this.onPress); 1476 1477 if (this.options.useHoverClass) { 1478 this.listHolder.on('jcf-pointerover', this.indexSelector, this.onHoverItem); 1479 } 1480 }, 1481 onPress: function(e) { 1482 $(this).trigger('press', e); 1483 this.listHolder.on('jcf-pointerup', this.onRelease); 1484 }, 1485 onRelease: function(e) { 1486 $(this).trigger('release', e); 1487 this.listHolder.off('jcf-pointerup', this.onRelease); 1488 }, 1489 onHoverItem: function(e) { 1490 var hoverIndex = parseFloat(e.currentTarget.getAttribute(this.options.indexAttribute)); 1491 this.fakeOptions.removeClass(this.options.hoverClass).eq(hoverIndex).addClass(this.options.hoverClass); 1492 }, 1493 onItemPress: function(e) { 1494 if (e.pointerType === 'touch' || this.options.selectOnClick) { 1495 // select option after "click" 1496 this.tmpListOffsetTop = this.list.offset().top; 1497 this.listHolder.on('jcf-pointerup', this.indexSelector, this.onItemRelease); 1498 } else { 1499 // select option immediately 1500 this.onSelectItem(e); 1501 } 1502 }, 1503 onItemRelease: function(e) { 1504 // remove event handlers and temporary data 1505 this.listHolder.off('jcf-pointerup', this.indexSelector, this.onItemRelease); 1506 1507 // simulate item selection 1508 if (this.tmpListOffsetTop === this.list.offset().top) { 1509 this.listHolder.on('click', this.indexSelector, { savedPointerType: e.pointerType }, this.onSelectItem); 1510 } 1511 delete this.tmpListOffsetTop; 1512 }, 1513 onSelectItem: function(e) { 1514 var clickedIndex = parseFloat(e.currentTarget.getAttribute(this.options.indexAttribute)), 1515 pointerType = e.data && e.data.savedPointerType || e.pointerType || 'mouse', 1516 range; 1517 1518 // remove click event handler 1519 this.listHolder.off('click', this.indexSelector, this.onSelectItem); 1520 1521 // ignore clicks on disabled options 1522 if (e.button > 1 || this.realOptions[clickedIndex].disabled) { 1523 return; 1524 } 1525 1526 if (this.element.prop('multiple')) { 1527 if (e.metaKey || e.ctrlKey || pointerType === 'touch' || this.options.multipleSelectWithoutKey) { 1528 // if CTRL/CMD pressed or touch devices - toggle selected option 1529 this.realOptions[clickedIndex].selected = !this.realOptions[clickedIndex].selected; 1530 } else if (e.shiftKey) { 1531 // if SHIFT pressed - update selection 1532 range = [this.lastClickedIndex, clickedIndex].sort(function(a, b) { 1533 return a - b; 1534 }); 1535 this.realOptions.each(function(index, option) { 1536 option.selected = (index >= range[0] && index <= range[1]); 1537 });
1538 } else { 1539 // set single selected index 1540 this.element.prop('selectedIndex', clickedIndex); 1541 } 1542 } else { 1543 this.element.prop('selectedIndex', clickedIndex); 1544 } 1545 1546 // save last clicked option 1547 if (!e.shiftKey) { 1548 this.lastClickedIndex = clickedIndex; 1549 } 1550 1551 // refresh classes 1552 this.refreshSelectedClass(); 1553 1554 // scroll to active item in desktop browsers 1555 if (pointerType === 'mouse') { 1556 this.scrollToActiveOption(); 1557 } 1558 1559 // make callback when item selected 1560 $(this).trigger('select'); 1561 }, 1562 rebuildList: function() { 1563 // rebuild options 1564 var self = this, 1565 rootElement = this.element[0]; 1566 1567 // recursively create fake options 1568 this.storedSelectHTML = rootElement.innerHTML; 1569 this.optionIndex = 0; 1570 this.list = $(this.createOptionsList(rootElement)); 1571 this.listHolder.empty().append(this.list); 1572 this.realOptions = this.element.find('option'); 1573 this.fakeOptions = this.list.find(this.indexSelector); 1574 this.fakeListItems = this.list.find('.' + this.options.captionClass + ',' + this.indexSelector); 1575 delete this.optionIndex; 1576 1577 // detect max visible items 1578 var maxCount = this.options.maxVisibleItems, 1579 sizeValue = this.element.prop('size'); 1580 if (sizeValue > 1 && !this.element.is('[jcf-size]')) { 1581 maxCount = sizeValue; 1582 } 1583 1584 // handle scrollbar 1585 var needScrollBar = this.fakeOptions.length > maxCount; 1586 this.container.toggleClass(this.options.scrollClass, needScrollBar); 1587 if (needScrollBar) { 1588 // change max-height 1589 this.listHolder.css({ 1590 maxHeight: this.getOverflowHeight(maxCount), 1591 overflow: 'auto' 1592 }); 1593 1594 if (this.options.useCustomScroll && jcf.modules.Scrollable) { 1595 // add custom scrollbar if specified in options 1596 jcf.replace(this.listHolder, 'Scrollable', { 1597 handleResize: this.options.handleResize, 1598 alwaysPreventMouseWheel: this.options.alwaysPreventMouseWheel 1599 }); 1600 return; 1601 } 1602 } 1603 1604 // disable edge wheel scrolling 1605 if (this.options.alwaysPreventMouseWheel) { 1606 this.preventWheelHandler = function(e) { 1607 var currentScrollTop = self.listHolder.scrollTop(), 1608 maxScrollTop = self.listHolder.prop('scrollHeight') - self.listHolder.innerHeight(); 1609 1610 // check edge cases 1611 if ((currentScrollTop <= 0 && e.deltaY < 0) || (currentScrollTop >= maxScrollTop && e.deltaY > 0)) { 1612 e.preventDefault(); 1613 } 1614 }; 1615 this.listHolder.on('jcf-mousewheel', this.preventWheelHandler); 1616 } 1617 }, 1618 refreshSelectedClass: function() { 1619 var self = this, 1620 selectedItem, 1621 isMultiple = this.element.prop('multiple'), 1622 selectedIndex = this.element.prop('selectedIndex'); 1623 1624 if (isMultiple) { 1625 this.realOptions.each(function(index, option) { 1626 self.fakeOptions.eq(index).toggleClass(self.options.selectedClass, !!option.selected); 1627 }); 1628 } else { 1629 this.fakeOptions.removeClass(this.options.selectedClass + ' ' + this.options.hoverClass); 1630 selectedItem = this.fakeOptions.eq(selectedIndex).addClass(this.options.selectedClass); 1631 if (this.options.useHoverClass) { 1632 selectedItem.addClass(this.options.hoverClass); 1633 } 1634 } 1635 }, 1636 scrollToActiveOption: function() { 1637 // scroll to target option 1638 var targetOffset = this.getActiveOptionOffset(); 1639 if (typeof targetOffset === 'number') { 1640 this.listHolder.prop('scrollTop', targetOffset); 1641 } 1642 }, 1643 getSelectedIndexRange: function() { 1644 var firstSelected = -1, lastSelected = -1; 1645 this.realOptions.each(function(index, option) { 1646 if (option.selected) { 1647 if (firstSelected < 0) { 1648 firstSelected = index; 1649 } 1650 lastSelected = index; 1651 } 1652 }); 1653 return [firstSelected, lastSelected]; 1654 }, 1655 getChangedSelectedIndex: function() { 1656 var selectedIndex = this.element.prop('selectedIndex'), 1657 targetIndex; 1658 1659 if (this.element.prop('multiple')) { 1660 // multiple selects handling 1661 if (!this.previousRange) { 1662 this.previousRange = [selectedIndex, selectedIndex]; 1663 } 1664 this.currentRange = this.getSelectedIndexRange(); 1665 targetIndex = this.currentRange[this.currentRange[0] !== this.previousRange[0] ? 0 : 1]; 1666 this.previousRange = this.currentRange; 1667 return targetIndex; 1668 } else { 1669 // single choice selects handling 1670 return selectedIndex; 1671 } 1672 }, 1673 getActiveOptionOffset: function() { 1674 // calc values 1675 var dropHeight = this.listHolder.height(), 1676 dropScrollTop = this.listHolder.prop('scrollTop'), 1677 currentIndex = this.getChangedSelectedIndex(), 1678 fakeOption = this.fakeOptions.eq(currentIndex), 1679 fakeOptionOffset = fakeOption.offset().top - this.list.offset().top, 1680 fakeOptionHeight = fakeOption.innerHeight(); 1681 1682 // scroll list 1683 if (fakeOptionOffset + fakeOptionHeight >= dropScrollTop + dropHeight) { 1684 // scroll down (always scroll to option) 1685 return fakeOptionOffset - dropHeight + fakeOptionHeight; 1686 } else if (fakeOptionOffset < dropScrollTop) { 1687 // scroll up to option 1688 return fakeOptionOffset; 1689 } 1690 }, 1691 getOverflowHeight: function(sizeValue) { 1692 var item = this.fakeListItems.eq(sizeValue - 1), 1693 listOffset = this.list.offset().top, 1694 itemOffset = item.offset().top,
1695 itemHeight = item.innerHeight(); 1696 1697 return itemOffset + itemHeight - listOffset; 1698 }, 1699 getScrollTop: function() { 1700 return this.listHolder.scrollTop(); 1701 }, 1702 setScrollTop: function(value) { 1703 this.listHolder.scrollTop(value); 1704 }, 1705 createOption: function(option) { 1706 var newOption = document.createElement('span'); 1707 newOption.className = this.options.optionClass; 1708 newOption.innerHTML = option.innerHTML; 1709 newOption.setAttribute(this.options.indexAttribute, this.optionIndex++); 1710 1711 var optionImage, optionImageSrc = option.getAttribute('data-image'); 1712 if (optionImageSrc) { 1713 optionImage = document.createElement('img'); 1714 optionImage.src = optionImageSrc; 1715 newOption.insertBefore(optionImage, newOption.childNodes[0]); 1716 } 1717 if (option.disabled) { 1718 newOption.className += ' ' + this.options.disabledClass; 1719 } 1720 if (option.className) { 1721 newOption.className += ' ' + getPrefixedClasses(option.className, this.options.cloneClassPrefix); 1722 } 1723 return newOption; 1724 }, 1725 createOptGroup: function(optgroup) { 1726 var optGroupContainer = document.createElement('span'), 1727 optGroupName = optgroup.getAttribute('label'), 1728 optGroupCaption, optGroupList; 1729 1730 // create caption 1731 optGroupCaption = document.createElement('span'); 1732 optGroupCaption.className = this.options.captionClass; 1733 optGroupCaption.innerHTML = optGroupName; 1734 optGroupContainer.appendChild(optGroupCaption); 1735 1736 // create list of options 1737 if (optgroup.children.length) { 1738 optGroupList = this.createOptionsList(optgroup); 1739 optGroupContainer.appendChild(optGroupList); 1740 } 1741 1742 optGroupContainer.className = this.options.groupClass; 1743 return optGroupContainer; 1744 }, 1745 createOptionContainer: function() { 1746 var optionContainer = document.createElement('li'); 1747 return optionContainer; 1748 }, 1749 createOptionsList: function(container) { 1750 var self = this, 1751 list = document.createElement('ul'); 1752 1753 $.each(container.children, function(index, currentNode) { 1754 var item = self.createOptionContainer(currentNode), 1755 newNode; 1756 1757 switch (currentNode.tagName.toLowerCase()) { 1758 case 'option': newNode = self.createOption(currentNode); break; 1759 case 'optgroup': newNode = self.createOptGroup(currentNode); break; 1760 } 1761 list.appendChild(item).appendChild(newNode); 1762 }); 1763 return list; 1764 }, 1765 refresh: function() { 1766 // check for select innerHTML changes 1767 if (this.storedSelectHTML !== this.element.prop('innerHTML')) { 1768 this.rebuildList(); 1769 } 1770 1771 // refresh custom scrollbar 1772 var scrollInstance = jcf.getInstance(this.listHolder); 1773 if (scrollInstance) { 1774 scrollInstance.refresh(); 1775 } 1776 1777 // refresh selectes classes 1778 this.refreshSelectedClass(); 1779 }, 1780 destroy: function() { 1781 this.listHolder.off('jcf-mousewheel', this.preventWheelHandler); 1782 this.listHolder.off('jcf-pointerdown', this.indexSelector, this.onSelectItem); 1783 this.listHolder.off('jcf-pointerover', this.indexSelector, this.onHoverItem); 1784 this.listHolder.off('jcf-pointerdown', this.onPress); 1785 } 1786 }); 1787 1788 // helper functions 1789 var getPrefixedClasses = function(className, prefixToAdd) { 1790 return className ? className.replace(/[\s]*([\S]+)+[\s]*/gi, prefixToAdd + '$1 ') : ''; 1791 }; 1792 var makeUnselectable = (function() { 1793 var unselectableClass = jcf.getOptions().unselectableClass; 1794 function preventHandler(e) { 1795 e.preventDefault(); 1796 } 1797 return function(node) { 1798 node.addClass(unselectableClass).on('selectstart', preventHandler); 1799 }; 1800 }()); 1801 1802}(jQuery, this)); 1803 1804 1805/*! 1806* FitVids 1.0.3 1807* 1808* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com 1809* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ 1810* Released under the WTFPL license - http://sam.zoy.org/wtfpl/ 1811* 1812* Date: Thu Sept 01 18:00:00 2011 -0500 1813*/ 1814;(function(a){a.fn.fitVids=function(b){var c={customSelector:null};if(!document.getElementById("fit-vids-style")){var f=document.createElement("div"),d=document.getElementsByTagName("base")[0]||document.getElementsByTagName("script")[0],e="­<style>.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}</style>";f.className="fit-vids-style";f.id="fit-vids-style";f.style.display="none";f.innerHTML=e;d.parentNode.insertBefore(f,d)}if(b){a.extend(c,b)}return this.each(function(){var g=["iframe[src*='player.vimeo.com']","iframe[src*='youtube.com']","iframe[src*='youtube-nocookie.com']","iframe[src*='kickstarter.com'][src*='video.html']","object","embed"];if(c.customSelector){g.push(c.customSelector)}var h=a(this).find(g.join(","));h=h.not("object object");h.each(function(){var m=a(this);if(this.tagName.toLowerCase()==="embed"&&m.parent("object").length||m.parent(".fluid-width-video-wrapper").length){return}var i=(this.tagName.toLowerCase()==="object"||(m.attr("height")&&!isNaN(parseInt(m.attr("height"),10))))?parseInt(m.attr("height"),10):m.height(),j=!isNaN(parseInt(m.attr("width"),10))?parseInt(m.attr("width"),10):m.width(),k=i/j;if(!m.attr("id")){var l="fitvid"+Math.floor(Math.random()*999999);m.attr("id",l)}m.wrap('<div class="fluid-width-video-wrapper"></div>').parent(".fluid-width-video-wrapper").css("padding-top",(k*100)+"%");m.removeAttr("height").removeAttr("width")})})}})(window.jQuery||window.Zepto); 1815 1816 1817 /* 1818 * jQuery dotdotdot 1.8.3 1819 * 1820 * Copyright (c) Fred Heusschen 1821 * www.frebsite.nl 1822 * 1823 * Plugin website: 1824 * dotdotdot.frebsite.nl 1825 * 1826 * Licensed under the MIT license. 1827 * http://en.wikipedia.org/wiki/MIT_License 1828 */ 1829!function(t,e){"use strict";function n(t,e,n){var r=t.children(),a=!1;t.empty();for(var i=0,d=r.length;i<d;i++){var l=r.eq(i);if(t.append(l),n&&t.append(n),o(t,e)){l.remove(),a=!0;break}n&&n.detach()}return a}function r(e,n,i,d,l){var s=!1,c="a, table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style",u="script, .dotdotdot-keep";return e.contents().detach().each(function(){var h=this,f=t(h);if("undefined"==typeof h)return!0;
vendor: 4,864 bytes, line 1829
1829if(f.is(u))e.append(f);else{if(s)return!0;e.append(f),!l||f.is(d.after)||f.find(d.after).length||e[e.is(c)?"after":"append"](l),o(i,d)&&(s=3==h.nodeType?a(f,n,i,d,l):r(f,n,i,d,l)),s||l&&l.detach()}}),n.addClass("is-truncated"),s}function a(e,n,r,a,d){var c=e[0];if(!c)return!1;var h=s(c),f=h.indexOf(" ")!==-1?" ":"ã",p="letter"==a.wrap?"":f,g=h.split(p),v=-1,w=-1,m=0,b=g.length-1;if(a.fallbackToLetter&&0===m&&0===b&&(p="",g=h.split(p),b=g.length-1),a.maxLength)h=i(h.trim().substr(0,a.maxLength),a),l(c,h);else{for(;m<=b&&(0!==m||0!==b);){var y=Math.floor((m+b)/2);if(y==w)break;w=y,l(c,g.slice(0,w+1).join(p)+a.ellipsis),r.children().each(function(){t(this).toggle().toggle()}),o(r,a)?(b=w,a.fallbackToLetter&&0===m&&0===b&&(p="",g=g[0].split(p),v=-1,w=-1,m=0,b=g.length-1)):(v=w,m=w)}if(v==-1||1===g.length&&0===g[0].length){var x=e.parent();e.detach();var C=d&&d.closest(x).length?d.length:0;if(x.contents().length>C?c=u(x.contents().eq(-1-C),n):(c=u(x,n,!0),C||x.detach()),c&&(h=i(s(c),a),l(c,h),C&&d)){var T=d.parent();t(c).parent().append(d),t.trim(T.html())||T.remove()}}else h=i(g.slice(0,v+1).join(p),a),l(c,h)}return!0}function o(t,e){return t.innerHeight()>e.maxHeight||e.maxLength&&t.text().trim().length>e.maxLength}function i(e,n){for(;t.inArray(e.slice(-1),n.lastCharacter.remove)>-1;)e=e.slice(0,-1);return t.inArray(e.slice(-1),n.lastCharacter.noEllipsis)<0&&(e+=n.ellipsis),e}function d(t){return{width:t.innerWidth(),height:t.innerHeight()}}function l(t,e){t.innerText?t.innerText=e:t.nodeValue?t.nodeValue=e:t.textContent&&(t.textContent=e)}function s(t){return t.innerText?t.innerText:t.nodeValue?t.nodeValue:t.textContent?t.textContent:""}function c(t){do t=t.previousSibling;while(t&&1!==t.nodeType&&3!==t.nodeType);return t}function u(e,n,r){var a,o=e&&e[0];if(o){if(!r){if(3===o.nodeType)return o;if(t.trim(e.text()))return u(e.contents().last(),n)}for(a=c(o);!a;){if(e=e.parent(),e.is(n)||!e.length)return!1;a=c(e[0])}if(a)return u(t(a),n)}return!1}function h(e,n){return!!e&&("string"==typeof e?(e=t(e,n),!!e.length&&e):!!e.jquery&&e)}function f(t){for(var e=t.innerHeight(),n=["paddingTop","paddingBottom"],r=0,a=n.length;r<a;r++){var o=parseInt(t.css(n[r]),10);isNaN(o)&&(o=0),e-=o}return e}if(!t.fn.dotdotdot){t.fn.dotdotdot=function(e){if(0===this.length)return t.fn.dotdotdot.debug('No element found for "'+this.selector+'".'),this;if(this.length>1)return this.each(function(){t(this).dotdotdot(e)});var a=this,i=a.contents();a.data("dotdotdot")&&a.trigger("destroy.dot"),a.data("dotdotdot-style",a.attr("style")||""),a.css("word-wrap","break-word"),"nowrap"===a.css("white-space")&&a.css("white-space","normal"),a.bind_events=function(){return a.bind("update.dot",function(e,d){switch(a.removeClass("is-truncated"),e.preventDefault(),e.stopPropagation(),typeof l.height){case"number":l.maxHeight=l.height;break;case"function":l.maxHeight=l.height.call(a[0]);break;default:l.maxHeight=f(a)}l.maxHeight+=l.tolerance,"undefined"!=typeof d&&(("string"==typeof d||"nodeType"in d&&1===d.nodeType)&&(d=t("<div />").append(d).contents()),d instanceof t&&(i=d)),g=a.wrapInner('<div class="dotdotdot" />').children(),g.contents().detach().end().append(i.clone(!0)).find("br").replaceWith(" <br /> ").end().css({height:"auto",width:"auto",border:"none",padding:0,margin:0});var c=!1,u=!1;return s.afterElement&&(c=s.afterElement.clone(!0),c.show(),s.afterElement.detach()),o(g,l)&&(u="children"==l.wrap?n(g,l,c):r(g,a,g,l,c)),g.replaceWith(g.contents()),g=null,t.isFunction(l.callback)&&l.callback.call(a[0],u,i),s.isTruncated=u,u}).bind("isTruncated.dot",function(t,e){return t.preventDefault(),t.stopPropagation(),"function"==typeof e&&e.call(a[0],s.isTruncated),s.isTruncated}).bind("originalContent.dot",function(t,e){return t.preventDefault(),t.stopPropagation(),"function"==typeof e&&e.call(a[0],i),i}).bind("destroy.dot",function(t){t.preventDefault(),t.stopPropagation(),a.unwatch().unbind_events().contents().detach().end().append(i).attr("style",a.data("dotdotdot-style")||"").removeClass("is-truncated").data("dotdotdot",!1)}),a},a.unbind_events=function(){return a.unbind(".dot"),a},a.watch=function(){if(a.unwatch(),"window"==l.watch){var e=t(window),n=e.width(),r=e.height();e.bind("resize.dot"+s.dotId,function(){n==e.width()&&r==e.height()&&l.windowResizeFix||(n=e.width(),r=e.height(),u&&clearInterval(u),u=setTimeout(function(){a.trigger("update.dot")},100))})}else c=d(a),u=setInterval(function(){if(a.is(":visible")){var t=d(a);c.width==t.width&&c.height==t.height||(a.trigger("update.dot"),c=t)}},500);return a},a.unwatch=function(){return t(window).unbind("resize.dot"+s.dotId),u&&clearInterval(u),a};var l=t.extend(!0,{},t.fn.dotdotdot.defaults,e),s={},c={},u=null,g=null;return l.lastCharacter.remove instanceof Array||(l.lastCharacter.remove=t.fn.dotdotdot.defaultArrays.lastCharacter.remove),l.lastCharacter.n
vendor: 12,793 bytes, lines 1829-1848
1829oEllipsis instanceof Array||(l.lastCharacter.noEllipsis=t.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis),s.afterElement=h(l.after,a),s.isTruncated=!1,s.dotId=p++,a.data("dotdotdot",!0).bind_events().trigger("update.dot"),l.watch&&a.watch(),a},t.fn.dotdotdot.defaults={ellipsis:"... ",wrap:"word",fallbackToLetter:!0,lastCharacter:{},tolerance:0,callback:null,after:null,height:null,watch:!1,windowResizeFix:!0,maxLength:null},t.fn.dotdotdot.defaultArrays={lastCharacter:{remove:[" ","ã",",",";",".","!","?"],noEllipsis:[]}},t.fn.dotdotdot.debug=function(t){};var p=1,g=t.fn.html;t.fn.html=function(n){return n!=e&&!t.isFunction(n)&&this.data("dotdotdot")?this.trigger("update",[n]):g.apply(this,arguments)};var v=t.fn.text;t.fn.text=function(n){return n!=e&&!t.isFunction(n)&&this.data("dotdotdot")?(n=t("<div />").text(n).html(),this.trigger("update",[n])):v.apply(this,arguments)}}}(jQuery),jQuery(document).ready(function(t){t(".dot-ellipsis").each(function(){var e=t(this).hasClass("dot-resize-update"),n=t(this).hasClass("dot-timer-update"),r=0,a=t(this).attr("class").split(/\s+/);t.each(a,function(t,e){var n=e.match(/^dot-height-(\d+)$/);null!==n&&(r=Number(n[1]))});var o={};n&&(o.watch=!0),e&&(o.watch="window"),r>0&&(o.height=r),t(this).dotdotdot(o)})}),jQuery(window).on("load",function(){jQuery(".dot-ellipsis.dot-load-update").trigger("update.dot")}); 1830 1831 1832/* 1833 _ _ _ _ 1834 ___| (_) ___| | __ (_)___ 1835 / __| | |/ __| |/ / | / __| 1836 \__ \ | | (__| < _ | \__ \ 1837 |___/_|_|\___|_|\_(_)/ |___/ 1838 |__/ 1839 1840 Version: 1.6.0 1841 Author: Ken Wheeler 1842 Website: http://kenwheeler.github.io 1843 Docs: http://kenwheeler.github.io/slick 1844 Repo: http://github.com/kenwheeler/slick 1845 Issues: http://github.com/kenwheeler/slick/issues 1846 1847 */ 1848 !function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',nextArrow:'<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(b,c){return a('<button type="button" data-role="none" role="button" tabindex="0" />').text(c+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.focussed=!1,e.interrupted=!1,e.hidden="hidden",e.paused=!0,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,d,f),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0)}var b=0;return c}(),b.prototype.activateADA=function(){var a=this;a.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),e.options.vertical===!1?d[e.animType]="translate3d("+b+"px, 0px, 0px)":d[e.animType]="translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.getNavTarget=function(){var b=this,c=b.options.asNavFor;return c&&null!==c&&(c=a(c).not(b.$slider)),c},b.prototype.asNavFor=function(b){var c=this,d=c.getNavTarget();null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};b.options.fade===!1?c[b.transitionType]=b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:c[b.transitionType]="opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayClear(),a.slideCount>a.options.slidesToShow&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this,b=a.currentSlide+a.options.slidesToScroll;a.paused||a.interrupted||a.focussed||(a.options.infinite===!1&&(1===a.direction&&a.currentSlide+1===a.slideCount-1?a.direction=0:0===a.direction&&(b=a.currentSlide-a.options.slidesToScroll,a.currentSlide-1===0&&(a.direction=1))),a.slideHandler(b))},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.prependTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(b.$slider.addClass("slick-dotted"),d=a("<ul />").addClass(b.options.dotsClass),c=0;c<=b.getDotCount();c+=1)d.append(a("<li />").append(b.options.customPaging.call(this,b,c)));b.$dots=d.appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('<div class="slick-track"/>').appendTo(b.$slider):b.$slides.wrapAll('<div class="slick-track"/>').parent(),b.$list=b.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;c<a.options.rows;c++){var j=document.createElement("div");for(d=0;d<a.options.slidesPerRow;d++){var k=b*h+(c*a.options.slidesPerRow+d);g.get(k)&&j.appendChild(g.get(k))}i.appendChild(j)}e.appendChild(i)}a.$slider.empty().append(e),a.$slider.children().children().children().css({width:100/a.options.slidesPerRow+"%",display:"inline-block"})}},b.prototype.checkResponsive=function(b,c){var e,f,g,d=this,h=!1,i=d.$slider.width(),j=window.innerWidth||a(window).width();if("window"===d.respondTo?g=j:"slider"===d.respondTo?g=i:"min"===d.respondTo&&(g=Math.min(j,i)),d.options.responsive&&d.options.responsive.length&&null!==d.options.responsive){f=null;for(e in d.breakpoints)d.breakpoints.hasOwnProperty(e)&&(d.originalSettings.mobileFirst===!1?g<d.breakpoints[e]&&(f=d.breakpoints[e]):g>d.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.currentTarget);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=d.slideCount%d.options.slidesToScroll!==0,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(a<c[e]){a=d;break}d=c[e]}return a},b.prototype.cleanUpEvents=function(){var b=this;b.options.dots&&null!==b.$dots&&a("li",b.$dots).off("click.slick",b.changeSlide).off("mouseenter.slick",a.proxy(b.interrupt,b,!0)).off("mouseleave.
1848slick",a.proxy(b.interrupt,b,!1)),b.$slider.off("focus.slick blur.slick"),b.options.arrows===!0&&b.slideCount>b.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.cleanUpSlideEvents(),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpSlideEvents=function(){var b=this;b.$list.off("mouseenter.slick",a.proxy(b.interrupt,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.interrupt,b,!1))},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.empty().append(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.$slider.removeClass("slick-dotted"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.$slidesCache=b.$slides,b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.focusHandler=function(){var b=this;b.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*:not(.slick-arrow)",function(c){c.stopImmediatePropagation();var d=a(this);setTimeout(function(){b.options.pauseOnFocus&&(b.focussed=d.is(":focus"),b.autoPlay())},0)})},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else if(a.options.centerMode===!0)d=a.slideCount;else if(a.options.asNavFor)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else d=1+Math.ceil((a.slideCount-a.options.slidesToShow)/a.options.slidesToScroll);return d-1},b.prototype.getLeft=function(a){var c,d,f,b=this,e=0;return b.slideOffset=0,d=b.$slides.first().outerHeight(!0),b.options.infinite===!0?(b.slideCount>b.options.slidesToShow&&(b.slideOffset=b.slideWidth*b.options.slidesToShow*-1,e=d*b.options.slidesToShow*-1),b.slideCount%b.options.slidesToScroll!==0&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth*-1,e=(b.options.slidesToShow-(a-b.slideCount))*d*-1):(b.slideOffset=b.slideCount%b.options.slidesToScroll*b.slideWidth*-1,e=b.slideCount%b.options.slidesToScroll*d*-1))):a+b.o
vendor: 4,100 bytes, line 1848
1848ptions.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?a*b.slideWidth*-1+b.slideOffset:a*d*-1+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots(),c.checkResponsive(!0),c.focusHandler()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA(),c.options.autoplay&&(c.paused=!1,c.autoPlay())},b.prototype.initADA=function(){var b=this;b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),b.$slideTrack.attr("role","listbox"),b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c){a(this).attr({role:"option","aria-describedby":"slick-slide"+b.instanceUid+c})}),null!==b.$dots&&b.$dots.attr("role","tablist").find("li").each(function(c){a(this).attr({role:"presentation","aria-selected":"false","aria-controls":"navigation"+b.instanceUid+c,id:"slick-slide"+b.instanceUid+c})}).first().attr("aria-selected","true").end().find("button").attr("role","button").end().closest("div").attr("role","toolbar"),b.activateADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.off("click.slick").on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.interrupt,b,!0)).on("mouseleave.slick",a.proxy(b.interrupt,b,!1))},b.prototype.initSlideEvents=function(){var b=this;b.options.pauseOnHover&&(b.$list.on("mouseenter.slick",a.proxy(b.interrupt,b,!0)),b.$list.on("mouseleave.
1848slick",a.proxy(b.interrupt,b,!1)))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.initSlideEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:b.options.rtl===!0?"next":"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:b.options.rtl===!0?"previous":"next"}}))},b.prototype.lazyLoad=function(){function g(c){a("img[data-lazy]",c).each(function(){var c=a(this),d=a(this).attr("data-lazy"),e=document.createElement("img");e.onload=function(){c.animate({opacity:0}
vendor: 4,284 bytes, line 1848
1848,100,function(){c.attr("src",d).animate({opacity:1},200,function(){c.removeAttr("data-lazy").removeClass("slick-loading")}),b.$slider.trigger("lazyLoaded",[b,c,d])})},e.onerror=function(){c.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),b.$slider.trigger("lazyLoadError",[b,c,d])},e.src=d})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=Math.ceil(e+b.options.slidesToShow),b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.autoPlay(),a.options.autoplay=!0,a.paused=!1,a.focussed=!1,a.interrupted=!1},b.prototype.postSlide=function(a){var b=this;b.unslicked||(b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay&&b.autoPlay(),b.options.accessibility===!0&&b.initADA())},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(b){b=b||1;var e,f,g,c=this,d=a("img[data-lazy]",c.$slider);d.length?(e=d.first(),f=e.attr("data-lazy"),g=document.createElement("img"),g.onload=function(){e.attr("src",f).removeAttr("data-lazy").removeClass("slick-loading"),c.options.adaptiveHeight===!0&&c.setPosition(),c.$slider.trigger("lazyLoaded",[c,e,f]),c.progressiveLazyLoad()},g.onerror=function(){3>b?setTimeout(function(){c.progressiveLazyLoad(b+1)},500):(e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),c.$slider.trigger("lazyLoadError",[c,e,f]),c.progressiveLazyLoad())},g.src=f):c.$slider.trigger("allImagesLoaded",[c])},b.prototype.refresh=function(b){var d,e,c=this;e=c.slideCount-c.options.slidesToShow,!c.options.infinite&&c.currentSlide>e&&(c.currentSlide=e),c.slideCount<=c.options.slidesToShow&&(c.currentSlide=0),d=c.currentSlide,c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.cleanUpSlideEvents(),b.initSlideEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.setPosition(),b.focu
vendor: 2,346 bytes, line 1848
1848sHandler(),b.paused=!b.options.autoplay,b.autoPlay(),b.$slider.trigger("reInit",[b])},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,void d.reinit())},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=b.slideWidth*d*-1,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}
vendor: 3,180 bytes, lines 1848-1849
1848):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(){var c,d,e,f,h,b=this,g=!1;if("object"===a.type(arguments[0])?(e=arguments[0],g=arguments[1],h="multiple"):"string"===a.type(arguments[0])&&(e=arguments[0],f=arguments[1],g=arguments[2],"responsive"===arguments[0]&&"array"===a.type(arguments[1])?h="responsive":"undefined"!=typeof arguments[1]&&(h="single")),"single"===h)b.options[e]=f;else if("multiple"===h)a.each(e,function(a,c){b.options[a]=c});else if("responsive"===h)for(d in f)if("array"!==a.type(b.options.responsive))b.options.responsive=[f[d]];else{for(c=b.options.responsive.length-1;c>=0;)b.options.responsive[c].breakpoint===f[d].breakpoint&&b.options.responsive.splice(c,1),c--;b.options.responsive.push(f[d])}g&&(b.unload(),b.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=a.options.useTransform&&null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a, 1849
vendor: 1,607 bytes, line 1849
1849d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-a<b.options.slidesToShow?d.slice(e-(b.options.slidesToShow-f),e+f).addClass("slick-active").attr("aria-hidden","false"):d.slice(e,e+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false")),"ondemand"===b.options.lazyLoad&&b.lazyLoad()},b.prototype.setupInfinite=function(){var c,d,e,b=this;if(b.options.fade===!0&&(b.options.centerMode=!1),b.options.infinite===!0&&b.options.fade===!1&&(d=null,b.slideCount>b.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.
vendor: 7,880 bytes, line 1849
1849interrupt=function(a){var b=this;a||b.autoPlay(),b.interrupted=a},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),void c.asNavFor(e)):void c.slideHandler(e)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,j,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):(i.options.autoplay&&clearInterval(i.autoPlayTimer),e=0>d?i.slideCount%i.options.slidesToScroll!==0?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?i.slideCount%i.options.slidesToScroll!==0?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.options.asNavFor&&(j=i.getNavTarget(),j=j.slick("getSlick"),j.slideCount<=j.options.slidesToShow&&j.setSlideClasses(i.currentSlide)),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e)})):i.postSlide(e),void i.animateHeight()):void(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e))))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"down":"up":"vertical"},b.prototype.swipeEnd=function(a){var c,d,b=this;if(b.dragging=!1,b.interrupted=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe){switch(d=b.swipeDirection()){case"left":case"down":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.currentDirection=0;break;case"right":case"up":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.currentDirection=1}"vertical"!=d&&(b.slideHandler(c),b.touchObject={},b.$slider.trigger("swipe",[b,d]))}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.options.vertical===!1?b.swipeLeft=d+f*g:b.swipeLeft=d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):void b.setCSS(b.swipeLeft)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return b.interrupted=!0,1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,void(b.dragging=!0))},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.remove(),b.$nextArrow&&b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&!a.options.infinite&&(a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;a.options.autoplay&&(document[a.hidden]?a.interrupted=!0:a.interrupted=!1)},a.fn.slick=function(){var f,g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length;for(f=0;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}});
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.