1// page init 2jQuery(function(){ 3 initSlideShow(); 4 initResponsiveGallery(); 5 initOwlCarousel(); 6 initSameHeight(); 7}); 8 9// OwlCarousel init 10function initOwlCarousel() { 11 var owl = jQuery('.owl-carousel'); 12 owl.owlCarousel({ 13 items:3, 14 loop:true, 15 margin:38, 16 autoplay:true, 17 autoplayTimeout:10000, 18 responsiveClass:true, 19 autoplayHoverPause:true, 20 responsive: { 21 0: { 22 items: 1 23 }, 24 600: { 25 items: 2 26 }, 27 1000: { 28 items: 3 29 } 30 } 31 }) 32} 33 34// align blocks height 35function initSameHeight() { 36 jQuery('.news-holder').sameHeight({ 37 elements: '.news-box', 38 flexible: true, 39 multiLine: true, 40 biggestHeight: true 41 }); 42 jQuery('.sameheight-box').sameHeight({ 43 elements: '.sameheight', 44 flexible: true, 45 multiLine: true, 46 biggestHeight: true 47 }); 48} 49 50 51// fade gallery init 52function initSlideShow() { 53 jQuery('div.slideshow').fadeGallery({ 54 slides: 'div.slide', 55 btnPrev: 'a.btn-prev', 56 btnNext: 'a.btn-next', 57 generatePagination: '.pagination', 58 event: 'click', 59 useSwipe: true, 60 autoRotation: true, 61 autoHeight: true, 62 switchTime: 3000, 63 animSpeed: 500 64 }); 65} 66 67// responsive gallery init 68function initResponsiveGallery() { 69 jQuery('.cycle-gallery').multiSlideCyclicGalery({ 70 mask: '.mask', 71 slideset: '.slideset', 72 slides: '.slide', 73 btnPrev: '.btn-prev', 74 btnNext: '.btn-next', 75 handleTouch: true, 76 animSpeed: 1000, 77 slidesToScroll: 1, 78 visibleSlides: 3, 79 onInit: function() { 80 var self = this; 81 ResponsiveHelper.addRange({ 82 '..767': { 83 on: function() { 84 self.options.slidesToScroll = 1; 85 self.options.visibleSlides = 2; 86 self.resizeSlides(); 87 } 88 } 89 }); 90 } 91 }); 92} 93 94 95/* 96 * jQuery SlideShow plugin 97 */ 98;(function($){ 99 function FadeGallery(options) { 100 this.options = $.extend({ 101 slides: 'ul.slideset > li', 102 activeClass:'active', 103 disabledClass:'disabled', 104 btnPrev: 'a.btn-prev', 105 btnNext: 'a.btn-next', 106 generatePagination: false, 107 pagerList: '<ul>', 108 pagerListItem: '<li><a href="#"></a></li>', 109 pagerListItemText: 'a', 110 pagerLinks: '.pagination li', 111 currentNumber: 'span.current-num', 112 totalNumber: 'span.total-num', 113 btnPlay: '.btn-play', 114 btnPause: '.btn-pause', 115 btnPlayPause: '.btn-play-pause', 116 galleryReadyClass: 'gallery-js-ready', 117 autorotationActiveClass: 'autorotation-active', 118 autorotationDisabledClass: 'autorotation-disabled', 119 autorotationStopAfterClick: false, 120 circularRotation: true, 121 switchSimultaneously: true, 122 disableWhileAnimating: false, 123 disableFadeIE: false, 124 autoRotation: false, 125 pauseOnHover: true, 126 autoHeight: false, 127 useSwipe: false, 128 swipeThreshold: 15, 129 switchTime: 4000, 130 animSpeed: 600, 131 event:'click' 132 }, options); 133 this.init(); 134 } 135 FadeGallery.prototype = { 136 init: function() { 137 if(this.options.holder) { 138 this.findElements(); 139 this.attachEvents(); 140 this.refreshState(true); 141 this.autoRotate(); 142 this.makeCallback('onInit', this); 143 } 144 }, 145 findElements: function() { 146 // control elements 147 this.gallery = $(this.options.holder).addClass(this.options.galleryReadyClass); 148 this.slides = this.gallery.find(this.options.slides); 149 this.slidesHolder = this.slides.eq(0).parent(); 150 this.stepsCount = this.slides.length; 151 this.btnPrev = this.gallery.find(this.options.btnPrev); 152 this.btnNext = this.gallery.find(this.options.btnNext); 153 this.currentIndex = 0; 154 155 // disable fade effect in old IE 156 if(this.options.disableFadeIE && !$.support.opacity) { 157 this.options.animSpeed = 0; 158 } 159 160 // create gallery pagination 161 if(typeof this.options.generatePagination === 'string') { 162 this.pagerHolder = this.gallery.find(this.options.generatePagination).empty(); 163 this.pagerList = $(this.options.pagerList).appendTo(this.pagerHolder); 164 for(var i = 0; i < this.stepsCount; i++) { 165 $(this.options.pagerListItem).appendTo(this.pagerList).find(this.options.pagerListItemText).text(i+1); 166 } 167 this.pagerLinks = this.pagerList.children(); 168 } else { 169 this.pagerLinks = this.gallery.find(this.options.pagerLinks); 170 } 171 172 // get start index 173 var activeSlide = this.slides.filter('.'+this.options.activeClass); 174 if(activeSlide.length) { 175 this.currentIndex = this.slides.index(activeSlide); 176 } 177 this.prevIndex = this.currentIndex; 178 179 // autorotation control buttons 180 this.btnPlay = this.gallery.find(this.options.btnPlay); 181 this.btnPause = this.gallery.find(this.options.btnPause); 182 this.btnPlayPause = this.gallery.find(this.options.btnPlayPause); 183 184 // misc elements 185 this.curNum = this.gallery.find(this.options.currentNumber); 186 this.allNum = this.gallery.find(this.options.totalNumber); 187 188 // handle flexible layout 189 this.slides.css({display:'block',opacity:0}
189).eq(this.currentIndex).css({ 190 opacity:'' 191 }); 192 }, 193 attachEvents: function() { 194 var self = this; 195 196 // flexible layout handler 197 this.resizeHandler = function() { 198 self.onWindowResize(); 199 }; 200 $(window).bind('load resize orientationchange', this.resizeHandler); 201 202 if(this.btnPrev.length) { 203 this.btnPrevHandler = function(e){ 204 e.preventDefault(); 205 self.prevSlide(); 206 if(self.options.autorotationStopAfterClick) { 207 self.stopRotation(); 208 } 209 }; 210 this.btnPrev.bind(this.options.event, this.btnPrevHandler); 211 } 212 if(this.btnNext.length) { 213 this.btnNextHandler = function(e) { 214 e.preventDefault(); 215 self.nextSlide(); 216 if(self.options.autorotationStopAfterClick) { 217 self.stopRotation(); 218 } 219 }; 220 this.btnNext.bind(this.options.event, this.btnNextHandler); 221 } 222 if(this.pagerLinks.length) { 223 this.pagerLinksHandler = function(e) { 224 e.preventDefault(); 225 self.numSlide(self.pagerLinks.index(e.currentTarget)); 226 if(self.options.autorotationStopAfterClick) { 227 self.stopRotation(); 228 } 229 }; 230 this.pagerLinks.bind(self.options.event, this.pagerLinksHandler); 231 } 232 233 // autorotation buttons handler 234 if(this.btnPlay.length) { 235 this.btnPlayHandler = function(e) { 236 e.preventDefault(); 237 self.startRotation(); 238 }; 239 this.btnPlay.bind(this.options.event, this.btnPlayHandler); 240 } 241 if(this.btnPause.length) { 242 this.btnPauseHandler = function(e) { 243 e.preventDefault(); 244 self.stopRotation(); 245 }; 246 this.btnPause.bind(this.options.event, this.btnPauseHandler); 247 } 248 if(this.btnPlayPause.length) { 249 this.btnPlayPauseHandler = function(e){ 250 e.preventDefault(); 251 if(!self.gallery.hasClass(self.options.autorotationActiveClass)) { 252 self.startRotation(); 253 } else { 254 self.stopRotation(); 255 } 256 }; 257 this.btnPlayPause.bind(this.options.event, this.btnPlayPauseHandler); 258 } 259 260 // swipe gestures handler 261 if(this.options.useSwipe && window.Hammer && isTouchDevice) { 262 this.swipeHandler = new Hammer.Manager(this.gallery[0]); 263 this.swipeHandler.add(new Hammer.Swipe({ 264 direction: Hammer.DIRECTION_HORIZONTAL, 265 threshold: self.options.swipeThreshold 266 })); 267 this.swipeHandler.on('swipeleft', function() { 268 self.nextSlide(); 269 }).on('swiperight', function() { 270 self.prevSlide(); 271 }); 272 } 273 274 // pause on hover handling 275 if(this.options.pauseOnHover) { 276 this.hoverHandler = function() { 277 if(self.options.autoRotation) { 278 self.galleryHover = true; 279 self.pauseRotation(); 280 } 281 }; 282 this.leaveHandler = function() { 283 if(self.options.autoRotation) { 284 self.galleryHover = false; 285 self.resumeRotation(); 286 } 287 }; 288 this.gallery.bind({mouseenter: this.hoverHandler, mouseleave: this.leaveHandler}); 289 } 290 }, 291 onWindowResize: function(){ 292 if(this.options.autoHeight) { 293 this.slidesHolder.css({height: this.slides.eq(this.currentIndex).outerHeight(true) }); 294 } 295 }, 296 prevSlide: function() { 297 if(!(this.options.disableWhileAnimating && this.galleryAnimating)) { 298 this.prevIndex = this.currentIndex; 299 if(this.currentIndex > 0) { 300 this.currentIndex--; 301 this.switchSlide(); 302 } else if(this.options.circularRotation) { 303 this.currentIndex = this.stepsCount - 1; 304 this.switchSlide(); 305 } 306 } 307 }, 308 nextSlide: function(fromAutoRotation) { 309 if(!(this.options.disableWhileAnimating && this.galleryAnimating)) { 310 this.prevIndex = this.currentIndex; 311 if(this.currentIndex < this.stepsCount - 1) { 312 this.currentIndex++; 313 this.switchSlide(); 314 } else if(this.options.circularRotation || fromAutoRotation === true) { 315 this.currentIndex = 0; 316 this.switchSlide(); 317 } 318 } 319 }, 320 numSlide: function(c) { 321 if(this.currentIndex != c) { 322 this.prevIndex = this.currentIndex; 323 this.currentIndex = c; 324 this.switchSlide(); 325 } 326 }, 327 switchSlide: function() { 328 var self = this; 329 if(this.slides.length > 1) { 330 this.galleryAnimating = true; 331 if(!this.options.animSpeed) { 332 this.slides.eq(this.prevIndex).css({opacity:0}
332); 333 } else { 334 this.slides.eq(this.prevIndex).stop().animate({opacity:0},{duration: this.options.animSpeed}); 335 } 336 337 this.switchNext = function() { 338 if(!self.options.animSpeed) { 339 self.slides.eq(self.currentIndex).css({opacity:''}); 340 } else { 341 self.slides.eq(self.currentIndex).stop().animate({opacity:1},{duration: self.options.animSpeed}); 342 } 343 clearTimeout(this.nextTimer); 344 this.nextTimer = setTimeout(function() { 345 self.slides.eq(self.currentIndex).css({opacity:''}); 346 self.galleryAnimating = false; 347 self.autoRotate(); 348 349 // onchange callback 350 self.makeCallback('onChange', self); 351 }, self.options.animSpeed); 352 }; 353 354 if(this.options.switchSimultaneously) { 355 self.switchNext(); 356 } else { 357 clearTimeout(this.switchTimer); 358 this.switchTimer = setTimeout(function(){ 359 self.switchNext(); 360 }, this.options.animSpeed); 361 } 362 this.refreshState(); 363 364 // onchange callback 365 this.makeCallback('onBeforeChange', this); 366 } 367 }, 368 refreshState: function(initial) { 369 this.slides.removeClass(this.options.activeClass).eq(this.currentIndex).addClass(this.options.activeClass); 370 this.pagerLinks.removeClass(this.options.activeClass).eq(this.currentIndex).addClass(this.options.activeClass); 371 this.curNum.html(this.currentIndex+1); 372 this.allNum.html(this.stepsCount); 373 374 // initial refresh 375 if(this.options.autoHeight) { 376 if(initial) { 377 this.slidesHolder.css({height: this.slides.eq(this.currentIndex).outerHeight(true) }); 378 } else { 379 this.slidesHolder.stop().animate({height: this.slides.eq(this.currentIndex).outerHeight(true)}, {duration: this.options.animSpeed}); 380 } 381 } 382 383 // disabled state 384 if(!this.options.circularRotation) { 385 this.btnPrev.add(this.btnNext).removeClass(this.options.disabledClass); 386 if(this.currentIndex === 0) this.btnPrev.addClass(this.options.disabledClass); 387 if(this.currentIndex === this.stepsCount - 1) this.btnNext.addClass(this.options.disabledClass); 388 } 389 390 // add class if not enough slides 391 this.gallery.toggleClass('not-enough-slides', this.stepsCount === 1); 392 }, 393 startRotation: function() { 394 this.options.autoRotation = true; 395 this.galleryHover = false; 396 this.autoRotationStopped = false; 397 this.resumeRotation(); 398 }, 399 stopRotation: function() { 400 this.galleryHover = true; 401 this.autoRotationStopped = true; 402 this.pauseRotation(); 403 }, 404 pauseRotation: function() { 405 this.gallery.addClass(this.options.autorotationDisabledClass); 406 this.gallery.removeClass(this.options.autorotationActiveClass); 407 clearTimeout(this.timer); 408 }, 409 resumeRotation: function() { 410 if(!this.autoRotationStopped) { 411 this.gallery.addClass(this.options.autorotationActiveClass); 412 this.gallery.removeClass(this.options.autorotationDisabledClass); 413 this.autoRotate(); 414 } 415 }, 416 autoRotate: function() { 417 var self = this; 418 clearTimeout(this.timer); 419 if(this.options.autoRotation && !this.galleryHover && !this.autoRotationStopped) { 420 this.gallery.addClass(this.options.autorotationActiveClass); 421 this.timer = setTimeout(function(){ 422 self.nextSlide(true); 423 }, this.options.switchTime); 424 } else { 425 this.pauseRotation(); 426 } 427 }, 428 makeCallback: function(name) { 429 if(typeof this.options[name] === 'function') { 430 var args = Array.prototype.slice.call(arguments); 431 args.shift(); 432 this.options[name].apply(this, args); 433 } 434 }, 435 destroy: function() { 436 // navigation buttons handler 437 this.btnPrev.unbind(this.options.event, this.btnPrevHandler); 438 this.btnNext.unbind(this.options.event, this.btnNextHandler); 439 this.pagerLinks.unbind(this.options.event, this.pagerLinksHandler); 440 $(window).unbind('load resize orientationchange', this.resizeHandler); 441 442 // remove autorotation handlers 443 this.stopRotation(); 444 this.btnPlay.unbind(this.options.event, this.btnPlayHandler); 445 this.btnPause.unbind(this.options.event, this.btnPauseHandler); 446 this.btnPlayPause.unbind(this.options.event, this.btnPlayPauseHandler); 447 this.gallery.unbind('mouseenter', this.hoverHandler); 448 this.gallery.unbind('mouseleave', this.leaveHandler); 449 450 // remove swipe handler if used 451 if(this.swipeHandler) { 452 this.swipeHandler.destroy(); 453 } 454 if(typeof this.options.generatePagination === 'string') { 455 this.pagerHolder.empty(); 456 } 457 458 // remove unneeded classes and styles
459 var unneededClasses = [this.options.galleryReadyClass, this.options.autorotationActiveClass, this.options.autorotationDisabledClass]; 460 this.gallery.removeClass(unneededClasses.join(' ')); 461 this.slidesHolder.add(this.slides).removeAttr('style'); 462 } 463 }; 464 465 // detect device type 466 var isTouchDevice = /Windows Phone/.test(navigator.userAgent) || ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch; 467 468 // jquery plugin 469 $.fn.fadeGallery = function(opt){ 470 return this.each(function(){ 471 $(this).data('FadeGallery', new FadeGallery($.extend(opt,{holder:this}))); 472 }); 473 }; 474}(jQuery)); 475 476// responsive gallery init 477function initResponsiveGallery() { 478 jQuery('.cycle-gallery').multiSlideCyclicGalery({ 479 mask: '.mask', 480 slideset: '.slideset', 481 slides: '.slide', 482 btnPrev: '.btn-prev', 483 btnNext: '.btn-next', 484 handleTouch: true, 485 animSpeed: 1000, 486 slidesToScroll: 3, 487 visibleSlides: 6, 488 onInit: function() { 489 var self = this; 490 ResponsiveHelper.addRange({ 491 '..767': { 492 on: function() { 493 self.options.slidesToScroll = 1; 494 self.options.visibleSlides = 2; 495 self.resizeSlides(); 496 } 497 }, 498 '768..1023': { 499 on: function() { 500 self.options.slidesToScroll = 1; 501 self.options.visibleSlides = 3; 502 self.resizeSlides(); 503 } 504 }, 505 '1024..': { 506 on: function() { 507 self.options.slidesToScroll = 1; 508 self.options.visibleSlides = 4; 509 self.resizeSlides(); 510 } 511 } 512 }); 513 } 514 }); 515 jQuery('.cycle-gallery-1').multiSlideCyclicGalery({ 516 mask: '.mask', 517 slideset: '.slideset', 518 slides: '.slide', 519 btnPrev: '.btn-prev', 520 btnNext: '.btn-next', 521 generatePagination: '.pagination', 522 handleTouch: true, 523 animSpeed: 1000, 524 slidesToScroll: 1, 525 visibleSlides: 1, 526 autoRotation: true, 527 onInit: function() { 528 var self = this; 529 ResponsiveHelper.addRange({ 530 '..767': { 531 on: function() { 532 self.options.slidesToScroll = 1; 533 self.options.visibleSlides = 1; 534 self.resizeSlides(); 535 } 536 }, 537 '768..1023': { 538 on: function() { 539 self.options.slidesToScroll = 1; 540 self.options.visibleSlides = 1; 541 self.resizeSlides(); 542 } 543 }, 544 '1024..': { 545 on: function() { 546 self.options.slidesToScroll = 1; 547 self.options.visibleSlides = 1; 548 self.resizeSlides(); 549 } 550 } 551 }); 552 } 553 }); 554} 555 556/* 557 * Responsive Layout helper 558 */ 559ResponsiveHelper = (function($) { 560 // init variables 561 var handlers = [], 562 prevWinWidth, 563 win = $(window), 564 nativeMatchMedia = false; 565 566 // detect match media support 567 if (window.matchMedia) { 568 if (window.Window && window.matchMedia === Window.prototype.matchMedia) { 569 nativeMatchMedia = true; 570 } else if (window.matchMedia.toString().indexOf('native') > -1) { 571 nativeMatchMedia = true; 572 } 573 } 574 575 // prepare resize handler 576 function resizeHandler() { 577 var winWidth = win.width(); 578 if (winWidth !== prevWinWidth) { 579 prevWinWidth = winWidth; 580 581 // loop through range groups 582 $.each(handlers, function(index, rangeObject) { 583 // disable current active area if needed 584 $.each(rangeObject.data, function(property, item) { 585 if (item.currentActive && !matchRange(item.range[0], item.range[1])) { 586 item.currentActive = false; 587 if (typeof item.disableCallback === 'function') { 588 item.disableCallback(); 589 } 590 } 591 }); 592 593 // enable areas that match current width 594 $.each(rangeObject.data, function(property, item) { 595 if (!item.currentActive && matchRange(item.range[0], item.range[1])) { 596 // make callback 597 item.currentActive = true; 598 if (typeof item.enableCallback === 'function') { 599 item.enableCallback(); 600 } 601 } 602 }); 603 }); 604 } 605 } 606 win.bind('load resize orientationchange', resizeHandler); 607 608 // test range 609 function matchRange(r1, r2) { 610 var mediaQueryString = ''; 611 if (r1 > 0) { 612 mediaQueryString += '(min-width: ' + r1 + 'px)'; 613 } 614 if (r2 < Infinity) { 615 mediaQueryString += (mediaQueryString ? ' and ' : '') + '(max-width: ' + r2 + 'px)'; 616 } 617 return matchQuery(mediaQueryString, r1, r2); 618 } 619 620 // media query function 621 function matchQuery(query, r1, r2) { 622 if (window.matchMedia && nativeMatchMedia) { 623 return matchMedia(query).matches; 624 } else if (window.styleMedia) { 625 return styleMedia.matchMedium(query); 626 } else if (window.media) { 627 return media.matchMedium(query); 628 } else { 629 return prevWinWidth >= r1 && prevWinWidth <= r2; 630 } 631 } 632 633 // range parser 634 function parseRange(rangeStr) { 635 var rangeData = rangeStr.split('..'); 636 var x1 = parseInt(rangeData[0], 10) || -Infinity; 637 var x2 = parseInt(rangeData[1], 10) || Infinity; 638 return [x1, x2].sort(function(a, b) { 639 return a - b; 640 }); 641 } 642 643 // export public functions 644 return { 645 addRange: function(ranges) { 646 // parse data and add items to collection 647 var result = { data:{}}; 648 $.each(ranges, function(property, data) { 649 result.data[property] = { 650 range: parseRange(property), 651 enableCallback: data.on, 652 disableCallback: data.off 653 }; 654 }); 655 handlers.push(result); 656 657 // call resizeHandler to recalculate all events 658 prevWinWidth = null; 659 resizeHandler(); 660 } 661 }; 662}(jQuery)); 663 664 665;(function($) { 666 function MultiSlideCyclicGalery(options) { 667 this.options = $.extend({ 668 mask: '.mask', 669 slideset: '.slideset', 670 slides: '.slide', 671 btnPrev: '.prev', 672 btnNext: '.next', 673 activeClass: 'active', 674 galleryReadyClass: 'gallery-js-ready', 675 currentNumber: '.current-num', 676 totalNumber: '.total-num', 677 pagerItems: '.pagination li', 678 generatePagination: false, 679 pagerList: '<ul>', 680 pagerListItem: '<li><a href="#"></a></li>', 681 pagerListItemText: 'a', 682 animSpeed: 500, 683 switchTime: 3000, 684 event: 'click', 685 autoRotation: false, 686 swipeThreshold: 15, 687 handleTouch: false, 688 slidesToScroll: 5, 689 visibleSlides: 5 690 }, options); 691 this.init(); 692 } 693 MultiSlideCyclicGalery.prototype = { 694 init: function() { 695 if (this.options.holder) { 696 this.findElements(); 697 this.resizeSlides(); 698 this.refrestCounter(); 699 this.attachEvents(); 700 this.startRotation(); 701 this.makeCallback('onInit', this); 702 } 703 }, 704 findElements: function() { 705 // control elements 706 this.gallery = $(this.options.holder).addClass(this.options.galleryReadyClass); 707 this.mask = this.gallery.find(this.options.mask); 708 this.currentNumber = this.gallery.find(this.options.currentNumber); 709 this.totalNumber = this.gallery.find(this.options.totalNumber); 710 this.slideset = this.gallery.find(this.options.slideset); 711 this.slides = this.slideset.find(this.options.slides); 712 this.btnPrev = this.gallery.find(this.options.btnPrev); 713 this.btnNext = this.gallery.find(this.options.btnNext); 714 this.direction = 1; 715 this.galleryAnimating = false;
716 this.isDestroy = false; 717 if (this.totalNumber.length) { 718 this.totalNumber.text(this.slides.length); 719 } 720 721 this.slides.eq(0).addClass(this.options.activeClass); 722 this.currentIndex = 0; 723 // create gallery pagination 724 if (typeof this.options.generatePagination === 'string') { 725 this.pagerItems = $(); 726 this.buildPagination(); 727 } else { 728 this.pagerItems = this.gallery.find(this.options.pagerItems); 729 this.attachPaginationEvents(); 730 } 731 }, 732 attachEvents: function() { 733 var self = this; 734 735 // previous and next button handlers 736 if (this.btnPrev.length) { 737 this.prevSlideHandler = function(e) { 738 e.preventDefault(); 739 self.prevSlide(); 740 }; 741 this.btnPrev.on(this.options.event, this.prevSlideHandler); 742 } 743 if (this.btnNext.length) { 744 this.nextSlideHandler = function(e) { 745 e.preventDefault(); 746 self.nextSlide(); 747 }; 748 this.btnNext.on(this.options.event, this.nextSlideHandler); 749 } 750 751 this.resizeHandler = function() { 752 if (!this.isDestroy) { 753 self.resizeSlides(); 754 self.sliderWidth(); 755 self.stopRotation(); 756 self.startRotation(); 757 } 758 }; 759 760 $(window).on('resize orientationchange load', this.resizeHandler); 761 762 // swipe event handling 763 if (isTouchDevice) { 764 // enable hardware acceleration 765 if (this.options.useTranslate3D) { 766 this.slideset.css({ 767 '-webkit-transform': 'translate3d(0px, 0px, 0px)' 768 }); 769 } 770 771 // swipe gestures 772 if (this.options.handleTouch && window.Hammer) { 773 this.swipeHandler = new Hammer.Manager(this.gallery[0]); 774 this.swipeHandler.add(new Hammer.Pan({ 775 direction: Hammer.DIRECTION_HORIZONTAL, 776 threshold: self.options.swipeThreshold 777 })); 778 779 this.swipeHandler.on('panend', function(e) { 780 if (e.distance > self.options.swipeThreshold) { 781 if (e.offsetDirection === Hammer.DIRECTION_RIGHT) { 782 self.nextSlide(); 783 } else { 784 self.prevSlide(); 785 } 786 } else { 787 self.switchSlide(); 788 } 789 }); 790 } 791 } 792 }, 793 buildPagination: function() { 794 if (typeof this.options.generatePagination === 'string') { 795 if (!this.pagerHolder) { 796 this.pagerHolder = this.gallery.find(this.options.generatePagination); 797 } 798 if (this.pagerHolder.length) { 799 this.pagerHolder.empty(); 800 this.pagerList = $(this.options.pagerList).appendTo(this.pagerHolder); 801 for (var i = 0; i < this.slides.length; i++) { 802 $(this.options.pagerListItem).appendTo(this.pagerList).find(this.options.pagerListItemText).text(i + 1); 803 } 804 this.pagerItems = this.pagerList.children(); 805 this.pagerItems.eq(this.slides.filter('.' + this.options.activeClass).index()).addClass(this.options.activeClass); 806 this.attachPaginationEvents(); 807 } 808 } 809 }, 810 attachPaginationEvents: function() { 811 var self = this; 812 self.pagerItems.each(function(i) { 813 var item = jQuery(this); 814 item.find('a').on('click', function(e) { 815 e.preventDefault(); 816 self.pagerItems.removeClass(self.options.activeClass); 817 item.addClass(self.options.activeClass); 818 self.index = i; 819 self.slideTo(i); 820 }); 821 }); 822 }, 823 resizeSlides: function() { 824 var sidesOffset = this.slides.eq(0).outerWidth(true) - this.slides.eq(0).outerWidth(); 825 826 this.slides.css({ 827 width: this.mask.outerWidth() / this.options.visibleSlides - sidesOffset 828 }); 829 }, 830 refrestCounter: function() { 831 var leftOffset = Infinity; 832 var num = 0; 833 834 this.slides.each(function(i) { 835 var slide = $(this); 836 var slideOffset = slide.offset().left; 837 838 if (slideOffset < leftOffset) { 839 leftOffset = slideOffset; 840 num = i + 1; 841 } 842 }); 843 844 if (this.currentNumber.length) { 845 this.currentNumber.text(num); 846 } 847 }, 848 sliderWidth: function() { 849 this.slideset.css({ 850 width: this.getStepOffset() 851 }); 852 }, 853 getStepOffset: function() { 854 var sliderWidth = 0; 855 856 this.slides.each(function() { 857 var slide = jQuery(this); 858 859 sliderWidth += slide.outerWidth(true); 860 }); 861 return sliderWidth + 10; 862 }, 863 prevSlide: function() { 864 if (!this.galleryAnimating) { 865 this.galleryAnimating = true; 866 this.direction = -1; 867 if (this.currentIndex > 0){ 868 this.currentIndex--; 869 } else { 870 this.currentIndex = this.slides.length - 1; 871 } 872 this.switchSlide(); 873 } 874 }, 875 nextSlide: function() { 876 if (!this.galleryAnimating) { 877 this.galleryAnimating = true; 878 this.direction = 1; 879 if (this.currentIndex < this.slides.length - 1){ 880 this.currentIndex++; 881 } else { 882 this.currentIndex = 0; 883 } 884 this.switchSlide(); 885 } 886 }, 887 slideTo: function(i) { 888 if (this.currentIndex != i && !this.isAnimating){ 889 if (this.currentIndex > i){ 890 this.direction = -1; 891 } else { 892 this.direction = 1; 893 } 894 this.prevIndex = this.currentIndex; 895 this.currentIndex = i; 896 this.switchSlide(); 897 } 898 }, 899 getAppendedSlides: function() { 900 var slides = this.slideset.find(this.options.slides); 901 var currSlides = $(); 902 var self = this; 903 var slidesLength = slides.length; 904 905 906 slides.each(function(i) { 907 var slide = jQuery(this); 908 909 if (self.direction > 0) { 910 if (i < self.options.slidesToScroll) { 911 currSlides = currSlides.add(slide); 912 } 913 } else { 914 if (i >= slidesLength - self.options.slidesToScroll) { 915 currSlides = currSlides.add(slide); 916 } 917 } 918 }); 919 920 return currSlides; 921 }, 922 switchSlide: function() { 923 var self = this; 924 var appendedSlides = this.getAppendedSlides(); 925 var animDistance = this.mask.outerWidth() / this.options.visibleSlides * this.options.slidesToScroll; 926 927 if (this.direction > 0) { 928 this.slideset.animate({ 929 marginLeft: -animDistance 930 }, { 931 duration: this.options.animSpeed, 932 complete: function() { 933 self.pagerItems.removeClass(self.options.activeClass); 934 self.pagerItems.eq(self.currentIndex).addClass(self.options.activeClass); 935 appendedSlides.appendTo(self.slideset); 936 self.slideset.css({ 937 marginLeft: '' 938 }); 939 self.refrestCounter(); 940 self.galleryAnimating = false;
941 self.startRotation(); 942 } 943 }); 944 } else { 945 appendedSlides.prependTo(this.slideset); 946 this.slideset.css({ 947 marginLeft: -animDistance 948 }); 949 this.slideset.animate({ 950 marginLeft: 0 951 }, { 952 duration: this.options.animSpeed, 953 complete: function() { 954 self.refrestCounter(); 955 self.galleryAnimating = false; 956 self.startRotation(); 957 } 958 }); 959 } 960 }, 961 startRotation: function() { 962 var self = this; 963 clearTimeout(this.timer); 964 if (this.options.autoRotation) { 965 this.timer = setTimeout(function() { 966 self.nextSlide(true); 967 }, this.options.switchTime); 968 } 969 }, 970 stopRotation: function() { 971 clearTimeout(this.timer); 972 }, 973 makeCallback: function(name) { 974 if (typeof this.options[name] === 'function') { 975 var args = Array.prototype.slice.call(arguments); 976 args.shift(); 977 this.options[name].apply(this, args); 978 } 979 }, 980 destroy: function() { 981 // destroy handler 982 this.isDestroy = true; 983 this.btnPrev.off(this.options.event, this.prevSlideHandler); 984 this.btnNext.off(this.options.event, this.nextSlideHandler); 985 $(window).off('resize orientationchange load', this.resizeHandler); 986 // autorotation handlers 987 this.stopRotation(); 988 989 // remove inline styles, classes 990 this.gallery.removeClass(this.options.galleryReadyClass); 991 this.slides.removeClass(this.options.activeClass); 992 993 this.slideset.add(this.slides).removeAttr('style'); 994 } 995 }; 996 997 // detect device type 998 var isTouchDevice = /Windows Phone/.test(navigator.userAgent) || ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch; 999 1000 // jquery plugin 1001 $.fn.multiSlideCyclicGalery = function(opt) { 1002 return this.each(function() { 1003 $(this).data('MultiSlideCyclicGalery', new MultiSlideCyclicGalery($.extend(opt, { 1004 holder: this 1005 }))); 1006 }); 1007 }; 1008}(jQuery)); 1009 1010 1011/* 1012 * jQuery SameHeight plugin 1013 */ 1014;(function($){ 1015 $.fn.sameHeight = function(opt) { 1016 var options = $.extend({ 1017 skipClass: 'same-height-ignore', 1018 leftEdgeClass: 'same-height-left', 1019 rightEdgeClass: 'same-height-right', 1020 elements: '>*', 1021 flexible: false, 1022 multiLine: false, 1023 useMinHeight: false, 1024 biggestHeight: false 1025 },opt); 1026 return this.each(function(){ 1027 var holder = $(this), postResizeTimer, ignoreResize; 1028 var elements = holder.find(options.elements).not('.' + options.skipClass); 1029 if(!elements.length) return; 1030 1031 // resize handler 1032 function doResize() { 1033 elements.css(options.useMinHeight && supportMinHeight ? 'minHeight' : 'height', ''); 1034 if(options.multiLine) { 1035 // resize elements row by row 1036 resizeElementsByRows(elements, options); 1037 } else { 1038 // resize elements by holder 1039 resizeElements(elements, holder, options); 1040 } 1041 } 1042 doResize(); 1043 1044 // handle flexible layout / font resize 1045 var delayedResizeHandler = function() { 1046 if(!ignoreResize) { 1047 ignoreResize = true; 1048 doResize(); 1049 clearTimeout(postResizeTimer); 1050 postResizeTimer = setTimeout(function() { 1051 doResize(); 1052 setTimeout(function(){ 1053 ignoreResize = false; 1054 }, 10); 1055 }, 100); 1056 } 1057 }; 1058 1059 // handle flexible/responsive layout 1060 if(options.flexible) { 1061 $(window).bind('resize orientationchange fontresize', delayedResizeHandler); 1062 } 1063 1064 // handle complete page load including images and fonts 1065 $(window).bind('load', delayedResizeHandler); 1066 }); 1067 }; 1068 1069 // detect css min-height support 1070 var supportMinHeight = typeof document.documentElement.style.maxHeight !== 'undefined'; 1071 1072 // get elements by rows 1073 function resizeElementsByRows(boxes, options) { 1074 var currentRow = $(), maxHeight, maxCalcHeight = 0, firstOffset = boxes.eq(0).offset().top; 1075 boxes.each(function(ind){ 1076 var curItem = $(this); 1077 if(curItem.offset().top === firstOffset) { 1078 currentRow = currentRow.add(this); 1079 } else { 1080 maxHeight = getMaxHeight(currentRow); 1081 maxCalcHeight = Math.max(maxCalcHeight, resizeElements(currentRow, maxHeight, options)); 1082 currentRow = curItem; 1083 firstOffset = curItem.offset().top; 1084 } 1085 }); 1086 if(currentRow.length) { 1087 maxHeight = getMaxHeight(currentRow); 1088 maxCalcHeight = Math.max(maxCalcHeight, resizeElements(currentRow, maxHeight, options)); 1089 } 1090 if(options.biggestHeight) { 1091 boxes.css(options.useMinHeight && supportMinHeight ? 'minHeight' : 'height', maxCalcHeight); 1092 } 1093 } 1094 1095 // calculate max element height 1096 function getMaxHeight(boxes) { 1097 var maxHeight = 0; 1098 boxes.each(function(){ 1099 maxHeight = Math.max(maxHeight, $(this).outerHeight()); 1100 }); 1101 return maxHeight; 1102 } 1103 1104 // resize helper function 1105 function resizeElements(boxes, parent, options) { 1106 var calcHeight; 1107 var parentHeight = typeof parent === 'number' ? parent : parent.height(); 1108 boxes.removeClass(options.leftEdgeClass).removeClass(options.rightEdgeClass).each(function(i){ 1109 var element = $(this); 1110 var depthDiffHeight = 0; 1111 var isBorderBox = element.css('boxSizing') === 'border-box' || element.css('-moz-box-sizing') === 'border-box' || element.css('-webkit-box-sizing') === 'border-box'; 1112 1113 if(typeof parent !== 'number') { 1114 element.parents().each(function(){ 1115 var tmpParent = $(this); 1116 if(parent.is(this)) { 1117 return false;
1118 } else { 1119 depthDiffHeight += tmpParent.outerHeight() - tmpParent.height(); 1120 } 1121 }); 1122 } 1123 calcHeight = parentHeight - depthDiffHeight; 1124 calcHeight -= isBorderBox ? 0 : element.outerHeight() - element.height(); 1125 1126 if(calcHeight > 0) { 1127 element.css(options.useMinHeight && supportMinHeight ? 'minHeight' : 'height', calcHeight); 1128 } 1129 }); 1130 boxes.filter(':first').addClass(options.leftEdgeClass); 1131 boxes.filter(':last').addClass(options.rightEdgeClass); 1132 return calcHeight; 1133 } 1134}(jQuery)); 1135 1136/* 1137 * jQuery FontResize Event 1138 */ 1139jQuery.onFontResize = (function($) { 1140 $(function() { 1141 var randomID = 'font-resize-frame-' + Math.floor(Math.random() * 1000); 1142 var resizeFrame = $('<iframe>').attr('id', randomID).addClass('font-resize-helper'); 1143 1144 // required styles 1145 resizeFrame.css({ 1146 width: '100em', 1147 height: '10px', 1148 position: 'absolute', 1149 borderWidth: 0, 1150 top: '-9999px', 1151 left: '-9999px' 1152 }).appendTo('body'); 1153 1154 // use native IE resize event if possible 1155 if (window.attachEvent && !window.addEventListener) { 1156 resizeFrame.bind('resize', function () { 1157 $.onFontResize.trigger(resizeFrame[0].offsetWidth / 100); 1158 }); 1159 } 1160 // use script inside the iframe to detect resize for other browsers 1161 else { 1162 var doc = resizeFrame[0].contentWindow.document; 1163 doc.open(); 1164 doc.write('<scri' + 'pt>window.onload = function(){var em = parent.jQuery("#' + randomID + '")[0];window.onresize = function(){if(parent.jQuery.onFontResize){parent.jQuery.onFontResize.trigger(em.offsetWidth / 100);}}};</scri' + 'pt>'); 1165 doc.close(); 1166 }
1167 jQuery.onFontResize.initialSize = resizeFrame[0].offsetWidth / 100; 1168 }); 1169 return { 1170 // public method, so it can be called from within the iframe 1171 trigger: function (em) { 1172 $(window).trigger("fontresize", [em]); 1173 } 1174 }; 1175}(jQuery)); 1176 1177 1178// placeholder class 1179;(function(){ 1180 var placeholderCollection = []; 1181 PlaceholderInput = function() { 1182 this.options = { 1183 element:null, 1184 showUntilTyping:false, 1185 wrapWithElement:false, 1186 getParentByClass:false, 1187 showPasswordBullets:false, 1188 placeholderAttr:'value', 1189 inputFocusClass:'focus', 1190 inputActiveClass:'text-active', 1191 parentFocusClass:'parent-focus', 1192 parentActiveClass:'parent-active', 1193 labelFocusClass:'label-focus', 1194 labelActiveClass:'label-active', 1195 fakeElementClass:'input-placeholder-text' 1196 }; 1197 placeholderCollection.push(this); 1198 this.init.apply(this,arguments); 1199 }; 1200 PlaceholderInput.refreshAllInputs = function(except) { 1201 for(var i = 0; i < placeholderCollection.length; i++) { 1202 if(except !== placeholderCollection[i]) { 1203 placeholderCollection[i].refreshState(); 1204 } 1205 } 1206 }; 1207 PlaceholderInput.replaceByOptions = function(opt) { 1208 var inputs = [].concat( 1209 convertToArray(document.getElementsByTagName('input')), 1210 convertToArray(document.getElementsByTagName('textarea')) 1211 ); 1212 for(var i = 0; i < inputs.length; i++) { 1213 if(inputs[i].className.indexOf(opt.skipClass) < 0) { 1214 var inputType = getInputType(inputs[i]); 1215 var placeholderValue = inputs[i].getAttribute('placeholder'); 1216 if(opt.focusOnly || (opt.clearInputs && (inputType === 'text' || inputType === 'email' || placeholderValue)) || 1217 (opt.clearTextareas && inputType === 'textarea') || 1218 (opt.clearPasswords && inputType === 'password') 1219 ) { 1220 new PlaceholderInput({ 1221 element:inputs[i], 1222 focusOnly: opt.focusOnly, 1223 wrapWithElement:opt.wrapWithElement, 1224 showUntilTyping:opt.showUntilTyping, 1225 getParentByClass:opt.getParentByClass, 1226 showPasswordBullets:opt.showPasswordBullets, 1227 placeholderAttr: placeholderValue ? 'placeholder' : opt.placeholderAttr 1228 }); 1229 } 1230 } 1231 } 1232 }; 1233 PlaceholderInput.prototype = { 1234 init: function(opt) { 1235 this.setOptions(opt); 1236 if(this.element && this.element.PlaceholderInst) { 1237 this.element.PlaceholderInst.refreshClasses(); 1238 } else { 1239 this.element.PlaceholderInst = this; 1240 if(this.elementType !== 'radio' || this.elementType !== 'checkbox' || this.elementType !== 'file') { 1241 this.initElements(); 1242 this.attachEvents(); 1243 this.refreshClasses(); 1244 } 1245 } 1246 }, 1247 setOptions: function(opt) { 1248 for(var p in opt) { 1249 if(opt.hasOwnProperty(p)) { 1250 this.options[p] = opt[p]; 1251 } 1252 } 1253 if(this.options.element) { 1254 this.element = this.options.element; 1255 this.elementType = getInputType(this.element); 1256 if(this.options.focusOnly) { 1257 this.wrapWithElement = false; 1258 } else { 1259 if(this.elementType === 'password' && this.options.showPasswordBullets && !this.options.showUntilTyping) { 1260 this.wrapWithElement = false; 1261 } else { 1262 this.wrapWithElement = this.elementType === 'password' || this.options.showUntilTyping ? true : this.options.wrapWithElement; 1263 } 1264 } 1265 this.setPlaceholderValue(this.options.placeholderAttr); 1266 } 1267 }, 1268 setPlaceholderValue: function(attr) { 1269 this.origValue = (attr === 'value' ? this.element.defaultValue : (this.element.getAttribute(attr) || '')); 1270 if(this.options.placeholderAttr !== 'value') { 1271 this.element.removeAttribute(this.options.placeholderAttr); 1272 } 1273 }, 1274 initElements: function() { 1275 // create fake element if needed 1276 if(this.wrapWithElement) { 1277 this.fakeElement = document.createElement('span'); 1278 this.fakeElement.className = this.options.fakeElementClass; 1279 this.fakeElement.innerHTML += this.origValue; 1280 this.fakeElement.style.color = getStyle(this.element, 'color'); 1281 this.fakeElement.style.position = 'absolute'; 1282 this.element.parentNode.insertBefore(this.fakeElement, this.element); 1283 1284 if(this.element.value === this.origValue || !this.element.value) { 1285 this.element.value = ''; 1286 this.togglePlaceholderText(true); 1287 } else { 1288 this.togglePlaceholderText(false); 1289 } 1290 } else if(!this.element.value && this.origValue.length) { 1291 this.element.value = this.origValue; 1292 } 1293 // get input label
1294 if(this.element.id) { 1295 this.labels = document.getElementsByTagName('label'); 1296 for(var i = 0; i < this.labels.length; i++) { 1297 if(this.labels[i].htmlFor === this.element.id) { 1298 this.labelFor = this.labels[i]; 1299 break; 1300 } 1301 } 1302 } 1303 // get parent node (or parentNode by className) 1304 this.elementParent = this.element.parentNode; 1305 if(typeof this.options.getParentByClass === 'string') { 1306 var el = this.element; 1307 while(el.parentNode) { 1308 if(hasClass(el.parentNode, this.options.getParentByClass)) { 1309 this.elementParent = el.parentNode; 1310 break; 1311 } else { 1312 el = el.parentNode; 1313 } 1314 } 1315 } 1316 }, 1317 attachEvents: function() { 1318 this.element.onfocus = bindScope(this.focusHandler, this); 1319 this.element.onblur = bindScope(this.blurHandler, this); 1320 if(this.options.showUntilTyping) { 1321 this.element.onkeydown = bindScope(this.typingHandler, this); 1322 this.element.onpaste = bindScope(this.typingHandler, this); 1323 } 1324 if(this.wrapWithElement) this.fakeElement.onclick = bindScope(this.focusSetter, this); 1325 }, 1326 togglePlaceholderText: function(state) { 1327 if(!this.element.readOnly && !this.options.focusOnly) { 1328 if(this.wrapWithElement) { 1329 this.fakeElement.style.display = state ? '' : 'none'; 1330 } else { 1331 this.element.value = state ? this.origValue : ''; 1332 } 1333 } 1334 }, 1335 focusSetter: function() { 1336 this.element.focus(); 1337 }, 1338 focusHandler: function() { 1339 clearInterval(this.checkerInterval); 1340 this.checkerInterval = setInterval(bindScope(this.intervalHandler,this), 1); 1341 this.focused = true; 1342 if(!this.element.value.length || this.element.value === this.origValue) { 1343 if(!this.options.showUntilTyping) { 1344 this.togglePlaceholderText(false); 1345 } 1346 } 1347 this.refreshClasses(); 1348 }, 1349 blurHandler: function() { 1350 clearInterval(this.checkerInterval); 1351 this.focused = false; 1352 if(!this.element.value.length || this.element.value === this.origValue) { 1353 this.togglePlaceholderText(true); 1354 } 1355 this.refreshClasses(); 1356 PlaceholderInput.refreshAllInputs(this); 1357 }, 1358 typingHandler: function() { 1359 setTimeout(bindScope(function(){ 1360 if(this.element.value.length) { 1361 this.togglePlaceholderText(false); 1362 this.refreshClasses(); 1363 } 1364 },this), 10); 1365 }, 1366 intervalHandler: function() { 1367 if(typeof this.tmpValue === 'undefined') { 1368 this.tmpValue = this.element.value; 1369 } 1370 if(this.tmpValue != this.element.value) { 1371 PlaceholderInput.refreshAllInputs(this); 1372 } 1373 }, 1374 refreshState: function() { 1375 if(this.wrapWithElement) { 1376 if(this.element.value.length && this.element.value !== this.origValue) { 1377 this.togglePlaceholderText(false); 1378 } else if(!this.element.value.length) { 1379 this.togglePlaceholderText(true); 1380 } 1381 } 1382 this.refreshClasses(); 1383 }, 1384 refreshClasses: function() { 1385 this.textActive = this.focused || (this.element.value.length && this.element.value !== this.origValue); 1386 this.setStateClass(this.element, this.options.inputFocusClass,this.focused); 1387 this.setStateClass(this.elementParent, this.options.parentFocusClass,this.focused); 1388 this.setStateClass(this.labelFor, this.options.labelFocusClass,this.focused); 1389 this.setStateClass(this.element, this.options.inputActiveClass, this.textActive); 1390 this.setStateClass(this.elementParent, this.options.parentActiveClass, this.textActive); 1391 this.setStateClass(this.labelFor, this.options.labelActiveClass, this.textActive); 1392 }, 1393 setStateClass: function(el,cls,state) { 1394 if(!el) return; else if(state) addClass(el,cls); else removeClass(el,cls); 1395 } 1396 }; 1397 1398 // utility functions 1399 function convertToArray(collection) { 1400 var arr = []; 1401 for (var i = 0, ref = arr.length = collection.length; i < ref; i++) { 1402 arr[i] = collection[i]; 1403 } 1404 return arr; 1405 } 1406 function getInputType(input) { 1407 return (input.type ? input.type : input.tagName).toLowerCase(); 1408 } 1409 function hasClass(el,cls) { 1410 return el.className ? el.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)')) : false; 1411 } 1412 function addClass(el,cls) { 1413 if (!hasClass(el,cls)) el.className += " "+cls; 1414 } 1415 function removeClass(el,cls) { 1416 if (hasClass(el,cls)) {el.className=el.className.replace(new RegExp('(\\s|^)'+cls+'(\\s|$)'),' ');} 1417 } 1418 function bindScope(f, scope) { 1419 return function() {return f.apply(scope, arguments);}; 1420 } 1421 function getStyle(el, prop) { 1422 if (document.defaultView && document.defaultView.getComputedStyle) { 1423 return document.defaultView.getComputedStyle(el, null)[prop]; 1424 } else if (el.currentStyle) { 1425 return el.currentStyle[prop]; 1426 } else { 1427 return el.style[prop]; 1428 } 1429 } 1430}()); 1431 1432 1433/** 1434 * Owl carousel
1435 * @version 2.0.0 1436 * @author Bartosz Wojciechowski 1437 * @license The MIT License (MIT) 1438 * @todo Lazy Load Icon 1439 * @todo prevent animationend bubling 1440 * @todo itemsScaleUp 1441 * @todo Test Zepto 1442 * @todo stagePadding calculate wrong active classes 1443 */ 1444!function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this.drag=a.extend({},m),this.state=a.extend({},n),this.e=a.extend({},o),this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._invalidated={},this._pipe=[],a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a[0].toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Pipe,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}function f(a){if(a.touches!==d)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(a.touches===d){if(a.pageX!==d)return{x:a.pageX,y:a.pageY};if(a.pageX===d)return{x:a.clientX,y:a.clientY}}}function g(a){var b,d,e=c.createElement("div"),f=a;for(b in f)if(d=f[b],"undefined"!=typeof e.style[d])return e=null,[d,b];return[!1]}function h(){return g(["transition","WebkitTransition","MozTransition","OTransition"])[1]}function i(){return g(["transform","WebkitTransform","MozTransform","OTransform","msTransform"])[0]}function j(){return g(["perspective","webkitPerspective","MozPerspective","OPerspective","MsPerspective"])[0]}function k(){return"ontouchstart"in b||!!navigator.msMaxTouchPoints}function l(){return b.navigator.msPointerEnabled}var m,n,o;m={start:0,startX:0,startY:0,current:0,currentX:0,currentY:0,offsetX:0,offsetY:0,distance:null,startTime:0,endTime:0,updatedX:0,targetEl:null},n={isTouch:!1,isScrolling:!1,isSwiping:!1,direction:!1,inMotion:!1},o={_onDragStart:null,_onDragMove:null,_onDragEnd:null,_transitionEnd:null,_resizer:null,_responsiveCall:null,_goToLoop:null,_checkVisibile:null},e.Defaults={items:3,loop:!1,center:!1,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,responsiveClass:!1,fallbackEasing:"swing",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",themeClass:"owl-theme",baseClass:"owl-carousel",itemClass:"owl-item",centerClass:"center",activeClass:"active"},e.Width={Default:"default",Inner:"inner",Outer:"outer"},e.Plugins={},e.Pipe=[{filter:["width","items","settings"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){var a=this._clones,b=this.$stage.children(".cloned");(b.length!==a.length||!this.settings.loop&&a.length>0)&&(this.$stage.children(".cloned").remove(),this._clones=[])}},{filter:["items","settings"],run:function(){var a,b,c=this._clones,d=this._items,e=this.settings.loop?c.length-Math.max(2*this.settings.items,4):0;for(a=0,b=Math.abs(e/2);b>a;a++)e>0?(this.$stage.children().eq(d.length+c.length-1).remove(),c.pop(),this.$stage.children().eq(0).remove(),c.pop()):(c.push(c.length/2),this.$stage.append(d[c[c.length-1]].clone().addClass("cloned")),c.push(d.length-1-(c.length-1)/2),this.$stage.prepend(d[c[c.length-1]].clone().addClass("cloned")))}},{filter:["width","items","settings"],run:function(){var a,b,c,d=this.settings.rtl?1:-1,e=(this.width()/this.settings.items).toFixed(3),f=0;for(this._coordinates=[],b=0,c=this._clones.length+this._items.length;c>b;b++)a=this._mergers[this.relative(b)],a=this.settings.mergeFit&&Math.min(a,this.settings.items)||a,f+=(this.settings.autoWidth?this._items[this.relative(b)].width()+this.settings.margin:e*a)*d,this._coordinates.push(f)}},{filter:["width","items","settings"],run:function(){var b,c,d=(this.width()/this.settings.items).toFixed(3),e={width:Math.abs(this._coordinates[this._coordinates.length-1])+2*this.settings.stagePadding,"padding-left":this.settings.stagePadding||"","padding-right":this.settings.stagePadding||""};if(this.$stage.css(e),e={width:this.settings.autoWidth?"auto":d-this.settings.margin},e[this.settings.rtl?"margin-left":"margin-right"]=this.settings.margin,!this.settings.autoWidth&&a.grep(this._mergers,function(a){return a>1}).length>0)for(b=0,c=this._coordinates.length;c>b;b++)e.width=Math.abs(this._coordinates[b])-Math.abs(this._coordinates[b-1]||0)-this.settings.margin,this.$stage.children().eq(b).css(e);else this.$stage.children().css(e)}},{filter:["width","items","settings"],run:function(a){a.current&&this.reset(this.$stage.children().index(a.current))}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var a,b,c,d,e=this.settings.rtl?1:-1,f=2*this.settings.stagePadding,g=this.coordinates(this.current())+f,h=g+this.width()*e,i=[];for(c=0,d=this._coordinates.length;d>c;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,"<=",g)&&this.op(a,">",h)||this.op(b,"<",g)&&this.op(b,">",h))&&i.push(c);this.$stage.children("."+this.settings.activeClass).removeClass(this.settings.activeClass),this.$stage.children(":eq("+i.join("), :eq(")+")").addClass(this.settings.activeClass),this.settings.center&&(this.$stage.children("."+this.settings.centerClass).removeClass(this.settings.centerClass),this.$stage.children().eq(this.current()).addClass(this.settings.centerClass))}}],e.prototype.initialize=function(){if(this.trigger("initialize"),this.$element.addClass(this.settings.baseClass).addClass(this.settings.themeClass).toggleClass("owl-rtl",this.settings.rtl),this.browserSupport(),this.settings.autoWidth&&this.state.imagesLoaded!==!0){var b,c,e;if(b=this.$element.find("img"),c=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:d,e=this.$element.children(c).width(),b.length&&0>=e)return this.preloadAutoWidthImages(b),!1}this.$element.addClass("owl-loading"),this.$stage=a("<"+this.settings.stageElement+' class="owl-stage"/>').wrap('<div class="owl-stage-outer">'),this.$element.append(this.$stage.parent()),this.replace(this.$element.children().not(this.$stage.parent())),this._width=this.$element.width(),this.refresh(),this.$element.removeClass("owl-loading").addClass("owl-loaded"),this.eventsCall(),this.internalEvents(),this.addTriggerableEvents(),this.trigger("initialized")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){b>=a&&a>
1444d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),delete e.responsive,e.responsiveClass&&this.$element.attr("class",function(a,b){return b.replace(/\b owl-responsive-\S+/g,"")}).addClass("owl-responsive-"+d)):e=a.extend({},this.options),(null===this.settings||this._breakpoint!==d)&&(this.trigger("change",{property:{name:"settings",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}}))},e.prototype.optionsLogic=function(){this.$element.toggleClass("owl-center",this.settings.center),this.settings.loop&&this._items.length<this.settings.items&&(this.settings.loop=!1),this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger("prepare",{content:b});return c.data||(c.data=a("<"+this.settings.itemElement+"/>").addClass(this.settings.itemClass).append(b)),this.trigger("prepared",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};c>b;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={}},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){if(0===this._items.length)return!1;(new Date).getTime();this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$stage.addClass("owl-refresh"),this.update(),this.$stage.removeClass("owl-refresh"),this.state.orientation=b.orientation,this.watchVisibility(),this.trigger("refreshed")},e.prototype.eventsCall=function(){this.e._onDragStart=a.proxy(function(a){this.onDragStart(a)},this),this.e._onDragMove=a.proxy(function(a){this.onDragMove(a)},this),this.e._onDragEnd=a.proxy(function(a){this.onDragEnd(a)},this),this.e._onResize=a.proxy(function(a){this.onResize(a)},this),this.e._transitionEnd=a.proxy(function(a){this.transitionEnd(a)},this),this.e._preventClick=a.proxy(function(a){this.preventClick(a)},this)},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this.e._onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return this._items.length?this._width===this.$element.width()?!1:this.trigger("resize").isDefaultPrevented()?!1:(this._width=this.$element.width(),this.invalidate("width"),this.refresh(),void this.trigger("resized")):!1},e.prototype.eventsRouter=function(a){var b=a.type;"mousedown"===b||"touchstart"===b?this.onDragStart(a):"mousemove"===b||"touchmove"===b?this.onDragMove(a):"mouseup"===b||"touchend"===b?this.onDragEnd(a):"touchcancel"===b&&this.onDragEnd(a)},e.prototype.internalEvents=function(){var c=(k(),l());this.settings.mouseDrag?(this.$stage.on("mousedown",a.proxy(function(a){this.eventsRouter(a)},this)),this.$stage.on("dragstart",function(){return!1}),this.$stage.get(0).onselectstart=function(){return!1}):this.$element.addClass("owl-text-select-on"),this.settings.touchDrag&&!c&&this.$stage.on("touchstart touchcancel",a.proxy(function(a){this.eventsRouter(a)},this)),this.transitionEndVendor&&this.on(this.$stage.get(0),this.transitionEndVendor,this.e._transitionEnd,!1),this.settings.responsive!==!1&&this.on(b,"resize",a.proxy(this.onThrottledResize,this))},e.prototype.onDragStart=function(d){var e,g,h,i;if(e=d.originalEvent||d||b.event,3===e.which||this.state.isTouch)return!1;if("mousedown"===e.type&&this.$stage.addClass("owl-grab"),this.trigger("drag"),this.drag.startTime=(new Date).getTime(),this.speed(0),this.state.isTouch=!0,this.state.isScrolling=!1,this.state.isSwiping=!1,this.drag.distance=0,g=f(e).x,h=f(e).y,this.drag.offsetX=this.$stage.position().left,this.drag.offsetY=this.$stage.position().top,this.settings.rtl&&(this.drag.offsetX=this.$stage.position().left+this.$stage.width()-this.width()+this.settings.margin),this.state.inMotion&&this.support3d)i=this.getTransformProperty(),this.drag.offsetX=i,this.animate(i),this.state.inMotion=!0;else if(this.state.inMotion&&!this.support3d)return this.state.inMotion=!1,!1;this.drag.startX=g-this.drag.offsetX,this.drag.startY=h-this.drag.offsetY,this.drag.start=g-this.drag.startX,this.drag.targetEl=e.target||e.srcElement,this.drag.updatedX=this.drag.start,("IMG"===this.drag.targetEl.tagName||"A"===this.drag.targetEl.tagName)&&(this.drag.targetEl.draggable=!1),a(c).on("mousemove.owl.dragEvents mouseup.owl.dragEvents touchmove.owl.dragEvents touchend.owl.dragEvents",a.proxy(function(a){this.eventsRouter(a)},this))},e.prototype.onDragMove=function(a){var c,e,g,h,i,j;this.state.isTouch&&(this.state.isScrolling||(c=a.originalEvent||a||b.event,e=f(c).x,g=f(c).y,this.drag.currentX=e-this.drag.startX,this.drag.currentY=g-this.drag.startY,this.drag.distance=this.drag.currentX-this.drag.offsetX,this.drag.distance<0?this.state.direction=this.settings.rtl?"right":"left":this.drag.distance>0&&(this.state.direction=this.settings.rtl?"left":"right"),this.settings.loop?this.op(this.drag.currentX,">",this.coordinates(this.minimum()))&&"right"===this.state.direction?this.drag.currentX-=(this.settings.center&&this.coordinates(0))-this.coordinates(this._items.length):this.op(this.drag.currentX,"<",this.coordinates(this.maximum()))&&"left"===this.state.direction&&(this.drag.currentX+=(this.settings.center&&this.coordinates(0))-this.coordinates(this._items.length)):(h=this.coordinates(this.settings.rtl?this.maximum():this.minimum()),i=this.coordinates(this.settings.rtl?this.minimum():this.maximum()),j=this.settings.pullDrag?this.drag.distance/5:0,this.drag.currentX=Math.max(Math.min(this.drag.currentX,h+j),i+j)),(this.drag.distance>8||this.drag.distance<-8)&&(c.preventDefault!==d?c.preventDefault():c.returnValue=!1,this.state.isSwiping=!0),this.drag.updatedX=this.drag.currentX,(this.drag.currentY>16||this.drag.currentY<-16)&&this.state.isSwiping===!1&&(this.state.isScrolling=!0,this.drag.updatedX=this.drag.start),this.animate(this.drag.updatedX)))},e.prototype.onDragEnd=function(b){var d,e,f;if(this.state.isTouch){if("mouseup"===b.type&&this.$stage.removeClass("owl-grab"),this.trigger("dragged"),this.drag.targetEl.removeAttribute("draggable"),this.state.isTouch=!1,this.state.isScrolling=!1,this.state.isSwiping=!1,0===this.drag.distance&&this.state.inMotion!==!0)return this.state.inMotion=!1,!1;this.drag.endTime=(new Date).getTime(),d=this.drag.endTime-this.drag.startTime,e=Math.abs(this.drag.distance),(e>3||d>300)&&this.removeClick(this.drag.targetEl),f=this.closest(this.drag.updatedX),this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(f),this.invalidate("position"),this.update(),this.settings.pullDrag||this.drag.updatedX!==this.coordinates(f)||this.transitionEnd(),this.drag.distance=0,a(c).off(".owl.dragEvents")}},e.prototype.removeClick=function(c){this.drag.targetEl=c,a(c).on("click.preventClick",this.e._preventClick),b.setTimeout(function(){a(c).off("click.preventClick")},300)},e.prototype.preventClick=function(b){b.preventDefault?b.preventDefault():b.returnValue=!1,b.stopPropagation&&b.stopPropagation(),a(b.target).off("click.preventClick")},e.prototype.getTransformProperty=function(){var a,c;return a=b.getComputedStyle(this.$stage.get(0),null).getPropertyValue(this.vendorName+"transform"),a=a.replace(/matrix(3d)?\(|\)/g,"").split(","),c=16===a.length,c!==!0?a[4]:a[12]},e.prototype.closest=function(b){var c=-1,d=30,e=this.width(),f=this.coordinates();return this.settings.freeDrag||a.each(f,a.proxy(function(a,g){return b>g-d&&g+d>b?c=a:this.op(b,"<",g)&&this.op(b,">",f[a+1]||g-e)&&(c="left"===this.state.direction?a+1:a),-1===c},this)),this.settings.loop||(this.op(b,">",f[this.minimum()])?c=b=this.minimum():this.op(b,"<",f[this.maximum()])&&(c=b=this.maximum())),c},e.prototype.animate=function(b){this.trigger("translate"),this.state.inMotion=this.speed()>0,this.support3d?this.$stage.css({transform:"translate3d("+b+"px,0px, 0px)",transition:this.speed()/1e3+"s"}):this.state.isTouch?this.$stage.css({left:b+"px"}):this.$stage.animate({left:b},this.speed()/1e3,this.settings.fallbackEasing,a.proxy(function(){this.state.inMotion&&this.transitionEnd()},this))}
1444,e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger("change",{property:{name:"position",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},e.prototype.invalidate=function(a){this._invalidated[a]=!0},e.prototype.reset=function(a){a=this.normalize(a),a!==d&&(this._speed=0,this._current=a,this.suppress(["translate","translated"]),this.animate(this.coordinates(a)),this.release(["translate","translated"]))},e.prototype.normalize=function(b,c){var e=c?this._items.length:this._items.length+this._clones.length;return!a.isNumeric(b)||1>e?d:b=this._clones.length?(b%e+e)%e:Math.max(this.minimum(c),Math.min(this.maximum(c),b))},e.prototype.relative=function(a){return a=this.normalize(a),a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=0,f=this.settings;if(a)return this._items.length-1;if(!f.loop&&f.center)b=this._items.length-1;else if(f.loop||f.center)if(f.loop||f.center)b=this._items.length+f.items;else{if(!f.autoWidth&&!f.merge)throw"Can not detect maximum absolute position.";for(revert=f.rtl?1:-1,c=this.$stage.width()-this.$element.width();(d=this.coordinates(e))&&!(d*revert>=c);)b=++e}else b=this._items.length-f.items;return b},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2===0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c=null;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[b-1]||0))/2*(this.settings.rtl?-1:1)):c=this._coordinates[b-1]||0,c)},e.prototype.duration=function(a,b,c){return Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(c,d){if(this.settings.loop){var e=c-this.relative(this.current()),f=this.current(),g=this.current(),h=this.current()+e,i=0>g-h?!0:!1,j=this._clones.length+this._items.length;h<this.settings.items&&i===!1?(f=g+this._items.length,this.reset(f)):h>=j-this.settings.items&&i===!0&&(f=g-this._items.length,this.reset(f)),b.clearTimeout(this.e._goToLoop),this.e._goToLoop=b.setTimeout(a.proxy(function(){this.speed(this.duration(this.current(),f+e,d)),this.current(f+e),this.update()},this),30)}else this.speed(this.duration(this.current(),c,d)),this.current(c),this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)},e.prototype.transitionEnd=function(a){return a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0))?!1:(this.state.inMotion=!1,void this.trigger("translated"))},e.prototype.viewport=function(){var d;if(this.options.responsiveBaseElement!==b)d=a(this.options.responsiveBaseElement).width();else if(b.innerWidth)d=b.innerWidth;else{if(!c.documentElement||!c.documentElement.clientWidth)throw"Can not detect viewport width.";d=c.documentElement.clientWidth}return d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find("."+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)},this)),this.reset(a.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},e.prototype.add=function(a,b){b=b===d?this._items.length:this.normalize(b,!0),this.trigger("add",{content:a,position:b}),0===this._items.length||b===this._items.length?(this.$stage.append(a),this._items.push(a),this._mergers.push(1*a.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)):(this._items[b].before(a),this._items.splice(b,0,a),this._mergers.splice(b,0,1*a.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)),this.invalidate("items"),this.trigger("added",{content:a,position:b})},e.prototype.remove=function(a){a=this.normalize(a,!0),a!==d&&(this.trigger("remove",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate("items"),this.trigger("removed",{content:null,position:a}))},e.prototype.addTriggerableEvents=function(){var b=a.proxy(function(b,c){return a.proxy(function(a){a.relatedTarget!==this&&(this.suppress([c]),b.apply(this,[].slice.call(arguments,1
1444)),this.release([c]))},this)},this);a.each({next:this.next,prev:this.prev,to:this.to,destroy:this.destroy,refresh:this.refresh,replace:this.replace,add:this.add,remove:this.remove},a.proxy(function(a,c){this.$element.on(a+".owl.carousel",b(c,a+".owl.carousel"))},this))},e.prototype.watchVisibility=function(){function c(a){return a.offsetWidth>0&&a.offsetHeight>0}function d(){c(this.$element.get(0))&&(this.$element.removeClass("owl-hidden"),this.refresh(),b.clearInterval(this.e._checkVisibile))}c(this.$element.get(0))||(this.$element.addClass("owl-hidden"),b.clearInterval(this.e._checkVisibile),this.e._checkVisibile=b.setInterval(a.proxy(d,this),500))},e.prototype.preloadAutoWidthImages=function(b){var c,d,e,f;c=0,d=this,b.each(function(g,h){e=a(h),f=new Image,f.onload=function(){c++,e.attr("src",f.src),e.css("opacity",1),c>=b.length&&(d.state.imagesLoaded=!0,d.initialize())},f.src=e.attr("src")||e.attr("data-src")||e.attr("data-src-retina")})},e.prototype.destroy=function(){this.$element.hasClass(this.settings.themeClass)&&this.$element.removeClass(this.settings.themeClass),this.settings.responsive!==!1&&a(b).off("resize.owl.carousel"),this.transitionEndVendor&&this.off(this.$stage.get(0),this.transitionEndVendor,this.e._transitionEnd);for(var d in this._plugins)this._plugins[d].destroy();(this.settings.mouseDrag||this.settings.touchDrag)&&(this.$stage.off("mousedown touchstart touchcancel"),a(c).off(".owl.dragEvents"),this.$stage.get(0).onselectstart=function(){},this.$stage.off("dragstart",function(){return!1})),this.$element.off(".owl"),this.$stage.children(".cloned").remove(),this.e=null,this.$element.removeData("owlCarousel"),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.unwrap()},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case"<":return d?a>c:c>a;case">":return d?c>a:a>c;case">=":return d?c>=a:a>=c;case"<=":return d?a>=c:c>=a}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent("on"+b,c)},e.prototype.trigger=function(b,c,d){var e={item:{count:this._items.length,index:this.current()}},f=a.camelCase(a.grep(["on",b,d],function(a){return a}).join("-").toLowerCase()),g=a.Event([b,"owl",d||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},e,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(g)}),this.$element.trigger(g),this.settings&&"function"==typeof this.settings[f]&&this.settings[f].apply(this,g)),g},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.browserSupport=function(){if(this.support3d=j(),this.support3d){this.transformVendor=i();var a=["transitionend","webkitTransitionEnd","transitionend","oTransitionEnd"];this.transitionEndVendor=a[h()],this.vendorName=this.transformVendor.replace(/Transform/i,""),this.vendorName=""!==this.vendorName?"-"+this.vendorName.toLowerCase()+"-":""}this.state.orientation=b.orientation},a.fn.owlCarousel=function(b){return this.each(function(){a(this).data("owlCarousel")||a(this).data("owlCarousel",new e(this,b))})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b){var c=function(b){this._core=b,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&"position"==b.property.name||"initialized"==b.type))for(var c=this._core.settings,d=c.center&&Math.ceil(c.items/2)||c.items,e=c.center&&-1*d||0,f=(b.property&&b.property.value||this._core.current())+e,g=this._core.clones().length,h=a.proxy(function(a,b){this.load(b)},this);e++<d;)this.load(g/2+this._core.relative(f)),g&&a.each(this._core.clones(this._core.relative(f++)),h)},this)},this._core.options=a.extend({},c.Defaults,this._core.options),this._core.$element.on(this._handlers)};c.Defaults={lazyLoad:!1},c.prototype.load=function(c){var d=this._core.$stage.children().eq(c),e=d&&d.find(".owl-lazy");!e||a.inArray(d.get(0),this._loaded)>-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr("data-src-retina")||f.attr("data-src");this._core.trigger("load",{element:f,url:g},"lazy"),f.is("img")?f.one("load.owl.lazy",a.proxy(function(){f.css("opacity",1),this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("src",g):(e=new Image,e.onload=a.proxy(function(){f.css({"background-image":"url("+g+")",opacity:"1"}),this._core.trigger("loaded",{element:f,url:g},"lazy")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},c.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=c}(window.Zepto||window.jQuery,window,document),function(a){var b=function(c){this._core=c,this._handlers={"initialized.owl.carousel":
1444a.proxy(function(){this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":a.proxy(function(a){this._core.settings.autoHeight&&"position"==a.property.name&&this.update()},this),"loaded.owl.lazy":a.proxy(function(a){this._core.settings.autoHeight&&a.element.closest("."+this._core.settings.itemClass)===this._core.$stage.children().eq(this._core.current())&&this.update()},this)},this._core.options=a.extend({},b.Defaults,this._core.options),this._core.$element.on(this._handlers)};b.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},b.prototype.update=function(){this._core.$stage.parent().height(this._core.$stage.children().eq(this._core.current()).height()).addClass(this._core.settings.autoHeightClass)},b.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=b}(window.Zepto||window.jQuery,window,document),function(a,b,c){var d=function(b){this._core=b,this._videos={},this._playing=null,this._fullscreen=!1,this._handlers={"resize.owl.carousel":a.proxy(function(a){this._core.settings.video&&!this.isInFullScreen()&&a.preventDefault()},this),"refresh.owl.carousel changed.owl.carousel":a.proxy(function(){this._playing&&this.stop()},this),"prepared.owl.carousel":a.proxy(function(b){var c=a(b.content).find(".owl-video");c.length&&(c.css("display","none"),this.fetch(c,a(b.content)))},this)},this._core.options=a.extend({},d.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",a.proxy(function(a){this.play(a)},this))};d.Defaults={video:!1,videoHeight:!1,videoWidth:!1},d.prototype.fetch=function(a,b){var c=a.attr("data-vimeo-id")?"vimeo":"youtube",d=a.attr("data-vimeo-id")||a.attr("data-youtube-id"),e=a.attr("data-width")||this._core.settings.videoWidth,f=a.attr("data-height")||this._core.settings.videoHeight,g=a.attr("href");if(!g)throw new Error("Missing video URL.");if(d=g.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),d[3].indexOf("youtu")>-1)c="youtube";else{if(!(d[3].indexOf("vimeo")>-1))throw new Error("Video URL not supported.");c="vimeo"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr("data-video",g),this.thumbnail(a,this._videos[g])},d.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?'style="width:'+c.width+"px;height:"+c.height+'px;"':"",h=b.find("img"),i="src",j="",k=this._core.settings,l=function(a){e='<div class="owl-video-play-icon"></div>',d=k.lazyLoad?'<div class="owl-video-tn '+j+'" '+i+'="'+a+'"></div>':'<div class="owl-video-tn" style="opacity:1;background-image:url('+a+')"></div>',b.after(d),b.after(e)};return b.wrap('<div class="owl-video-wrapper"'+g+"></div>"),this._core.settings.lazyLoad&&(i="data-src",j="owl-lazy"),h.length?(l(h.attr(i)),h.remove(),!1):void("youtube"===c.type?(f="http://img.youtube.com/vi/"+c.id+"/hqdefault.jpg",l(f)):"vimeo"===c.type&&a.ajax({type:"GET",url:"http://vimeo.com/api/v2/video/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a[0].thumbnail_large,l(f)}}))},d.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null},d.prototype.play=function(b){this._core.trigger("play",null,"video"),this._playing&&this.stop();var c,d,e=a(b.target||b.srcElement),f=e.closest("."+this._core.settings.itemClass),g=this._videos[f.attr("data-video")],h=g.width||"100%",i=g.height||this._core.$stage.height();"youtube"===g.type?c='<iframe width="'+h+'" height="'+i+'" src="http://www.youtube.com/embed/'+g.id+"?autoplay=1&v="+g.id+'" frameborder="0" allowfullscreen></iframe>':"vimeo"===g.type&&(c='<iframe src="http://player.vimeo.com/video/'+g.id+'?autoplay=1" width="'+h+'" height="'+i+'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'),f.addClass("owl-video-playing"),this._playing=f,d=a('<div style="height:'+i+"px; width:"+h+'px" class="owl-video-frame">'+c+"</div>"),e.after(d)},d.prototype.isInFullScreen=function(){var d=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return d&&a(d).parent().hasClass("owl-video-frame")&&(this._core.speed(0),this._fullscreen=!0),d&&this._fullscreen&&this._playing?!1:this._fullscreen?(this._fullscreen=!1,!1):this._playing&&this._core.state.orientation!==b.orientation?(this._core.state.orientation=b.orientation,!1):!0},d.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=d}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":
1444a.proxy(function(a){"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){this.swapping="translated"==a.type},this),"translate.owl.carousel":a.proxy(function(){this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&this.core.support3d){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",c)),f&&e.addClass("animated owl-animated-in").addClass(f).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",c))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.transitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c){var d=function(b){this.core=b,this.core.options=a.extend({},d.Defaults,this.core.options),this.handlers={"translated.owl.carousel refreshed.owl.carousel":a.proxy(function(){this.autoplay() 1445},this),"play.owl.autoplay":a.proxy(function(a,b,c){this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(){this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this.core.settings.autoplayHoverPause&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this.core.settings.autoplayHoverPause&&this.autoplay()},this)},this.core.$element.on(this.handlers)};d.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},d.prototype.autoplay=function(){this.core.settings.autoplay&&!this.core.state.videoPlay?(b.clearInterval(this.interval),this.interval=b.setInterval(a.proxy(function(){this.play()},this),this.core.settings.autoplayTimeout)):b.clearInterval(this.interval)},d.prototype.play=function(){return c.hidden===!0||this.core.state.isTouch||this.core.state.isScrolling||this.core.state.isSwiping||this.core.state.inMotion?void 0:this.core.settings.autoplay===!1?void b.clearInterval(this.interval):void this.core.next(this.core.settings.autoplaySpeed)},d.prototype.stop=function(){b.clearInterval(this.interval)},d.prototype.pause=function(){b.clearInterval(this.interval)},d.prototype.destroy=function(){var a,c;b.clearInterval(this.interval);for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=d}(window.Zepto||window.jQuery,window,document),function(a){"use strict";var b=function(c){this._core=c,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){this._core.settings.dotsData&&this._templates.push(a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))},this),"add.owl.carousel":a.proxy(function(b){this._core.settings.dotsData&&this._templates.splice(b.position,0,a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))},this),"remove.owl.carousel prepared.owl.carousel":a.proxy(function(a){this._core.settings.dotsData&&this._templates.splice(a.position,1)}
1445,this),"change.owl.carousel":a.proxy(function(a){if("position"==a.property.name&&!this._core.state.revert&&!this._core.settings.loop&&this._core.settings.navRewind){var b=this._core.current(),c=this._core.maximum(),d=this._core.minimum();a.data=a.property.value>c?b>=c?d:c:a.property.value<d?c:a.property.value}},this),"changed.owl.carousel":a.proxy(function(a){"position"==a.property.name&&this.draw()},this),"refreshed.owl.carousel":a.proxy(function(){this._initialized||(this.initialize(),this._initialized=!0),this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation")},this)},this._core.options=a.extend({},b.Defaults,this._core.options),this.$element.on(this._handlers)};b.Defaults={nav:!1,navRewind:!0,navText:["prev","next"],navSpeed:!1,navElement:"div",navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotData:!1,dotsSpeed:!1,dotsContainer:!1,controlsClass:"owl-control
1445s"},b.prototype.initialize=function(){var b,c,d=this._core.settings;d.dotsData||(this._templates=[a("<div>").addClass(d.dotClass).append(a("<span>")).prop("outerHTML")]),d.navContainer&&d.dotsContainer||(this._controls.$container=a("<div>").addClass(d.controlsClass).appendTo(this.$element)),this._controls.$indicators=d.dotsContainer?a(d.dotsContainer):a("<div>").hide().addClass(d.dotsClass).appendTo(this._controls.$container),this._controls.$indicators.on("click","div",a.proxy(function(b){var c=a(b.target).parent().is(this._controls.$indicators)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(c,d.dotsSpeed)},this)),b=d.navContainer?a(d.navContainer):a("<div>").addClass(d.navContainerClass).prependTo(this._controls.$container),this._controls.$next=a("<"+d.navElement+">"),this._controls.$previous=this._controls.$next.clone(),this._controls.$previous.addClass(d.navClass[0]).html(d.navText[0]).hide().prependTo(b).on("click",a.proxy(function(){this.prev(d.navSpeed)},this)),this._controls.$next.addClass(d.navClass[1]).html(d.navText[1]).hide().appendTo(b).on("click",a.proxy(function(){this.next(d.navSpeed)},this));for(c in this._overrides)this._core[c]=a.proxy(this[c],this)},b.prototype.destroy=function(){var a,b,c,d;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},b.prototype.update=function(){var a,b,c,d=this._core.settings,e=this._core.clones().length/2,f=e+this._core.items().length,g=d.center||d.autoWidth||d.dotData?1:d.dotsEach||d.items;if("page"!==d.slideBy&&(d.slideBy=Math.min(d.slideBy,d.items)),d.dots||"page"==d.slideBy)for(this._pages=[],a=e,b=0,c=0;f>a;a++)(b>=g||0===b)&&(this._pages.push({start:a-e,end:a-e+g-1}),b=0,++c),b+=this._core.mergers(this._core.relative(a))},b.prototype.draw=function(){var b,c,d="",e=this._core.settings,f=(this._core.$stage.children(),this._core.relative(this._core.current()));if(!e.nav||e.loop||e.navRewind||(this._controls.$previous.toggleClass("disabled",0>=f),this._controls.$next.toggleClass("disabled",f>=this._core.maximum())),this._controls.$previous.toggle(e.nav),this._controls.$next.toggle(e.nav),e.dots){if(b=this._pages.length-this._controls.$indicators.children().length,e.dotData&&0!==b){for(c=0;c<this._controls.$indicators.children().length;c++)d+=this._templates[this._core.relative(c)];this._controls.$indicators.html(d)}else b>0?(d=new Array(b+1).join(this._templates[0]),this._controls.$indicators.append(d)):0>b&&this._controls.$indicators.children().slice(b).remove();this._controls.$indicators.find(".active").removeClass("active"),this._controls.$indicators.children().eq(a.inArray(this.current(),this._pages)).addClass("active")}this._controls.$indicators.toggle(e.dots)},b.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotData?1:c.dotsEach||c.items)}},b.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,function(a){return a.start<=b&&a.end>=b}).pop()},b.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},b.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},b.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},b.prototype.to=function(b,c,d){var e;d?a.proxy(this._overrides.to,this._core)(b,c):(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c))},a.fn.owlCarousel.Constructor.Plugins.Navigation=b}(window.Zepto||window.jQuery,window,document),function(a,b){"use strict";var c=function(d){this._core=d,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":
vendor: 1,105 bytes, lines 1445-1454
1445a.proxy(function(){"URLHash"==this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){var c=a(b.content).find("[data-hash]").andSelf("[data-hash]").attr("data-hash");this._hashes[c]=b.content},this)},this._core.options=a.extend({},c.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(){var a=b.location.hash.substring(1),c=this._core.$stage.children(),d=this._hashes[a]&&c.index(this._hashes[a])||0;return a?void this._core.to(d,!1,!0):!1},this))};c.Defaults={URLhashListener:!1},c.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=c}(window.Zepto||window.jQuery,window,document); 1446 1447 1448 1449/*! Hammer.JS - v2.0.4 - 2014-09-28 1450 * http://hammerjs.github.io/ 1451 * 1452 * Copyright (c) 2014 Jorik Tangelder; 1453 * Licensed under the MIT license */ 1454if(Object.create){
vendor: 18,177 bytes, line 1454
1454!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function i(a,b){return h(a,b,!0)}function j(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&h(d,c)}function k(a,b){return function(){return a.apply(b,arguments)}}function l(a,b){return typeof a==kb?a.apply(b?b[0]||d:d,b):a}function m(a,b){return a===d?b:a}function n(a,b,c){g(r(b),function(b){a.addEventListener(b,c,!1)})}function o(a,b,c){g(r(b),function(b){a.removeEventListener(b,c,!1)})}function p(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function q(a,b){return a.indexOf(b)>-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function t(a){return Array.prototype.slice.call(a,0)}function u(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];s(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<ib.length;){if(c=ib[g],e=c?c+f:b,e in a)return e;g++}return d}function w(){return ob++}function x(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function y(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){l(a.options.enable,[a])&&c.handler(b)},this.init()}function z(a){var b,c=a.options.inputClass;return new(b=c?c:rb?N:sb?Q:qb?S:M)(a,A)}function A(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&yb&&d-e===0,g=b&(Ab|Bb)&&d-e===0;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,B(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function B(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=E(b)),e>1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=nb(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===yb||f.eventType===Ab)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Bb&&(i>xb||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=mb(l.x)>mb(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:lb(a.pointers[c].clientX),clientY:lb(a.pointers[c].clientY)},c++;return{timeStamp:nb(),pointers:b,center:F(b),deltaX:a.deltaX,deltaY:a.deltaY}}function F(a){var b=a.length;if(1===b)return{x:lb(a[0].clientX),y:lb(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:lb(c/b),y:lb(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Cb:mb(a)>=mb(b)?a>0?Db:Eb:b>0?Fb:Gb}function I(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],Lb)-J(a[1],a[0],Lb)}function L(a,b){return I(b[0],b[1],Lb)/I(a[0],a[1],Lb)}function M(){this.evEl=Nb,this.evWin=Ob,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Rb,this.evWin=Sb,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ub,this.evWin=Vb,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Ab|Bb)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xb,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(yb|zb)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===yb)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Ab|Bb)&&delete d[g[e].identifier],e++;return h.length?[u(f.concat(h),"identifier",!0),h]:void 0}function S(){y.apply(this,arguments);var a=k(this.handler,this);this.touch=new Q(this.manager,a),this.mouse=new M(this.manager,a)}function T(a,b){this.manager=a,this.set(b)}function U(a){if(q(a,bc))return bc;var b=q(a,cc),c=q(a,dc);return b&&c?cc+" "+dc:b||c?b?cc:dc:q(a,ac)?ac:_b}function V(a){this.id=w(),this.manager=null,this.options=i(a||{},this.defaults),this.options.enable=m(this.options.enable,!0),this.state=ec,this.simultaneous={},this.requireFail=[]}function W(a){return a&jc?"cancel":a&hc?"end":a&gc?"move":a&fc?"start":""}function X(a){return a==Gb?"down":a==Fb?"up":a==Db?"left":a==Eb?"right":""}function Y(a,b){var c=b.manager;return c?c.get(a):a}function Z(){V.apply(this,arguments)}function $(){Z.apply(this,arguments),this.pX=null,this.pY=null}function _(){Z.apply(this,arguments)}function ab(){V.apply(this,arguments),this._timer=null,this._input=null}function bb(){Z.apply(this,arguments)}function cb(){Z.apply(this,arguments)}function db(){V.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function eb(a,b){return b=b||{},b.recognizers=m(b.recognizers,eb.defaults.preset),new fb(a,b)}function fb(a,b){b=b||{},this.options=i(b,eb.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=z(this),this.touchAction=new T(this,this.options.touchAction),gb(this,!0),g(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function gb(a,b){var c=a.element;g(a.options.cssProps,function(a,d){c.style[v(c.style,d)]=b?a:""})}function hb(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var ib=["","webkit","moz","MS","ms","o"],jb=b.createElement("div"),kb="function",lb=Math.round,mb=Math.abs,nb=Date.now,ob=1,pb=/mobile|tablet|ip(ad|hone|od)|android/i,qb="ontouchstart"in a,rb=v(a,"PointerEvent")!==d,sb=qb&&pb.test(navigator.userAgent),tb="touch",ub="pen",vb="mouse",wb="kinect",xb=25,yb=1,zb=2,Ab=4,Bb=8,Cb=1,Db=2,Eb=4,Fb=8,Gb=16,Hb=Db|Eb,Ib=Fb|Gb,Jb=Hb|Ib,Kb=["x","y"],Lb=["clientX","clientY"];y.prototype={handler:function(){},init:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(x(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&o(this.element,this.evEl,this.domHandler),this.evTarget&&o(this.target,this.evTarget,this.domHandler),this.evWin&&o(x(this.element),this.evWin,this.domHandler)}};var Mb={mousedown:yb,mousemove:zb,mouseup:Ab},Nb="mousedown",Ob="mousemove mouseup";j(M,y,{handler:function(a){var b=Mb[a.type];b&yb&&0===a.button&&(this.pressed=!0),b&zb&&1!==a.which&&(b=Ab),this.pressed&&this.allow&&(b&Ab&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:vb,srcEvent:a}))}});var Pb={pointerdown:yb,pointermove:zb,pointerup:Ab,pointercancel:Bb,pointerout:Bb},Qb={2:tb,3:ub,4:vb,5:wb},Rb="pointerdown",Sb="pointermove pointerup pointercancel";a.MSPointerEvent&&(Rb="MSPointerDown",Sb="MSPointerMove MSPointerUp MSPointerCancel"),j(N,y,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Pb[d],f=Qb[a.pointerType]||a.pointerType,g=f==tb,h=s(b,a.pointerId,"pointerId");e&yb&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Ab|Bb)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Tb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Ub="touchstart",Vb="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Tb[a.type];if(b===yb&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Ab|Bb)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}});var Wb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Xb="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wb[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==tb,e=c.pointerType==vb;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Ab|Bb)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Yb=v(jb.style,"touchAction"),Zb=Yb!==d,$b="compute",_b="auto",ac="manipulation",bc="none",cc="pan-x",dc="pan-y";T.prototype={set:function(a){a==$b&&(a=this.compute()),Zb&&(this.manager.element.style[Yb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Zb){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bc),f=q(d,dc),g=q(d,cc);return e||f&&c&Hb||g&&c&Ib?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var ec=1,fc=2,gc=4,hc=8,ic=hc,jc=16,kc=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hc>d&&b(!0),b(),d>=hc&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kc)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(kc|ec)))return!1;a++}return!0},recognize:function(a){var b=h({},a);return l(this.options.enable,[this,b])?(this.state&(ic|jc|kc)&&(this.state=ec),this.state=this.process(b),void(this.state&(fc|gc|hc|jc)&&this.tryEmit(b))):(this.reset(),void(this.state=kc))},process:function(){},getTouchAction:function(){},reset:function(){}},j(Z,V,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(fc|gc),e=this.attrTest(a);return d&&(c&Bb||!e)?b|jc:d||e?c&Ab?b|hc:b&fc?b|gc:fc:kc}}),j($,Z,{defaults:{event:"pan",threshold:10,pointers:1,direction:Jb},getTouchAction:function(){var a=this.options.direction,b=[];return a&Hb&&b.push(dc),a&Ib&&b.push(cc),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Hb?(e=0===f?Cb:0>f?Db:Eb,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Cb:0>g?Fb:Gb,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fc||!(this.state&fc)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fc)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(ab,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_b]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Ab|Bb)&&!f)this.reset();else if(a.eventType&yb)this.reset(),this._timer=e(function(){this.state=ic,this.tryEmit()},b.time,this);else if(a.eventType&Ab)return ic;return kc},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ic&&(a&&a.eventType&Ab?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=nb(),this.manager.emit(this.options.event,this._input)))}}),j(bb,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fc)}}),j(cb,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Hb|Ib,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Hb|Ib)?b=a.velocity:c&Hb?b=a.velocityX:c&Ib&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&mb(b)>this.options.velocity&&a.eventType&Ab},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(db,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ac]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime<b.time;if(this.reset(),a.eventType&yb&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Ab)return this.failTimeout();var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||I(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=ic,this.tryEmit()},b.interval,this),fc):ic}return kc},failTimeout:function(){return this._timer=e(function(){this.state=kc},this.options.interval,this),kc},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==ic&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),eb.VERSION="2.0.4",eb.defaults={domEvents:!1,touchAction:$b,enable:!0,inputTarget:null,inputClass:null,preset:[[bb,{enable:!1}],[_,{enable:!1},["rotate"]],[cb,{direction:Hb}],[$,{direction:Hb},["swipe"]],[db],[db,{event:"doubletap",taps:2},["tap"]],[ab]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var lc=1,mc=2;fb.prototype={set:function(a){return h(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?mc:lc},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&ic)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===mc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(fc|gc|hc)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof V)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(s(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return g(r(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return g(r(a),function(a){b?c[a].splice(s(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&hb(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&gb(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},h(eb,{INPUT_START:yb,INPUT_MOVE:zb,INPUT_END:Ab,INPUT_CANCEL:Bb,STATE_POSSIBLE:ec,STATE_BEGAN:fc,STATE_CHANGED:gc,STATE_ENDED:hc,STATE_RECOGNIZED:ic,STATE_CANCELLED:jc,STATE_FAILED:kc,DIRECTION_NONE:Cb,DIRECTION_LEFT:Db,DIRECTION_RIGHT:Eb,DIRECTION_UP:Fb,DIRECTION_DOWN:Gb,DIRECTION_HORIZONTAL:Hb,DIRECTION_VERTICAL:Ib,DIRECTION_ALL:Jb,Manager:fb,Input:y,TouchAction:T,TouchInput:Q,MouseInput:M,PointerEventInput:N,TouchMouseInput:S,SingleTouchInput:O,Recognizer:V,AttrRecognizer:Z,Tap:db,Pan:$,Swipe:cb,Pinch:_,Rotate:bb,Press:ab,on:n,off:o,each:g,merge:i,extend:h,inherit:j,bindFn:k,prefixed:v}),typeof define==kb&&define.amd?define(function(){return eb}):"undefined"!=typeof module&&module.exports?module.exports=eb:a[c]=eb}(window,document,"Hammer");
1454} 1455
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.