{"version":3,"file":"owl.carousel.min.js","sources":["Feature/Legacy/website/Contents/jQuery/owl.carousel.js"],"sourcesContent":["/**\r\n * @name Owl Carousel - code name Phenix\r\n * @author Bartosz Wojciechowski\r\n * @release 2014\r\n * Licensed under MIT\r\n * \r\n * @version 2.0.0-beta.1.9\r\n * @versionNotes Not compatibile with Owl Carousel <2.0.0\r\n */\r\n\r\n/*\r\n\r\n{0,0}\r\n )_)\r\n \"\"\r\n\r\nTo do:\r\n\r\n* Lazy Load Icon\r\n* prevent animationend bubling\r\n* itemsScaleUp \r\n* Test Zepto\r\n\r\nCallback events list:\r\n\r\nonInitBefore\r\nonInitAfter\r\nonResponsiveBefore\r\nonResponsiveAfter\r\nonTransitionStart\r\nonTransitionEnd\r\nonTouchStart\r\nonTouchEnd\r\nonChangeState\r\nonLazyLoaded\r\nonVideoPlay\r\nonVideoStop\r\n\r\nCustom events list:\r\n\r\nnext.owl\r\nprev.owl\r\ngoTo.owl\r\njumpTo.owl\r\naddItem.owl\r\nremoveItem.owl\r\nrefresh.owl\r\nplay.owl\r\nstop.owl\r\nstopVideo.owl\r\n\r\n*/\r\n\r\n\r\n; (function ($, window, document, undefined) {\r\n\r\n var defaults = {\r\n items: 3,\r\n loop: false,\r\n center: false,\r\n\r\n mouseDrag: true,\r\n touchDrag: true,\r\n pullDrag: true,\r\n freeDrag: false,\r\n\r\n margin: 0,\r\n stagePadding: 0,\r\n\r\n merge: false,\r\n mergeFit: true,\r\n autoWidth: false,\r\n autoHeight: false,\r\n\r\n startPosition: 0,\r\n URLhashListener: false,\r\n\r\n nav: false,\r\n navRewind: true,\r\n navText: ['prev', 'next'],\r\n slideBy: 1,\r\n dots: true,\r\n dotsEach: false,\r\n dotData: false,\r\n\r\n lazyLoad: false,\r\n lazyContent: false,\r\n\r\n autoplay: false,\r\n autoplayTimeout: 5000,\r\n autoplayHoverPause: false,\r\n\r\n smartSpeed: 250,\r\n fluidSpeed: false,\r\n autoplaySpeed: false,\r\n navSpeed: false,\r\n dotsSpeed: false,\r\n dragEndSpeed: false,\r\n\r\n responsive: {},\r\n responsiveRefreshRate: 200,\r\n responsiveBaseElement: window,\r\n responsiveClass: false,\r\n\r\n video: false,\r\n videoHeight: false,\r\n videoWidth: false,\r\n\r\n animateOut: false,\r\n animateIn: false,\r\n\r\n fallbackEasing: 'swing',\r\n\r\n callbacks: true,\r\n info: false,\r\n\r\n nestedItemSelector: false,\r\n itemElement: 'div',\r\n stageElement: 'div',\r\n\r\n navContainer: false,\r\n dotsContainer: false,\r\n\r\n //Classes and Names\r\n themeClass: 'owl-theme',\r\n baseClass: 'owl-carousel',\r\n itemClass: 'owl-item',\r\n centerClass: 'center',\r\n activeClass: 'active',\r\n navContainerClass: 'owl-nav',\r\n navClass: ['owl-prev', 'owl-next'], \r\n controlsClass: 'owl-controls',\r\n dotClass: 'owl-dot',\r\n dotsClass: 'owl-dots',\r\n autoHeightClass: 'owl-height'\r\n\r\n };\r\n\r\n // Reference to DOM elements\r\n // Those with $ sign are jQuery objects\r\n\r\n var dom = {\r\n el: null,\t// main element \r\n $el: null,\t// jQuery main element \r\n stage: null,\t// stage\r\n $stage: null,\t// jQuery stage\r\n oStage: null,\t// outer stage\r\n $oStage: null,\t// $ outer stage\r\n $items: null,\t// all items, clones and originals included \r\n $oItems: null,\t// original items\r\n $cItems: null,\t// cloned items only\r\n $cc: null,\r\n $navPrev: null,\r\n $navNext: null,\r\n $page: null,\r\n $nav: null,\r\n $content: null\r\n };\r\n\r\n /**\r\n\t * Variables\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n // Only for development process\r\n\r\n // Widths\r\n\r\n var width = {\r\n el: 0,\r\n stage: 0,\r\n item: 0,\r\n prevWindow: 0,\r\n cloneLast: 0\r\n };\r\n\r\n // Numbers\r\n\r\n var num = {\r\n items: 0,\r\n oItems: 0,\r\n cItems: 0,\r\n active: 0,\r\n merged: [],\r\n nav: [],\r\n allPages: 0\r\n };\r\n\r\n // Positions\r\n\r\n var pos = {\r\n start: 0,\r\n max: 0,\r\n maxValue: 0,\r\n prev: 0,\r\n current: 0,\r\n currentAbs: 0,\r\n currentPage: 0,\r\n stage: 0,\r\n items: [],\r\n lsCurrent: 0\r\n };\r\n\r\n // Drag/Touches\r\n\r\n var drag = {\r\n start: 0,\r\n startX: 0,\r\n startY: 0,\r\n current: 0,\r\n currentX: 0,\r\n currentY: 0,\r\n offsetX: 0,\r\n offsetY: 0,\r\n distance: null,\r\n startTime: 0,\r\n endTime: 0,\r\n updatedX: 0,\r\n targetEl: null\r\n };\r\n\r\n // Speeds\r\n\r\n var speed = {\r\n onDragEnd: 300,\r\n nav: 300,\r\n css2speed: 0\r\n\r\n };\r\n\r\n // States\r\n\r\n var state = {\r\n isTouch: false,\r\n isScrolling: false,\r\n isSwiping: false,\r\n direction: false,\r\n inMotion: false,\r\n autoplay: false,\r\n lazyContent: false\r\n };\r\n\r\n // Event functions references\r\n\r\n var e = {\r\n _onDragStart: null,\r\n _onDragMove: null,\r\n _onDragEnd: null,\r\n _transitionEnd: null,\r\n _resizer: null,\r\n _responsiveCall: null,\r\n _goToLoop: null,\r\n _checkVisibile: null,\r\n _autoplay: null,\r\n _pause: null,\r\n _play: null,\r\n _stop: null\r\n };\r\n\r\n function Owl(element, options) {\r\n\r\n // add basic Owl information to dom element\r\n\r\n element.owlCarousel = {\r\n 'name': 'Owl Carousel',\r\n 'author': 'Bartosz Wojciechowski',\r\n 'version': '2.0.0-beta.1.9',\r\n 'released': '14.05.2014'\r\n };\r\n\r\n // Attach variables to object\r\n // Only for development process\r\n\r\n this.options = $.extend({}, defaults, options);\r\n this._options = $.extend({}, defaults, options);\r\n this.dom = $.extend({}, dom);\r\n this.width = $.extend({}, width);\r\n this.num = $.extend({}, num);\r\n this.pos = $.extend({}, pos);\r\n this.drag = $.extend({}, drag);\r\n this.speed = $.extend({}, speed);\r\n this.state = $.extend({}, state);\r\n this.e = $.extend({}, e);\r\n\r\n this.dom.el = element;\r\n this.dom.$el = $(element);\r\n this.init();\r\n }\r\n\r\n /**\r\n\t * init\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.init = function () {\r\n\r\n this.fireCallback('onInitBefore');\r\n\r\n //Add base class\r\n if (!this.dom.$el.hasClass(this.options.baseClass)) {\r\n this.dom.$el.addClass(this.options.baseClass);\r\n }\r\n\r\n //Add theme class\r\n if (!this.dom.$el.hasClass(this.options.themeClass)) {\r\n this.dom.$el.addClass(this.options.themeClass);\r\n }\r\n\r\n //Add theme class\r\n if (this.options.rtl) {\r\n this.dom.$el.addClass('owl-rtl');\r\n }\r\n\r\n // Check support\r\n this.browserSupport();\r\n\r\n // Sort responsive items in array\r\n this.sortOptions();\r\n\r\n // Update options.items on given size\r\n this.setResponsiveOptions();\r\n\r\n if (this.options.autoWidth && this.state.imagesLoaded !== true) {\r\n var imgs = this.dom.$el.find('img');\r\n var nestedSelector = this.options.nestedItemSelector ? '.' + this.options.nestedItemSelector : undefined;\r\n var width = this.dom.$el.children(nestedSelector).width();\r\n\r\n if (imgs.length && width <= 0) {\r\n this.preloadAutoWidthImages(imgs);\r\n return false;\r\n }\r\n }\r\n\r\n // Get and store window width\r\n // iOS safari likes to trigger unnecessary resize event\r\n this.width.prevWindow = this.windowWidth();\r\n\r\n // create stage object\r\n this.createStage();\r\n\r\n // Append local content \r\n this.fetchContent();\r\n\r\n // attach generic events \r\n this.eventsCall();\r\n\r\n // attach custom control events\r\n this.addCustomEvents();\r\n\r\n // attach generic events \r\n this.internalEvents();\r\n\r\n this.dom.$el.addClass('owl-loading');\r\n this.refresh(true);\r\n this.dom.$el.removeClass('owl-loading').addClass('owl-loaded');\r\n this.fireCallback('onInitAfter');\r\n };\r\n\r\n /**\r\n\t * sortOptions\r\n\t * @desc Sort responsive sizes \r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.sortOptions = function () {\r\n\r\n var resOpt = this.options.responsive;\r\n this.responsiveSorted = {};\r\n var keys = [],\r\n\t\ti, j, k;\r\n for (i in resOpt) {\r\n keys.push(i);\r\n }\r\n\r\n keys = keys.sort(function (a, b) { return a - b; });\r\n\r\n for (j = 0; j < keys.length; j++) {\r\n k = keys[j];\r\n this.responsiveSorted[k] = resOpt[k];\r\n }\r\n\r\n };\r\n\r\n /**\r\n\t * setResponsiveOptions\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.setResponsiveOptions = function () {\r\n if (this.options.responsive === false) { return false; }\r\n\r\n var width = this.windowWidth();\r\n var resOpt = this.options.responsive;\r\n var i, j, k, minWidth;\r\n\r\n // overwrite non resposnive options\r\n for (k in this._options) {\r\n if (k !== 'responsive') {\r\n this.options[k] = this._options[k];\r\n }\r\n }\r\n\r\n // find responsive width\r\n for (i in this.responsiveSorted) {\r\n if (i <= width) {\r\n minWidth = i;\r\n // set responsive options\r\n for (j in this.responsiveSorted[minWidth]) {\r\n this.options[j] = this.responsiveSorted[minWidth][j];\r\n }\r\n\r\n }\r\n }\r\n this.num.breakpoint = minWidth;\r\n\r\n // Responsive Class\r\n if (this.options.responsiveClass) {\r\n this.dom.$el.attr('class',\r\n\t\t\t\tfunction (i, c) {\r\n\t\t\t\t return c.replace(/\\b owl-responsive-\\S+/g, '');\r\n\t\t\t\t}).addClass('owl-responsive-' + minWidth);\r\n }\r\n\r\n\r\n };\r\n\r\n /**\r\n\t * optionsLogic\r\n\t * @desc Update option logic if necessery\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.optionsLogic = function () {\r\n // Toggle Center class\r\n this.dom.$el.toggleClass('owl-center', this.options.center);\r\n\r\n // Scroll per - 'page' option will scroll per visible items number\r\n // You can set this to any other number below visible items.\r\n if (this.options.slideBy && this.options.slideBy === 'page') {\r\n this.options.slideBy = this.options.items;\r\n } else if (this.options.slideBy > this.options.items) {\r\n this.options.slideBy = this.options.items;\r\n }\r\n\r\n // if items number is less than in body\r\n if (this.options.loop && this.num.oItems < this.options.items) {\r\n this.options.loop = false;\r\n }\r\n\r\n if (this.num.oItems <= this.options.items && !this.options.center) {\r\n this.options.navRewind = false;\r\n }\r\n\r\n if (this.options.autoWidth) {\r\n this.options.stagePadding = false;\r\n this.options.dotsEach = 1;\r\n this.options.merge = false;\r\n }\r\n if (this.state.lazyContent) {\r\n this.options.loop = false;\r\n this.options.merge = false;\r\n this.options.dots = false;\r\n this.options.freeDrag = false;\r\n this.options.lazyContent = true;\r\n }\r\n\r\n if ((this.options.animateIn || this.options.animateOut) && this.options.items === 1 && this.support3d) {\r\n this.state.animate = true;\r\n } else { this.state.animate = false; }\r\n\r\n };\r\n\r\n /**\r\n\t * createStage\r\n\t * @desc Create stage and Outer-stage elements\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.createStage = function () {\r\n var oStage = document.createElement('div');\r\n var stage = document.createElement(this.options.stageElement);\r\n\r\n oStage.className = 'owl-stage-outer';\r\n stage.className = 'owl-stage';\r\n\r\n oStage.appendChild(stage);\r\n this.dom.el.appendChild(oStage);\r\n\r\n this.dom.oStage = oStage;\r\n this.dom.$oStage = $(oStage);\r\n this.dom.stage = stage;\r\n this.dom.$stage = $(stage);\r\n\r\n oStage = null;\r\n stage = null;\r\n };\r\n\r\n /**\r\n\t * createItem\r\n\t * @desc Create item container\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.createItem = function () {\r\n var item = document.createElement(this.options.itemElement);\r\n item.className = this.options.itemClass;\r\n return item;\r\n };\r\n\r\n /**\r\n\t * fetchContent\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.fetchContent = function (extContent) {\r\n if (extContent) {\r\n this.dom.$content = (extContent instanceof jQuery) ? extContent : $(extContent);\r\n }\r\n else if (this.options.nestedItemSelector) {\r\n this.dom.$content = this.dom.$el.find('.' + this.options.nestedItemSelector).not('.owl-stage-outer');\r\n }\r\n else {\r\n this.dom.$content = this.dom.$el.children().not('.owl-stage-outer');\r\n }\r\n // content length\r\n this.num.oItems = this.dom.$content.length;\r\n\r\n // init Structure\r\n if (this.num.oItems !== 0) {\r\n this.initStructure();\r\n }\r\n };\r\n\r\n\r\n /**\r\n\t * initStructure\r\n\t * @param [refresh] - if refresh and not lazyContent then dont create normal structure\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.initStructure = function () {\r\n\r\n // lazyContent needs at least 3*items \r\n\r\n if (this.options.lazyContent && this.num.oItems >= this.options.items * 3) {\r\n this.state.lazyContent = true;\r\n } else {\r\n this.state.lazyContent = false;\r\n }\r\n\r\n if (this.state.lazyContent) {\r\n\r\n // start position\r\n this.pos.currentAbs = this.options.items;\r\n\r\n //remove lazy content from DOM\r\n this.dom.$content.remove();\r\n\r\n } else {\r\n // create normal structure\r\n this.createNormalStructure();\r\n }\r\n };\r\n\r\n /**\r\n\t * createNormalStructure\r\n\t * @desc Create normal structure for small/mid weight content\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.createNormalStructure = function () {\r\n for (var i = 0; i < this.num.oItems; i++) {\r\n // fill 'owl-item' with content \r\n var item = this.fillItem(this.dom.$content, i);\r\n // append into stage \r\n this.dom.$stage.append(item);\r\n }\r\n this.dom.$content = null;\r\n };\r\n\r\n /**\r\n\t * createCustomStructure\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.createCustomStructure = function (howManyItems) {\r\n for (var i = 0; i < howManyItems; i++) {\r\n var emptyItem = this.createItem();\r\n var item = $(emptyItem);\r\n\r\n this.setData(item, false);\r\n this.dom.$stage.append(item);\r\n }\r\n };\r\n\r\n /**\r\n\t * createLazyContentStructure\r\n\t * @desc Create lazyContent structure for large content and better mobile experience\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.createLazyContentStructure = function (refresh) {\r\n if (!this.state.lazyContent) { return false; }\r\n\r\n // prevent recreate - to do\r\n if (refresh && this.dom.$stage.children().length === this.options.items * 3) {\r\n return false;\r\n }\r\n // remove items from stage\r\n this.dom.$stage.empty();\r\n\r\n // create custom structure\r\n this.createCustomStructure(3 * this.options.items);\r\n };\r\n\r\n /**\r\n\t * fillItem\r\n\t * @desc Fill empty item container with provided content\r\n\t * @since 2.0.0\r\n\t * @param [content] - string/$dom - passed owl-item\r\n\t * @param [i] - index in jquery object\r\n\t * return $ new object\r\n\t */\r\n\r\n Owl.prototype.fillItem = function (content, i) {\r\n var emptyItem = this.createItem();\r\n var c = content[i] || content;\r\n // set item data \r\n var traversed = this.traversContent(c);\r\n this.setData(emptyItem, false, traversed);\r\n return $(emptyItem).append(c);\r\n };\r\n\r\n /**\r\n\t * traversContent\r\n\t * @since 2.0.0\r\n\t * @param [c] - content\r\n\t * return object\r\n\t */\r\n\r\n Owl.prototype.traversContent = function (c) {\r\n var $c = $(c), dotValue, hashValue;\r\n if (this.options.dotData) {\r\n dotValue = $c.find('[data-dot]').andSelf().data('dot');\r\n }\r\n // update URL hash\r\n if (this.options.URLhashListener) {\r\n hashValue = $c.find('[data-hash]').andSelf().data('hash');\r\n }\r\n return {\r\n dot: dotValue || false,\r\n hash: hashValue || false\r\n };\r\n };\r\n\r\n\r\n /**\r\n\t * setData\r\n\t * @desc Set item jQuery Data \r\n\t * @since 2.0.0\r\n\t * @param [item] - dom - passed owl-item\r\n\t * @param [cloneObj] - $dom - passed clone item\r\n\t */\r\n\r\n\r\n Owl.prototype.setData = function (item, cloneObj, traversed) {\r\n var dot, hash;\r\n if (traversed) {\r\n dot = traversed.dot;\r\n hash = traversed.hash;\r\n }\r\n var itemData = {\r\n index: false,\r\n indexAbs: false,\r\n posLeft: false,\r\n clone: false,\r\n active: false,\r\n loaded: false,\r\n lazyLoad: false,\r\n current: false,\r\n width: false,\r\n center: false,\r\n page: false,\r\n hasVideo: false,\r\n playVideo: false,\r\n dot: dot,\r\n hash: hash\r\n };\r\n\r\n // copy itemData to cloned item \r\n\r\n if (cloneObj) {\r\n itemData = $.extend({}, itemData, cloneObj.data('owl-item'));\r\n }\r\n\r\n $(item).data('owl-item', itemData);\r\n };\r\n\r\n /**\r\n\t * updateLocalContent\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.updateLocalContent = function () {\r\n this.dom.$oItems = this.dom.$stage.find('.' + this.options.itemClass).filter(function () {\r\n return $(this).data('owl-item').clone === false;\r\n });\r\n\r\n this.num.oItems = this.dom.$oItems.length;\r\n //update index on original items\r\n\r\n for (var k = 0; k < this.num.oItems; k++) {\r\n var item = this.dom.$oItems.eq(k);\r\n item.data('owl-item').index = k;\r\n }\r\n };\r\n\r\n /**\r\n\t * checkVideoLinks\r\n\t * @desc Check if for any videos links\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.checkVideoLinks = function () {\r\n if (!this.options.video) { return false; }\r\n var videoEl, item;\r\n\r\n for (var i = 0; i < this.num.items; i++) {\r\n\r\n item = this.dom.$items.eq(i);\r\n if (item.data('owl-item').hasVideo) {\r\n continue;\r\n }\r\n\r\n videoEl = item.find('.owl-video');\r\n if (videoEl.length) {\r\n this.state.hasVideos = true;\r\n this.dom.$items.eq(i).data('owl-item').hasVideo = true;\r\n videoEl.css('display', 'none');\r\n this.getVideoInfo(videoEl, item);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n\t * getVideoInfo\r\n\t * @desc Get Video ID and Type (YouTube/Vimeo only)\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.getVideoInfo = function (videoEl, item) {\r\n\r\n var info, type, id,\r\n\t\t\tvimeoId = videoEl.data('vimeo-id'),\r\n\t\t\tyouTubeId = videoEl.data('youtube-id'),\r\n\t\t\twidth = videoEl.data('width') || this.options.videoWidth,\r\n\t\t\theight = videoEl.data('height') || this.options.videoHeight,\r\n\t\t\turl = videoEl.attr('href');\r\n\r\n if (vimeoId) {\r\n type = 'vimeo';\r\n id = vimeoId;\r\n } else if (youTubeId) {\r\n type = 'youtube';\r\n id = youTubeId;\r\n } else if (url) {\r\n id = url.match(/(http:|https:|)\\/\\/(player.|www.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com))\\/(video\\/|embed\\/|watch\\?v=|v\\/)?([A-Za-z0-9._%-]*)(\\&\\S+)?/);\r\n\r\n if (id[3].indexOf('youtu') > -1) {\r\n type = 'youtube';\r\n } else if (id[3].indexOf('vimeo') > -1) {\r\n type = 'vimeo';\r\n }\r\n id = id[6];\r\n } else {\r\n throw new Error('Missing video link.');\r\n }\r\n\r\n item.data('owl-item').videoType = type;\r\n item.data('owl-item').videoId = id;\r\n item.data('owl-item').videoWidth = width;\r\n item.data('owl-item').videoHeight = height;\r\n\r\n info = {\r\n type: type,\r\n id: id\r\n };\r\n\r\n // Check dimensions\r\n var dimensions = width && height ? 'style=\"width:' + width + 'px;height:' + height + 'px;\"' : '';\r\n\r\n // wrap video content into owl-video-wrapper div\r\n videoEl.wrap('
');\r\n\r\n this.createVideoTn(videoEl, info);\r\n };\r\n\r\n /**\r\n\t * createVideoTn\r\n\t * @desc Create Video Thumbnail\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.createVideoTn = function (videoEl, info) {\r\n\r\n var tnLink, icon, height;\r\n var customTn = videoEl.find('img');\r\n var srcType = 'src';\r\n var lazyClass = '';\r\n var that = this;\r\n\r\n if (this.options.lazyLoad) {\r\n srcType = 'data-src';\r\n lazyClass = 'owl-lazy';\r\n }\r\n\r\n // Custom thumbnail\r\n\r\n if (customTn.length) {\r\n addThumbnail(customTn.attr(srcType));\r\n customTn.remove();\r\n return false;\r\n }\r\n\r\n function addThumbnail(tnPath) {\r\n icon = '
';\r\n\r\n if (that.options.lazyLoad) {\r\n tnLink = '
';\r\n } else {\r\n tnLink = '
';\r\n }\r\n videoEl.after(tnLink);\r\n videoEl.after(icon);\r\n }\r\n\r\n if (info.type === 'youtube') {\r\n var path = \"http://img.youtube.com/vi/\" + info.id + \"/hqdefault.jpg\";\r\n addThumbnail(path);\r\n } else\r\n if (info.type === 'vimeo') {\r\n $.ajax({\r\n type: 'GET',\r\n url: 'http://vimeo.com/api/v2/video/' + info.id + '.json',\r\n jsonp: 'callback',\r\n dataType: 'jsonp',\r\n success: function (data) {\r\n var path = data[0].thumbnail_large;\r\n addThumbnail(path);\r\n if (that.options.loop) {\r\n that.updateItemState();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n\t * stopVideo\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.stopVideo = function () {\r\n this.fireCallback('onVideoStop');\r\n var item = this.dom.$items.eq(this.state.videoPlayIndex);\r\n item.find('.owl-video-frame').remove();\r\n item.removeClass('owl-video-playing');\r\n this.state.videoPlay = false;\r\n };\r\n\r\n /**\r\n\t * playVideo\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.playVideo = function (ev) {\r\n this.fireCallback('onVideoPlay');\r\n\r\n if (this.state.videoPlay) {\r\n this.stopVideo();\r\n }\r\n var videoLink, videoWrap,\r\n\t\t\ttarget = $(ev.target || ev.srcElement),\r\n\t\t\titem = target.closest('.' + this.options.itemClass);\r\n\r\n var videoType = item.data('owl-item').videoType,\r\n\t\t\tid = item.data('owl-item').videoId,\r\n\t\t\twidth = item.data('owl-item').videoWidth || Math.floor(item.data('owl-item').width - this.options.margin),\r\n\t\t\theight = item.data('owl-item').videoHeight || this.dom.$stage.height();\r\n\r\n if (videoType === 'youtube') {\r\n videoLink = \"\";\r\n } else if (videoType === 'vimeo') {\r\n videoLink = '';\r\n }\r\n\r\n item.addClass('owl-video-playing');\r\n this.state.videoPlay = true;\r\n this.state.videoPlayIndex = item.data('owl-item').indexAbs;\r\n\r\n videoWrap = $('
' + videoLink + '
');\r\n target.after(videoWrap);\r\n };\r\n\r\n /**\r\n\t * loopClone\r\n\t * @desc Make a clones for infinity loop\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.loopClone = function () {\r\n if (!this.options.loop || this.state.lazyContent || this.num.oItems < this.options.items) { return false; }\r\n\r\n var firstClone, lastClone, i,\r\n\t\t\tnum = this.options.items,\r\n\t\t\tlastNum = this.num.oItems - 1;\r\n\r\n // if neighbour margin then add one more duplicat\r\n if (this.options.stagePadding && this.options.items === 1) {\r\n num += 1;\r\n }\r\n this.num.cItems = num * 2;\r\n\r\n for (i = 0; i < num; i++) {\r\n // Clone item \r\n var first = this.dom.$oItems.eq(i).clone(true, true);\r\n var last = this.dom.$oItems.eq(lastNum - i).clone(true, true);\r\n firstClone = $(first[0]).addClass('cloned');\r\n lastClone = $(last[0]).addClass('cloned');\r\n $(first[0]).find('a').attr('tabindex', '-1');\r\n $(last[0]).find('a').attr('tabindex', '-1');\r\n // set clone data \r\n // Somehow data has reference to same data id in cash \r\n\r\n this.setData(firstClone[0], first);\r\n this.setData(lastClone[0], last);\r\n\r\n firstClone.data('owl-item').clone = true;\r\n lastClone.data('owl-item').clone = true;\r\n\r\n this.dom.$stage.append(firstClone);\r\n this.dom.$stage.prepend(lastClone);\r\n\r\n firstClone = lastClone = null;\r\n }\r\n\r\n this.dom.$cItems = this.dom.$stage.find('.' + this.options.itemClass).filter(function () {\r\n return $(this).data('owl-item').clone === true;\r\n });\r\n };\r\n\r\n /**\r\n\t * reClone\r\n\t * @desc Update Cloned elements\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.reClone = function () {\r\n // remove cloned items \r\n if (this.dom.$cItems !== null) { // && (this.num.oItems !== 0 && this.num.oItems <= this.options.items)){\r\n this.dom.$cItems.remove();\r\n this.dom.$cItems = null;\r\n this.num.cItems = 0;\r\n }\r\n\r\n if (!this.options.loop) {\r\n return;\r\n }\r\n // generete new elements \r\n this.loopClone();\r\n };\r\n\r\n /**\r\n\t * calculate\r\n\t * @desc Update item index data\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.calculate = function () {\r\n\r\n var i, j, k, dist, posLeft = 0, fullWidth = 0;\r\n\r\n // element width minus neighbour \r\n this.width.el = this.dom.$el.width() - (this.options.stagePadding * 2);\r\n\r\n //to check\r\n this.width.view = this.dom.$el.width();\r\n\r\n // calculate width minus addition margins \r\n var elMinusMargin = this.width.el - (this.options.margin * (this.options.items === 1 ? 0 : this.options.items - 1));\r\n\r\n // calculate element width and item width \r\n this.width.el = this.width.el + this.options.margin;\r\n this.width.item = ((elMinusMargin / this.options.items) + this.options.margin).toFixed(3);\r\n\r\n this.dom.$items = this.dom.$stage.find('.owl-item');\r\n this.num.items = this.dom.$items.length;\r\n\r\n //change to autoWidths\r\n if (this.options.autoWidth) {\r\n this.dom.$items.css('width', '');\r\n }\r\n\r\n // Set grid array \r\n this.pos.items = [];\r\n this.num.merged = [];\r\n this.num.nav = [];\r\n\r\n // item distances\r\n if (this.options.rtl) {\r\n dist = this.options.center ? -((this.width.el) / 2) : 0;\r\n } else {\r\n dist = this.options.center ? (this.width.el) / 2 : 0;\r\n }\r\n\r\n this.width.mergeStage = 0;\r\n\r\n // Calculate items positions\r\n for (i = 0; i < this.num.items; i++) {\r\n\r\n // check merged items\r\n\r\n if (this.options.merge) {\r\n var mergeNumber = this.dom.$items.eq(i).find('[data-merge]').attr('data-merge') || 1;\r\n if (this.options.mergeFit && mergeNumber > this.options.items) {\r\n mergeNumber = this.options.items;\r\n }\r\n this.num.merged.push(parseInt(mergeNumber));\r\n this.width.mergeStage += this.width.item * this.num.merged[i];\r\n } else {\r\n this.num.merged.push(1);\r\n }\r\n\r\n // Array based on merged items used by dots and navigation\r\n if (this.options.loop) {\r\n if (i >= this.num.cItems / 2 && i < this.num.cItems / 2 + this.num.oItems) {\r\n this.num.nav.push(this.num.merged[i]);\r\n }\r\n } else {\r\n this.num.nav.push(this.num.merged[i]);\r\n }\r\n\r\n var iWidth = this.width.item * this.num.merged[i];\r\n\r\n // autoWidth item size\r\n if (this.options.autoWidth) {\r\n iWidth = this.dom.$items.eq(i).width() + this.options.margin;\r\n if (this.options.rtl) {\r\n this.dom.$items[i].style.marginLeft = this.options.margin + 'px';\r\n } else {\r\n this.dom.$items[i].style.marginRight = this.options.margin + 'px';\r\n }\r\n\r\n }\r\n // push item position into array\r\n this.pos.items.push(dist);\r\n\r\n // update item data\r\n this.dom.$items.eq(i).data('owl-item').posLeft = posLeft;\r\n this.dom.$items.eq(i).data('owl-item').width = iWidth;\r\n\r\n // dist starts from middle of stage if center\r\n // posLeft always starts from 0\r\n if (this.options.rtl) {\r\n dist += iWidth;\r\n posLeft += iWidth;\r\n } else {\r\n dist -= iWidth;\r\n posLeft -= iWidth;\r\n }\r\n\r\n fullWidth -= Math.abs(iWidth);\r\n\r\n // update position if center\r\n if (this.options.center) {\r\n this.pos.items[i] = !this.options.rtl ? this.pos.items[i] - (iWidth / 2) : this.pos.items[i] + (iWidth / 2);\r\n }\r\n }\r\n\r\n if (this.options.autoWidth) {\r\n this.width.stage = this.options.center ? Math.abs(fullWidth) : Math.abs(dist);\r\n } else {\r\n this.width.stage = Math.abs(fullWidth);\r\n }\r\n\r\n //update indexAbs on all items \r\n var allItems = this.num.oItems + this.num.cItems;\r\n\r\n for (j = 0; j < allItems; j++) {\r\n this.dom.$items.eq(j).data('owl-item').indexAbs = j;\r\n }\r\n\r\n // Set Min and Max\r\n this.setMinMax();\r\n\r\n // Recalculate grid \r\n this.setSizes();\r\n };\r\n\r\n /**\r\n\t * setMinMax\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.setMinMax = function () {\r\n\r\n // set Min\r\n var minimum = this.dom.$oItems.eq(0).data('owl-item').indexAbs;\r\n this.pos.min = 0;\r\n this.pos.minValue = this.pos.items[minimum];\r\n\r\n // set max position\r\n if (!this.options.loop) {\r\n this.pos.max = this.num.oItems - 1;\r\n }\r\n\r\n if (this.options.loop) {\r\n this.pos.max = this.num.oItems + this.options.items;\r\n }\r\n\r\n if (!this.options.loop && !this.options.center) {\r\n this.pos.max = this.num.oItems - this.options.items;\r\n }\r\n\r\n if (this.options.loop && this.options.center) {\r\n this.pos.max = this.num.oItems + this.options.items;\r\n }\r\n\r\n //set max value\r\n this.pos.maxValue = this.pos.items[this.pos.max];\r\n\r\n //Max for autoWidth content \r\n if ((!this.options.loop && !this.options.center && this.options.autoWidth) || (this.options.merge && !this.options.center)) {\r\n var revert = this.options.rtl ? 1 : -1;\r\n for (i = 0; i < this.pos.items.length; i++) {\r\n if ((this.pos.items[i] * revert) < this.width.stage - this.width.el) {\r\n this.pos.max = i + 1;\r\n }\r\n }\r\n this.pos.maxValue = this.options.rtl ? this.width.stage - this.width.el : -(this.width.stage - this.width.el);\r\n this.pos.items[this.pos.max] = this.pos.maxValue;\r\n }\r\n\r\n // Set loop boundries\r\n if (this.options.center) {\r\n this.pos.loop = this.pos.items[0] - this.pos.items[this.num.oItems];\r\n } else {\r\n this.pos.loop = -this.pos.items[this.num.oItems];\r\n }\r\n\r\n //if is less items\r\n if (this.num.oItems < this.options.items && !this.options.center) {\r\n this.pos.max = 0;\r\n this.pos.maxValue = this.pos.items[0];\r\n }\r\n };\r\n\r\n /**\r\n\t * setSizes\r\n\t * @desc Set sizes on elements (from collectData function)\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.setSizes = function () {\r\n\r\n // show neighbours \r\n if (this.options.stagePadding !== false) {\r\n this.dom.oStage.style.paddingLeft = this.options.stagePadding + 'px';\r\n this.dom.oStage.style.paddingRight = this.options.stagePadding + 'px';\r\n }\r\n\r\n // CRAZY FIX!!! Doublecheck this!\r\n //if(this.width.stagePrev > this.width.stage){\r\n if (this.options.rtl) {\r\n window.setTimeout(function () {\r\n this.dom.stage.style.width = this.width.stage + 'px';\r\n }.bind(this), 0);\r\n } else {\r\n this.dom.stage.style.width = this.width.stage + 'px';\r\n }\r\n\r\n for (var i = 0; i < this.num.items; i++) {\r\n\r\n // Set items width\r\n if (!this.options.autoWidth) {\r\n this.dom.$items[i].style.width = this.width.item - (this.options.margin) + 'px';\r\n }\r\n // add margin\r\n if (this.options.rtl) {\r\n this.dom.$items[i].style.marginLeft = this.options.margin + 'px';\r\n } else {\r\n this.dom.$items[i].style.marginRight = this.options.margin + 'px';\r\n }\r\n\r\n if (this.num.merged[i] !== 1 && !this.options.autoWidth) {\r\n this.dom.$items[i].style.width = (this.width.item * this.num.merged[i]) - (this.options.margin) + 'px';\r\n }\r\n }\r\n\r\n // save prev stage size \r\n this.width.stagePrev = this.width.stage;\r\n };\r\n\r\n /**\r\n\t * responsive\r\n\t * @desc Responsive function update all data by calling refresh() \r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.responsive = function () {\r\n\r\n if (!this.num.oItems) { return false; }\r\n // If El width hasnt change then stop responsive \r\n var elChanged = this.isElWidthChanged();\r\n if (!elChanged) { return false; }\r\n\r\n // if Vimeo Fullscreen mode\r\n var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;\r\n if (fullscreenElement) {\r\n if ($(fullscreenElement.parentNode).hasClass('owl-video-frame')) {\r\n this.setSpeed(0);\r\n this.state.isFullScreen = true;\r\n }\r\n }\r\n\r\n if (fullscreenElement && this.state.isFullScreen && this.state.videoPlay) {\r\n return false;\r\n }\r\n\r\n // Comming back from fullscreen\r\n if (this.state.isFullScreen) {\r\n this.state.isFullScreen = false;\r\n return false;\r\n }\r\n\r\n // check full screen mode and window orientation\r\n if (this.state.videoPlay) {\r\n if (this.state.orientation !== window.orientation) {\r\n this.state.orientation = window.orientation;\r\n return false;\r\n }\r\n }\r\n\r\n this.fireCallback('onResponsiveBefore');\r\n this.state.responsive = true;\r\n this.refresh();\r\n this.state.responsive = false;\r\n this.fireCallback('onResponsiveAfter');\r\n };\r\n\r\n /**\r\n\t * refresh\r\n\t * @desc Refresh method is basically collection of functions that are responsible for Owl responsive functionality\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.refresh = function (init) {\r\n\r\n if (this.state.videoPlay) {\r\n this.stopVideo();\r\n }\r\n\r\n // Update Options for given width\r\n this.setResponsiveOptions();\r\n\r\n //set lazy structure\r\n this.createLazyContentStructure(true);\r\n\r\n // update info about local content\r\n this.updateLocalContent();\r\n\r\n // udpate options\r\n this.optionsLogic();\r\n\r\n // if no items then stop \r\n if (this.num.oItems === 0) {\r\n if (this.dom.$page !== null) {\r\n this.dom.$page.hide();\r\n }\r\n return false;\r\n }\r\n\r\n // Hide and Show methods helps here to set a proper widths.\r\n // This prevents Scrollbar to be calculated in stage width\r\n this.dom.$stage.addClass('owl-refresh');\r\n\r\n // Remove clones and generate new ones\r\n this.reClone();\r\n\r\n // calculate \r\n this.calculate();\r\n\r\n //aaaand show.\r\n this.dom.$stage.removeClass('owl-refresh');\r\n\r\n // to do\r\n // lazyContent last position on refresh\r\n if (this.state.lazyContent) {\r\n this.pos.currentAbs = this.options.items;\r\n }\r\n\r\n this.initPosition(init);\r\n\r\n // jump to last position \r\n if (!this.state.lazyContent && !init) {\r\n this.jumpTo(this.pos.current, false); // fix that \r\n }\r\n\r\n //Check for videos ( YouTube and Vimeo currently supported)\r\n this.checkVideoLinks();\r\n\r\n this.updateItemState();\r\n\r\n // Update controls\r\n this.rebuildDots();\r\n\r\n this.updateControls();\r\n\r\n // update drag events\r\n //this.updateEvents();\r\n\r\n // update autoplay\r\n this.autoplay();\r\n\r\n this.autoHeight();\r\n\r\n this.state.orientation = window.orientation;\r\n\r\n this.watchVisibility();\r\n };\r\n\r\n /**\r\n\t * updateItemState\r\n\t * @desc Update information about current state of items (visibile, hidden, active, etc.)\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.updateItemState = function (update) {\r\n\r\n if (this.state.lazyContent) {\r\n this.updateLazyContent(update);\r\n }\r\n\r\n if (this.options.center) {\r\n this.dom.$items.eq(this.pos.currentAbs)\r\n\t\t\t.addClass(this.options.centerClass)\r\n\t\t\t.data('owl-item').center = true;\r\n }\r\n if (this.options.lazyLoad) {\r\n this.lazyLoad();\r\n }\r\n };\r\n\r\n /**\r\n\t * updateActiveItems\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n\r\n Owl.prototype.updateActiveItems = function () {\r\n var i, j, item, ipos, iwidth, wpos, stage, outsideView, foundCurrent;\r\n // clear states\r\n for (i = 0; i < this.num.items; i++) {\r\n this.dom.$items.eq(i).data('owl-item').active = false;\r\n this.dom.$items.eq(i).data('owl-item').current = false;\r\n this.dom.$items.eq(i).removeClass(this.options.activeClass).removeClass(this.options.centerClass);\r\n }\r\n\r\n this.num.active = 0;\r\n stageX = this.pos.stage;\r\n view = this.options.rtl ? this.width.view : -this.width.view;\r\n\r\n for (j = 0; j < this.num.items; j++) {\r\n\r\n item = this.dom.$items.eq(j);\r\n ipos = item.data('owl-item').posLeft;\r\n iwidth = item.data('owl-item').width;\r\n outsideView = this.options.rtl ? ipos + iwidth : ipos - iwidth;\r\n\r\n if ((this.op(ipos, '<=', stageX) && (this.op(ipos, '>', stageX + view))) ||\r\n\t\t\t\t(this.op(outsideView, '<', stageX) && this.op(outsideView, '>', stageX + view))\r\n\t\t\t\t) {\r\n\r\n this.num.active++;\r\n\r\n if (this.options.freeDrag && !foundCurrent) {\r\n foundCurrent = true;\r\n this.pos.current = item.data('owl-item').index;\r\n this.pos.currentAbs = item.data('owl-item').indexAbs;\r\n }\r\n\r\n item.data('owl-item').active = true;\r\n item.data('owl-item').current = true;\r\n item.addClass(this.options.activeClass);\r\n\r\n if (!this.options.lazyLoad) {\r\n item.data('owl-item').loaded = true;\r\n }\r\n if (this.options.loop && (this.options.lazyLoad || this.options.center)) {\r\n this.updateClonedItemsState(item.data('owl-item').index);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n\t * updateClonedItemsState\r\n\t * @desc Set current state on sibilings items for lazyLoad and center\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.updateClonedItemsState = function (activeIndex) {\r\n\r\n //find cloned center\r\n var center, $el, i;\r\n if (this.options.center) {\r\n center = this.dom.$items.eq(this.pos.currentAbs).data('owl-item').index;\r\n }\r\n\r\n for (i = 0; i < this.num.items; i++) {\r\n $el = this.dom.$items.eq(i);\r\n if ($el.data('owl-item').index === activeIndex) {\r\n $el.data('owl-item').current = true;\r\n if ($el.data('owl-item').index === center) {\r\n $el.addClass(this.options.centerClass);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n\t * updateLazyPosition\r\n\t * @desc Set current state on sibilings items for lazyLoad and center\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.updateLazyPosition = function () {\r\n var jumpTo = this.pos.goToLazyContent || 0;\r\n\r\n this.pos.lcMovedBy = Math.abs(this.options.items - this.pos.currentAbs);\r\n\r\n if (this.options.items < this.pos.currentAbs) {\r\n this.pos.lcCurrent += this.pos.currentAbs - this.options.items;\r\n this.state.lcDirection = 'right';\r\n } else if (this.options.items > this.pos.currentAbs) {\r\n this.pos.lcCurrent -= this.options.items - this.pos.currentAbs;\r\n this.state.lcDirection = 'left';\r\n }\r\n\r\n this.pos.lcCurrent = jumpTo !== 0 ? jumpTo : this.pos.lcCurrent;\r\n\r\n if (this.pos.lcCurrent >= this.dom.$content.length) {\r\n this.pos.lcCurrent = this.pos.lcCurrent - this.dom.$content.length;\r\n } else if (this.pos.lcCurrent < -this.dom.$content.length + 1) {\r\n this.pos.lcCurrent = this.pos.lcCurrent + this.dom.$content.length;\r\n }\r\n\r\n if (this.options.startPosition > 0) {\r\n this.pos.lcCurrent = this.options.startPosition;\r\n this._options.startPosition = this.options.startPosition = 0;\r\n }\r\n\r\n this.pos.lcCurrentAbs = this.pos.lcCurrent < 0 ? this.pos.lcCurrent + this.dom.$content.length : this.pos.lcCurrent;\r\n\r\n };\r\n\r\n /**\r\n\t * updateLazyContent\r\n\t * @param [update] - boolean - update call by content manipulations\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.updateLazyContent = function (update) {\r\n\r\n if (this.pos.lcCurrent === undefined) {\r\n this.pos.lcCurrent = 0;\r\n this.pos.current = this.pos.currentAbs = this.options.items;\r\n }\r\n\r\n\r\n if (!update) {\r\n this.updateLazyPosition();\r\n }\r\n var i, j, item, contentPos, content, freshItem, freshData;\r\n\r\n this.pos.current = this.pos.currentAbs = this.options.items;\r\n this.setSpeed(0);\r\n\r\n if (this.state.lcDirection !== false) {\r\n for (i = 0; i < this.pos.lcMovedBy; i++) {\r\n\r\n if (this.state.lcDirection === 'right') {\r\n item = this.dom.$stage.find('.owl-item').eq(0);\r\n item.appendTo(this.dom.$stage);\r\n }\r\n if (this.state.lcDirection === 'left') {\r\n item = this.dom.$stage.find('.owl-item').eq(-1);\r\n item.prependTo(this.dom.$stage);\r\n }\r\n item.data('owl-item').active = false;\r\n }\r\n }\r\n\r\n // recollect \r\n this.dom.$items = this.dom.$stage.find('.owl-item');\r\n\r\n for (j = 0; j < this.num.items; j++) {\r\n\r\n // to do\r\n //this.dom.$items.eq(j).removeClass(this.options.centerClass);\r\n\r\n // get Content \r\n contentPos = this.pos.lcCurrent + j - this.options.items;// + this.options.startPosition;\r\n\r\n if (contentPos >= this.dom.$content.length) {\r\n contentPos = contentPos - this.dom.$content.length;\r\n }\r\n if (contentPos < -this.dom.$content.length) {\r\n contentPos = contentPos + this.dom.$content.length;\r\n }\r\n\r\n content = this.dom.$content.eq(contentPos);\r\n freshItem = this.dom.$items.eq(j);\r\n freshData = freshItem.data('owl-item');\r\n\r\n if (freshData.active === false || this.pos.goToLazyContent !== 0 || update === true) {\r\n\r\n freshItem.empty();\r\n freshItem.append(content.clone(true, true));\r\n freshData.active = true;\r\n freshData.current = true;\r\n if (!this.options.lazyLoad) {\r\n freshData.loaded = true;\r\n } else {\r\n freshData.loaded = false;\r\n }\r\n }\r\n }\r\n this.animStage(this.pos.items[this.options.items]);\r\n this.pos.goToLazyContent = 0;\r\n\r\n };\r\n\r\n /**\r\n\t * eventsCall\r\n\t * @desc Save internal event references and add event based functions like transitionEnd,responsive etc.\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.eventsCall = function () {\r\n // Save events references \r\n this.e._onDragStart = function (e) { this.onDragStart(e); }.bind(this);\r\n this.e._onDragMove = function (e) { this.onDragMove(e); }.bind(this);\r\n this.e._onDragEnd = function (e) { this.onDragEnd(e); }.bind(this);\r\n this.e._transitionEnd = function (e) { this.transitionEnd(e); }.bind(this);\r\n this.e._resizer = function () { this.responsiveTimer(); }.bind(this);\r\n this.e._responsiveCall = function () { this.responsive(); }.bind(this);\r\n this.e._preventClick = function (e) { this.preventClick(e); }.bind(this);\r\n this.e._goToHash = function () { this.goToHash(); }.bind(this);\r\n this.e._goToPage = function (e) { this.goToPage(e); }.bind(this);\r\n this.e._ap = function () { this.autoplay(); }.bind(this);\r\n this.e._play = function () { this.play(); }.bind(this);\r\n this.e._pause = function () { this.pause(); }.bind(this);\r\n this.e._playVideo = function (e) { this.playVideo(e); }.bind(this);\r\n\r\n this.e._navNext = function (e) {\r\n if ($(e.target).hasClass('disabled')) { return false; }\r\n e.preventDefault();\r\n this.next();\r\n }.bind(this);\r\n\r\n this.e._navPrev = function (e) {\r\n if ($(e.target).hasClass('disabled')) { return false; }\r\n e.preventDefault();\r\n this.prev();\r\n }.bind(this);\r\n\r\n };\r\n\r\n /**\r\n\t * responsiveTimer\r\n\t * @desc Check Window resize event with 200ms delay / this.options.responsiveRefreshRate\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.responsiveTimer = function () {\r\n if (this.windowWidth() === this.width.prevWindow) {\r\n return false;\r\n }\r\n window.clearInterval(this.e._autoplay);\r\n window.clearTimeout(this.resizeTimer);\r\n this.resizeTimer = window.setTimeout(this.e._responsiveCall, this.options.responsiveRefreshRate);\r\n this.width.prevWindow = this.windowWidth();\r\n };\r\n\r\n /**\r\n\t * internalEvents\r\n\t * @desc Checks for touch/mouse drag options and add necessery event handlers.\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.internalEvents = function () {\r\n var isTouch = isTouchSupport();\r\n var isTouchIE = isTouchSupportIE();\r\n\r\n if (isTouch && !isTouchIE) {\r\n this.dragType = ['touchstart click', 'touchmove click', 'touchend click', 'touchcancel click'];\r\n } else if (isTouch && isTouchIE) {\r\n this.dragType = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp', 'MSPointerCancel'];\r\n } else {\r\n this.dragType = ['mousedown', 'mousemove', 'mouseup'];\r\n }\r\n\r\n if ((isTouch || isTouchIE) && this.options.touchDrag) {\r\n //touch cancel event \r\n this.on(document, this.dragType[3], this.e._onDragEnd);\r\n\r\n } else {\r\n // firefox startdrag fix - addeventlistener doesnt work here :/\r\n this.dom.$stage.on('dragstart', function () { return false; });\r\n\r\n if (this.options.mouseDrag) {\r\n //disable text select\r\n this.dom.stage.onselectstart = function () { return false; };\r\n } else {\r\n // enable text select\r\n this.dom.$el.addClass('owl-text-select-on');\r\n }\r\n }\r\n\r\n // Video Play Button event delegation\r\n this.dom.$stage.on(this.dragType[2], '.owl-video-play-icon', this.e._playVideo);\r\n\r\n if (this.options.URLhashListener) {\r\n this.on(window, 'hashchange', this.e._goToHash, false);\r\n }\r\n\r\n if (this.options.autoplayHoverPause) {\r\n var that = this;\r\n this.dom.$stage.on('mouseover', this.e._pause);\r\n this.dom.$stage.on('mouseleave', this.e._ap);\r\n }\r\n\r\n // Catch transitionEnd event\r\n if (this.transitionEndVendor) {\r\n this.on(this.dom.stage, this.transitionEndVendor, this.e._transitionEnd, false);\r\n }\r\n\r\n // Responsive\r\n if (this.options.responsive !== false) {\r\n this.on(window, 'resize', this.e._resizer, false);\r\n }\r\n\r\n this.updateEvents();\r\n };\r\n\r\n /**\r\n\t * updateEvents\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.updateEvents = function () {\r\n\r\n if (this.options.touchDrag && (this.dragType[0] === 'touchstart' || this.dragType[0] === 'MSPointerDown')) {\r\n this.on(this.dom.stage, this.dragType[0], this.e._onDragStart, false);\r\n } else if (this.options.mouseDrag && this.dragType[0] === 'mousedown') {\r\n this.on(this.dom.stage, this.dragType[0], this.e._onDragStart, false);\r\n\r\n } else {\r\n this.off(this.dom.stage, this.dragType[0], this.e._onDragStart);\r\n }\r\n };\r\n\r\n /**\r\n\t * onDragStart\r\n\t * @desc touchstart/mousedown event\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.onDragStart = function (event) {\r\n var ev = event.originalEvent || event || window.event;\r\n // prevent right click\r\n if (ev.which === 3) {\r\n return false;\r\n }\r\n\r\n if (this.dragType[0] === 'mousedown') {\r\n this.dom.$stage.addClass('owl-grab');\r\n }\r\n\r\n this.fireCallback('onTouchStart');\r\n this.drag.startTime = new Date().getTime();\r\n this.setSpeed(0);\r\n this.state.isTouch = true;\r\n this.state.isScrolling = false;\r\n this.state.isSwiping = false;\r\n this.drag.distance = 0;\r\n\r\n // if is 'touchstart'\r\n var isTouchEvent = ev.type === 'touchstart';\r\n var pageX = isTouchEvent ? event.targetTouches[0].pageX : (ev.pageX || ev.clientX);\r\n var pageY = isTouchEvent ? event.targetTouches[0].pageY : (ev.pageY || ev.clientY);\r\n\r\n //get stage position left\r\n this.drag.offsetX = this.dom.$stage.position().left - this.options.stagePadding;\r\n this.drag.offsetY = this.dom.$stage.position().top;\r\n\r\n if (this.options.rtl) {\r\n this.drag.offsetX = this.dom.$stage.position().left + this.width.stage - this.width.el + this.options.margin;\r\n }\r\n\r\n //catch position // ie to fix\r\n if (this.state.inMotion && this.support3d) {\r\n var animatedPos = this.getTransformProperty();\r\n this.drag.offsetX = animatedPos;\r\n this.animStage(animatedPos);\r\n } else if (this.state.inMotion && !this.support3d) {\r\n this.state.inMotion = false;\r\n return false;\r\n }\r\n\r\n this.drag.startX = pageX - this.drag.offsetX;\r\n this.drag.startY = pageY - this.drag.offsetY;\r\n\r\n this.drag.start = pageX - this.drag.startX;\r\n this.drag.targetEl = ev.target || ev.srcElement;\r\n this.drag.updatedX = this.drag.start;\r\n\r\n // to do/check\r\n //prevent links and images dragging;\r\n //this.drag.targetEl.draggable = false;\r\n\r\n this.on(document, this.dragType[1], this.e._onDragMove, false);\r\n this.on(document, this.dragType[2], this.e._onDragEnd, false);\r\n };\r\n\r\n /**\r\n\t * onDragMove\r\n\t * @desc touchmove/mousemove event\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.onDragMove = function (event) {\r\n if (!this.state.isTouch) {\r\n return;\r\n }\r\n\r\n if (this.state.isScrolling) {\r\n return;\r\n }\r\n\r\n var neighbourItemWidth = 0;\r\n var ev = event.originalEvent || event || window.event;\r\n\r\n // if is 'touchstart'\r\n var isTouchEvent = ev.type == 'touchmove';\r\n var pageX = isTouchEvent ? ev.targetTouches[0].pageX : (ev.pageX || ev.clientX);\r\n var pageY = isTouchEvent ? ev.targetTouches[0].pageY : (ev.pageY || ev.clientY);\r\n\r\n // Drag Direction \r\n this.drag.currentX = pageX - this.drag.startX;\r\n this.drag.currentY = pageY - this.drag.startY;\r\n this.drag.distance = this.drag.currentX - this.drag.offsetX;\r\n\r\n // Check move direction \r\n if (this.drag.distance < 0) {\r\n this.state.direction = this.options.rtl ? 'right' : 'left';\r\n } else if (this.drag.distance > 0) {\r\n this.state.direction = this.options.rtl ? 'left' : 'right';\r\n }\r\n // Loop\r\n if (this.options.loop) {\r\n if (this.op(this.drag.currentX, '>', this.pos.minValue) && this.state.direction === 'right') {\r\n this.drag.currentX -= this.pos.loop;\r\n } else if (this.op(this.drag.currentX, '<', this.pos.maxValue) && this.state.direction === 'left') {\r\n this.drag.currentX += this.pos.loop;\r\n }\r\n } else {\r\n // pull\r\n var minValue = this.options.rtl ? this.pos.maxValue : this.pos.minValue;\r\n var maxValue = this.options.rtl ? this.pos.minValue : this.pos.maxValue;\r\n var pull = this.options.pullDrag ? this.drag.distance / 5 : 0;\r\n this.drag.currentX = Math.max(Math.min(this.drag.currentX, minValue + pull), maxValue + pull);\r\n }\r\n\r\n\r\n\r\n // Lock browser if swiping horizontal\r\n\r\n if ((this.drag.distance > 8 || this.drag.distance < -8)) {\r\n if (ev.preventDefault !== undefined) {\r\n ev.preventDefault();\r\n } else {\r\n ev.returnValue = false;\r\n }\r\n this.state.isSwiping = true;\r\n }\r\n\r\n this.drag.updatedX = this.drag.currentX;\r\n\r\n // Lock Owl if scrolling \r\n if ((this.drag.currentY > 16 || this.drag.currentY < -16) && this.state.isSwiping === false) {\r\n this.state.isScrolling = true;\r\n this.drag.updatedX = this.drag.start;\r\n }\r\n\r\n this.animStage(this.drag.updatedX);\r\n };\r\n\r\n /**\r\n\t * onDragEnd \r\n\t * @desc touchend/mouseup event\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.onDragEnd = function (event) {\r\n if (!this.state.isTouch) {\r\n return;\r\n }\r\n if (this.dragType[0] === 'mousedown') {\r\n this.dom.$stage.removeClass('owl-grab');\r\n }\r\n\r\n this.fireCallback('onTouchEnd');\r\n\r\n //prevent links and images dragging;\r\n //this.drag.targetEl.draggable = true;\r\n\r\n //remove drag event listeners\r\n\r\n this.state.isTouch = false;\r\n this.state.isScrolling = false;\r\n this.state.isSwiping = false;\r\n\r\n //to check\r\n if (this.drag.distance === 0 && this.state.inMotion !== true) {\r\n this.state.inMotion = false;\r\n return false;\r\n }\r\n\r\n // prevent clicks while scrolling\r\n\r\n this.drag.endTime = new Date().getTime();\r\n var compareTimes = this.drag.endTime - this.drag.startTime;\r\n var distanceAbs = Math.abs(this.drag.distance);\r\n\r\n //to test\r\n if (distanceAbs > 3 || compareTimes > 300) {\r\n this.removeClick(this.drag.targetEl);\r\n }\r\n\r\n var closest = this.closest(this.drag.updatedX);\r\n\r\n this.setSpeed(this.options.dragEndSpeed, false, true);\r\n this.animStage(this.pos.items[closest]);\r\n\r\n //if pullDrag is off then fire transitionEnd event manually when stick to border\r\n if (!this.options.pullDrag && this.drag.updatedX === this.pos.items[closest]) {\r\n this.transitionEnd();\r\n }\r\n\r\n this.drag.distance = 0;\r\n\r\n this.off(document, this.dragType[1], this.e._onDragMove);\r\n this.off(document, this.dragType[2], this.e._onDragEnd);\r\n };\r\n\r\n /**\r\n\t * removeClick\r\n\t * @desc Attach preventClick function to disable link while swipping\r\n\t * @since 2.0.0\r\n\t * @param [target] - clicked dom element\r\n\t */\r\n\r\n Owl.prototype.removeClick = function (target) {\r\n this.drag.targetEl = target;\r\n $(target).on('click.preventClick', this.e._preventClick);\r\n // to make sure click is removed:\r\n window.setTimeout(function () {\r\n $(target).off('click.preventClick');\r\n }, 300);\r\n };\r\n\r\n /**\r\n\t * preventClick\r\n\t * @desc Add preventDefault for any link and then remove removeClick event hanlder\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.preventClick = function (ev) {\r\n if (ev.preventDefault) {\r\n ev.preventDefault();\r\n } else {\r\n ev.returnValue = false;\r\n }\r\n if (ev.stopPropagation) {\r\n ev.stopPropagation();\r\n }\r\n $(ev.target).off('click.preventClick')\r\n };\r\n\r\n /**\r\n\t * getTransformProperty\r\n\t * @desc catch stage position while animate (only css3)\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.getTransformProperty = function () {\r\n var transform = window.getComputedStyle(this.dom.stage, null).getPropertyValue(this.vendorName + 'transform');\r\n //var transform = this.dom.$stage.css(this.vendorName + 'transform')\r\n transform = transform.replace(/matrix(3d)?\\(|\\)/g, '').split(',');\r\n var matrix3d = transform.length === 16;\r\n\r\n return matrix3d !== true ? transform[4] : transform[12];\r\n };\r\n\r\n /**\r\n\t * closest\r\n\t * @desc Get closest item after touchend/mouseup\r\n\t * @since 2.0.0\r\n\t * @param [x] - curent position in pixels\r\n\t * return position in pixels\r\n\t */\r\n\r\n Owl.prototype.closest = function (x) {\r\n var newX = 0,\r\n\t\t\tpull = 30;\r\n\r\n if (!this.options.freeDrag) {\r\n // Check closest item\r\n for (var i = 0; i < this.num.items; i++) {\r\n if (x > this.pos.items[i] - pull && x < this.pos.items[i] + pull) {\r\n newX = i;\r\n } else if (this.op(x, '<', this.pos.items[i]) && this.op(x, '>', this.pos.items[i + 1 || this.pos.items[i] - this.width.el])) {\r\n newX = this.state.direction === 'left' ? i + 1 : i;\r\n }\r\n }\r\n }\r\n //non loop boundries\r\n if (!this.options.loop) {\r\n if (this.op(x, '>', this.pos.minValue)) {\r\n newX = x = this.pos.min;\r\n } else if (this.op(x, '<', this.pos.maxValue)) {\r\n newX = x = this.pos.max;\r\n }\r\n }\r\n\r\n if (!this.options.freeDrag) {\r\n // set positions\r\n this.pos.currentAbs = newX;\r\n this.pos.current = this.dom.$items.eq(newX).data('owl-item').index;\r\n } else {\r\n this.updateItemState();\r\n return x;\r\n }\r\n\r\n return newX;\r\n };\r\n\r\n /**\r\n\t * animStage\r\n\t * @desc animate stage position (both css3/css2) and perform onChange functions/events\r\n\t * @since 2.0.0\r\n\t * @param [x] - curent position in pixels\r\n\t */\r\n\r\n Owl.prototype.animStage = function (pos) {\r\n\r\n // if speed is 0 the set inMotion to false\r\n if (this.speed.current !== 0 && this.pos.currentAbs !== this.pos.min) {\r\n this.fireCallback('onTransitionStart');\r\n this.state.inMotion = true;\r\n }\r\n\r\n var posX = this.pos.stage = pos,\r\n\t\t\tstyle = this.dom.stage.style;\r\n\r\n if (this.support3d) {\r\n translate = 'translate3d(' + posX + 'px' + ',0px, 0px)';\r\n style[this.transformVendor] = translate;\r\n } else if (this.state.isTouch) {\r\n style.left = posX + 'px';\r\n } else {\r\n this.dom.$stage.animate({ left: posX }, this.speed.css2speed, this.options.fallbackEasing, function () {\r\n if (this.state.inMotion) {\r\n this.transitionEnd();\r\n }\r\n }.bind(this));\r\n }\r\n\r\n this.onChange();\r\n };\r\n\r\n /**\r\n\t * updatePosition\r\n\t * @desc Update current positions\r\n\t * @since 2.0.0\r\n\t * @param [pos] - number - new position\r\n\t */\r\n\r\n Owl.prototype.updatePosition = function (pos) {\r\n\r\n // if no items then stop \r\n if (this.num.oItems === 0) { return false; }\r\n // to do\r\n //if(pos > this.num.items){pos = 0;}\r\n if (pos === undefined) { return false; }\r\n\r\n //pos - new current position\r\n var nextPos = pos;\r\n this.pos.prev = this.pos.currentAbs;\r\n\r\n if (this.state.revert) {\r\n this.pos.current = this.dom.$items.eq(nextPos).data('owl-item').index;\r\n this.pos.currentAbs = nextPos;\r\n return;\r\n }\r\n\r\n if (!this.options.loop) {\r\n if (this.options.navRewind) {\r\n nextPos = nextPos > this.pos.max ? this.pos.min : (nextPos < 0 ? this.pos.max : nextPos);\r\n } else {\r\n nextPos = nextPos > this.pos.max ? this.pos.max : (nextPos <= 0 ? 0 : nextPos);\r\n }\r\n } else {\r\n nextPos = nextPos >= this.num.oItems ? this.num.oItems - 1 : nextPos;\r\n }\r\n\r\n this.pos.current = this.dom.$oItems.eq(nextPos).data('owl-item').index;\r\n this.pos.currentAbs = this.dom.$oItems.eq(nextPos).data('owl-item').indexAbs;\r\n\r\n };\r\n\r\n /**\r\n\t * setSpeed\r\n\t * @since 2.0.0\r\n\t * @param [speed] - number\r\n\t * @param [pos] - number - next position - use this param to calculate smartSpeed\r\n\t * @param [drag] - boolean - if drag is true then smart speed is disabled\r\n\t * return speed\r\n\t */\r\n\r\n Owl.prototype.setSpeed = function (speed, pos, drag) {\r\n var s = speed,\r\n\t\t\tnextPos = pos;\r\n\r\n if ((s === false && s !== 0 && drag !== true) || s === undefined) {\r\n\r\n //Double check this\r\n // var nextPx = this.pos.items[nextPos];\r\n // var currPx = this.pos.stage \r\n // var diff = Math.abs(nextPx-currPx);\r\n // var s = diff/1\r\n // if(s>1000){\r\n // \ts = 1000;\r\n // }\r\n\r\n var diff = Math.abs(nextPos - this.pos.prev);\r\n diff = diff === 0 ? 1 : diff;\r\n if (diff > 6) { diff = 6; }\r\n s = diff * this.options.smartSpeed;\r\n }\r\n\r\n if (s === false && drag === true) {\r\n s = this.options.smartSpeed;\r\n }\r\n\r\n if (s === 0) { s = 0; }\r\n\r\n if (this.support3d) {\r\n var style = this.dom.stage.style;\r\n style.webkitTransitionDuration = style.MsTransitionDuration = style.msTransitionDuration = style.MozTransitionDuration = style.OTransitionDuration = style.transitionDuration = (s / 1000) + 's';\r\n } else {\r\n this.speed.css2speed = s;\r\n }\r\n this.speed.current = s;\r\n return s;\r\n };\r\n\r\n /**\r\n\t * jumpTo\r\n\t * @since 2.0.0\r\n\t * @param [pos] - number - next position - use this param to calculate smartSpeed\r\n\t * @param [update] - boolean - if drag is true then smart speed is disabled\r\n\t */\r\n\r\n Owl.prototype.jumpTo = function (pos, update) {\r\n if (this.state.lazyContent) {\r\n this.pos.goToLazyContent = pos;\r\n }\r\n this.updatePosition(pos);\r\n this.setSpeed(0);\r\n this.animStage(this.pos.items[this.pos.currentAbs]);\r\n if (update !== true) {\r\n this.updateItemState();\r\n }\r\n };\r\n\r\n /**\r\n\t * goTo\r\n\t * @since 2.0.0\r\n\t * @param [pos] - number\r\n\t * @param [speed] - speed in ms\r\n\t * @param [speed] - speed in ms\r\n\t */\r\n\r\n Owl.prototype.goTo = function (pos, speed) {\r\n if (this.state.lazyContent && this.state.inMotion) {\r\n return false;\r\n }\r\n\r\n this.updatePosition(pos);\r\n\r\n if (this.state.animate) { speed = 0; }\r\n this.setSpeed(speed, this.pos.currentAbs);\r\n\r\n if (this.state.animate) { this.animate(); }\r\n this.animStage(this.pos.items[this.pos.currentAbs]);\r\n\r\n };\r\n\r\n /**\r\n\t * next\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.next = function (optionalSpeed) {\r\n var s = optionalSpeed || this.options.navSpeed;\r\n if (this.options.loop && !this.state.lazyContent) {\r\n this.goToLoop(this.options.slideBy, s);\r\n } else {\r\n this.goTo(this.pos.current + this.options.slideBy, s);\r\n }\r\n };\r\n\r\n /**\r\n\t * prev\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.prev = function (optionalSpeed) {\r\n var s = optionalSpeed || this.options.navSpeed;\r\n if (this.options.loop && !this.state.lazyContent) {\r\n this.goToLoop(-this.options.slideBy, s);\r\n } else {\r\n this.goTo(this.pos.current - this.options.slideBy, s);\r\n }\r\n };\r\n\r\n /**\r\n\t * goToLoop\r\n\t * @desc Go to given position if loop is enabled - used only internal\r\n\t * @since 2.0.0\r\n\t * @param [distance] - number -how far to go\r\n\t * @param [speed] - number - speed in ms\r\n\t */\r\n\r\n Owl.prototype.goToLoop = function (distance, speed) {\r\n\r\n var revert = this.pos.currentAbs,\r\n\t\t\tprevPosition = this.pos.currentAbs,\r\n\t\t\tnewPosition = this.pos.currentAbs + distance,\r\n\t\t\tdirection = prevPosition - newPosition < 0 ? true : false;\r\n\r\n this.state.revert = true;\r\n\r\n if (newPosition < this.options.items && direction === false) {\r\n\r\n this.state.bypass = true;\r\n revert = this.num.items - (this.options.items - prevPosition) - this.options.items;\r\n this.jumpTo(revert, true);\r\n\r\n } else if (newPosition >= this.num.items - this.options.items && direction === true) {\r\n\r\n this.state.bypass = true;\r\n revert = prevPosition - this.num.oItems;\r\n this.jumpTo(revert, true);\r\n\r\n }\r\n window.clearTimeout(this.e._goToLoop);\r\n this.e._goToLoop = window.setTimeout(function () {\r\n this.state.bypass = false;\r\n this.goTo(revert + distance, speed);\r\n this.state.revert = false;\r\n\r\n }.bind(this), 30);\r\n };\r\n\r\n /**\r\n\t * initPosition\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.initPosition = function (init) {\r\n\r\n if (!this.dom.$oItems || !init || this.state.lazyContent) { return false; }\r\n var pos = this.options.startPosition;\r\n\r\n if (this.options.startPosition === 'URLHash') {\r\n pos = this.options.startPosition = this.hashPosition();\r\n } else if (typeof this.options.startPosition !== Number && !this.options.center) {\r\n this.options.startPosition = 0;\r\n }\r\n this.dom.oStage.scrollLeft = 0;\r\n this.jumpTo(pos, true);\r\n };\r\n\r\n /**\r\n\t * goToHash\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.goToHash = function () {\r\n var pos = this.hashPosition();\r\n if (pos === false) {\r\n pos = 0;\r\n }\r\n this.dom.oStage.scrollLeft = 0;\r\n this.goTo(pos, this.options.navSpeed);\r\n };\r\n\r\n /**\r\n\t * hashPosition\r\n\t * @desc Find hash in URL then look into items to find contained ID\r\n\t * @since 2.0.0\r\n\t * return hashPos - number of item\r\n\t */\r\n\r\n Owl.prototype.hashPosition = function () {\r\n var hash = window.location.hash.substring(1),\r\n\t\t\thashPos;\r\n if (hash === \"\") { return false; }\r\n\r\n for (var i = 0; i < this.num.oItems; i++) {\r\n if (hash === this.dom.$oItems.eq(i).data('owl-item').hash) {\r\n hashPos = i;\r\n }\r\n }\r\n return hashPos;\r\n };\r\n\r\n /**\r\n\t * Autoplay\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.autoplay = function () {\r\n if (this.options.autoplay && !this.state.videoPlay) {\r\n window.clearInterval(this.e._autoplay);\r\n this.e._autoplay = window.setInterval(this.e._play, this.options.autoplayTimeout);\r\n } else {\r\n window.clearInterval(this.e._autoplay);\r\n this.state.autoplay = false;\r\n }\r\n };\r\n\r\n /**\r\n\t * play\r\n\t * @param [timeout] - Integrer\r\n\t * @param [speed] - Integrer\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.play = function (timeout, speed) {\r\n\r\n // if tab is inactive - doesnt work in = this.pos.max) {\r\n window.clearInterval(this.e._autoplay);\r\n this.goTo(0);\r\n } else {\r\n this.next(this.options.autoplaySpeed);\r\n }\r\n this.state.autoplay = true;\r\n };\r\n\r\n /**\r\n\t * stop\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.stop = function () {\r\n this._options.autoplay = this.options.autoplay = false;\r\n this.state.autoplay = false;\r\n window.clearInterval(this.e._autoplay);\r\n };\r\n\r\n Owl.prototype.pause = function () {\r\n window.clearInterval(this.e._autoplay);\r\n };\r\n\r\n /**\r\n\t * transitionEnd\r\n\t * @desc event used by css3 animation end and $.animate callback like transitionEnd,responsive etc.\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.transitionEnd = function (event) {\r\n\r\n // if css2 animation then event object is undefined \r\n if (event !== undefined) {\r\n event.stopPropagation();\r\n\r\n // Catch only owl-stage transitionEnd event\r\n var eventTarget = event.target || event.srcElement || event.originalTarget;\r\n if (eventTarget !== this.dom.stage) {\r\n return false;\r\n }\r\n }\r\n\r\n this.state.inMotion = false;\r\n this.updateItemState();\r\n this.autoplay();\r\n this.fireCallback('onTransitionEnd');\r\n };\r\n\r\n /**\r\n\t * isElWidthChanged\r\n\t * @desc Check if element width has changed\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.isElWidthChanged = function () {\r\n var newElWidth = this.dom.$el.width() - this.options.stagePadding,//to check\r\n\t\t\tprevElWidth = this.width.el + this.options.margin;\r\n return newElWidth !== prevElWidth;\r\n };\r\n\r\n /**\r\n\t * windowWidth\r\n\t * @desc Get Window/responsiveBaseElement width\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.windowWidth = function () {\r\n if (this.options.responsiveBaseElement !== window) {\r\n this.width.window = $(this.options.responsiveBaseElement).width();\r\n } else if (window.innerWidth) {\r\n this.width.window = window.innerWidth;\r\n } else if (document.documentElement && document.documentElement.clientWidth) {\r\n this.width.window = document.documentElement.clientWidth;\r\n }\r\n return this.width.window;\r\n };\r\n\r\n /**\r\n\t * Controls\r\n\t * @desc Calls controls container, navigation and dots creator\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.controls = function () {\r\n var cc = document.createElement('div');\r\n cc.className = this.options.controlsClass;\r\n this.dom.$el.append(cc);\r\n this.dom.$cc = $(cc);\r\n };\r\n\r\n /**\r\n\t * updateControls \r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.updateControls = function () {\r\n\r\n if (this.dom.$cc === null && (this.options.nav || this.options.dots)) {\r\n if (!this.options.navContainer || !this.options.dotsContainer) {\r\n this.controls();\r\n }\r\n }\r\n\r\n if (this.dom.$nav === null && this.options.nav) {\r\n this.createNavigation();\r\n }\r\n\r\n if (this.dom.$page === null && this.options.dots) {\r\n this.createDots();\r\n }\r\n\r\n if (this.dom.$nav !== null) {\r\n if (this.options.nav) {\r\n this.dom.$nav.show();\r\n this.updateNavigation();\r\n } else {\r\n this.dom.$nav.hide();\r\n }\r\n }\r\n\r\n if (this.dom.$page !== null) {\r\n if (this.options.dots) {\r\n this.dom.$page.show();\r\n this.updateDots();\r\n } else {\r\n this.dom.$page.hide();\r\n }\r\n }\r\n };\r\n\r\n /**\r\n\t * createNavigation\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.createNavigation = function () {\r\n\r\n var cc = this.options.navContainer ? $(this.options.navContainer).get(0) : this.dom.$cc.get(0);\r\n\r\n // Create nav container\r\n var nav = document.createElement('div');\r\n nav.className = this.options.navContainerClass;\r\n cc.appendChild(nav);\r\n\r\n // Create left and right buttons\r\n var navPrev = document.createElement('div'),\r\n\t\t\tnavNext = document.createElement('div');\r\n\r\n navPrev.className = this.options.navClass[0]; \r\n navNext.className = this.options.navClass[1];\r\n \r\n\r\n nav.appendChild(navPrev);\r\n nav.appendChild(navNext);\r\n\r\n this.dom.$nav = $(nav);\r\n this.dom.$navPrev = $(navPrev).html(this.options.navText[0]);\r\n this.dom.$navNext = $(navNext).html(this.options.navText[1]);\r\n\r\n // add events to do\r\n //this.on(navPrev, this.dragType[2], this.e._navPrev, false);\r\n //this.on(navNext, this.dragType[2], this.e._navNext, false);\r\n\r\n //FF fix?\r\n this.dom.$nav.on(this.dragType[2], '.' + this.options.navClass[0], this.e._navPrev);\r\n this.dom.$nav.on(this.dragType[2], '.' + this.options.navClass[1], this.e._navNext);\r\n };\r\n\r\n /**\r\n\t * createNavigation\r\n\t * @since 2.0.0\r\n\t * @param [cc] - dom element - Controls Container\r\n\t */\r\n\r\n Owl.prototype.createDots = function () {\r\n\r\n var cc = this.options.dotsContainer ? $(this.options.dotsContainer).get(0) : this.dom.$cc.get(0);\r\n\r\n // Create dots container\r\n var page = document.createElement('div');\r\n page.className = this.options.dotsClass;\r\n cc.appendChild(page);\r\n\r\n // save reference\r\n this.dom.$page = $(page);\r\n\r\n // add events\r\n //this.on(page, this.dragType[2], this.e._goToPage, false);\r\n\r\n // FF fix? To test!\r\n var that = this;\r\n this.dom.$page.on(this.dragType[2], '.' + this.options.dotClass, goToPage);\r\n\r\n function goToPage(e) {\r\n e.preventDefault();\r\n var page = $(this).data('page');\r\n that.goTo(page, that.options.dotsSpeed);\r\n }\r\n // build dots\r\n this.rebuildDots();\r\n };\r\n\r\n /**\r\n\t * rebuildDots\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.rebuildDots = function () {\r\n if (this.dom.$page === null) { return false; }\r\n var each, dot, span, counter = 0, last = 0, i, page = 0, roundPages = 0;\r\n\r\n each = this.options.dotsEach || this.options.items;\r\n\r\n // display full dots if center\r\n if (this.options.center || this.options.dotData) {\r\n each = 1;\r\n }\r\n\r\n // clear dots\r\n this.dom.$page.html('');\r\n\r\n for (i = 0; i < this.num.nav.length; i++) {\r\n\r\n if (counter >= each || counter === 0) {\r\n\r\n dot = document.createElement('div');\r\n dot.className = this.options.dotClass;\r\n span = document.createElement('span');\r\n dot.appendChild(span);\r\n var $dot = $(dot);\r\n\r\n if (this.options.dotData) {\r\n $dot.html(this.dom.$oItems.eq(i).data('owl-item').dot);\r\n }\r\n\r\n $dot.data('page', page);\r\n $dot.data('goToPage', roundPages);\r\n\r\n this.dom.$page.append(dot);\r\n\r\n counter = 0;\r\n roundPages++;\r\n }\r\n\r\n this.dom.$oItems.eq(i).data('owl-item').page = roundPages - 1;\r\n\r\n //add merged items\r\n counter += this.num.nav[i];\r\n page++;\r\n }\r\n // find rest of dots\r\n if (!this.options.loop && !this.options.center) {\r\n for (var j = this.num.nav.length - 1; j >= 0; j--) {\r\n last += this.num.nav[j];\r\n this.dom.$oItems.eq(j).data('owl-item').page = roundPages - 1;\r\n if (last >= each) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.num.allPages = roundPages - 1;\r\n };\r\n\r\n /**\r\n\t * updateDots\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.updateDots = function () {\r\n var dots = this.dom.$page.children();\r\n var itemIndex = this.dom.$oItems.eq(this.pos.current).data('owl-item').page;\r\n\r\n for (var i = 0; i < dots.length; i++) {\r\n var dotPage = dots.eq(i).data('goToPage');\r\n\r\n if (dotPage === itemIndex) {\r\n this.pos.currentPage = i;\r\n dots.eq(i).addClass('active');\r\n } else {\r\n dots.eq(i).removeClass('active');\r\n }\r\n }\r\n };\r\n\r\n /**\r\n\t * updateNavigation\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.updateNavigation = function () {\r\n\r\n var isNav = this.options.nav;\r\n\r\n this.dom.$navNext.toggleClass('disabled', !isNav);\r\n this.dom.$navPrev.toggleClass('disabled', !isNav);\r\n\r\n if (!this.options.loop && isNav && !this.options.navRewind) {\r\n\r\n if (this.pos.current <= 0) {\r\n this.dom.$navPrev.addClass('disabled');\r\n }\r\n if (this.pos.current >= this.pos.max) {\r\n this.dom.$navNext.addClass('disabled');\r\n }\r\n }\r\n };\r\n\r\n Owl.prototype.insertContent = function (content) {\r\n this.dom.$stage.empty();\r\n this.fetchContent(content);\r\n this.refresh();\r\n };\r\n\r\n /**\r\n\t * addItem - Add an item\r\n\t * @since 2.0.0\r\n\t * @param [content] - dom element / string '
content
'\r\n\t * @param [pos] - number - position\r\n\t */\r\n\r\n Owl.prototype.addItem = function (content, pos) {\r\n pos = pos || 0;\r\n\r\n if (this.state.lazyContent) {\r\n this.dom.$content = this.dom.$content.add($(content));\r\n this.updateItemState(true);\r\n } else {\r\n // wrap content\r\n var item = this.fillItem(content);\r\n // if carousel is empty then append item\r\n if (this.dom.$oItems.length === 0) {\r\n this.dom.$stage.append(item);\r\n } else {\r\n // append item\r\n var it = this.dom.$oItems.eq(pos);\r\n if (pos !== -1) { it.before(item); } else { it.after(item); }\r\n }\r\n // update and calculate carousel\r\n this.refresh();\r\n }\r\n\r\n };\r\n\r\n /**\r\n\t * removeItem - Remove an Item\r\n\t * @since 2.0.0\r\n\t * @param [pos] - number - position\r\n\t */\r\n\r\n Owl.prototype.removeItem = function (pos) {\r\n if (this.state.lazyContent) {\r\n this.dom.$content.splice(pos, 1);\r\n this.updateItemState(true);\r\n } else {\r\n this.dom.$oItems.eq(pos).remove();\r\n this.refresh();\r\n }\r\n };\r\n\r\n /**\r\n\t * addCustomEvents\r\n\t * @desc Add custom events by jQuery .on method\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.addCustomEvents = function () {\r\n\r\n this.e.next = function (e, s) { this.next(s); }.bind(this);\r\n this.e.prev = function (e, s) { this.prev(s); }.bind(this);\r\n this.e.goTo = function (e, p, s) { this.goTo(p, s); }.bind(this);\r\n this.e.jumpTo = function (e, p) { this.jumpTo(p); }.bind(this);\r\n this.e.addItem = function (e, c, p) { this.addItem(c, p); }.bind(this);\r\n this.e.removeItem = function (e, p) { this.removeItem(p); }.bind(this);\r\n this.e.refresh = function (e) { this.refresh(); }.bind(this);\r\n this.e.destroy = function (e) { this.destroy(); }.bind(this);\r\n this.e.autoHeight = function (e) { this.autoHeight(true); }.bind(this);\r\n this.e.stop = function () { this.stop(); }.bind(this);\r\n this.e.play = function (e, t, s) { this.play(t, s); }.bind(this);\r\n this.e.insertContent = function (e, d) { this.insertContent(d); }.bind(this);\r\n\r\n this.dom.$el.on('next.owl', this.e.next);\r\n this.dom.$el.on('prev.owl', this.e.prev);\r\n this.dom.$el.on('goTo.owl', this.e.goTo);\r\n this.dom.$el.on('jumpTo.owl', this.e.jumpTo);\r\n this.dom.$el.on('addItem.owl', this.e.addItem);\r\n this.dom.$el.on('removeItem.owl', this.e.removeItem);\r\n this.dom.$el.on('destroy.owl', this.e.destroy);\r\n this.dom.$el.on('refresh.owl', this.e.refresh);\r\n this.dom.$el.on('autoHeight.owl', this.e.autoHeight);\r\n this.dom.$el.on('play.owl', this.e.play);\r\n this.dom.$el.on('stop.owl', this.e.stop);\r\n this.dom.$el.on('stopVideo.owl', this.e.stop);\r\n this.dom.$el.on('insertContent.owl', this.e.insertContent);\r\n\r\n };\r\n\r\n /**\r\n\t * on\r\n\t * @desc On method for adding internal events\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.on = function (element, event, listener, capture) {\r\n\r\n if (element.addEventListener) {\r\n element.addEventListener(event, listener, capture);\r\n }\r\n else if (element.attachEvent) {\r\n element.attachEvent('on' + event, listener);\r\n }\r\n };\r\n\r\n /**\r\n\t * off\r\n\t * @desc Off method for removing internal events\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.off = function (element, event, listener, capture) {\r\n if (element.removeEventListener) {\r\n element.removeEventListener(event, listener, capture);\r\n }\r\n else if (element.detachEvent) {\r\n element.detachEvent('on' + event, listener);\r\n }\r\n };\r\n\r\n /**\r\n\t * fireCallback\r\n\t * @since 2.0.0\r\n\t * @param event - string - event name\r\n\t * @param data - object - additional options - to do\r\n\t */\r\n\r\n Owl.prototype.fireCallback = function (event, data) {\r\n if (!this.options.callbacks) { return; }\r\n\r\n if (typeof this.options[event] === 'function') {\r\n this.options[event].apply(this, [this.dom.el, this.info, event]);\r\n }\r\n\r\n if (this.dom.el.dispatchEvent) {\r\n\r\n // dispatch event\r\n var evt = document.createEvent('CustomEvent');\r\n\r\n //evt.initEvent(event, false, true );\r\n evt.initCustomEvent(event, true, true, data);\r\n return this.dom.el.dispatchEvent(evt);\r\n\r\n } else if (!this.dom.el.dispatchEvent) {\r\n\r\n //\tThere is no clean solution for custom events name in <=IE8 \r\n //\tBut if you know better way, please let me know :) \r\n return this.dom.$el.trigger(event);\r\n }\r\n };\r\n\r\n /**\r\n\t * watchVisibility\r\n\t * @desc check if el is visible - handy if Owl is inside hidden content (tabs etc.)\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.watchVisibility = function () {\r\n\r\n // test on zepto\r\n if (!isElVisible(this.dom.el)) {\r\n this.dom.$el.addClass('owl-hidden');\r\n window.clearInterval(this.e._checkVisibile);\r\n this.e._checkVisibile = window.setInterval(checkVisible.bind(this), 500);\r\n }\r\n\r\n function isElVisible(el) {\r\n return el.offsetWidth > 0 && el.offsetHeight > 0;\r\n }\r\n\r\n function checkVisible() {\r\n if (isElVisible(this.dom.el)) {\r\n this.dom.$el.removeClass('owl-hidden');\r\n this.refresh();\r\n window.clearInterval(this.e._checkVisibile);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n\t * onChange\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.onChange = function () {\r\n\r\n if (!this.state.isTouch && !this.state.bypass && !this.state.responsive) {\r\n\r\n if (this.options.nav || this.options.dots) {\r\n this.updateControls();\r\n }\r\n this.autoHeight();\r\n\r\n this.fireCallback('onChangeState');\r\n }\r\n\r\n if (!this.state.isTouch && !this.state.bypass) {\r\n\r\n if (!this.state.lazyContent) {\r\n this.updateActiveItems();\r\n }\r\n\r\n // set Status to do\r\n this.storeInfo();\r\n\r\n // stopVideo \r\n if (this.state.videoPlay) {\r\n this.stopVideo();\r\n }\r\n }\r\n };\r\n\r\n /**\r\n\t * storeInfo\r\n\t * store basic information about current states\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.storeInfo = function () {\r\n var currentPosition = this.state.lazyContent ? this.pos.lcCurrentAbs || 0 : this.pos.current;\r\n var allItems = this.state.lazyContent ? this.dom.$content.length - 1 : this.num.oItems;\r\n\r\n this.info = {\r\n items: this.options.items,\r\n allItems: allItems,\r\n currentPosition: currentPosition,\r\n currentPage: this.pos.currentPage,\r\n allPages: this.num.allPages,\r\n autoplay: this.state.autoplay,\r\n windowWidth: this.width.window,\r\n elWidth: this.width.el,\r\n breakpoint: this.num.breakpoint\r\n };\r\n\r\n if (typeof this.options.info === 'function') {\r\n this.options.info.apply(this, [this.info, this.dom.el]);\r\n }\r\n };\r\n\r\n /**\r\n\t * autoHeight\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.autoHeight = function (callback) {\r\n if (this.options.autoHeight !== true && callback !== true) {\r\n return false;\r\n }\r\n if (!this.dom.$oStage.hasClass(this.options.autoHeightClass)) {\r\n this.dom.$oStage.addClass(this.options.autoHeightClass);\r\n }\r\n\r\n var loaded = this.dom.$items.eq(this.pos.currentAbs);\r\n var stage = this.dom.$oStage;\r\n var iterations = 0;\r\n\r\n var isLoaded = window.setInterval(function () {\r\n iterations += 1;\r\n if (loaded.data('owl-item').loaded) {\r\n stage.height(loaded.height() + 'px');\r\n clearInterval(isLoaded);\r\n } else if (iterations === 500) {\r\n clearInterval(isLoaded);\r\n }\r\n }, 100);\r\n };\r\n\r\n /**\r\n\t * preloadAutoWidthImages\r\n\t * @desc still to test\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.preloadAutoWidthImages = function (imgs) {\r\n var loaded = 0;\r\n var that = this;\r\n imgs.each(function (i, el) {\r\n var $el = $(el);\r\n var img = new Image();\r\n\r\n img.onload = function () {\r\n loaded++;\r\n $el.attr('src', img.src);\r\n $el.css('opacity', 1);\r\n if (loaded >= imgs.length) {\r\n that.state.imagesLoaded = true;\r\n that.init();\r\n }\r\n }\r\n\r\n img.src = $el.attr('src') || $el.attr('data-src') || $el.attr('data-src-retina');;\r\n })\r\n };\r\n\r\n /**\r\n\t * lazyLoad\r\n\t * @desc lazyLoad images\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.lazyLoad = function () {\r\n var attr = isRetina() ? 'data-src-retina' : 'data-src';\r\n var src, img, i;\r\n\r\n for (i = 0; i < this.num.items; i++) {\r\n var $item = this.dom.$items.eq(i);\r\n\r\n if ($item.data('owl-item').current === true && $item.data('owl-item').loaded === false) {\r\n img = $item.find('.owl-lazy');\r\n src = img.attr(attr);\r\n src = src || img.attr('data-src');\r\n if (src) {\r\n img.css('opacity', '0');\r\n this.preload(img, $item);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n\t * preload\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.preload = function (images, $item) {\r\n var that = this; // fix this later\r\n\r\n images.each(function (i, el) {\r\n var $el = $(el);\r\n var img = new Image();\r\n var srcType = isRetina() ? $el.attr('data-src-retina') : $el.attr('data-src');\r\n var srcType = srcType || $el.attr('data-src');\r\n\r\n img.onload = function () {\r\n\r\n $item.data('owl-item').loaded = true;\r\n if ($el.is('img')) {\r\n $el.attr('src', img.src);\r\n } else {\r\n $el.css('background-image', 'url(' + img.src + ')');\r\n }\r\n\r\n $el.css('opacity', 1);\r\n that.fireCallback('onLazyLoaded');\r\n };\r\n img.src = srcType;\r\n });\r\n };\r\n\r\n /**\r\n\t * animate\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.animate = function () {\r\n\r\n var prevItem = this.dom.$items.eq(this.pos.prev),\r\n\t\t\tprevPos = Math.abs(prevItem.data('owl-item').width) * this.pos.prev,\r\n\t\t\tcurrentItem = this.dom.$items.eq(this.pos.currentAbs),\r\n\t\t\tcurrentPos = Math.abs(currentItem.data('owl-item').width) * this.pos.currentAbs;\r\n\r\n if (this.pos.currentAbs === this.pos.prev) {\r\n return false;\r\n }\r\n\r\n var pos = currentPos - prevPos;\r\n var tIn = this.options.animateIn;\r\n var tOut = this.options.animateOut;\r\n var that = this;\r\n\r\n removeStyles = function () {\r\n $(this).css({\r\n \"left\": \"\"\r\n })\r\n .removeClass('animated owl-animated-out owl-animated-in')\r\n .removeClass(tIn)\r\n .removeClass(tOut);\r\n\r\n that.transitionEnd();\r\n };\r\n\r\n if (tOut) {\r\n prevItem\r\n\t\t\t.css({\r\n\t\t\t \"left\": pos + \"px\"\r\n\t\t\t})\r\n\t\t\t.addClass('animated owl-animated-out ' + tOut)\r\n\t\t\t.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', removeStyles);\r\n }\r\n\r\n if (tIn) {\r\n currentItem\r\n\t\t\t.addClass('animated owl-animated-in ' + tIn)\r\n\t\t\t.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', removeStyles);\r\n }\r\n };\r\n\r\n /**\r\n\t * destroy\r\n\t * @desc Remove Owl structure and events :(\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.destroy = function () {\r\n\r\n window.clearInterval(this.e._autoplay);\r\n\r\n if (this.dom.$el.hasClass(this.options.themeClass)) {\r\n this.dom.$el.removeClass(this.options.themeClass);\r\n }\r\n\r\n if (this.options.responsive !== false) {\r\n this.off(window, 'resize', this.e._resizer);\r\n }\r\n\r\n if (this.transitionEndVendor) {\r\n this.off(this.dom.stage, this.transitionEndVendor, this.e._transitionEnd);\r\n }\r\n\r\n if (this.options.mouseDrag || this.options.touchDrag) {\r\n this.off(this.dom.stage, this.dragType[0], this.e._onDragStart);\r\n if (this.options.mouseDrag) {\r\n this.off(document, this.dragType[3], this.e._onDragStart);\r\n }\r\n if (this.options.mouseDrag) {\r\n this.dom.$stage.off('dragstart', function () { return false; });\r\n this.dom.stage.onselectstart = function () { };\r\n }\r\n }\r\n\r\n if (this.options.URLhashListener) {\r\n this.off(window, 'hashchange', this.e._goToHash);\r\n }\r\n\r\n this.dom.$el.off('next.owl', this.e.next);\r\n this.dom.$el.off('prev.owl', this.e.prev);\r\n this.dom.$el.off('goTo.owl', this.e.goTo);\r\n this.dom.$el.off('jumpTo.owl', this.e.jumpTo);\r\n this.dom.$el.off('addItem.owl', this.e.addItem);\r\n this.dom.$el.off('removeItem.owl', this.e.removeItem);\r\n this.dom.$el.off('refresh.owl', this.e.refresh);\r\n this.dom.$el.off('autoHeight.owl', this.e.autoHeight);\r\n this.dom.$el.off('play.owl', this.e.play);\r\n this.dom.$el.off('stop.owl', this.e.stop);\r\n this.dom.$el.off('stopVideo.owl', this.e.stop);\r\n this.dom.$stage.off('click', this.e._playVideo);\r\n\r\n if (this.dom.$cc !== null) {\r\n this.dom.$cc.remove();\r\n }\r\n if (this.dom.$cItems !== null) {\r\n this.dom.$cItems.remove();\r\n }\r\n this.e = null;\r\n this.dom.$el.data('owlCarousel', null);\r\n delete this.dom.el.owlCarousel;\r\n\r\n this.dom.$stage.unwrap();\r\n this.dom.$items.unwrap();\r\n this.dom.$items.contents().unwrap();\r\n this.dom = null;\r\n };\r\n\r\n /**\r\n\t * Opertators \r\n\t * @desc Used to calculate RTL\r\n\t * @param [a] - Number - left side\r\n\t * @param [o] - String - operator \r\n\t * @param [b] - Number - right side\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.op = function (a, o, b) {\r\n var rtl = this.options.rtl;\r\n switch (o) {\r\n case '<':\r\n return rtl ? a > b : a < b;\r\n case '>':\r\n return rtl ? a < b : a > b;\r\n case '>=':\r\n return rtl ? a <= b : a >= b;\r\n case '<=':\r\n return rtl ? a >= b : a <= b;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n\t * Opertators \r\n\t * @desc Used to calculate RTL\r\n\t * @since 2.0.0\r\n\t */\r\n\r\n Owl.prototype.browserSupport = function () {\r\n this.support3d = isPerspective();\r\n\r\n if (this.support3d) {\r\n this.transformVendor = isTransform();\r\n\r\n // take transitionend event name by detecting transition\r\n var endVendors = ['transitionend', 'webkitTransitionEnd', 'transitionend', 'oTransitionEnd'];\r\n this.transitionEndVendor = endVendors[isTransition()];\r\n\r\n // take vendor name from transform name\r\n this.vendorName = this.transformVendor.replace(/Transform/i, '');\r\n this.vendorName = this.vendorName !== '' ? '-' + this.vendorName.toLowerCase() + '-' : '';\r\n }\r\n\r\n this.state.orientation = window.orientation;\r\n };\r\n\r\n // Pivate methods \r\n\r\n // CSS detection;\r\n function isStyleSupported(array) {\r\n var p, s, fake = document.createElement('div'), list = array;\r\n for (p in list) {\r\n s = list[p];\r\n if (typeof fake.style[s] !== 'undefined') {\r\n fake = null;\r\n return [s, p];\r\n }\r\n }\r\n return [false];\r\n }\r\n\r\n function isTransition() {\r\n return isStyleSupported(['transition', 'WebkitTransition', 'MozTransition', 'OTransition'])[1];\r\n }\r\n\r\n function isTransform() {\r\n return isStyleSupported(['transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform'])[0];\r\n }\r\n\r\n function isPerspective() {\r\n return isStyleSupported(['perspective', 'webkitPerspective', 'MozPerspective', 'OPerspective', 'MsPerspective'])[0];\r\n }\r\n\r\n function isTouchSupport() {\r\n return 'ontouchstart' in window || !!(navigator.msMaxTouchPoints);\r\n }\r\n\r\n function isTouchSupportIE() {\r\n return window.navigator.msPointerEnabled;\r\n }\r\n\r\n function isRetina() {\r\n return window.devicePixelRatio > 1;\r\n }\r\n\r\n $.fn.owlCarousel = function (options) {\r\n return this.each(function () {\r\n if (!$(this).data('owlCarousel')) {\r\n $(this).data('owlCarousel',\r\n\t\t\t\tnew Owl(this, options));\r\n }\r\n });\r\n\r\n };\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n//https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind\r\n//The bind() method creates a new function that, when called, has its this keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function is called.\r\n\r\nif (!Function.prototype.bind) {\r\n Function.prototype.bind = function (oThis) {\r\n if (typeof this !== 'function') {\r\n // closest thing possible to the ECMAScript 5 internal IsCallable function\r\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\r\n }\r\n\r\n var aArgs = Array.prototype.slice.call(arguments, 1),\r\n fToBind = this,\r\n fNOP = function () { },\r\n fBound = function () {\r\n return fToBind.apply(this instanceof fNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\r\n };\r\n fNOP.prototype = this.prototype;\r\n fBound.prototype = new fNOP();\r\n return fBound;\r\n };\r\n}\r\n"],"names":["$","window","document","undefined","defaults","items","loop","center","mouseDrag","touchDrag","pullDrag","freeDrag","margin","stagePadding","merge","mergeFit","autoWidth","autoHeight","startPosition","URLhashListener","nav","navRewind","navText","slideBy","dots","dotsEach","dotData","lazyLoad","lazyContent","autoplay","autoplayTimeout","autoplayHoverPause","smartSpeed","fluidSpeed","autoplaySpeed","navSpeed","dotsSpeed","dragEndSpeed","responsive","responsiveRefreshRate","responsiveBaseElement","responsiveClass","video","videoHeight","videoWidth","animateOut","animateIn","fallbackEasing","callbacks","info","nestedItemSelector","itemElement","stageElement","navContainer","dotsContainer","themeClass","baseClass","itemClass","centerClass","activeClass","navContainerClass","navClass","controlsClass","dotClass","dotsClass","autoHeightClass","dom","el","$el","stage","$stage","oStage","$oStage","$items","$oItems","$cItems","$cc","$navPrev","$navNext","$page","$nav","$content","width","item","prevWindow","cloneLast","num","oItems","cItems","active","merged","allPages","pos","start","max","maxValue","prev","current","currentAbs","currentPage","lsCurrent","drag","startX","startY","currentX","currentY","offsetX","offsetY","distance","startTime","endTime","updatedX","targetEl","speed","onDragEnd","css2speed","state","isTouch","isScrolling","isSwiping","direction","inMotion","e","_onDragStart","_onDragMove","_onDragEnd","_transitionEnd","_resizer","_responsiveCall","_goToLoop","_checkVisibile","_autoplay","_pause","_play","_stop","Owl","element","options","owlCarousel","name","author","version","released","this","extend","_options","init","isStyleSupported","array","p","s","fake","createElement","list","style","isRetina","devicePixelRatio","prototype","fireCallback","hasClass","addClass","rtl","browserSupport","sortOptions","setResponsiveOptions","imagesLoaded","imgs","find","nestedSelector","children","length","preloadAutoWidthImages","windowWidth","createStage","fetchContent","eventsCall","addCustomEvents","internalEvents","refresh","removeClass","i","j","k","resOpt","keys","responsiveSorted","push","sort","a","b","minWidth","breakpoint","attr","c","replace","optionsLogic","toggleClass","support3d","animate","className","appendChild","createItem","extContent","jQuery","not","initStructure","remove","createNormalStructure","fillItem","append","createCustomStructure","howManyItems","emptyItem","setData","createLazyContentStructure","empty","content","traversed","traversContent","dotValue","hashValue","$c","dot","andSelf","data","hash","cloneObj","itemData","index","indexAbs","posLeft","clone","loaded","page","hasVideo","playVideo","updateLocalContent","filter","eq","checkVideoLinks","videoEl","hasVideos","css","getVideoInfo","type","id","vimeoId","youTubeId","height","url","Error","match","indexOf","videoType","videoId","wrap","createVideoTn","tnLink","customTn","srcType","lazyClass","that","addThumbnail","tnPath","after","ajax","jsonp","dataType","success","thumbnail_large","updateItemState","stopVideo","videoPlayIndex","videoPlay","ev","videoLink","target","srcElement","closest","Math","floor","videoWrap","loopClone","lastNum","first","last","firstClone","lastClone","prepend","reClone","calculate","dist","fullWidth","elMinusMargin","view","toFixed","mergeStage","mergeNumber","parseInt","iWidth","marginLeft","marginRight","abs","allItems","setMinMax","setSizes","minimum","min","minValue","revert","paddingLeft","paddingRight","setTimeout","bind","stagePrev","fullscreenElement","isElWidthChanged","mozFullScreenElement","webkitFullscreenElement","parentNode","setSpeed","isFullScreen","orientation","hide","initPosition","jumpTo","rebuildDots","updateControls","watchVisibility","update","updateLazyContent","updateActiveItems","ipos","outsideView","foundCurrent","stageX","iwidth","op","updateClonedItemsState","activeIndex","updateLazyPosition","goToLazyContent","lcMovedBy","lcCurrent","lcDirection","lcCurrentAbs","freshItem","freshData","appendTo","prependTo","contentPos","animStage","onDragStart","onDragMove","transitionEnd","responsiveTimer","_preventClick","preventClick","_goToHash","goToHash","_goToPage","goToPage","_ap","play","pause","_playVideo","_navNext","preventDefault","next","_navPrev","clearInterval","clearTimeout","resizeTimer","navigator","isTouchIE","msPointerEnabled","dragType","on","onselectstart","transitionEndVendor","updateEvents","off","event","originalEvent","which","Date","getTime","isTouchEvent","pageX","targetTouches","clientX","pageY","clientY","position","left","top","animatedPos","getTransformProperty","pull","returnValue","compareTimes","removeClick","stopPropagation","transform","getComputedStyle","getPropertyValue","vendorName","split","x","newX","posX","translate","transformVendor","onChange","updatePosition","nextPos","diff","webkitTransitionDuration","MsTransitionDuration","msTransitionDuration","MozTransitionDuration","OTransitionDuration","transitionDuration","goTo","optionalSpeed","goToLoop","prevPosition","newPosition","bypass","hashPosition","Number","scrollLeft","hashPos","location","substring","setInterval","timeout","hidden","stop","originalTarget","innerWidth","documentElement","clientWidth","controls","cc","createNavigation","createDots","show","updateNavigation","updateDots","get","navPrev","navNext","html","$dot","counter","roundPages","each","span","itemIndex","isNav","insertContent","addItem","it","add","before","removeItem","splice","destroy","t","d","listener","capture","addEventListener","attachEvent","removeEventListener","detachEvent","evt","apply","dispatchEvent","createEvent","initCustomEvent","trigger","isElVisible","offsetWidth","offsetHeight","storeInfo","currentPosition","elWidth","callback","iterations","isLoaded","img","Image","onload","src","$item","preload","images","is","prevItem","prevPos","currentItem","currentPos","tIn","tOut","removeStyles","one","unwrap","contents","o","toLowerCase","fn","Zepto","Function","oThis","TypeError","fBound","fToBind","fNOP","aArgs","concat","Array","slice","call","arguments"],"mappings":"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"}