Вход Регистрация
Файл: upload-2031-rs1/catalog/view/javascript/jquery/owl-carousel/owl.carousel.js
Строк: 1445
<?php
/*
 *  jQuery OwlCarousel v1.3.3
 *
 *  Copyright (c) 2013 Bartosz Wojciechowski
 *  http://www.owlgraphic.com/owlcarousel/
 *
 *  Licensed under MIT
 *
 */

/*JS Lint helpers: */
/*global dragMove: false, dragEnd: false, $, jQuery, alert, window, document */
/*jslint nomen: true, continue:true */

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, 4],
        
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));
?>
Онлайн: 2
Реклама