1/* 2 * jQuery OwlCarousel v1.3.3 3 * 4 * Copyright (c) 2013 Bartosz Wojciechowski 5 * https://www.owlgraphic.com/owlcarousel/ 6 * 7 * Licensed under MIT 8 * 9 */ 10 11/*JS Lint helpers: */ 12/*global dragMove: false, dragEnd: false, $, jQuery, alert, window, document */ 13/*jslint nomen: true, continue:true */ 14 15if (typeof Object.create !== "function") { 16 Object.create = function (obj) { 17 function F() {} 18 F.prototype = obj; 19 return new F(); 20 }; 21} 22(function ($, window, document) { 23 24 var Carousel = { 25 init : function (options, el) { 26 var base = this; 27 28 base.$elem = $(el); 29 base.options = $.extend({}, $.fn.owlCarousel.options, base.$elem.data(), options); 30 31 base.userOptions = options; 32 base.loadContent(); 33 }, 34 35 loadContent : function () { 36 var base = this, url; 37 38 function getData(data) { 39 var i, content = ""; 40 if (typeof base.options.jsonSuccess === "function") { 41 base.options.jsonSuccess.apply(this, [data]); 42 } else { 43 for (i in data.owl) { 44 if (data.owl.hasOwnProperty(i)) { 45 content += data.owl[i].item; 46 } 47 } 48 base.$elem.html(content); 49 } 50 base.logIn(); 51 } 52 53 if (typeof base.options.beforeInit === "function") { 54 base.options.beforeInit.apply(this, [base.$elem]); 55 } 56 57 if (typeof base.options.jsonPath === "string") { 58 url = base.options.jsonPath; 59 $.getJSON(url, getData); 60 } else { 61 base.logIn(); 62 } 63 }, 64 65 logIn : function () { 66 var base = this; 67 68 base.$elem.data({ 69 "owl-originalStyles": base.$elem.attr("style"), 70 "owl-originalClasses": base.$elem.attr("class") 71 }); 72 73 base.$elem.css({opacity: 0}); 74 base.orignalItems = base.options.items; 75 base.checkBrowser(); 76 base.wrapperWidth = 0; 77 base.checkVisible = null; 78 base.setVars(); 79 }, 80 81 setVars : function () { 82 var base = this; 83 if (base.$elem.children().length === 0) {return false; } 84 base.baseClass(); 85 base.eventTypes(); 86 base.$userItems = base.$elem.children(); 87 base.itemsAmount = base.$userItems.length; 88 base.wrapItems(); 89 base.$owlItems = base.$elem.find(".owl-item"); 90 base.$owlWrapper = base.$elem.find(".owl-wrapper"); 91 base.playDirection = "next"; 92 base.prevItem = 0; 93 base.prevArr = [0]; 94 base.currentItem = 0; 95 base.customEvents(); 96 base.onStartup(); 97 }, 98 99 onStartup : function () { 100 var base = this; 101 base.updateItems(); 102 base.calculateAll(); 103 base.buildControls(); 104 base.updateControls(); 105 base.response(); 106 base.moveEvents(); 107 base.stopOnHover(); 108 base.owlStatus(); 109 110 if (base.options.transitionStyle !== false) { 111 base.transitionTypes(base.options.transitionStyle); 112 } 113 if (base.options.autoPlay === true) { 114 base.options.autoPlay = 5000; 115 } 116 base.play(); 117 118 base.$elem.find(".owl-wrapper").css("display", "block"); 119 120 if (!base.$elem.is(":visible")) { 121 base.watchVisibility(); 122 } else { 123 base.$elem.css("opacity", 1); 124 } 125 base.onstartup = false; 126 base.eachMoveUpdate(); 127 if (typeof base.options.afterInit === "function") { 128 base.options.afterInit.apply(this, [base.$elem]); 129 } 130 }, 131 132 eachMoveUpdate : function () { 133 var base = this; 134 135 if (base.options.lazyLoad === true) { 136 base.lazyLoad(); 137 } 138 if (base.options.autoHeight === true) { 139 base.autoHeight(); 140 } 141 base.onVisibleItems(); 142 143 if (typeof base.options.afterAction === "function") { 144 base.options.afterAction.apply(this, [base.$elem]); 145 } 146 }, 147
148 updateVars : function () { 149 var base = this; 150 if (typeof base.options.beforeUpdate === "function") { 151 base.options.beforeUpdate.apply(this, [base.$elem]); 152 } 153 base.watchVisibility(); 154 base.updateItems(); 155 base.calculateAll(); 156 base.updatePosition(); 157 base.updateControls(); 158 base.eachMoveUpdate(); 159 if (typeof base.options.afterUpdate === "function") { 160 base.options.afterUpdate.apply(this, [base.$elem]); 161 } 162 }, 163 164 reload : function () { 165 var base = this; 166 window.setTimeout(function () { 167 base.updateVars(); 168 }, 0); 169 }, 170 171 watchVisibility : function () { 172 var base = this; 173 174 if (base.$elem.is(":visible") === false) { 175 base.$elem.css({opacity: 0}); 176 window.clearInterval(base.autoPlayInterval); 177 window.clearInterval(base.checkVisible); 178 } else { 179 return false; 180 } 181 base.checkVisible = window.setInterval(function () { 182 if (base.$elem.is(":visible")) { 183 base.reload(); 184 base.$elem.animate({opacity: 1}, 200); 185 window.clearInterval(base.checkVisible); 186 } 187 }, 500); 188 }, 189 190 wrapItems : function () { 191 var base = this; 192 base.$userItems.wrapAll("<div class=\"owl-wrapper\">").wrap("<div class=\"owl-item\"></div>"); 193 base.$elem.find(".owl-wrapper").wrap("<div class=\"owl-wrapper-outer\">"); 194 base.wrapperOuter = base.$elem.find(".owl-wrapper-outer"); 195 base.$elem.css("display", "block"); 196 }, 197 198 baseClass : function () { 199 var base = this, 200 hasBaseClass = base.$elem.hasClass(base.options.baseClass), 201 hasThemeClass = base.$elem.hasClass(base.options.theme); 202 203 if (!hasBaseClass) { 204 base.$elem.addClass(base.options.baseClass); 205 } 206 207 if (!hasThemeClass) { 208 base.$elem.addClass(base.options.theme); 209 } 210 }, 211 212 updateItems : function () { 213 var base = this, width, i; 214 215 if (base.options.responsive === false) { 216 return false; 217 } 218 if (base.options.singleItem === true) { 219 base.options.items = base.orignalItems = 1; 220 base.options.itemsCustom = false; 221 base.options.itemsDesktop = false; 222 base.options.itemsDesktopSmall = false; 223 base.options.itemsTablet = false; 224 base.options.itemsTabletSmall = false; 225 base.options.itemsMobile = false; 226 return false; 227 } 228 229 width = $(base.options.responsiveBaseWidth).width(); 230 231 if (width > (base.options.itemsDesktop[0] || base.orignalItems)) { 232 base.options.items = base.orignalItems; 233 } 234 if (base.options.itemsCustom !== false) { 235 //Reorder array by screen size 236 base.options.itemsCustom.sort(function (a, b) {return a[0] - b[0]; }); 237 238 for (i = 0; i < base.options.itemsCustom.length; i += 1) { 239 if (base.options.itemsCustom[i][0] <= width) { 240 base.options.items = base.options.itemsCustom[i][1]; 241 } 242 } 243 244 } else { 245 246 if (width <= base.options.itemsDesktop[0] && base.options.itemsDesktop !== false) { 247 base.options.items = base.options.itemsDesktop[1]; 248 } 249 250 if (width <= base.options.itemsDesktopSmall[0] && base.options.itemsDesktopSmall !== false) { 251 base.options.items = base.options.itemsDesktopSmall[1]; 252 } 253 254 if (width <= base.options.itemsTablet[0] && base.options.itemsTablet !== false) { 255 base.options.items = base.options.itemsTablet[1]; 256 } 257 258 if (width <= base.options.itemsTabletSmall[0] && base.options.itemsTabletSmall !== false) { 259 base.options.items = base.options.itemsTabletSmall[1]; 260 } 261 262 if (width <= base.options.itemsMobile[0] && base.options.itemsMobile !== false) { 263 base.options.items = base.options.itemsMobile[1]; 264 } 265 } 266 267 //if number of items is less than declared 268 if (base.options.items > base.itemsAmount && base.options.itemsScaleUp === true) { 269 base.options.items = base.itemsAmount; 270 } 271 }, 272 273 response : function () { 274 var base = this, 275 smallDelay, 276 lastWindowWidth; 277 278 if (base.options.responsive !== true) { 279 return false;
280 } 281 lastWindowWidth = $(window).width(); 282 283 base.resizer = function () { 284 if ($(window).width() !== lastWindowWidth) { 285 if (base.options.autoPlay !== false) { 286 window.clearInterval(base.autoPlayInterval); 287 } 288 window.clearTimeout(smallDelay); 289 smallDelay = window.setTimeout(function () { 290 lastWindowWidth = $(window).width(); 291 base.updateVars(); 292 }, base.options.responsiveRefreshRate); 293 } 294 }; 295 $(window).resize(base.resizer); 296 }, 297 298 updatePosition : function () { 299 var base = this; 300 base.jumpTo(base.currentItem); 301 if (base.options.autoPlay !== false) { 302 base.checkAp(); 303 } 304 }, 305 306 appendItemsSizes : function () { 307 var base = this, 308 roundPages = 0, 309 lastItem = base.itemsAmount - base.options.items; 310 311 base.$owlItems.each(function (index) { 312 var $this = $(this); 313 $this 314 .css({"width": base.itemWidth}) 315 .data("owl-item", Number(index)); 316 317 if (index % base.options.items === 0 || index === lastItem) { 318 if (!(index > lastItem)) { 319 roundPages += 1; 320 } 321 } 322 $this.data("owl-roundPages", roundPages); 323 }); 324 }, 325 326 appendWrapperSizes : function () { 327 var base = this, 328 width = base.$owlItems.length * base.itemWidth; 329 330 base.$owlWrapper.css({ 331 "width": width * 2, 332 "left": 0 333 }); 334 base.appendItemsSizes(); 335 }, 336 337 calculateAll : function () { 338 var base = this; 339 base.calculateWidth(); 340 base.appendWrapperSizes(); 341 base.loops(); 342 base.max(); 343 }, 344 345 calculateWidth : function () { 346 var base = this; 347 base.itemWidth = Math.round(base.$elem.width() / base.options.items); 348 }, 349 350 max : function () { 351 var base = this, 352 maximum = ((base.itemsAmount * base.itemWidth) - base.options.items * base.itemWidth) * -1; 353 if (base.options.items > base.itemsAmount) { 354 base.maximumItem = 0; 355 maximum = 0; 356 base.maximumPixels = 0; 357 } else { 358 base.maximumItem = base.itemsAmount - base.options.items; 359 base.maximumPixels = maximum; 360 } 361 return maximum; 362 }, 363 364 min : function () { 365 return 0; 366 }, 367 368 loops : function () { 369 var base = this, 370 prev = 0, 371 elWidth = 0, 372 i, 373 item, 374 roundPageNum; 375 376 base.positionsInArray = [0]; 377 base.pagesInArray = []; 378 379 for (i = 0; i < base.itemsAmount; i += 1) { 380 elWidth += base.itemWidth; 381 base.positionsInArray.push(-elWidth); 382 383 if (base.options.scrollPerPage === true) { 384 item = $(base.$owlItems[i]); 385 roundPageNum = item.data("owl-roundPages"); 386 if (roundPageNum !== prev) { 387 base.pagesInArray[prev] = base.positionsInArray[i]; 388 prev = roundPageNum; 389 } 390 } 391 } 392 }, 393 394 buildControls : function () { 395 var base = this; 396 if (base.options.navigation === true || base.options.pagination === true) { 397 base.owlControls = $("<div class=\"owl-controls\"/>").toggleClass("clickable", !base.browser.isTouch).appendTo(base.$elem); 398 } 399 if (base.options.pagination === true) { 400 base.buildPagination(); 401 } 402 if (base.options.navigation === true) { 403 base.buildButtons(); 404 } 405 }, 406 407 buildButtons : function () { 408 var base = this, 409 buttonsWrapper = $("<div class=\"owl-buttons\"/>"); 410 base.owlControls.append(buttonsWrapper); 411 412 base.buttonPrev = $("<div/>", { 413 "class" : "owl-prev", 414 "html" : base.options.navigationText[0] || "" 415 }); 416 417 base.buttonNext = $("<div/>", { 418 "class" : "owl-next", 419 "html" : base.options.navigationText[1] || "" 420 }); 421 422 buttonsWrapper 423 .append(base.buttonPrev) 424 .append(base.buttonNext); 425 426 buttonsWrapper.on("touchstart.owlControls mousedown.owlControls", "div[class^=\"owl\"]", function (event) { 427 event.preventDefault(); 428 }); 429 430 buttonsWrapper.on("touchend.owlControls mouseup.owlControls", "div[class^=\"owl\"]", function (event) { 431 event.preventDefault(); 432 if ($(this).hasClass("owl-next")) { 433 base.next(); 434 } else { 435 base.prev(); 436 } 437 }); 438 }, 439 440 buildPagination : function () { 441 var base = this; 442 443 base.paginationWrapper = $("<div class=\"owl-pagination\"/>"); 444 base.owlControls.append(base.paginationWrapper); 445 446 base.paginationWrapper.on("touchend.owlControls mouseup.owlControls", ".owl-page", function (event) { 447 event.preventDefault(); 448 if (Number($(this).data("owl-page")) !== base.currentItem) { 449 base.goTo(Number($(this).data("owl-page")), true); 450 } 451 }); 452 }, 453 454 updatePagination : function () { 455 var base = this, 456 counter, 457 lastPage, 458 lastItem, 459 i, 460 paginationButton, 461 paginationButtonInner; 462 463 if (base.options.pagination === false) { 464 return false;
465 } 466 467 base.paginationWrapper.html(""); 468 469 counter = 0; 470 lastPage = base.itemsAmount - base.itemsAmount % base.options.items; 471 472 for (i = 0; i < base.itemsAmount; i += 1) { 473 if (i % base.options.items === 0) { 474 counter += 1; 475 if (lastPage === i) { 476 lastItem = base.itemsAmount - base.options.items; 477 } 478 paginationButton = $("<div/>", { 479 "class" : "owl-page" 480 }); 481 paginationButtonInner = $("<span></span>", { 482 "text": base.options.paginationNumbers === true ? counter : "", 483 "class": base.options.paginationNumbers === true ? "owl-numbers" : "" 484 }); 485 paginationButton.append(paginationButtonInner); 486 487 paginationButton.data("owl-page", lastPage === i ? lastItem : i); 488 paginationButton.data("owl-roundPages", counter); 489 490 base.paginationWrapper.append(paginationButton); 491 } 492 } 493 base.checkPagination(); 494 }, 495 checkPagination : function () { 496 var base = this; 497 if (base.options.pagination === false) { 498 return false; 499 } 500 base.paginationWrapper.find(".owl-page").each(function () { 501 if ($(this).data("owl-roundPages") === $(base.$owlItems[base.currentItem]).data("owl-roundPages")) { 502 base.paginationWrapper 503 .find(".owl-page") 504 .removeClass("active bg-theme"); 505 $(this).addClass("active bg-theme"); 506 } 507 }); 508 }, 509 510 checkNavigation : function () { 511 var base = this; 512 513 if (base.options.navigation === false) { 514 return false; 515 } 516 if (base.options.rewindNav === false) { 517 if (base.currentItem === 0 && base.maximumItem === 0) { 518 base.buttonPrev.addClass("disabled"); 519 base.buttonNext.addClass("disabled"); 520 } else if (base.currentItem === 0 && base.maximumItem !== 0) { 521 base.buttonPrev.addClass("disabled"); 522 base.buttonNext.removeClass("disabled"); 523 } else if (base.currentItem === base.maximumItem) { 524 base.buttonPrev.removeClass("disabled"); 525 base.buttonNext.addClass("disabled"); 526 } else if (base.currentItem !== 0 && base.currentItem !== base.maximumItem) { 527 base.buttonPrev.removeClass("disabled"); 528 base.buttonNext.removeClass("disabled"); 529 } 530 } 531 }, 532 533 updateControls : function () { 534 var base = this; 535 base.updatePagination(); 536 base.checkNavigation(); 537 if (base.owlControls) { 538 if (base.options.items >= base.itemsAmount) { 539 base.owlControls.hide(); 540 } else { 541 base.owlControls.show(); 542 } 543 } 544 }, 545 546 destroyControls : function () { 547 var base = this; 548 if (base.owlControls) { 549 base.owlControls.remove(); 550 } 551 }, 552 553 next : function (speed) { 554 var base = this; 555 556 if (base.isTransition) { 557 return false; 558 } 559 560 base.currentItem += base.options.scrollPerPage === true ? base.options.items : 1; 561 if (base.currentItem > base.maximumItem + (base.options.scrollPerPage === true ? (base.options.items - 1) : 0)) { 562 if (base.options.rewindNav === true) { 563 base.currentItem = 0; 564 speed = "rewind"; 565 } else { 566 base.currentItem = base.maximumItem; 567 return false; 568 } 569 } 570 base.goTo(base.currentItem, speed); 571 }, 572 573 prev : function (speed) { 574 var base = this; 575 576 if (base.isTransition) { 577 return false;
578 } 579 580 if (base.options.scrollPerPage === true && base.currentItem > 0 && base.currentItem < base.options.items) { 581 base.currentItem = 0; 582 } else { 583 base.currentItem -= base.options.scrollPerPage === true ? base.options.items : 1; 584 } 585 if (base.currentItem < 0) { 586 if (base.options.rewindNav === true) { 587 base.currentItem = base.maximumItem; 588 speed = "rewind"; 589 } else { 590 base.currentItem = 0; 591 return false; 592 } 593 } 594 base.goTo(base.currentItem, speed); 595 }, 596 597 goTo : function (position, speed, drag) { 598 var base = this, 599 goToPixel; 600 601 if (base.isTransition) { 602 return false; 603 } 604 if (typeof base.options.beforeMove === "function") { 605 base.options.beforeMove.apply(this, [base.$elem]); 606 } 607 if (position >= base.maximumItem) { 608 position = base.maximumItem; 609 } else if (position <= 0) { 610 position = 0; 611 } 612 613 base.currentItem = base.owl.currentItem = position; 614 if (base.options.transitionStyle !== false && drag !== "drag" && base.options.items === 1 && base.browser.support3d === true) { 615 base.swapSpeed(0); 616 if (base.browser.support3d === true) { 617 base.transition3d(base.positionsInArray[position]); 618 } else { 619 base.css2slide(base.positionsInArray[position], 1); 620 } 621 base.afterGo(); 622 base.singleItemTransition(); 623 return false; 624 } 625 goToPixel = base.positionsInArray[position]; 626 627 if (base.browser.support3d === true) { 628 base.isCss3Finish = false; 629 630 if (speed === true) { 631 base.swapSpeed("paginationSpeed"); 632 window.setTimeout(function () { 633 base.isCss3Finish = true; 634 }, base.options.paginationSpeed); 635 636 } else if (speed === "rewind") { 637 base.swapSpeed(base.options.rewindSpeed); 638 window.setTimeout(function () { 639 base.isCss3Finish = true; 640 }, base.options.rewindSpeed); 641 642 } else { 643 base.swapSpeed("slideSpeed"); 644 window.setTimeout(function () { 645 base.isCss3Finish = true; 646 }, base.options.slideSpeed); 647 } 648 base.transition3d(goToPixel); 649 } else { 650 if (speed === true) { 651 base.css2slide(goToPixel, base.options.paginationSpeed); 652 } else if (speed === "rewind") { 653 base.css2slide(goToPixel, base.options.rewindSpeed); 654 } else { 655 base.css2slide(goToPixel, base.options.slideSpeed); 656 } 657 } 658 base.afterGo(); 659 }, 660 661 jumpTo : function (position) { 662 var base = this; 663 if (typeof base.options.beforeMove === "function") { 664 base.options.beforeMove.apply(this, [base.$elem]); 665 } 666 if (position >= base.maximumItem || position === -1) { 667 position = base.maximumItem; 668 } else if (position <= 0) { 669 position = 0; 670 } 671 base.swapSpeed(0); 672 if (base.browser.support3d === true) { 673 base.transition3d(base.positionsInArray[position]); 674 } else { 675 base.css2slide(base.positionsInArray[position], 1); 676 } 677 base.currentItem = base.owl.currentItem = position; 678 base.afterGo(); 679 }, 680 681 afterGo : function () { 682 var base = this; 683 684 base.prevArr.push(base.currentItem); 685 base.prevItem = base.owl.prevItem = base.prevArr[base.prevArr.length - 2]; 686 base.prevArr.shift(0); 687 688 if (base.prevItem !== base.currentItem) { 689 base.checkPagination(); 690 base.checkNavigation(); 691 base.eachMoveUpdate(); 692 693 if (base.options.autoPlay !== false) { 694 base.checkAp(); 695 } 696 } 697 if (typeof base.options.afterMove === "function" && base.prevItem !== base.currentItem) { 698 base.options.afterMove.apply(this, [base.$elem]); 699 } 700 }, 701 702 stop : function () { 703 var base = this; 704 base.apStatus = "stop"; 705 window.clearInterval(base.autoPlayInterval); 706 }, 707 708 checkAp : function () { 709 var base = this; 710 if (base.apStatus !== "stop") { 711 base.play(); 712 } 713 }, 714 715 play : function () { 716 var base = this; 717 base.apStatus = "play"; 718 if (base.options.autoPlay === false) { 719 return false;
720 } 721 window.clearInterval(base.autoPlayInterval); 722 base.autoPlayInterval = window.setInterval(function () { 723 base.next(true); 724 }, base.options.autoPlay); 725 }, 726 727 swapSpeed : function (action) { 728 var base = this; 729 if (action === "slideSpeed") { 730 base.$owlWrapper.css(base.addCssSpeed(base.options.slideSpeed)); 731 } else if (action === "paginationSpeed") { 732 base.$owlWrapper.css(base.addCssSpeed(base.options.paginationSpeed)); 733 } else if (typeof action !== "string") { 734 base.$owlWrapper.css(base.addCssSpeed(action)); 735 } 736 }, 737 738 addCssSpeed : function (speed) { 739 return { 740 "-webkit-transition": "all " + speed + "ms ease", 741 "-moz-transition": "all " + speed + "ms ease", 742 "-o-transition": "all " + speed + "ms ease", 743 "transition": "all " + speed + "ms ease" 744 }; 745 }, 746 747 removeTransition : function () { 748 return { 749 "-webkit-transition": "", 750 "-moz-transition": "", 751 "-o-transition": "", 752 "transition": "" 753 }; 754 }, 755 756 doTranslate : function (pixels) { 757 return { 758 "-webkit-transform": "translate3d(" + pixels + "px, 0px, 0px)", 759 "-moz-transform": "translate3d(" + pixels + "px, 0px, 0px)", 760 "-o-transform": "translate3d(" + pixels + "px, 0px, 0px)", 761 "-ms-transform": "translate3d(" + pixels + "px, 0px, 0px)", 762 "transform": "translate3d(" + pixels + "px, 0px,0px)" 763 }; 764 }, 765 766 transition3d : function (value) { 767 var base = this; 768 base.$owlWrapper.css(base.doTranslate(value)); 769 }, 770 771 css2move : function (value) { 772 var base = this; 773 base.$owlWrapper.css({"left" : value}); 774 }, 775 776 css2slide : function (value, speed) { 777 var base = this; 778 779 base.isCssFinish = false; 780 base.$owlWrapper.stop(true, true).animate({ 781 "left" : value 782 }, { 783 duration : speed || base.options.slideSpeed, 784 complete : function () { 785 base.isCssFinish = true; 786 } 787 }); 788 }, 789 790 checkBrowser : function () { 791 var base = this, 792 translate3D = "translate3d(0px, 0px, 0px)", 793 tempElem = document.createElement("div"), 794 regex, 795 asSupport, 796 support3d, 797 isTouch; 798 799 tempElem.style.cssText = " -moz-transform:" + translate3D + 800 "; -ms-transform:" + translate3D + 801 "; -o-transform:" + translate3D + 802 "; -webkit-transform:" + translate3D + 803 "; transform:" + translate3D; 804 regex = /translate3d\(0px, 0px, 0px\)/g; 805 asSupport = tempElem.style.cssText.match(regex); 806 support3d = (asSupport !== null && asSupport.length === 1); 807 808 isTouch = "ontouchstart" in window || window.navigator.msMaxTouchPoints; 809 810 base.browser = { 811 "support3d" : support3d, 812 "isTouch" : isTouch 813 }; 814 }, 815 816 moveEvents : function () { 817 var base = this; 818 if (base.options.mouseDrag !== false || base.options.touchDrag !== false) { 819 base.gestures(); 820 base.disabledEvents(); 821 } 822 }, 823 824 eventTypes : function () { 825 var base = this, 826 types = ["s", "e", "x"]; 827 828 base.ev_types = {}; 829 830 if (base.options.mouseDrag === true && base.options.touchDrag === true) { 831 types = [ 832 "touchstart.owl mousedown.owl", 833 "touchmove.owl mousemove.owl", 834 "touchend.owl touchcancel.owl mouseup.owl" 835 ]; 836 } else if (base.options.mouseDrag === false && base.options.touchDrag === true) { 837 types = [ 838 "touchstart.owl", 839 "touchmove.owl", 840 "touchend.owl touchcancel.owl" 841 ]; 842 } else if (base.options.mouseDrag === true && base.options.touchDrag === false) { 843 types = [ 844 "mousedown.owl", 845 "mousemove.owl", 846 "mouseup.owl" 847 ]; 848 } 849 850 base.ev_types.start = types[0]; 851 base.ev_types.move = types[1]; 852 base.ev_types.end = types[2]; 853 }, 854 855 disabledEvents : function () { 856 var base = this; 857 base.$elem.on("dragstart.owl", function (event) { event.preventDefault(); }); 858 base.$elem.on("mousedown.disableTextSelect", function (e) { 859 return $(e.target).is('input, textarea, select, option'); 860 }); 861 }, 862 863 gestures : function () { 864 /*jslint unparam: true*/ 865 var base = this, 866 locals = { 867 offsetX : 0, 868 offsetY : 0, 869 baseElWidth : 0, 870 relativePos : 0, 871 position: null, 872 minSwipe : null, 873 maxSwipe: null, 874 sliding : null, 875 dargging: null, 876 targetElement : null 877 }; 878 879 base.isCssFinish = true; 880 881 function getTouches(event) { 882 if (event.touches !== undefined) { 883 return { 884 x : event.touches[0].pageX, 885 y : event.touches[0].pageY 886 }; 887 } 888 889 if (event.touches === undefined) { 890 if (event.pageX !== undefined) { 891 return { 892 x : event.pageX, 893 y : event.pageY 894 }; 895 } 896 if (event.pageX === undefined) { 897 return { 898 x : event.clientX, 899 y : event.clientY 900 }; 901 } 902 } 903 } 904 905 function swapEvents(type) { 906 if (type === "on") { 907 $(document).on(base.ev_types.move, dragMove); 908 $(document).on(base.ev_types.end, dragEnd); 909 } else if (type === "off") { 910 $(document).off(base.ev_types.move); 911 $(document).off(base.ev_types.end); 912 } 913 } 914 915 function dragStart(event) { 916 var ev = event.originalEvent || event || window.event, 917 position; 918 919 if (ev.which === 3) { 920 return false;
921 } 922 if (base.itemsAmount <= base.options.items) { 923 return; 924 } 925 if (base.isCssFinish === false && !base.options.dragBeforeAnimFinish) { 926 return false; 927 } 928 if (base.isCss3Finish === false && !base.options.dragBeforeAnimFinish) { 929 return false; 930 } 931 932 if (base.options.autoPlay !== false) { 933 window.clearInterval(base.autoPlayInterval); 934 } 935 936 if (base.browser.isTouch !== true && !base.$owlWrapper.hasClass("grabbing")) { 937 base.$owlWrapper.addClass("grabbing"); 938 } 939 940 base.newPosX = 0; 941 base.newRelativeX = 0; 942 943 $(this).css(base.removeTransition()); 944 945 position = $(this).position(); 946 locals.relativePos = position.left; 947 948 locals.offsetX = getTouches(ev).x - position.left; 949 locals.offsetY = getTouches(ev).y - position.top; 950 951 swapEvents("on"); 952 953 locals.sliding = false; 954 locals.targetElement = ev.target || ev.srcElement; 955 } 956 957 function dragMove(event) { 958 var ev = event.originalEvent || event || window.event, 959 minSwipe, 960 maxSwipe; 961 962 base.newPosX = getTouches(ev).x - locals.offsetX; 963 base.newPosY = getTouches(ev).y - locals.offsetY; 964 base.newRelativeX = base.newPosX - locals.relativePos; 965 966 if (typeof base.options.startDragging === "function" && locals.dragging !== true && base.newRelativeX !== 0) { 967 locals.dragging = true; 968 base.options.startDragging.apply(base, [base.$elem]); 969 } 970 971 if ((base.newRelativeX > 8 || base.newRelativeX < -8) && (base.browser.isTouch === true)) { 972 if (ev.preventDefault !== undefined) { 973 ev.preventDefault(); 974 } else { 975 ev.returnValue = false; 976 } 977 locals.sliding = true; 978 } 979 980 if ((base.newPosY > 10 || base.newPosY < -10) && locals.sliding === false) { 981 $(document).off("touchmove.owl"); 982 } 983 984 minSwipe = function () { 985 return base.newRelativeX / 5; 986 }; 987 988 maxSwipe = function () { 989 return base.maximumPixels + base.newRelativeX / 5; 990 }; 991 992 base.newPosX = Math.max(Math.min(base.newPosX, minSwipe()), maxSwipe()); 993 if (base.browser.support3d === true) { 994 base.transition3d(base.newPosX); 995 } else { 996 base.css2move(base.newPosX); 997 } 998 } 999 1000 function dragEnd(event) { 1001 var ev = event.originalEvent || event || window.event, 1002 newPosition, 1003 handlers, 1004 owlStopEvent; 1005 1006 ev.target = ev.target || ev.srcElement; 1007 1008 locals.dragging = false; 1009 1010 if (base.browser.isTouch !== true) { 1011 base.$owlWrapper.removeClass("grabbing"); 1012 } 1013 1014 if (base.newRelativeX < 0) { 1015 base.dragDirection = base.owl.dragDirection = "left"; 1016 } else { 1017 base.dragDirection = base.owl.dragDirection = "right"; 1018 } 1019 1020 if (base.newRelativeX !== 0) { 1021 newPosition = base.getNewPosition(); 1022 base.goTo(newPosition, false, "drag"); 1023 if (locals.targetElement === ev.target && base.browser.isTouch !== true) { 1024 $(ev.target).on("click.disable", function (ev) { 1025 ev.stopImmediatePropagation(); 1026 ev.stopPropagation(); 1027 ev.preventDefault(); 1028 $(ev.target).off("click.disable"); 1029 }); 1030 handlers = $._data(ev.target, "events").click; 1031 owlStopEvent = handlers.pop(); 1032 handlers.splice(0, 0, owlStopEvent); 1033 } 1034 } 1035 swapEvents("off"); 1036 } 1037 base.$elem.on(base.ev_types.start, ".owl-wrapper", dragStart); 1038 }, 1039 1040 getNewPosition : function () { 1041 var base = this, 1042 newPosition = base.closestItem(); 1043 1044 if (newPosition > base.maximumItem) { 1045 base.currentItem = base.maximumItem; 1046 newPosition = base.maximumItem; 1047 } else if (base.newPosX >= 0) { 1048 newPosition = 0; 1049 base.currentItem = 0; 1050 } 1051 return newPosition; 1052 }, 1053 closestItem : function () { 1054 var base = this, 1055 array = base.options.scrollPerPage === true ? base.pagesInArray : base.positionsInArray, 1056 goal = base.newPosX, 1057 closest = null; 1058 1059 $.each(array, function (i, v) { 1060 if (goal - (base.itemWidth / 20) > array[i + 1] && goal - (base.itemWidth / 20) < v && base.moveDirection() === "left") { 1061 closest = v; 1062 if (base.options.scrollPerPage === true) { 1063 base.currentItem = $.inArray(closest, base.positionsInArray); 1064 } else { 1065 base.currentItem = i; 1066 } 1067 } else if (goal + (base.itemWidth / 20) < v && goal + (base.itemWidth / 20) > (array[i + 1] || array[i] - base.itemWidth) && base.moveDirection() === "right") { 1068 if (base.options.scrollPerPage === true) { 1069 closest = array[i + 1] || array[array.length - 1]; 1070 base.currentItem = $.inArray(closest, base.positionsInArray); 1071 } else { 1072 closest = array[i + 1]; 1073 base.currentItem = i + 1; 1074 } 1075 } 1076 }); 1077 return base.currentItem; 1078 }, 1079 1080 moveDirection : function () { 1081 var base = this, 1082 direction; 1083 if (base.newRelativeX < 0) { 1084 direction = "right"; 1085 base.playDirection = "next"; 1086 } else { 1087 direction = "left"; 1088 base.playDirection = "prev"; 1089 } 1090 return direction; 1091 }, 1092 1093 customEvents : function () { 1094 /*jslint unparam: true*/ 1095 var base = this; 1096 base.$elem.on("owl.next", function () { 1097 base.next(); 1098 }); 1099 base.$elem.on("owl.prev", function () { 1100 base.prev(); 1101 }); 1102 base.$elem.on("owl.play", function (event, speed) { 1103 base.options.autoPlay = speed; 1104 base.play(); 1105 base.hoverStatus = "play"; 1106 }); 1107 base.$elem.on("owl.stop", function () { 1108 base.stop(); 1109 base.hoverStatus = "stop"; 1110 }); 1111 base.$elem.on("owl.goTo", function (event, item) { 1112 base.goTo(item); 1113 }); 1114 base.$elem.on("owl.jumpTo", function (event, item) { 1115 base.jumpTo(item); 1116 }); 1117 }, 1118 1119 stopOnHover : function () { 1120 var base = this; 1121 if (base.options.stopOnHover === true && base.browser.isTouch !== true && base.options.autoPlay !== false) { 1122 base.$elem.on("mouseover", function () { 1123 base.stop(); 1124 }); 1125 base.$elem.on("mouseout", function () { 1126 if (base.hoverStatus !== "stop") { 1127 base.play(); 1128 } 1129 }); 1130 } 1131 }, 1132 1133 lazyLoad : function () { 1134 var base = this, 1135 i, 1136 $item, 1137 itemNumber, 1138 $lazyImg, 1139 follow; 1140 1141 if (base.options.lazyLoad === false) { 1142 return false;
1143 } 1144 for (i = 0; i < base.itemsAmount; i += 1) { 1145 $item = $(base.$owlItems[i]); 1146 1147 if ($item.data("owl-loaded") === "loaded") { 1148 continue; 1149 } 1150 1151 itemNumber = $item.data("owl-item"); 1152 $lazyImg = $item.find(".lazyOwl"); 1153 1154 if (typeof $lazyImg.data("src") !== "string") { 1155 $item.data("owl-loaded", "loaded"); 1156 continue; 1157 } 1158 if ($item.data("owl-loaded") === undefined) { 1159 $lazyImg.hide(); 1160 $item.addClass("loading").data("owl-loaded", "checked"); 1161 } 1162 if (base.options.lazyFollow === true) { 1163 follow = itemNumber >= base.currentItem; 1164 } else { 1165 follow = true; 1166 } 1167 if (follow && itemNumber < base.currentItem + base.options.items && $lazyImg.length) { 1168 $lazyImg.each(function() { 1169 base.lazyPreload($item, $(this)); 1170 }); 1171 } 1172 } 1173 }, 1174 1175 lazyPreload : function ($item, $lazyImg) { 1176 var base = this, 1177 iterations = 0, 1178 isBackgroundImg; 1179 1180 if ($lazyImg.prop("tagName") === "DIV") { 1181 $lazyImg.css("background-image", "url(" + $lazyImg.data("src") + ")"); 1182 isBackgroundImg = true; 1183 } else { 1184 $lazyImg[0].src = $lazyImg.data("src"); 1185 } 1186 1187 function showImage() { 1188 $item.data("owl-loaded", "loaded").removeClass("loading"); 1189 $lazyImg.removeAttr("data-src"); 1190 if (base.options.lazyEffect === "fade") { 1191 $lazyImg.fadeIn(400); 1192 } else { 1193 $lazyImg.show(); 1194 } 1195 if (typeof base.options.afterLazyLoad === "function") { 1196 base.options.afterLazyLoad.apply(this, [base.$elem]); 1197 } 1198 } 1199 1200 function checkLazyImage() { 1201 iterations += 1; 1202 if (base.completeImg($lazyImg.get(0)) || isBackgroundImg === true) { 1203 showImage(); 1204 } else if (iterations <= 100) {//if image loads in less than 10 seconds 1205 window.setTimeout(checkLazyImage, 100); 1206 } else { 1207 showImage(); 1208 } 1209 } 1210 1211 checkLazyImage(); 1212 }, 1213 1214 autoHeight : function () { 1215 var base = this, 1216 $currentimg = $(base.$owlItems[base.currentItem]).find("img"), 1217 iterations; 1218 1219 function addHeight() { 1220 var $currentItem = $(base.$owlItems[base.currentItem]).height(); 1221 base.wrapperOuter.css("height", $currentItem + "px"); 1222 if (!base.wrapperOuter.hasClass("autoHeight")) { 1223 window.setTimeout(function () { 1224 base.wrapperOuter.addClass("autoHeight"); 1225 }, 0); 1226 } 1227 } 1228 1229 function checkImage() { 1230 iterations += 1; 1231 if (base.completeImg($currentimg.get(0))) { 1232 addHeight(); 1233 } else if (iterations <= 100) { //if image loads in less than 10 seconds 1234 window.setTimeout(checkImage, 100); 1235 } else { 1236 base.wrapperOuter.css("height", ""); //Else remove height attribute 1237 } 1238 } 1239 1240 if ($currentimg.get(0) !== undefined) { 1241 iterations = 0; 1242 checkImage(); 1243 } else { 1244 addHeight(); 1245 } 1246 }, 1247 1248 completeImg : function (img) { 1249 var naturalWidthType; 1250 1251 if (!img.complete) { 1252 return false; 1253 } 1254 naturalWidthType = typeof img.naturalWidth;
1255 if (naturalWidthType !== "undefined" && img.naturalWidth === 0) { 1256 return false; 1257 } 1258 return true; 1259 }, 1260 1261 onVisibleItems : function () { 1262 var base = this, 1263 i; 1264 1265 if (base.options.addClassActive === true) { 1266 base.$owlItems.removeClass("active"); 1267 } 1268 base.visibleItems = []; 1269 for (i = base.currentItem; i < base.currentItem + base.options.items; i += 1) { 1270 base.visibleItems.push(i); 1271 1272 if (base.options.addClassActive === true) { 1273 $(base.$owlItems[i]).addClass("active"); 1274 } 1275 } 1276 base.owl.visibleItems = base.visibleItems; 1277 }, 1278 1279 transitionTypes : function (className) { 1280 var base = this; 1281 //Currently available: "fade", "backSlide", "goDown", "fadeUp" 1282 base.outClass = "owl-" + className + "-out"; 1283 base.inClass = "owl-" + className + "-in"; 1284 }, 1285 1286 singleItemTransition : function () { 1287 var base = this, 1288 outClass = base.outClass, 1289 inClass = base.inClass, 1290 $currentItem = base.$owlItems.eq(base.currentItem), 1291 $prevItem = base.$owlItems.eq(base.prevItem), 1292 prevPos = Math.abs(base.positionsInArray[base.currentItem]) + base.positionsInArray[base.prevItem], 1293 origin = Math.abs(base.positionsInArray[base.currentItem]) + base.itemWidth / 2, 1294 animEnd = 'webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend'; 1295 1296 base.isTransition = true; 1297 1298 base.$owlWrapper 1299 .addClass('owl-origin') 1300 .css({ 1301 "-webkit-transform-origin" : origin + "px", 1302 "-moz-perspective-origin" : origin + "px", 1303 "perspective-origin" : origin + "px" 1304 }); 1305 function transStyles(prevPos) { 1306 return { 1307 "position" : "relative", 1308 "left" : prevPos + "px" 1309 }; 1310 } 1311 1312 $prevItem 1313 .css(transStyles(prevPos, 10)) 1314 .addClass(outClass) 1315 .on(animEnd, function () { 1316 base.endPrev = true; 1317 $prevItem.off(animEnd); 1318 base.clearTransStyle($prevItem, outClass); 1319 }); 1320 1321 $currentItem 1322 .addClass(inClass) 1323 .on(animEnd, function () { 1324 base.endCurrent = true; 1325 $currentItem.off(animEnd); 1326 base.clearTransStyle($currentItem, inClass); 1327 }); 1328 }, 1329 1330 clearTransStyle : function (item, classToRemove) { 1331 var base = this; 1332 item.css({ 1333 "position" : "", 1334 "left" : "" 1335 }).removeClass(classToRemove); 1336 1337 if (base.endPrev && base.endCurrent) { 1338 base.$owlWrapper.removeClass('owl-origin'); 1339 base.endPrev = false; 1340 base.endCurrent = false; 1341 base.isTransition = false; 1342 } 1343 }, 1344 1345 owlStatus : function () { 1346 var base = this; 1347 base.owl = { 1348 "userOptions" : base.userOptions, 1349 "baseElement" : base.$elem, 1350 "userItems" : base.$userItems, 1351 "owlItems" : base.$owlItems, 1352 "currentItem" : base.currentItem, 1353 "prevItem" : base.prevItem, 1354 "visibleItems" : base.visibleItems, 1355 "isTouch" : base.browser.isTouch, 1356 "browser" : base.browser, 1357 "dragDirection" : base.dragDirection 1358 }; 1359 }, 1360 1361 clearEvents : function () { 1362 var base = this; 1363 base.$elem.off(".owl owl mousedown.disableTextSelect"); 1364 $(document).off(".owl owl"); 1365 $(window).off("resize", base.resizer); 1366 }, 1367 1368 unWrap : function () { 1369 var base = this; 1370 if (base.$elem.children().length !== 0) { 1371 base.$owlWrapper.unwrap(); 1372 base.$userItems.unwrap().unwrap(); 1373 if (base.owlControls) { 1374 base.owlControls.remove(); 1375 } 1376 } 1377 base.clearEvents(); 1378 base.$elem.attr({ 1379 style: base.$elem.data("owl-originalStyles") || "", 1380 class: base.$elem.data("owl-originalClasses") 1381 }); 1382 }, 1383 1384 destroy : function () { 1385 var base = this; 1386 base.stop(); 1387 window.clearInterval(base.checkVisible); 1388 base.unWrap(); 1389 base.$elem.removeData(); 1390 }, 1391 1392 reinit : function (newOptions) { 1393 var base = this, 1394 options = $.extend({}, base.userOptions, newOptions); 1395 base.unWrap(); 1396 base.init(options, base.$elem); 1397 }, 1398 1399 addItem : function (htmlString, targetPosition) { 1400 var base = this, 1401 position; 1402 1403 if (!htmlString) {return false; } 1404 1405 if (base.$elem.children().length === 0) { 1406 base.$elem.append(htmlString); 1407 base.setVars(); 1408 return false;
1409 } 1410 base.unWrap(); 1411 if (targetPosition === undefined || targetPosition === -1) { 1412 position = -1; 1413 } else { 1414 position = targetPosition; 1415 } 1416 if (position >= base.$userItems.length || position === -1) { 1417 base.$userItems.eq(-1).after(htmlString); 1418 } else { 1419 base.$userItems.eq(position).before(htmlString); 1420 } 1421 1422 base.setVars(); 1423 }, 1424 1425 removeItem : function (targetPosition) { 1426 var base = this, 1427 position; 1428 1429 if (base.$elem.children().length === 0) { 1430 return false; 1431 } 1432 if (targetPosition === undefined || targetPosition === -1) { 1433 position = -1; 1434 } else { 1435 position = targetPosition; 1436 } 1437 1438 base.unWrap(); 1439 base.$userItems.eq(position).remove(); 1440 base.setVars(); 1441 } 1442 1443 }; 1444 1445 $.fn.owlCarousel = function (options) { 1446 return this.each(function () { 1447 if ($(this).data("owl-init") === true) { 1448 return false; 1449 } 1450 $(this).data("owl-init", true); 1451 var carousel = Object.create(Carousel); 1452 carousel.init(options, this); 1453 $.data(this, "owlCarousel", carousel); 1454 }); 1455 }; 1456 1457 $.fn.owlCarousel.options = { 1458 1459 items : 5, 1460 itemsCustom : false, 1461 itemsDesktop : [1199, 4], 1462 itemsDesktopSmall : [979, 3], 1463 itemsTablet : [768, 2], 1464 itemsTabletSmall : false, 1465 itemsMobile : [479, 1], 1466 singleItem : false, 1467 itemsScaleUp : false, 1468 1469 slideSpeed : 200, 1470 paginationSpeed : 800, 1471 rewindSpeed : 1000, 1472 1473 autoPlay : false, 1474 stopOnHover : false, 1475 1476 navigation : false, 1477 navigationText : ["prev", "next"], 1478 rewindNav : true, 1479 scrollPerPage : false, 1480 1481 pagination : true, 1482 paginationNumbers : false, 1483 1484 responsive : true, 1485 responsiveRefreshRate : 200, 1486 responsiveBaseWidth : window, 1487 1488 baseClass : "owl-carousel", 1489 theme : "owl-theme", 1490 1491 lazyLoad : false, 1492 lazyFollow : true, 1493 lazyEffect : "fade", 1494 1495 autoHeight : false, 1496 1497 jsonPath : false, 1498 jsonSuccess : false, 1499 1500 dragBeforeAnimFinish : true, 1501 mouseDrag : true, 1502 touchDrag : true, 1503 1504 addClassActive : false, 1505 transitionStyle : false, 1506 1507 beforeUpdate : false, 1508 afterUpdate : false, 1509 beforeInit : false, 1510 afterInit : false, 1511 beforeMove : false, 1512 afterMove : false, 1513 afterAction : false, 1514 startDragging : false, 1515 afterLazyLoad: false 1516 }; 1517}(jQuery, window, document));
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.