{"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 = $('