|
|
@@ -0,0 +1,1503 @@
|
|
|
+/*
|
|
|
+ * jQuery OwlCarousel v1.3.3
|
|
|
+ * www.sucaijiayuan.com
|
|
|
+ */
|
|
|
+
|
|
|
+if (typeof Object.create !== "function") {
|
|
|
+ Object.create = function (obj) {
|
|
|
+ function F() {}
|
|
|
+ F.prototype = obj;
|
|
|
+ return new F();
|
|
|
+ };
|
|
|
+}
|
|
|
+(function ($, window, document) {
|
|
|
+
|
|
|
+ var Carousel = {
|
|
|
+ init : function (options, el) {
|
|
|
+ var base = this;
|
|
|
+
|
|
|
+ base.$elem = $(el);
|
|
|
+ base.options = $.extend({}, $.fn.owlCarousel.options, base.$elem.data(), options);
|
|
|
+
|
|
|
+ base.userOptions = options;
|
|
|
+ base.loadContent();
|
|
|
+ },
|
|
|
+
|
|
|
+ loadContent : function () {
|
|
|
+ var base = this, url;
|
|
|
+
|
|
|
+ function getData(data) {
|
|
|
+ var i, content = "";
|
|
|
+ if (typeof base.options.jsonSuccess === "function") {
|
|
|
+ base.options.jsonSuccess.apply(this, [data]);
|
|
|
+ } else {
|
|
|
+ for (i in data.owl) {
|
|
|
+ if (data.owl.hasOwnProperty(i)) {
|
|
|
+ content += data.owl[i].item;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ base.$elem.html(content);
|
|
|
+ }
|
|
|
+ base.logIn();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (typeof base.options.beforeInit === "function") {
|
|
|
+ base.options.beforeInit.apply(this, [base.$elem]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (typeof base.options.jsonPath === "string") {
|
|
|
+ url = base.options.jsonPath;
|
|
|
+ $.getJSON(url, getData);
|
|
|
+ } else {
|
|
|
+ base.logIn();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ logIn : function () {
|
|
|
+ var base = this;
|
|
|
+
|
|
|
+ base.$elem.data("owl-originalStyles", base.$elem.attr("style"));
|
|
|
+ base.$elem.data("owl-originalClasses", base.$elem.attr("class"));
|
|
|
+
|
|
|
+ base.$elem.css({opacity: 0});
|
|
|
+ base.orignalItems = base.options.items;
|
|
|
+ base.checkBrowser();
|
|
|
+ base.wrapperWidth = 0;
|
|
|
+ base.checkVisible = null;
|
|
|
+ base.setVars();
|
|
|
+ },
|
|
|
+
|
|
|
+ setVars : function () {
|
|
|
+ var base = this;
|
|
|
+ if (base.$elem.children().length === 0) {return false; }
|
|
|
+ base.baseClass();
|
|
|
+ base.eventTypes();
|
|
|
+ base.$userItems = base.$elem.children();
|
|
|
+ base.itemsAmount = base.$userItems.length;
|
|
|
+ base.wrapItems();
|
|
|
+ base.$owlItems = base.$elem.find(".owl-item");
|
|
|
+ base.$owlWrapper = base.$elem.find(".owl-wrapper");
|
|
|
+ base.playDirection = "next";
|
|
|
+ base.prevItem = 0;
|
|
|
+ base.prevArr = [0];
|
|
|
+ base.currentItem = 0;
|
|
|
+ base.customEvents();
|
|
|
+ base.onStartup();
|
|
|
+ },
|
|
|
+
|
|
|
+ onStartup : function () {
|
|
|
+ var base = this;
|
|
|
+ base.updateItems();
|
|
|
+ base.calculateAll();
|
|
|
+ base.buildControls();
|
|
|
+ base.updateControls();
|
|
|
+ base.response();
|
|
|
+ base.moveEvents();
|
|
|
+ base.stopOnHover();
|
|
|
+ base.owlStatus();
|
|
|
+
|
|
|
+ if (base.options.transitionStyle !== false) {
|
|
|
+ base.transitionTypes(base.options.transitionStyle);
|
|
|
+ }
|
|
|
+ if (base.options.autoPlay === true) {
|
|
|
+ base.options.autoPlay = 5000;
|
|
|
+ }
|
|
|
+ base.play();
|
|
|
+
|
|
|
+ base.$elem.find(".owl-wrapper").css("display", "block");
|
|
|
+
|
|
|
+ if (!base.$elem.is(":visible")) {
|
|
|
+ base.watchVisibility();
|
|
|
+ } else {
|
|
|
+ base.$elem.css("opacity", 1);
|
|
|
+ }
|
|
|
+ base.onstartup = false;
|
|
|
+ base.eachMoveUpdate();
|
|
|
+ if (typeof base.options.afterInit === "function") {
|
|
|
+ base.options.afterInit.apply(this, [base.$elem]);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ eachMoveUpdate : function () {
|
|
|
+ var base = this;
|
|
|
+
|
|
|
+ if (base.options.lazyLoad === true) {
|
|
|
+ base.lazyLoad();
|
|
|
+ }
|
|
|
+ if (base.options.autoHeight === true) {
|
|
|
+ base.autoHeight();
|
|
|
+ }
|
|
|
+ base.onVisibleItems();
|
|
|
+
|
|
|
+ if (typeof base.options.afterAction === "function") {
|
|
|
+ base.options.afterAction.apply(this, [base.$elem]);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ updateVars : function () {
|
|
|
+ var base = this;
|
|
|
+ if (typeof base.options.beforeUpdate === "function") {
|
|
|
+ base.options.beforeUpdate.apply(this, [base.$elem]);
|
|
|
+ }
|
|
|
+ base.watchVisibility();
|
|
|
+ base.updateItems();
|
|
|
+ base.calculateAll();
|
|
|
+ base.updatePosition();
|
|
|
+ base.updateControls();
|
|
|
+ base.eachMoveUpdate();
|
|
|
+ if (typeof base.options.afterUpdate === "function") {
|
|
|
+ base.options.afterUpdate.apply(this, [base.$elem]);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ reload : function () {
|
|
|
+ var base = this;
|
|
|
+ window.setTimeout(function () {
|
|
|
+ base.updateVars();
|
|
|
+ }, 0);
|
|
|
+ },
|
|
|
+
|
|
|
+ watchVisibility : function () {
|
|
|
+ var base = this;
|
|
|
+
|
|
|
+ if (base.$elem.is(":visible") === false) {
|
|
|
+ base.$elem.css({opacity: 0});
|
|
|
+ window.clearInterval(base.autoPlayInterval);
|
|
|
+ window.clearInterval(base.checkVisible);
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ base.checkVisible = window.setInterval(function () {
|
|
|
+ if (base.$elem.is(":visible")) {
|
|
|
+ base.reload();
|
|
|
+ base.$elem.animate({opacity: 1}, 200);
|
|
|
+ window.clearInterval(base.checkVisible);
|
|
|
+ }
|
|
|
+ }, 500);
|
|
|
+ },
|
|
|
+
|
|
|
+ wrapItems : function () {
|
|
|
+ var base = this;
|
|
|
+ base.$userItems.wrapAll("<div class=\"owl-wrapper\">").wrap("<div class=\"owl-item\"></div>");
|
|
|
+ base.$elem.find(".owl-wrapper").wrap("<div class=\"owl-wrapper-outer\">");
|
|
|
+ base.wrapperOuter = base.$elem.find(".owl-wrapper-outer");
|
|
|
+ base.$elem.css("display", "block");
|
|
|
+ },
|
|
|
+
|
|
|
+ baseClass : function () {
|
|
|
+ var base = this,
|
|
|
+ hasBaseClass = base.$elem.hasClass(base.options.baseClass),
|
|
|
+ hasThemeClass = base.$elem.hasClass(base.options.theme);
|
|
|
+
|
|
|
+ if (!hasBaseClass) {
|
|
|
+ base.$elem.addClass(base.options.baseClass);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!hasThemeClass) {
|
|
|
+ base.$elem.addClass(base.options.theme);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ updateItems : function () {
|
|
|
+ var base = this, width, i;
|
|
|
+
|
|
|
+ if (base.options.responsive === false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (base.options.singleItem === true) {
|
|
|
+ base.options.items = base.orignalItems = 1;
|
|
|
+ base.options.itemsCustom = false;
|
|
|
+ base.options.itemsDesktop = false;
|
|
|
+ base.options.itemsDesktopSmall = false;
|
|
|
+ base.options.itemsTablet = false;
|
|
|
+ base.options.itemsTabletSmall = false;
|
|
|
+ base.options.itemsMobile = false;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ width = $(base.options.responsiveBaseWidth).width();
|
|
|
+
|
|
|
+ if (width > (base.options.itemsDesktop[0] || base.orignalItems)) {
|
|
|
+ base.options.items = base.orignalItems;
|
|
|
+ }
|
|
|
+ if (base.options.itemsCustom !== false) {
|
|
|
+ //Reorder array by screen size
|
|
|
+ base.options.itemsCustom.sort(function (a, b) {return a[0] - b[0]; });
|
|
|
+
|
|
|
+ for (i = 0; i < base.options.itemsCustom.length; i += 1) {
|
|
|
+ if (base.options.itemsCustom[i][0] <= width) {
|
|
|
+ base.options.items = base.options.itemsCustom[i][1];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ if (width <= base.options.itemsDesktop[0] && base.options.itemsDesktop !== false) {
|
|
|
+ base.options.items = base.options.itemsDesktop[1];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (width <= base.options.itemsDesktopSmall[0] && base.options.itemsDesktopSmall !== false) {
|
|
|
+ base.options.items = base.options.itemsDesktopSmall[1];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (width <= base.options.itemsTablet[0] && base.options.itemsTablet !== false) {
|
|
|
+ base.options.items = base.options.itemsTablet[1];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (width <= base.options.itemsTabletSmall[0] && base.options.itemsTabletSmall !== false) {
|
|
|
+ base.options.items = base.options.itemsTabletSmall[1];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (width <= base.options.itemsMobile[0] && base.options.itemsMobile !== false) {
|
|
|
+ base.options.items = base.options.itemsMobile[1];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //if number of items is less than declared
|
|
|
+ if (base.options.items > base.itemsAmount && base.options.itemsScaleUp === true) {
|
|
|
+ base.options.items = base.itemsAmount;
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ response : function () {
|
|
|
+ var base = this,
|
|
|
+ smallDelay,
|
|
|
+ lastWindowWidth;
|
|
|
+
|
|
|
+ if (base.options.responsive !== true) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ lastWindowWidth = $(window).width();
|
|
|
+
|
|
|
+ base.resizer = function () {
|
|
|
+ if ($(window).width() !== lastWindowWidth) {
|
|
|
+ if (base.options.autoPlay !== false) {
|
|
|
+ window.clearInterval(base.autoPlayInterval);
|
|
|
+ }
|
|
|
+ window.clearTimeout(smallDelay);
|
|
|
+ smallDelay = window.setTimeout(function () {
|
|
|
+ lastWindowWidth = $(window).width();
|
|
|
+ base.updateVars();
|
|
|
+ }, base.options.responsiveRefreshRate);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ $(window).resize(base.resizer);
|
|
|
+ },
|
|
|
+
|
|
|
+ updatePosition : function () {
|
|
|
+ var base = this;
|
|
|
+ base.jumpTo(base.currentItem);
|
|
|
+ if (base.options.autoPlay !== false) {
|
|
|
+ base.checkAp();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ appendItemsSizes : function () {
|
|
|
+ var base = this,
|
|
|
+ roundPages = 0,
|
|
|
+ lastItem = base.itemsAmount - base.options.items;
|
|
|
+
|
|
|
+ base.$owlItems.each(function (index) {
|
|
|
+ var $this = $(this);
|
|
|
+ $this
|
|
|
+ .css({"width": base.itemWidth})
|
|
|
+ .data("owl-item", Number(index));
|
|
|
+
|
|
|
+ if (index % base.options.items === 0 || index === lastItem) {
|
|
|
+ if (!(index > lastItem)) {
|
|
|
+ roundPages += 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $this.data("owl-roundPages", roundPages);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ appendWrapperSizes : function () {
|
|
|
+ var base = this,
|
|
|
+ width = base.$owlItems.length * base.itemWidth;
|
|
|
+
|
|
|
+ base.$owlWrapper.css({
|
|
|
+ "width": width * 2,
|
|
|
+ "left": 0
|
|
|
+ });
|
|
|
+ base.appendItemsSizes();
|
|
|
+ },
|
|
|
+
|
|
|
+ calculateAll : function () {
|
|
|
+ var base = this;
|
|
|
+ base.calculateWidth();
|
|
|
+ base.appendWrapperSizes();
|
|
|
+ base.loops();
|
|
|
+ base.max();
|
|
|
+ },
|
|
|
+
|
|
|
+ calculateWidth : function () {
|
|
|
+ var base = this;
|
|
|
+ base.itemWidth = Math.round(base.$elem.width() / base.options.items);
|
|
|
+ },
|
|
|
+
|
|
|
+ max : function () {
|
|
|
+ var base = this,
|
|
|
+ maximum = ((base.itemsAmount * base.itemWidth) - base.options.items * base.itemWidth) * -1;
|
|
|
+ if (base.options.items > base.itemsAmount) {
|
|
|
+ base.maximumItem = 0;
|
|
|
+ maximum = 0;
|
|
|
+ base.maximumPixels = 0;
|
|
|
+ } else {
|
|
|
+ base.maximumItem = base.itemsAmount - base.options.items;
|
|
|
+ base.maximumPixels = maximum;
|
|
|
+ }
|
|
|
+ return maximum;
|
|
|
+ },
|
|
|
+
|
|
|
+ min : function () {
|
|
|
+ return 0;
|
|
|
+ },
|
|
|
+
|
|
|
+ loops : function () {
|
|
|
+ var base = this,
|
|
|
+ prev = 0,
|
|
|
+ elWidth = 0,
|
|
|
+ i,
|
|
|
+ item,
|
|
|
+ roundPageNum;
|
|
|
+
|
|
|
+ base.positionsInArray = [0];
|
|
|
+ base.pagesInArray = [];
|
|
|
+
|
|
|
+ for (i = 0; i < base.itemsAmount; i += 1) {
|
|
|
+ elWidth += base.itemWidth;
|
|
|
+ base.positionsInArray.push(-elWidth);
|
|
|
+
|
|
|
+ if (base.options.scrollPerPage === true) {
|
|
|
+ item = $(base.$owlItems[i]);
|
|
|
+ roundPageNum = item.data("owl-roundPages");
|
|
|
+ if (roundPageNum !== prev) {
|
|
|
+ base.pagesInArray[prev] = base.positionsInArray[i];
|
|
|
+ prev = roundPageNum;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ buildControls : function () {
|
|
|
+ var base = this;
|
|
|
+ if (base.options.navigation === true || base.options.pagination === true) {
|
|
|
+ base.owlControls = $("<div class=\"owl-controls\"/>").toggleClass("clickable", !base.browser.isTouch).appendTo(base.$elem);
|
|
|
+ }
|
|
|
+ if (base.options.pagination === true) {
|
|
|
+ base.buildPagination();
|
|
|
+ }
|
|
|
+ if (base.options.navigation === true) {
|
|
|
+ base.buildButtons();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ buildButtons : function () {
|
|
|
+ var base = this,
|
|
|
+ buttonsWrapper = $("<div class=\"owl-buttons\"/>");
|
|
|
+ base.owlControls.append(buttonsWrapper);
|
|
|
+
|
|
|
+ base.buttonPrev = $("<div/>", {
|
|
|
+ "class" : "owl-prev",
|
|
|
+ "html" : base.options.navigationText[0] || ""
|
|
|
+ });
|
|
|
+
|
|
|
+ base.buttonNext = $("<div/>", {
|
|
|
+ "class" : "owl-next",
|
|
|
+ "html" : base.options.navigationText[1] || ""
|
|
|
+ });
|
|
|
+
|
|
|
+ buttonsWrapper
|
|
|
+ .append(base.buttonPrev)
|
|
|
+ .append(base.buttonNext);
|
|
|
+
|
|
|
+ buttonsWrapper.on("touchstart.owlControls mousedown.owlControls", "div[class^=\"owl\"]", function (event) {
|
|
|
+ event.preventDefault();
|
|
|
+ });
|
|
|
+
|
|
|
+ buttonsWrapper.on("touchend.owlControls mouseup.owlControls", "div[class^=\"owl\"]", function (event) {
|
|
|
+ event.preventDefault();
|
|
|
+ if ($(this).hasClass("owl-next")) {
|
|
|
+ base.next();
|
|
|
+ } else {
|
|
|
+ base.prev();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ buildPagination : function () {
|
|
|
+ var base = this;
|
|
|
+
|
|
|
+ base.paginationWrapper = $("<div class=\"owl-pagination\"/>");
|
|
|
+ base.owlControls.append(base.paginationWrapper);
|
|
|
+
|
|
|
+ base.paginationWrapper.on("touchend.owlControls mouseup.owlControls", ".owl-page", function (event) {
|
|
|
+ event.preventDefault();
|
|
|
+ if (Number($(this).data("owl-page")) !== base.currentItem) {
|
|
|
+ base.goTo(Number($(this).data("owl-page")), true);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ updatePagination : function () {
|
|
|
+ var base = this,
|
|
|
+ counter,
|
|
|
+ lastPage,
|
|
|
+ lastItem,
|
|
|
+ i,
|
|
|
+ paginationButton,
|
|
|
+ paginationButtonInner;
|
|
|
+
|
|
|
+ if (base.options.pagination === false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ base.paginationWrapper.html("");
|
|
|
+
|
|
|
+ counter = 0;
|
|
|
+ lastPage = base.itemsAmount - base.itemsAmount % base.options.items;
|
|
|
+
|
|
|
+ for (i = 0; i < base.itemsAmount; i += 1) {
|
|
|
+ if (i % base.options.items === 0) {
|
|
|
+ counter += 1;
|
|
|
+ if (lastPage === i) {
|
|
|
+ lastItem = base.itemsAmount - base.options.items;
|
|
|
+ }
|
|
|
+ paginationButton = $("<div/>", {
|
|
|
+ "class" : "owl-page"
|
|
|
+ });
|
|
|
+ paginationButtonInner = $("<span></span>", {
|
|
|
+ "text": base.options.paginationNumbers === true ? counter : "",
|
|
|
+ "class": base.options.paginationNumbers === true ? "owl-numbers" : ""
|
|
|
+ });
|
|
|
+ paginationButton.append(paginationButtonInner);
|
|
|
+
|
|
|
+ paginationButton.data("owl-page", lastPage === i ? lastItem : i);
|
|
|
+ paginationButton.data("owl-roundPages", counter);
|
|
|
+
|
|
|
+ base.paginationWrapper.append(paginationButton);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ base.checkPagination();
|
|
|
+ },
|
|
|
+ checkPagination : function () {
|
|
|
+ var base = this;
|
|
|
+ if (base.options.pagination === false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ base.paginationWrapper.find(".owl-page").each(function () {
|
|
|
+ if ($(this).data("owl-roundPages") === $(base.$owlItems[base.currentItem]).data("owl-roundPages")) {
|
|
|
+ base.paginationWrapper
|
|
|
+ .find(".owl-page")
|
|
|
+ .removeClass("active");
|
|
|
+ $(this).addClass("active");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ checkNavigation : function () {
|
|
|
+ var base = this;
|
|
|
+
|
|
|
+ if (base.options.navigation === false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (base.options.rewindNav === false) {
|
|
|
+ if (base.currentItem === 0 && base.maximumItem === 0) {
|
|
|
+ base.buttonPrev.addClass("disabled");
|
|
|
+ base.buttonNext.addClass("disabled");
|
|
|
+ } else if (base.currentItem === 0 && base.maximumItem !== 0) {
|
|
|
+ base.buttonPrev.addClass("disabled");
|
|
|
+ base.buttonNext.removeClass("disabled");
|
|
|
+ } else if (base.currentItem === base.maximumItem) {
|
|
|
+ base.buttonPrev.removeClass("disabled");
|
|
|
+ base.buttonNext.addClass("disabled");
|
|
|
+ } else if (base.currentItem !== 0 && base.currentItem !== base.maximumItem) {
|
|
|
+ base.buttonPrev.removeClass("disabled");
|
|
|
+ base.buttonNext.removeClass("disabled");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ updateControls : function () {
|
|
|
+ var base = this;
|
|
|
+ base.updatePagination();
|
|
|
+ base.checkNavigation();
|
|
|
+ if (base.owlControls) {
|
|
|
+ if (base.options.items >= base.itemsAmount) {
|
|
|
+ base.owlControls.hide();
|
|
|
+ } else {
|
|
|
+ base.owlControls.show();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ destroyControls : function () {
|
|
|
+ var base = this;
|
|
|
+ if (base.owlControls) {
|
|
|
+ base.owlControls.remove();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ next : function (speed) {
|
|
|
+ var base = this;
|
|
|
+
|
|
|
+ if (base.isTransition) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ base.currentItem += base.options.scrollPerPage === true ? base.options.items : 1;
|
|
|
+ if (base.currentItem > base.maximumItem + (base.options.scrollPerPage === true ? (base.options.items - 1) : 0)) {
|
|
|
+ if (base.options.rewindNav === true) {
|
|
|
+ base.currentItem = 0;
|
|
|
+ speed = "rewind";
|
|
|
+ } else {
|
|
|
+ base.currentItem = base.maximumItem;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ base.goTo(base.currentItem, speed);
|
|
|
+ },
|
|
|
+
|
|
|
+ prev : function (speed) {
|
|
|
+ var base = this;
|
|
|
+
|
|
|
+ if (base.isTransition) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (base.options.scrollPerPage === true && base.currentItem > 0 && base.currentItem < base.options.items) {
|
|
|
+ base.currentItem = 0;
|
|
|
+ } else {
|
|
|
+ base.currentItem -= base.options.scrollPerPage === true ? base.options.items : 1;
|
|
|
+ }
|
|
|
+ if (base.currentItem < 0) {
|
|
|
+ if (base.options.rewindNav === true) {
|
|
|
+ base.currentItem = base.maximumItem;
|
|
|
+ speed = "rewind";
|
|
|
+ } else {
|
|
|
+ base.currentItem = 0;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ base.goTo(base.currentItem, speed);
|
|
|
+ },
|
|
|
+
|
|
|
+ goTo : function (position, speed, drag) {
|
|
|
+ var base = this,
|
|
|
+ goToPixel;
|
|
|
+
|
|
|
+ if (base.isTransition) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (typeof base.options.beforeMove === "function") {
|
|
|
+ base.options.beforeMove.apply(this, [base.$elem]);
|
|
|
+ }
|
|
|
+ if (position >= base.maximumItem) {
|
|
|
+ position = base.maximumItem;
|
|
|
+ } else if (position <= 0) {
|
|
|
+ position = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ base.currentItem = base.owl.currentItem = position;
|
|
|
+ if (base.options.transitionStyle !== false && drag !== "drag" && base.options.items === 1 && base.browser.support3d === true) {
|
|
|
+ base.swapSpeed(0);
|
|
|
+ if (base.browser.support3d === true) {
|
|
|
+ base.transition3d(base.positionsInArray[position]);
|
|
|
+ } else {
|
|
|
+ base.css2slide(base.positionsInArray[position], 1);
|
|
|
+ }
|
|
|
+ base.afterGo();
|
|
|
+ base.singleItemTransition();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ goToPixel = base.positionsInArray[position];
|
|
|
+
|
|
|
+ if (base.browser.support3d === true) {
|
|
|
+ base.isCss3Finish = false;
|
|
|
+
|
|
|
+ if (speed === true) {
|
|
|
+ base.swapSpeed("paginationSpeed");
|
|
|
+ window.setTimeout(function () {
|
|
|
+ base.isCss3Finish = true;
|
|
|
+ }, base.options.paginationSpeed);
|
|
|
+
|
|
|
+ } else if (speed === "rewind") {
|
|
|
+ base.swapSpeed(base.options.rewindSpeed);
|
|
|
+ window.setTimeout(function () {
|
|
|
+ base.isCss3Finish = true;
|
|
|
+ }, base.options.rewindSpeed);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ base.swapSpeed("slideSpeed");
|
|
|
+ window.setTimeout(function () {
|
|
|
+ base.isCss3Finish = true;
|
|
|
+ }, base.options.slideSpeed);
|
|
|
+ }
|
|
|
+ base.transition3d(goToPixel);
|
|
|
+ } else {
|
|
|
+ if (speed === true) {
|
|
|
+ base.css2slide(goToPixel, base.options.paginationSpeed);
|
|
|
+ } else if (speed === "rewind") {
|
|
|
+ base.css2slide(goToPixel, base.options.rewindSpeed);
|
|
|
+ } else {
|
|
|
+ base.css2slide(goToPixel, base.options.slideSpeed);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ base.afterGo();
|
|
|
+ },
|
|
|
+
|
|
|
+ jumpTo : function (position) {
|
|
|
+ var base = this;
|
|
|
+ if (typeof base.options.beforeMove === "function") {
|
|
|
+ base.options.beforeMove.apply(this, [base.$elem]);
|
|
|
+ }
|
|
|
+ if (position >= base.maximumItem || position === -1) {
|
|
|
+ position = base.maximumItem;
|
|
|
+ } else if (position <= 0) {
|
|
|
+ position = 0;
|
|
|
+ }
|
|
|
+ base.swapSpeed(0);
|
|
|
+ if (base.browser.support3d === true) {
|
|
|
+ base.transition3d(base.positionsInArray[position]);
|
|
|
+ } else {
|
|
|
+ base.css2slide(base.positionsInArray[position], 1);
|
|
|
+ }
|
|
|
+ base.currentItem = base.owl.currentItem = position;
|
|
|
+ base.afterGo();
|
|
|
+ },
|
|
|
+
|
|
|
+ afterGo : function () {
|
|
|
+ var base = this;
|
|
|
+
|
|
|
+ base.prevArr.push(base.currentItem);
|
|
|
+ base.prevItem = base.owl.prevItem = base.prevArr[base.prevArr.length - 2];
|
|
|
+ base.prevArr.shift(0);
|
|
|
+
|
|
|
+ if (base.prevItem !== base.currentItem) {
|
|
|
+ base.checkPagination();
|
|
|
+ base.checkNavigation();
|
|
|
+ base.eachMoveUpdate();
|
|
|
+
|
|
|
+ if (base.options.autoPlay !== false) {
|
|
|
+ base.checkAp();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (typeof base.options.afterMove === "function" && base.prevItem !== base.currentItem) {
|
|
|
+ base.options.afterMove.apply(this, [base.$elem]);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ stop : function () {
|
|
|
+ var base = this;
|
|
|
+ base.apStatus = "stop";
|
|
|
+ window.clearInterval(base.autoPlayInterval);
|
|
|
+ },
|
|
|
+
|
|
|
+ checkAp : function () {
|
|
|
+ var base = this;
|
|
|
+ if (base.apStatus !== "stop") {
|
|
|
+ base.play();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ play : function () {
|
|
|
+ var base = this;
|
|
|
+ base.apStatus = "play";
|
|
|
+ if (base.options.autoPlay === false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ window.clearInterval(base.autoPlayInterval);
|
|
|
+ base.autoPlayInterval = window.setInterval(function () {
|
|
|
+ base.next(true);
|
|
|
+ }, base.options.autoPlay);
|
|
|
+ },
|
|
|
+
|
|
|
+ swapSpeed : function (action) {
|
|
|
+ var base = this;
|
|
|
+ if (action === "slideSpeed") {
|
|
|
+ base.$owlWrapper.css(base.addCssSpeed(base.options.slideSpeed));
|
|
|
+ } else if (action === "paginationSpeed") {
|
|
|
+ base.$owlWrapper.css(base.addCssSpeed(base.options.paginationSpeed));
|
|
|
+ } else if (typeof action !== "string") {
|
|
|
+ base.$owlWrapper.css(base.addCssSpeed(action));
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ addCssSpeed : function (speed) {
|
|
|
+ return {
|
|
|
+ "-webkit-transition": "all " + speed + "ms ease",
|
|
|
+ "-moz-transition": "all " + speed + "ms ease",
|
|
|
+ "-o-transition": "all " + speed + "ms ease",
|
|
|
+ "transition": "all " + speed + "ms ease"
|
|
|
+ };
|
|
|
+ },
|
|
|
+
|
|
|
+ removeTransition : function () {
|
|
|
+ return {
|
|
|
+ "-webkit-transition": "",
|
|
|
+ "-moz-transition": "",
|
|
|
+ "-o-transition": "",
|
|
|
+ "transition": ""
|
|
|
+ };
|
|
|
+ },
|
|
|
+
|
|
|
+ doTranslate : function (pixels) {
|
|
|
+ return {
|
|
|
+ "-webkit-transform": "translate3d(" + pixels + "px, 0px, 0px)",
|
|
|
+ "-moz-transform": "translate3d(" + pixels + "px, 0px, 0px)",
|
|
|
+ "-o-transform": "translate3d(" + pixels + "px, 0px, 0px)",
|
|
|
+ "-ms-transform": "translate3d(" + pixels + "px, 0px, 0px)",
|
|
|
+ "transform": "translate3d(" + pixels + "px, 0px,0px)"
|
|
|
+ };
|
|
|
+ },
|
|
|
+
|
|
|
+ transition3d : function (value) {
|
|
|
+ var base = this;
|
|
|
+ base.$owlWrapper.css(base.doTranslate(value));
|
|
|
+ },
|
|
|
+
|
|
|
+ css2move : function (value) {
|
|
|
+ var base = this;
|
|
|
+ base.$owlWrapper.css({"left" : value});
|
|
|
+ },
|
|
|
+
|
|
|
+ css2slide : function (value, speed) {
|
|
|
+ var base = this;
|
|
|
+
|
|
|
+ base.isCssFinish = false;
|
|
|
+ base.$owlWrapper.stop(true, true).animate({
|
|
|
+ "left" : value
|
|
|
+ }, {
|
|
|
+ duration : speed || base.options.slideSpeed,
|
|
|
+ complete : function () {
|
|
|
+ base.isCssFinish = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ checkBrowser : function () {
|
|
|
+ var base = this,
|
|
|
+ translate3D = "translate3d(0px, 0px, 0px)",
|
|
|
+ tempElem = document.createElement("div"),
|
|
|
+ regex,
|
|
|
+ asSupport,
|
|
|
+ support3d,
|
|
|
+ isTouch;
|
|
|
+
|
|
|
+ tempElem.style.cssText = " -moz-transform:" + translate3D +
|
|
|
+ "; -ms-transform:" + translate3D +
|
|
|
+ "; -o-transform:" + translate3D +
|
|
|
+ "; -webkit-transform:" + translate3D +
|
|
|
+ "; transform:" + translate3D;
|
|
|
+ regex = /translate3d\(0px, 0px, 0px\)/g;
|
|
|
+ asSupport = tempElem.style.cssText.match(regex);
|
|
|
+ support3d = (asSupport !== null && asSupport.length === 1);
|
|
|
+
|
|
|
+ isTouch = "ontouchstart" in window || window.navigator.msMaxTouchPoints;
|
|
|
+
|
|
|
+ base.browser = {
|
|
|
+ "support3d" : support3d,
|
|
|
+ "isTouch" : isTouch
|
|
|
+ };
|
|
|
+ },
|
|
|
+
|
|
|
+ moveEvents : function () {
|
|
|
+ var base = this;
|
|
|
+ if (base.options.mouseDrag !== false || base.options.touchDrag !== false) {
|
|
|
+ base.gestures();
|
|
|
+ base.disabledEvents();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ eventTypes : function () {
|
|
|
+ var base = this,
|
|
|
+ types = ["s", "e", "x"];
|
|
|
+
|
|
|
+ base.ev_types = {};
|
|
|
+
|
|
|
+ if (base.options.mouseDrag === true && base.options.touchDrag === true) {
|
|
|
+ types = [
|
|
|
+ "touchstart.owl mousedown.owl",
|
|
|
+ "touchmove.owl mousemove.owl",
|
|
|
+ "touchend.owl touchcancel.owl mouseup.owl"
|
|
|
+ ];
|
|
|
+ } else if (base.options.mouseDrag === false && base.options.touchDrag === true) {
|
|
|
+ types = [
|
|
|
+ "touchstart.owl",
|
|
|
+ "touchmove.owl",
|
|
|
+ "touchend.owl touchcancel.owl"
|
|
|
+ ];
|
|
|
+ } else if (base.options.mouseDrag === true && base.options.touchDrag === false) {
|
|
|
+ types = [
|
|
|
+ "mousedown.owl",
|
|
|
+ "mousemove.owl",
|
|
|
+ "mouseup.owl"
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ base.ev_types.start = types[0];
|
|
|
+ base.ev_types.move = types[1];
|
|
|
+ base.ev_types.end = types[2];
|
|
|
+ },
|
|
|
+
|
|
|
+ disabledEvents : function () {
|
|
|
+ var base = this;
|
|
|
+ base.$elem.on("dragstart.owl", function (event) { event.preventDefault(); });
|
|
|
+ base.$elem.on("mousedown.disableTextSelect", function (e) {
|
|
|
+ return $(e.target).is('input, textarea, select, option');
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ gestures : function () {
|
|
|
+ /*jslint unparam: true*/
|
|
|
+ var base = this,
|
|
|
+ locals = {
|
|
|
+ offsetX : 0,
|
|
|
+ offsetY : 0,
|
|
|
+ baseElWidth : 0,
|
|
|
+ relativePos : 0,
|
|
|
+ position: null,
|
|
|
+ minSwipe : null,
|
|
|
+ maxSwipe: null,
|
|
|
+ sliding : null,
|
|
|
+ dargging: null,
|
|
|
+ targetElement : null
|
|
|
+ };
|
|
|
+
|
|
|
+ base.isCssFinish = true;
|
|
|
+
|
|
|
+ function getTouches(event) {
|
|
|
+ if (event.touches !== undefined) {
|
|
|
+ return {
|
|
|
+ x : event.touches[0].pageX,
|
|
|
+ y : event.touches[0].pageY
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ if (event.touches === undefined) {
|
|
|
+ if (event.pageX !== undefined) {
|
|
|
+ return {
|
|
|
+ x : event.pageX,
|
|
|
+ y : event.pageY
|
|
|
+ };
|
|
|
+ }
|
|
|
+ if (event.pageX === undefined) {
|
|
|
+ return {
|
|
|
+ x : event.clientX,
|
|
|
+ y : event.clientY
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function swapEvents(type) {
|
|
|
+ if (type === "on") {
|
|
|
+ $(document).on(base.ev_types.move, dragMove);
|
|
|
+ $(document).on(base.ev_types.end, dragEnd);
|
|
|
+ } else if (type === "off") {
|
|
|
+ $(document).off(base.ev_types.move);
|
|
|
+ $(document).off(base.ev_types.end);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function dragStart(event) {
|
|
|
+ var ev = event.originalEvent || event || window.event,
|
|
|
+ position;
|
|
|
+
|
|
|
+ if (ev.which === 3) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (base.itemsAmount <= base.options.items) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (base.isCssFinish === false && !base.options.dragBeforeAnimFinish) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (base.isCss3Finish === false && !base.options.dragBeforeAnimFinish) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (base.options.autoPlay !== false) {
|
|
|
+ window.clearInterval(base.autoPlayInterval);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (base.browser.isTouch !== true && !base.$owlWrapper.hasClass("grabbing")) {
|
|
|
+ base.$owlWrapper.addClass("grabbing");
|
|
|
+ }
|
|
|
+
|
|
|
+ base.newPosX = 0;
|
|
|
+ base.newRelativeX = 0;
|
|
|
+
|
|
|
+ $(this).css(base.removeTransition());
|
|
|
+
|
|
|
+ position = $(this).position();
|
|
|
+ locals.relativePos = position.left;
|
|
|
+
|
|
|
+ locals.offsetX = getTouches(ev).x - position.left;
|
|
|
+ locals.offsetY = getTouches(ev).y - position.top;
|
|
|
+
|
|
|
+ swapEvents("on");
|
|
|
+
|
|
|
+ locals.sliding = false;
|
|
|
+ locals.targetElement = ev.target || ev.srcElement;
|
|
|
+ }
|
|
|
+
|
|
|
+ function dragMove(event) {
|
|
|
+ var ev = event.originalEvent || event || window.event,
|
|
|
+ minSwipe,
|
|
|
+ maxSwipe;
|
|
|
+
|
|
|
+ base.newPosX = getTouches(ev).x - locals.offsetX;
|
|
|
+ base.newPosY = getTouches(ev).y - locals.offsetY;
|
|
|
+ base.newRelativeX = base.newPosX - locals.relativePos;
|
|
|
+
|
|
|
+ if (typeof base.options.startDragging === "function" && locals.dragging !== true && base.newRelativeX !== 0) {
|
|
|
+ locals.dragging = true;
|
|
|
+ base.options.startDragging.apply(base, [base.$elem]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((base.newRelativeX > 8 || base.newRelativeX < -8) && (base.browser.isTouch === true)) {
|
|
|
+ if (ev.preventDefault !== undefined) {
|
|
|
+ ev.preventDefault();
|
|
|
+ } else {
|
|
|
+ ev.returnValue = false;
|
|
|
+ }
|
|
|
+ locals.sliding = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((base.newPosY > 10 || base.newPosY < -10) && locals.sliding === false) {
|
|
|
+ $(document).off("touchmove.owl");
|
|
|
+ }
|
|
|
+
|
|
|
+ minSwipe = function () {
|
|
|
+ return base.newRelativeX / 5;
|
|
|
+ };
|
|
|
+
|
|
|
+ maxSwipe = function () {
|
|
|
+ return base.maximumPixels + base.newRelativeX / 5;
|
|
|
+ };
|
|
|
+
|
|
|
+ base.newPosX = Math.max(Math.min(base.newPosX, minSwipe()), maxSwipe());
|
|
|
+ if (base.browser.support3d === true) {
|
|
|
+ base.transition3d(base.newPosX);
|
|
|
+ } else {
|
|
|
+ base.css2move(base.newPosX);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function dragEnd(event) {
|
|
|
+ var ev = event.originalEvent || event || window.event,
|
|
|
+ newPosition,
|
|
|
+ handlers,
|
|
|
+ owlStopEvent;
|
|
|
+
|
|
|
+ ev.target = ev.target || ev.srcElement;
|
|
|
+
|
|
|
+ locals.dragging = false;
|
|
|
+
|
|
|
+ if (base.browser.isTouch !== true) {
|
|
|
+ base.$owlWrapper.removeClass("grabbing");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (base.newRelativeX < 0) {
|
|
|
+ base.dragDirection = base.owl.dragDirection = "left";
|
|
|
+ } else {
|
|
|
+ base.dragDirection = base.owl.dragDirection = "right";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (base.newRelativeX !== 0) {
|
|
|
+ newPosition = base.getNewPosition();
|
|
|
+ base.goTo(newPosition, false, "drag");
|
|
|
+ if (locals.targetElement === ev.target && base.browser.isTouch !== true) {
|
|
|
+ $(ev.target).on("click.disable", function (ev) {
|
|
|
+ ev.stopImmediatePropagation();
|
|
|
+ ev.stopPropagation();
|
|
|
+ ev.preventDefault();
|
|
|
+ $(ev.target).off("click.disable");
|
|
|
+ });
|
|
|
+ handlers = $._data(ev.target, "events").click;
|
|
|
+ owlStopEvent = handlers.pop();
|
|
|
+ handlers.splice(0, 0, owlStopEvent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ swapEvents("off");
|
|
|
+ }
|
|
|
+ base.$elem.on(base.ev_types.start, ".owl-wrapper", dragStart);
|
|
|
+ },
|
|
|
+
|
|
|
+ getNewPosition : function () {
|
|
|
+ var base = this,
|
|
|
+ newPosition = base.closestItem();
|
|
|
+
|
|
|
+ if (newPosition > base.maximumItem) {
|
|
|
+ base.currentItem = base.maximumItem;
|
|
|
+ newPosition = base.maximumItem;
|
|
|
+ } else if (base.newPosX >= 0) {
|
|
|
+ newPosition = 0;
|
|
|
+ base.currentItem = 0;
|
|
|
+ }
|
|
|
+ return newPosition;
|
|
|
+ },
|
|
|
+ closestItem : function () {
|
|
|
+ var base = this,
|
|
|
+ array = base.options.scrollPerPage === true ? base.pagesInArray : base.positionsInArray,
|
|
|
+ goal = base.newPosX,
|
|
|
+ closest = null;
|
|
|
+
|
|
|
+ $.each(array, function (i, v) {
|
|
|
+ if (goal - (base.itemWidth / 20) > array[i + 1] && goal - (base.itemWidth / 20) < v && base.moveDirection() === "left") {
|
|
|
+ closest = v;
|
|
|
+ if (base.options.scrollPerPage === true) {
|
|
|
+ base.currentItem = $.inArray(closest, base.positionsInArray);
|
|
|
+ } else {
|
|
|
+ base.currentItem = i;
|
|
|
+ }
|
|
|
+ } else if (goal + (base.itemWidth / 20) < v && goal + (base.itemWidth / 20) > (array[i + 1] || array[i] - base.itemWidth) && base.moveDirection() === "right") {
|
|
|
+ if (base.options.scrollPerPage === true) {
|
|
|
+ closest = array[i + 1] || array[array.length - 1];
|
|
|
+ base.currentItem = $.inArray(closest, base.positionsInArray);
|
|
|
+ } else {
|
|
|
+ closest = array[i + 1];
|
|
|
+ base.currentItem = i + 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return base.currentItem;
|
|
|
+ },
|
|
|
+
|
|
|
+ moveDirection : function () {
|
|
|
+ var base = this,
|
|
|
+ direction;
|
|
|
+ if (base.newRelativeX < 0) {
|
|
|
+ direction = "right";
|
|
|
+ base.playDirection = "next";
|
|
|
+ } else {
|
|
|
+ direction = "left";
|
|
|
+ base.playDirection = "prev";
|
|
|
+ }
|
|
|
+ return direction;
|
|
|
+ },
|
|
|
+
|
|
|
+ customEvents : function () {
|
|
|
+ /*jslint unparam: true*/
|
|
|
+ var base = this;
|
|
|
+ base.$elem.on("owl.next", function () {
|
|
|
+ base.next();
|
|
|
+ });
|
|
|
+ base.$elem.on("owl.prev", function () {
|
|
|
+ base.prev();
|
|
|
+ });
|
|
|
+ base.$elem.on("owl.play", function (event, speed) {
|
|
|
+ base.options.autoPlay = speed;
|
|
|
+ base.play();
|
|
|
+ base.hoverStatus = "play";
|
|
|
+ });
|
|
|
+ base.$elem.on("owl.stop", function () {
|
|
|
+ base.stop();
|
|
|
+ base.hoverStatus = "stop";
|
|
|
+ });
|
|
|
+ base.$elem.on("owl.goTo", function (event, item) {
|
|
|
+ base.goTo(item);
|
|
|
+ });
|
|
|
+ base.$elem.on("owl.jumpTo", function (event, item) {
|
|
|
+ base.jumpTo(item);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ stopOnHover : function () {
|
|
|
+ var base = this;
|
|
|
+ if (base.options.stopOnHover === true && base.browser.isTouch !== true && base.options.autoPlay !== false) {
|
|
|
+ base.$elem.on("mouseover", function () {
|
|
|
+ base.stop();
|
|
|
+ });
|
|
|
+ base.$elem.on("mouseout", function () {
|
|
|
+ if (base.hoverStatus !== "stop") {
|
|
|
+ base.play();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ lazyLoad : function () {
|
|
|
+ var base = this,
|
|
|
+ i,
|
|
|
+ $item,
|
|
|
+ itemNumber,
|
|
|
+ $lazyImg,
|
|
|
+ follow;
|
|
|
+
|
|
|
+ if (base.options.lazyLoad === false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ for (i = 0; i < base.itemsAmount; i += 1) {
|
|
|
+ $item = $(base.$owlItems[i]);
|
|
|
+
|
|
|
+ if ($item.data("owl-loaded") === "loaded") {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ itemNumber = $item.data("owl-item");
|
|
|
+ $lazyImg = $item.find(".lazyOwl");
|
|
|
+
|
|
|
+ if (typeof $lazyImg.data("src") !== "string") {
|
|
|
+ $item.data("owl-loaded", "loaded");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if ($item.data("owl-loaded") === undefined) {
|
|
|
+ $lazyImg.hide();
|
|
|
+ $item.addClass("loading").data("owl-loaded", "checked");
|
|
|
+ }
|
|
|
+ if (base.options.lazyFollow === true) {
|
|
|
+ follow = itemNumber >= base.currentItem;
|
|
|
+ } else {
|
|
|
+ follow = true;
|
|
|
+ }
|
|
|
+ if (follow && itemNumber < base.currentItem + base.options.items && $lazyImg.length) {
|
|
|
+ base.lazyPreload($item, $lazyImg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ lazyPreload : function ($item, $lazyImg) {
|
|
|
+ var base = this,
|
|
|
+ iterations = 0,
|
|
|
+ isBackgroundImg;
|
|
|
+
|
|
|
+ if ($lazyImg.prop("tagName") === "DIV") {
|
|
|
+ $lazyImg.css("background-image", "url(" + $lazyImg.data("src") + ")");
|
|
|
+ isBackgroundImg = true;
|
|
|
+ } else {
|
|
|
+ $lazyImg[0].src = $lazyImg.data("src");
|
|
|
+ }
|
|
|
+
|
|
|
+ function showImage() {
|
|
|
+ $item.data("owl-loaded", "loaded").removeClass("loading");
|
|
|
+ $lazyImg.removeAttr("data-src");
|
|
|
+ if (base.options.lazyEffect === "fade") {
|
|
|
+ $lazyImg.fadeIn(400);
|
|
|
+ } else {
|
|
|
+ $lazyImg.show();
|
|
|
+ }
|
|
|
+ if (typeof base.options.afterLazyLoad === "function") {
|
|
|
+ base.options.afterLazyLoad.apply(this, [base.$elem]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function checkLazyImage() {
|
|
|
+ iterations += 1;
|
|
|
+ if (base.completeImg($lazyImg.get(0)) || isBackgroundImg === true) {
|
|
|
+ showImage();
|
|
|
+ } else if (iterations <= 100) {//if image loads in less than 10 seconds
|
|
|
+ window.setTimeout(checkLazyImage, 100);
|
|
|
+ } else {
|
|
|
+ showImage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ checkLazyImage();
|
|
|
+ },
|
|
|
+
|
|
|
+ autoHeight : function () {
|
|
|
+ var base = this,
|
|
|
+ $currentimg = $(base.$owlItems[base.currentItem]).find("img"),
|
|
|
+ iterations;
|
|
|
+
|
|
|
+ function addHeight() {
|
|
|
+ var $currentItem = $(base.$owlItems[base.currentItem]).height();
|
|
|
+ base.wrapperOuter.css("height", $currentItem + "px");
|
|
|
+ if (!base.wrapperOuter.hasClass("autoHeight")) {
|
|
|
+ window.setTimeout(function () {
|
|
|
+ base.wrapperOuter.addClass("autoHeight");
|
|
|
+ }, 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function checkImage() {
|
|
|
+ iterations += 1;
|
|
|
+ if (base.completeImg($currentimg.get(0))) {
|
|
|
+ addHeight();
|
|
|
+ } else if (iterations <= 100) { //if image loads in less than 10 seconds
|
|
|
+ window.setTimeout(checkImage, 100);
|
|
|
+ } else {
|
|
|
+ base.wrapperOuter.css("height", ""); //Else remove height attribute
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($currentimg.get(0) !== undefined) {
|
|
|
+ iterations = 0;
|
|
|
+ checkImage();
|
|
|
+ } else {
|
|
|
+ addHeight();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ completeImg : function (img) {
|
|
|
+ var naturalWidthType;
|
|
|
+
|
|
|
+ if (!img.complete) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ naturalWidthType = typeof img.naturalWidth;
|
|
|
+ if (naturalWidthType !== "undefined" && img.naturalWidth === 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+
|
|
|
+ onVisibleItems : function () {
|
|
|
+ var base = this,
|
|
|
+ i;
|
|
|
+
|
|
|
+ if (base.options.addClassActive === true) {
|
|
|
+ base.$owlItems.removeClass("active");
|
|
|
+ }
|
|
|
+ base.visibleItems = [];
|
|
|
+ for (i = base.currentItem; i < base.currentItem + base.options.items; i += 1) {
|
|
|
+ base.visibleItems.push(i);
|
|
|
+
|
|
|
+ if (base.options.addClassActive === true) {
|
|
|
+ $(base.$owlItems[i]).addClass("active");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ base.owl.visibleItems = base.visibleItems;
|
|
|
+ },
|
|
|
+
|
|
|
+ transitionTypes : function (className) {
|
|
|
+ var base = this;
|
|
|
+ //Currently available: "fade", "backSlide", "goDown", "fadeUp"
|
|
|
+ base.outClass = "owl-" + className + "-out";
|
|
|
+ base.inClass = "owl-" + className + "-in";
|
|
|
+ },
|
|
|
+
|
|
|
+ singleItemTransition : function () {
|
|
|
+ var base = this,
|
|
|
+ outClass = base.outClass,
|
|
|
+ inClass = base.inClass,
|
|
|
+ $currentItem = base.$owlItems.eq(base.currentItem),
|
|
|
+ $prevItem = base.$owlItems.eq(base.prevItem),
|
|
|
+ prevPos = Math.abs(base.positionsInArray[base.currentItem]) + base.positionsInArray[base.prevItem],
|
|
|
+ origin = Math.abs(base.positionsInArray[base.currentItem]) + base.itemWidth / 2,
|
|
|
+ animEnd = 'webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend';
|
|
|
+
|
|
|
+ base.isTransition = true;
|
|
|
+
|
|
|
+ base.$owlWrapper
|
|
|
+ .addClass('owl-origin')
|
|
|
+ .css({
|
|
|
+ "-webkit-transform-origin" : origin + "px",
|
|
|
+ "-moz-perspective-origin" : origin + "px",
|
|
|
+ "perspective-origin" : origin + "px"
|
|
|
+ });
|
|
|
+ function transStyles(prevPos) {
|
|
|
+ return {
|
|
|
+ "position" : "relative",
|
|
|
+ "left" : prevPos + "px"
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ $prevItem
|
|
|
+ .css(transStyles(prevPos, 10))
|
|
|
+ .addClass(outClass)
|
|
|
+ .on(animEnd, function () {
|
|
|
+ base.endPrev = true;
|
|
|
+ $prevItem.off(animEnd);
|
|
|
+ base.clearTransStyle($prevItem, outClass);
|
|
|
+ });
|
|
|
+
|
|
|
+ $currentItem
|
|
|
+ .addClass(inClass)
|
|
|
+ .on(animEnd, function () {
|
|
|
+ base.endCurrent = true;
|
|
|
+ $currentItem.off(animEnd);
|
|
|
+ base.clearTransStyle($currentItem, inClass);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ clearTransStyle : function (item, classToRemove) {
|
|
|
+ var base = this;
|
|
|
+ item.css({
|
|
|
+ "position" : "",
|
|
|
+ "left" : ""
|
|
|
+ }).removeClass(classToRemove);
|
|
|
+
|
|
|
+ if (base.endPrev && base.endCurrent) {
|
|
|
+ base.$owlWrapper.removeClass('owl-origin');
|
|
|
+ base.endPrev = false;
|
|
|
+ base.endCurrent = false;
|
|
|
+ base.isTransition = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ owlStatus : function () {
|
|
|
+ var base = this;
|
|
|
+ base.owl = {
|
|
|
+ "userOptions" : base.userOptions,
|
|
|
+ "baseElement" : base.$elem,
|
|
|
+ "userItems" : base.$userItems,
|
|
|
+ "owlItems" : base.$owlItems,
|
|
|
+ "currentItem" : base.currentItem,
|
|
|
+ "prevItem" : base.prevItem,
|
|
|
+ "visibleItems" : base.visibleItems,
|
|
|
+ "isTouch" : base.browser.isTouch,
|
|
|
+ "browser" : base.browser,
|
|
|
+ "dragDirection" : base.dragDirection
|
|
|
+ };
|
|
|
+ },
|
|
|
+
|
|
|
+ clearEvents : function () {
|
|
|
+ var base = this;
|
|
|
+ base.$elem.off(".owl owl mousedown.disableTextSelect");
|
|
|
+ $(document).off(".owl owl");
|
|
|
+ $(window).off("resize", base.resizer);
|
|
|
+ },
|
|
|
+
|
|
|
+ unWrap : function () {
|
|
|
+ var base = this;
|
|
|
+ if (base.$elem.children().length !== 0) {
|
|
|
+ base.$owlWrapper.unwrap();
|
|
|
+ base.$userItems.unwrap().unwrap();
|
|
|
+ if (base.owlControls) {
|
|
|
+ base.owlControls.remove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ base.clearEvents();
|
|
|
+ base.$elem
|
|
|
+ .attr("style", base.$elem.data("owl-originalStyles") || "")
|
|
|
+ .attr("class", base.$elem.data("owl-originalClasses"));
|
|
|
+ },
|
|
|
+
|
|
|
+ destroy : function () {
|
|
|
+ var base = this;
|
|
|
+ base.stop();
|
|
|
+ window.clearInterval(base.checkVisible);
|
|
|
+ base.unWrap();
|
|
|
+ base.$elem.removeData();
|
|
|
+ },
|
|
|
+
|
|
|
+ reinit : function (newOptions) {
|
|
|
+ var base = this,
|
|
|
+ options = $.extend({}, base.userOptions, newOptions);
|
|
|
+ base.unWrap();
|
|
|
+ base.init(options, base.$elem);
|
|
|
+ },
|
|
|
+
|
|
|
+ addItem : function (htmlString, targetPosition) {
|
|
|
+ var base = this,
|
|
|
+ position;
|
|
|
+
|
|
|
+ if (!htmlString) {return false; }
|
|
|
+
|
|
|
+ if (base.$elem.children().length === 0) {
|
|
|
+ base.$elem.append(htmlString);
|
|
|
+ base.setVars();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ base.unWrap();
|
|
|
+ if (targetPosition === undefined || targetPosition === -1) {
|
|
|
+ position = -1;
|
|
|
+ } else {
|
|
|
+ position = targetPosition;
|
|
|
+ }
|
|
|
+ if (position >= base.$userItems.length || position === -1) {
|
|
|
+ base.$userItems.eq(-1).after(htmlString);
|
|
|
+ } else {
|
|
|
+ base.$userItems.eq(position).before(htmlString);
|
|
|
+ }
|
|
|
+
|
|
|
+ base.setVars();
|
|
|
+ },
|
|
|
+
|
|
|
+ removeItem : function (targetPosition) {
|
|
|
+ var base = this,
|
|
|
+ position;
|
|
|
+
|
|
|
+ if (base.$elem.children().length === 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (targetPosition === undefined || targetPosition === -1) {
|
|
|
+ position = -1;
|
|
|
+ } else {
|
|
|
+ position = targetPosition;
|
|
|
+ }
|
|
|
+
|
|
|
+ base.unWrap();
|
|
|
+ base.$userItems.eq(position).remove();
|
|
|
+ base.setVars();
|
|
|
+ }
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ $.fn.owlCarousel = function (options) {
|
|
|
+ return this.each(function () {
|
|
|
+ if ($(this).data("owl-init") === true) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $(this).data("owl-init", true);
|
|
|
+ var carousel = Object.create(Carousel);
|
|
|
+ carousel.init(options, this);
|
|
|
+ $.data(this, "owlCarousel", carousel);
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ $.fn.owlCarousel.options = {
|
|
|
+
|
|
|
+ items : 5,
|
|
|
+ itemsCustom : false,
|
|
|
+ itemsDesktop : [1199, 3],
|
|
|
+ itemsDesktopSmall : [979, 3],
|
|
|
+ itemsTablet : [768, 2],
|
|
|
+ itemsTabletSmall : false,
|
|
|
+ itemsMobile : [479, 1],
|
|
|
+ singleItem : false,
|
|
|
+ itemsScaleUp : false,
|
|
|
+
|
|
|
+ slideSpeed : 200,
|
|
|
+ paginationSpeed : 800,
|
|
|
+ rewindSpeed : 1000,
|
|
|
+
|
|
|
+ autoPlay : false,
|
|
|
+ stopOnHover : false,
|
|
|
+
|
|
|
+ navigation : false,
|
|
|
+ navigationText : ["prev", "next"],
|
|
|
+ rewindNav : true,
|
|
|
+ scrollPerPage : false,
|
|
|
+
|
|
|
+ pagination : true,
|
|
|
+ paginationNumbers : false,
|
|
|
+
|
|
|
+ responsive : true,
|
|
|
+ responsiveRefreshRate : 200,
|
|
|
+ responsiveBaseWidth : window,
|
|
|
+
|
|
|
+ baseClass : "owl-carousel",
|
|
|
+ theme : "owl-theme",
|
|
|
+
|
|
|
+ lazyLoad : false,
|
|
|
+ lazyFollow : true,
|
|
|
+ lazyEffect : "fade",
|
|
|
+
|
|
|
+ autoHeight : false,
|
|
|
+
|
|
|
+ jsonPath : false,
|
|
|
+ jsonSuccess : false,
|
|
|
+
|
|
|
+ dragBeforeAnimFinish : true,
|
|
|
+ mouseDrag : true,
|
|
|
+ touchDrag : true,
|
|
|
+
|
|
|
+ addClassActive : false,
|
|
|
+ transitionStyle : false,
|
|
|
+
|
|
|
+ beforeUpdate : false,
|
|
|
+ afterUpdate : false,
|
|
|
+ beforeInit : false,
|
|
|
+ afterInit : false,
|
|
|
+ beforeMove : false,
|
|
|
+ afterMove : false,
|
|
|
+ afterAction : false,
|
|
|
+ startDragging : false,
|
|
|
+ afterLazyLoad: false
|
|
|
+ };
|
|
|
+}(jQuery, window, document));
|