{"version":3,"sources":["webpack:///chunk.tab.868a00ef9a4b54239a47.js","webpack:///./js/plugins/jquery.waitforimages.js?1c54","webpack:///./js/app/generic/generic.tab.js","webpack:///./js/app/modules/helpers.js","webpack:///./js/plugins/owl.carousel.js"],"names":["webpackJsonp",7,"module","exports","__webpack_require__","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","factory","apply","undefined","$","eventNamespace","waitForImages","hasImageProperties","hasImageAttributes","expr","obj","is","uncached","complete","fn","finishedCallback","eachCallback","waitForAll","allImgsLength","allImgsLoaded","deferred","Deferred","isPlainObject","arguments","each","finished","length","type","noop","isFunction","TypeError","this","allImgs","hasImgProperties","matchUrl","find","addBack","element","push","src","attr","i","property","match","propertyValue","css","exec","attribute","attributeValues","attributeValue","split","value","trim","call","resolveWith","img","image","Image","events","one","me","event","eachArguments","notifyWith","off","promise",29,"root","Tabs","el","options","helpers","settings","extend","_defaults","tablist","container","controller","tabs","carousel","tween","tween1","init","window","on","resize","bind","addEventListener","debounce","prototype","effect","defaultTab","carouseled","tabsPosition","horizontalPosition","verticalPosition","theme","arEffects","addClass","wrap","children","parent","setTabContainerClasses","controlls","createControlsOrTabs","setControllsToCorrectPos","verticalTabsWidth","outerWidth","verticalTabsHeight","outerHeight","verticalContentWidth","verticalContentHeight","width","first","removeClass","defaultTabImages","k","not","trigger","data","iniControllsCarousel","tabLinkClick","LazyLoad","elements_selector","to_webp","skip_invisible","currentTab","filter","curremtTabHeight","Math","ceil","minHei","parseInt","hasClass","animateHeight","oldHeight","newHeight","time","newtime","tweenPromote","TimelineMax","onComplete","tweenComplete","to","minHeight","play","switchSlides","oldTab","newTab","tweenSwitchClassChange","fromTo","visibility","opacity","images","parents","removeAttr","progress","pause","destroy","className","inArray","insidesTab","l","link","eq","id","tab","last","after","insides","$this","title","html","prepend","append","updateCarousel","document","owlCarousel","loop","nav","navText","navClass","responsive","items",768,"active","index","len","isNaN","max","App","globals","isMobileSmall","min","e","preventDefault","target","tabId","self","ajax","url","success","loader","error",68,"f","ms","isCooldown","setTimeout",88,"Owl","Defaults","$element","drag","state","_plugins","_supress","_current","_speed","_coordinates","_breakpoint","_width","_items","_clones","_mergers","_invalidated","_pipe","Plugins","proxy","key","plugin","toLowerCase","slice","Pipe","priority","worker","run","setup","initialize","getTouches","touches","x","pageX","y","pageY","clientX","clientY","isStyleSupported","array","p","s","fake","createElement","list","style","isTransition","isTransform","isPerspective","isTouchSupport","navigator","isTouchSupportIE","msPointerEnabled","start","startX","startY","current","currentX","currentY","offsetX","offsetY","distance","startTime","endTime","updatedX","targetEl","isTouch","isScrolling","isSwiping","direction","inMotion","_onDragStart","_onDragMove","_onDragEnd","_transitionEnd","_resizer","_responsiveCall","_goToLoop","_checkVisibile","center","mouseDrag","touchDrag","pullDrag","freeDrag","margin","stagePadding","merge","mergeFit","autoWidth","startPosition","rtl","smartSpeed","fluidSpeed","dragEndSpeed","responsiveRefreshRate","responsiveBaseElement","responsiveClass","fallbackEasing","info","nestedItemSelector","itemElement","stageElement","themeClass","baseClass","itemClass","centerClass","activeClass","Width","Default","Inner","Outer","cache","relative","cached","clones","$stage","remove","n","delta","abs","pop","clone","toFixed","coordinate","padding-left","padding-right","grep","v","reset","animate","coordinates","inner","outer","padding","begin","end","matches","op","join","toggleClass","browserSupport","imagesLoaded","imgs","nestedSelector","preloadAutoWidthImages","replace","refresh","eventsCall","internalEvents","addTriggerableEvents","viewport","overwrites","breakpoint","c","name","invalidate","optionsLogic","prepare","item","content","update","all","dimension","Date","getTime","orientation","watchVisibility","onDragStart","onDragMove","onDragEnd","_onResize","onResize","transitionEnd","_preventClick","preventClick","onThrottledResize","clearTimeout","resizeTimer","isDefaultPrevented","eventsRouter","isTouchIE","get","onselectstart","transitionEndVendor","ev","animatedPos","originalEvent","which","speed","position","left","top","support3d","getTransformProperty","srcElement","tagName","draggable","minValue","maxValue","pull","minimum","maximum","returnValue","compareTimes","distanceAbs","closest","removeAttribute","removeClick","stopPropagation","transform","matrix3d","getComputedStyle","getPropertyValue","vendorName","transition","normalize","part","suppress","release","isNumeric","revert","mergers","odd","even","map","duration","from","factor","before","next","prev","originalTarget","innerWidth","documentElement","clientWidth","empty","jQuery","nodeType","andSelf","add","splice","handler","callback","relatedTarget","isElVisible","offsetWidth","offsetHeight","checkVisible","clearInterval","setInterval","loaded","that","$el","onload","removeData","contents","unwrap","a","o","b","listener","capture","attachEvent","removeEventListener","detachEvent","namespace","status","count","camelCase","Event","onTrigger","transformVendor","endVendors","Constructor","Zepto","Lazy","_core","_loaded","_handlers","initialized.owl.carousel change.owl.carousel","lazyLoad","load","$item","$elements","devicePixelRatio","background-image","handlers","Object","getOwnPropertyNames","AutoHeight","initialized.owl.carousel","autoHeight","changed.owl.carousel","loaded.owl.lazy","autoHeightClass","height","Video","_videos","_playing","_fullscreen","resize.owl.carousel","video","isInFullScreen","refresh.owl.carousel changed.owl.carousel","stop","prepared.owl.carousel","fetch","videoHeight","videoWidth","Error","indexOf","thumbnail","tnLink","icon","path","dimensions","customTn","srcType","lazyClass","create","jsonp","dataType","thumbnail_large","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","Animate","scope","core","swapping","previous","change.owl.carousel","drag.owl.carousel dragged.owl.carousel translated.owl.carousel","translate.owl.carousel","animateOut","animateIn","swap","clear","incoming","outgoing","Autoplay","translated.owl.carousel refreshed.owl.carousel","autoplay","play.owl.autoplay","t","stop.owl.autoplay","mouseover.owl.autoplay","autoplayHoverPause","mouseleave.owl.autoplay","autoplayTimeout","autoplaySpeed","videoPlay","interval","hidden","Navigation","_initialized","_pages","_controls","_templates","_overrides","dotsData","add.owl.carousel","remove.owl.carousel prepared.owl.carousel","navRewind","draw","refreshed.owl.carousel","navSpeed","navElement","navContainer","navContainerClass","slideBy","dotClass","dotsClass","dots","dotsEach","dotData","dotsSpeed","dotsContainer","controlsClass","$container","override","prop","appendTo","$indicators","hide","prependTo","$next","$previous","control","overides","j","lower","upper","size","difference","toggle","Array","page","getPosition","successor","standard","Hash","_hashes","hash","location","substring","URLhashListener"],"mappings":"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","file":"chunk.tab.868a00ef9a4b54239a47.js","sourcesContent":["webpackJsonp([5],{\n\n/***/ 7:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! waitForImages jQuery Plugin - v2.0.2 - 2015-06-02\r\n\t* https://github.com/alexanderdickson/waitForImages\r\n\t* Copyright (c) 2015 Alex Dickson; Licensed MIT */\r\n\t;(function (factory) {\r\n\t if (true) {\r\n\t // AMD. Register as an anonymous module.\r\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t } else if (typeof exports === 'object') {\r\n\t // CommonJS / nodejs module\r\n\t module.exports = factory(require('jquery'));\r\n\t } else {\r\n\t // Browser globals\r\n\t factory(jQuery);\r\n\t }\r\n\t}(function ($) {\r\n\t // Namespace all events.\r\n\t var eventNamespace = 'waitForImages';\r\n\t\r\n\t // CSS properties which contain references to images.\r\n\t $.waitForImages = {\r\n\t hasImageProperties: [\r\n\t 'backgroundImage',\r\n\t 'listStyleImage',\r\n\t 'borderImage',\r\n\t 'borderCornerImage',\r\n\t 'cursor'\r\n\t ],\r\n\t hasImageAttributes: ['srcset']\r\n\t };\r\n\t\r\n\t // Custom selector to find all `img` elements with a valid `src` attribute.\r\n\t $.expr[':']['has-src'] = function (obj) {\r\n\t // Ensure we are dealing with an `img` element with a valid\r\n\t // `src` attribute.\r\n\t return $(obj).is('img[src][src!=\"\"]');\r\n\t };\r\n\t\r\n\t // Custom selector to find images which are not already cached by the\r\n\t // browser.\r\n\t $.expr[':'].uncached = function (obj) {\r\n\t // Ensure we are dealing with an `img` element with a valid\r\n\t // `src` attribute.\r\n\t if (!$(obj).is(':has-src')) {\r\n\t return false;\r\n\t }\r\n\t\r\n\t return !obj.complete;\r\n\t };\r\n\t\r\n\t $.fn.waitForImages = function () {\r\n\t\r\n\t var allImgsLength = 0;\r\n\t var allImgsLoaded = 0;\r\n\t var deferred = $.Deferred();\r\n\t\r\n\t var finishedCallback;\r\n\t var eachCallback;\r\n\t var waitForAll;\r\n\t\r\n\t // Handle options object (if passed).\r\n\t if ($.isPlainObject(arguments[0])) {\r\n\t\r\n\t waitForAll = arguments[0].waitForAll;\r\n\t eachCallback = arguments[0].each;\r\n\t finishedCallback = arguments[0].finished;\r\n\t\r\n\t } else {\r\n\t\r\n\t // Handle if using deferred object and only one param was passed in.\r\n\t if (arguments.length === 1 && $.type(arguments[0]) === 'boolean') {\r\n\t waitForAll = arguments[0];\r\n\t } else {\r\n\t finishedCallback = arguments[0];\r\n\t eachCallback = arguments[1];\r\n\t waitForAll = arguments[2];\r\n\t }\r\n\t\r\n\t }\r\n\t\r\n\t // Handle missing callbacks.\r\n\t finishedCallback = finishedCallback || $.noop;\r\n\t eachCallback = eachCallback || $.noop;\r\n\t\r\n\t // Convert waitForAll to Boolean\r\n\t waitForAll = !! waitForAll;\r\n\t\r\n\t // Ensure callbacks are functions.\r\n\t if (!$.isFunction(finishedCallback) || !$.isFunction(eachCallback)) {\r\n\t throw new TypeError('An invalid callback was supplied.');\r\n\t }\r\n\t\r\n\t this.each(function () {\r\n\t // Build a list of all imgs, dependent on what images will\r\n\t // be considered.\r\n\t var obj = $(this);\r\n\t var allImgs = [];\r\n\t // CSS properties which may contain an image.\r\n\t var hasImgProperties = $.waitForImages.hasImageProperties || [];\r\n\t // Element attributes which may contain an image.\r\n\t var hasImageAttributes = $.waitForImages.hasImageAttributes || [];\r\n\t // To match `url()` references.\r\n\t // Spec: http://www.w3.org/TR/CSS2/syndata.html#value-def-uri\r\n\t var matchUrl = /url\\(\\s*(['\"]?)(.*?)\\1\\s*\\)/g;\r\n\t\r\n\t if (waitForAll) {\r\n\t\r\n\t // Get all elements (including the original), as any one of\r\n\t // them could have a background image.\r\n\t obj.find('*').addBack().each(function () {\r\n\t var element = $(this);\r\n\t\r\n\t // If an `img` element, add it. But keep iterating in\r\n\t // case it has a background image too.\r\n\t if (element.is('img:has-src')) {\r\n\t allImgs.push({\r\n\t src: element.attr('src'),\r\n\t element: element[0]\r\n\t });\r\n\t }\r\n\t\r\n\t $.each(hasImgProperties, function (i, property) {\r\n\t var propertyValue = element.css(property);\r\n\t var match;\r\n\t\r\n\t // If it doesn't contain this property, skip.\r\n\t if (!propertyValue) {\r\n\t return true;\r\n\t }\r\n\t\r\n\t // Get all url() of this element.\r\n\t while (match = matchUrl.exec(propertyValue)) {\r\n\t allImgs.push({\r\n\t src: match[2],\r\n\t element: element[0]\r\n\t });\r\n\t }\r\n\t });\r\n\t\r\n\t $.each(hasImageAttributes, function (i, attribute) {\r\n\t var attributeValue = element.attr(attribute);\r\n\t var attributeValues;\r\n\t\r\n\t // If it doesn't contain this property, skip.\r\n\t if (!attributeValue) {\r\n\t return true;\r\n\t }\r\n\t\r\n\t // Check for multiple comma separated images\r\n\t attributeValues = attributeValue.split(',');\r\n\t\r\n\t $.each(attributeValues, function(i, value) {\r\n\t // Trim value and get string before first\r\n\t // whitespace (for use with srcset).\r\n\t value = $.trim(value).split(' ')[0];\r\n\t allImgs.push({\r\n\t src: value,\r\n\t element: element[0]\r\n\t });\r\n\t });\r\n\t });\r\n\t });\r\n\t } else {\r\n\t // For images only, the task is simpler.\r\n\t obj.find('img:has-src')\r\n\t .each(function () {\r\n\t allImgs.push({\r\n\t src: this.src,\r\n\t element: this\r\n\t });\r\n\t });\r\n\t }\r\n\t\r\n\t allImgsLength = allImgs.length;\r\n\t allImgsLoaded = 0;\r\n\t\r\n\t // If no images found, don't bother.\r\n\t if (allImgsLength === 0) {\r\n\t finishedCallback.call(obj[0]);\r\n\t deferred.resolveWith(obj[0]);\r\n\t }\r\n\t\r\n\t $.each(allImgs, function (i, img) {\r\n\t\r\n\t var image = new Image();\r\n\t var events =\r\n\t 'load.' + eventNamespace + ' error.' + eventNamespace;\r\n\t\r\n\t // Handle the image loading and error with the same callback.\r\n\t $(image).one(events, function me (event) {\r\n\t // If an error occurred with loading the image, set the\r\n\t // third argument accordingly.\r\n\t var eachArguments = [\r\n\t allImgsLoaded,\r\n\t allImgsLength,\r\n\t event.type == 'load'\r\n\t ];\r\n\t allImgsLoaded++;\r\n\t\r\n\t eachCallback.apply(img.element, eachArguments);\r\n\t deferred.notifyWith(img.element, eachArguments);\r\n\t\r\n\t // Unbind the event listeners. I use this in addition to\r\n\t // `one` as one of those events won't be called (either\r\n\t // 'load' or 'error' will be called).\r\n\t $(this).off(events, me);\r\n\t\r\n\t if (allImgsLoaded == allImgsLength) {\r\n\t finishedCallback.call(obj[0]);\r\n\t deferred.resolveWith(obj[0]);\r\n\t return false;\r\n\t }\r\n\t\r\n\t });\r\n\t\r\n\t image.src = img.src;\r\n\t });\r\n\t });\r\n\t\r\n\t return deferred.promise();\r\n\t\r\n\t };\r\n\t}));\r\n\n\n/***/ },\n\n/***/ 29:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/************************************\r\n\tMODULE: TABS CLASS\r\n\tWHAT IT DOES: all tabs logic is here\r\n\t*************************************/\r\n\t(function(root, factory) {\r\n\t if (true) {\r\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t } else if (typeof exports === 'object') {\r\n\t module.exports = factory(require('jquery'));\r\n\t } else {\r\n\t root.returnExports = factory(root.jQuery);\r\n\t }\r\n\t})(this, function($) {\r\n\t function Tabs(el, options) {\r\n\t var helpers= __webpack_require__(68);\r\n\t this.settings = $.extend({}, this._defaults, options || {});\r\n\t this.tablist = $(el);\r\n\t this.container = null;\r\n\t this.controller = null;\r\n\t this.tabs = null;\r\n\t this.carousel = null;\r\n\t this.tween = null;\r\n\t this.tween1 = null;\r\n\t\r\n\t this.init();\r\n\t $(window).on('resize:finished tabs:resize', this.resize.bind(this));\r\n\t this.tablist.on('tab:resize', this.resize.bind(this));\r\n\t this.tablist[0].addEventListener('load', helpers.debounce(this.resize.bind(this), 400), true);\r\n\t\r\n\t }\r\n\t\r\n\t Tabs.prototype = {\r\n\t _defaults: {\r\n\t effect: 'none', // scale / slideleft / slideright / slidetop / slidedown / none\r\n\t defaultTab: null,\r\n\t carouseled: false,\r\n\t tabsPosition: 'horizontal', // horizontal / vertical\r\n\t horizontalPosition: 'top', // top / bottom\r\n\t verticalPosition: 'left', // left / right\r\n\t theme: '' // 'name' - string\r\n\t },\r\n\t\r\n\t arEffects: ['scale', 'slideleft', 'slideright', 'slidetop', 'slidedown', 'none', 'js'],\r\n\t init: function() {\r\n\t this.tablist.addClass('tabs_list');\r\n\t this.tablist.wrap('
');\r\n\t\r\n\t this.tabs = this.tablist.children('[data-tab]');\r\n\t this.container = this.tablist.parent('.tabs_container');\r\n\t\r\n\t this.setTabContainerClasses();\r\n\t\r\n\t var controlls = this.createControlsOrTabs();\r\n\t this.setControllsToCorrectPos(controlls);\r\n\t\r\n\t this.tabs = this.tablist.children('[data-tab]');\r\n\t this.tabs.addClass('tab_hide');\r\n\t\r\n\t this.controller = controlls.find('a');\r\n\t\r\n\t if (this.settings.tabsPosition == 'vertical') {\r\n\t var verticalTabsWidth = this.controller.outerWidth() + 1,\r\n\t verticalTabsHeight = controlls.outerHeight(),\r\n\t verticalContentWidth = this.container.outerWidth() - verticalTabsWidth,\r\n\t verticalContentHeight = this.tablist.outerHeight();\r\n\t\r\n\t controlls.width(verticalTabsWidth);\r\n\t this.tablist.outerWidth(verticalContentWidth);\r\n\t\r\n\t if (verticalContentHeight < verticalTabsHeight)\r\n\t this.tablist.css('min-height', verticalTabsHeight);\r\n\t }\r\n\t\r\n\t if (this.settings.effect == 'js') {\r\n\t var tweenmax = __webpack_require__(3);\r\n\t }\r\n\t\r\n\t var defaultTab = this.settings.defaultTab\r\n\t ? this.tablist.find('[data-tab=\"' + this.settings.defaultTab + '\"]')\r\n\t : this.tabs.first();\r\n\t defaultTab.removeClass('tab_hide');\r\n\t defaultTab.addClass('tab_show');\r\n\t\r\n\t var defaultTabImages = defaultTab.find(\".lazy\");\r\n\t\t\t\tfor (var k=0;k= 0) {\r\n\t className += ' ' + this.settings.effect;\r\n\t } else {\r\n\t className += ' scale';\r\n\t }\r\n\t\r\n\t this.container.addClass(className);\r\n\t },\r\n\t\r\n\t createControlsOrTabs: function() {\r\n\t var controlls = this.container.find('.tabs_controll');\r\n\t //if there are no contols defined\r\n\t if (!controlls.length) {\r\n\t controlls = $('');\r\n\t\r\n\t var insides = '';\r\n\t\r\n\t for (var i = 0, l = this.tabs.length; i < l; i++) {\r\n\t var $this = this.tabs.eq(i),\r\n\t id = $this.data('tab'),\r\n\t title = $this.data('tab-name');\r\n\t\r\n\t $this.addClass('tab_single');\r\n\t\r\n\t insides += '
  • ' + title + '
  • ';\r\n\t }\r\n\t\r\n\t controlls.html(insides);\r\n\t } else {\r\n\t var controller = controlls.find('a'),\r\n\t insidesTab = '';\r\n\t\r\n\t for (var i = 0, l = controller.length; i < l; i++) {\r\n\t var link = controller.eq(i),\r\n\t id = link.attr('data-tab-id'),\r\n\t tab = this.tabs.filter('[data-tab=\"' + id + '\"]');\r\n\t\r\n\t if (!tab.length)\r\n\t insidesTab +=\r\n\t '
    ';\r\n\t }\r\n\t\r\n\t this.tabs.last().after($(insidesTab));\r\n\t }\r\n\t\r\n\t return controlls;\r\n\t },\r\n\t\r\n\t //move or add contolls to a certain position within DOM\r\n\t setControllsToCorrectPos: function(controlls) {\r\n\t if (this.settings.tabsPosition == 'vertical') {\r\n\t this.settings.verticalPosition == 'left'\r\n\t ? this.container.prepend(controlls)\r\n\t : this.container.append(controlls);\r\n\t } else {\r\n\t // Horizontal\r\n\t this.settings.horizontalPosition == 'top'\r\n\t ? this.container.prepend(controlls)\r\n\t : this.container.append(controlls);\r\n\t }\r\n\t },\r\n\t\r\n\t iniControllsCarousel: function(controlls) {\r\n\t if (!this.settings.carouseled == true) return;\r\n\t\r\n\t controlls.addClass('tabs_carousel');\r\n\t\r\n\t __webpack_require__(88);\r\n\t\r\n\t this.carousel = controlls;\r\n\t this.carousel.on('initialized.owl.carousel', this.updateCarousel.bind(this));\r\n\t $(document).on('popup:loaded', this.updateCarousel.bind(this));\r\n\t this.carousel.owlCarousel({\r\n\t loop: false,\r\n\t nav: true,\r\n\t navText: [\r\n\t '',\r\n\t ''\r\n\t ],\r\n\t navClass: ['owl-prev tabs_carousel--prev', 'owl-next tabs_carousel--next'],\r\n\t responsive: {\r\n\t 0: {\r\n\t items: 3\r\n\t },\r\n\t 768: {\r\n\t items: 5\r\n\t }\r\n\t }\r\n\t });\r\n\t },\r\n\t\r\n\t updateCarousel: function() {\r\n\t if (!this.carousel) return;\r\n\t\r\n\t var items = this.carousel.find('.owl-item'),\r\n\t active = this.carousel.find('.tab_active').parents('.owl-item'),\r\n\t index = items.index(active),\r\n\t len = items.length;\r\n\t\r\n\t if (isNaN(index)) return;\r\n\t\r\n\t index = Math.max(0, window.App.globals.isMobileSmall ? index : index - 2);\r\n\t index = Math.min(index, window.App.globals.isMobileSmall ? len - 3 : len - 5);\r\n\t\r\n\t this.carousel.trigger('to.owl.carousel', [index, 500, true]);\r\n\t },\r\n\t\r\n\t //process tab reload\r\n\t tabLinkClick: function(e) {\r\n\t if (typeof e != 'undefined' && typeof e.preventDefault == 'function')\r\n\t e.preventDefault();\r\n\t\r\n\t var link = $(e.target);\r\n\t if (!link.is('a')) link = link.parents('a');\r\n\t\r\n\t if (link.hasClass('tab_active')) {\r\n\t return;\r\n\t }\r\n\t\r\n\t this.controller.removeClass('tab_active');\r\n\t link.addClass('tab_active');\r\n\t\r\n\t $(window).trigger('video:pause');\r\n\t\r\n\t var tabId = link.data('tab-id');\r\n\t var currentTab = this.container.find('[data-tab=\"' + tabId + '\"]');\r\n\t\r\n\t if (currentTab.hasClass('noload')) {\r\n\t currentTab.addClass('loading');\r\n\t currentTab.removeClass('noload');\r\n\t var self = this;\r\n\t $.ajax({\r\n\t url: link.attr('href'),\r\n\t success: function(data) {\r\n\t currentTab.append(\r\n\t $(data)\r\n\t .find('[data-tab=\"' + tabId + '\"]')\r\n\t .children()\r\n\t );\r\n\t $(window).trigger('tabs:init');\r\n\t $(window).trigger('video:init');\r\n\t $(window).trigger('carousels:init');\r\n\t $(window).trigger('popup:reinit');\r\n\t $(window).trigger('gatracking:init');\r\n\t $(window).trigger('fixonscroll:reinit');\r\n\t $(window).trigger('sizeconvertlinks:reinit');\r\n\t\r\n\t var tween = new TimelineMax(),\r\n\t loader = currentTab.find('.loader');\r\n\t tween.fromTo(loader, 0.5, { opacity: 1 }, { opacity: 0 });\r\n\t tween.to(loader, 0.5, { minHeight: currentTab.outerHeight() }, '-=0.5');\r\n\t tween.to(loader, 0.0, { visibility: 'hidden' });\r\n\t tween.play();\r\n\t currentTab.removeClass('loading');\r\n\t __webpack_require__(7);\r\n\t if (self.settings.effect == 'js') {\r\n\t self.animateHeight(\r\n\t self.tablist.outerHeight(),\r\n\t currentTab.outerHeight(true)\r\n\t );\r\n\t currentTab.waitForImages(\r\n\t self.resize.bind(self),\r\n\t function(loaded, count, success) {},\r\n\t true\r\n\t );\r\n\t } else this.container.parents('.js-tabs').trigger('tab:resize');\r\n\t },\r\n\t error: function(data) {\r\n\t currentTab.addClass('noload');\r\n\t }\r\n\t });\r\n\t }\r\n\t\r\n\t this.updateCarousel();\r\n\t\r\n\t this.switchSlides(this.tabs.filter('.tab_show'), currentTab);\r\n\t\r\n\t }\r\n\t };\r\n\t\r\n\t return Tabs;\r\n\t});\r\n\n\n/***/ },\n\n/***/ 68:\n/***/ function(module, exports) {\n\n\tfunction debounce(f, ms) {\r\n\t var isCooldown = false;\r\n\t\r\n\t return function() {\r\n\t if (isCooldown) return;\r\n\t f.apply(this, arguments);\r\n\t isCooldown = true;\r\n\t setTimeout(function() {\r\n\t isCooldown = false\r\n\t }, ms);\r\n\t };\r\n\t}\r\n\t\r\n\tmodule.exports = {debounce: debounce}\r\n\n\n/***/ },\n\n/***/ 88:\n/***/ function(module, exports) {\n\n\t//MIDIFIED TO SERVE OUR NEEDS (ONLY COORDINATES() FUNCTION)\n\t//DO NOT USE FOR ANYTHING EXCEPT QUOTE PROCESS STEP 2 CAROUSEL\n\t/**\n\t * Owl carousel\n\t * @version 2.0.0\n\t * @author Bartosz Wojciechowski\n\t * @license The MIT License (MIT)\n\t * @todo Lazy Load Icon\n\t * @todo prevent animationend bubling\n\t * @todo itemsScaleUp\n\t * @todo Test Zepto\n\t * @todo stagePadding calculate wrong active classes\n\t */\n\t;(function($, window, document, undefined) {\n\t\n\t\tvar drag, state, e;\n\t\n\t\t/**\n\t\t * Template for status information about drag and touch events.\n\t\t * @private\n\t\t */\n\t\tdrag = {\n\t\t\tstart: 0,\n\t\t\tstartX: 0,\n\t\t\tstartY: 0,\n\t\t\tcurrent: 0,\n\t\t\tcurrentX: 0,\n\t\t\tcurrentY: 0,\n\t\t\toffsetX: 0,\n\t\t\toffsetY: 0,\n\t\t\tdistance: null,\n\t\t\tstartTime: 0,\n\t\t\tendTime: 0,\n\t\t\tupdatedX: 0,\n\t\t\ttargetEl: null\n\t\t};\n\t\n\t\t/**\n\t\t * Template for some status informations.\n\t\t * @private\n\t\t */\n\t\tstate = {\n\t\t\tisTouch: false,\n\t\t\tisScrolling: false,\n\t\t\tisSwiping: false,\n\t\t\tdirection: false,\n\t\t\tinMotion: false\n\t\t};\n\t\n\t\t/**\n\t\t * Event functions references.\n\t\t * @private\n\t\t */\n\t\te = {\n\t\t\t_onDragStart: null,\n\t\t\t_onDragMove: null,\n\t\t\t_onDragEnd: null,\n\t\t\t_transitionEnd: null,\n\t\t\t_resizer: null,\n\t\t\t_responsiveCall: null,\n\t\t\t_goToLoop: null,\n\t\t\t_checkVisibile: null\n\t\t};\n\t\n\t\t/**\n\t\t * Creates a carousel.\n\t\t * @class The Owl Carousel.\n\t\t * @public\n\t\t * @param {HTMLElement|jQuery} element - The element to create the carousel for.\n\t\t * @param {Object} [options] - The options\n\t\t */\n\t\tfunction Owl(element, options) {\n\t\n\t\t\t/**\n\t\t\t * Current settings for the carousel.\n\t\t\t * @public\n\t\t\t */\n\t\t\tthis.settings = null;\n\t\n\t\t\t/**\n\t\t\t * Current options set by the caller including defaults.\n\t\t\t * @public\n\t\t\t */\n\t\t\tthis.options = $.extend({}, Owl.Defaults, options);\n\t\n\t\t\t/**\n\t\t\t * Plugin element.\n\t\t\t * @public\n\t\t\t */\n\t\t\tthis.$element = $(element);\n\t\n\t\t\t/**\n\t\t\t * Caches informations about drag and touch events.\n\t\t\t */\n\t\t\tthis.drag = $.extend({}, drag);\n\t\n\t\t\t/**\n\t\t\t * Caches some status informations.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis.state = $.extend({}, state);\n\t\n\t\t\t/**\n\t\t\t * @protected\n\t\t\t * @todo Must be documented\n\t\t\t */\n\t\t\tthis.e = $.extend({}, e);\n\t\n\t\t\t/**\n\t\t\t * References to the running plugins of this carousel.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._plugins = {};\n\t\n\t\t\t/**\n\t\t\t * Currently suppressed events to prevent them from beeing retriggered.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._supress = {};\n\t\n\t\t\t/**\n\t\t\t * Absolute current position.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._current = null;\n\t\n\t\t\t/**\n\t\t\t * Animation speed in milliseconds.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._speed = null;\n\t\n\t\t\t/**\n\t\t\t * Coordinates of all items in pixel.\n\t\t\t * @todo The name of this member is missleading.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._coordinates = [];\n\t\n\t\t\t/**\n\t\t\t * Current breakpoint.\n\t\t\t * @todo Real media queries would be nice.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._breakpoint = null;\n\t\n\t\t\t/**\n\t\t\t * Current width of the plugin element.\n\t\t\t */\n\t\t\tthis._width = null;\n\t\n\t\t\t/**\n\t\t\t * All real items.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._items = [];\n\t\n\t\t\t/**\n\t\t\t * All cloned items.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._clones = [];\n\t\n\t\t\t/**\n\t\t\t * Merge values of all items.\n\t\t\t * @todo Maybe this could be part of a plugin.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._mergers = [];\n\t\n\t\t\t/**\n\t\t\t * Invalidated parts within the update process.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._invalidated = {};\n\t\n\t\t\t/**\n\t\t\t * Ordered list of workers for the update process.\n\t\t\t * @protected\n\t\t\t */\n\t\t\tthis._pipe = [];\n\t\n\t\t\t$.each(Owl.Plugins, $.proxy(function(key, plugin) {\n\t\t\t\tthis._plugins[key[0].toLowerCase() + key.slice(1)]\n\t\t\t\t\t= new plugin(this);\n\t\t\t}, this));\n\t\n\t\t\t$.each(Owl.Pipe, $.proxy(function(priority, worker) {\n\t\t\t\tthis._pipe.push({\n\t\t\t\t\t'filter': worker.filter,\n\t\t\t\t\t'run': $.proxy(worker.run, this)\n\t\t\t\t});\n\t\t\t}, this));\n\t\n\t\t\tthis.setup();\n\t\t\tthis.initialize();\n\t\t}\n\t\n\t\t/**\n\t\t * Default options for the carousel.\n\t\t * @public\n\t\t */\n\t\tOwl.Defaults = {\n\t\t\titems: 3,\n\t\t\tloop: false,\n\t\t\tcenter: false,\n\t\n\t\t\tmouseDrag: true,\n\t\t\ttouchDrag: true,\n\t\t\tpullDrag: true,\n\t\t\tfreeDrag: false,\n\t\n\t\t\tmargin: 0,\n\t\t\tstagePadding: 0,\n\t\n\t\t\tmerge: false,\n\t\t\tmergeFit: true,\n\t\t\tautoWidth: false,\n\t\n\t\t\tstartPosition: 0,\n\t\t\trtl: false,\n\t\n\t\t\tsmartSpeed: 250,\n\t\t\tfluidSpeed: false,\n\t\t\tdragEndSpeed: false,\n\t\n\t\t\tresponsive: {},\n\t\t\tresponsiveRefreshRate: 200,\n\t\t\tresponsiveBaseElement: window,\n\t\t\tresponsiveClass: false,\n\t\n\t\t\tfallbackEasing: 'swing',\n\t\n\t\t\tinfo: false,\n\t\n\t\t\tnestedItemSelector: false,\n\t\t\titemElement: 'div',\n\t\t\tstageElement: 'div',\n\t\n\t\t\t// Classes and Names\n\t\t\tthemeClass: 'owl-theme',\n\t\t\tbaseClass: 'owl-carousel',\n\t\t\titemClass: 'owl-item',\n\t\t\tcenterClass: 'center',\n\t\t\tactiveClass: 'active'\n\t\t};\n\t\n\t\t/**\n\t\t * Enumeration for width.\n\t\t * @public\n\t\t * @readonly\n\t\t * @enum {String}\n\t\t */\n\t\tOwl.Width = {\n\t\t\tDefault: 'default',\n\t\t\tInner: 'inner',\n\t\t\tOuter: 'outer'\n\t\t};\n\t\n\t\t/**\n\t\t * Contains all registered plugins.\n\t\t * @public\n\t\t */\n\t\tOwl.Plugins = {};\n\t\n\t\t/**\n\t\t * Update pipe.\n\t\t */\n\t\tOwl.Pipe = [ {\n\t\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\t\trun: function(cache) {\n\t\t\t\tcache.current = this._items && this._items[this.relative(this._current)];\n\t\t\t}\n\t\t}, {\n\t\t\tfilter: [ 'items', 'settings' ],\n\t\t\trun: function() {\n\t\t\t\tvar cached = this._clones,\n\t\t\t\t\tclones = this.$stage.children('.cloned');\n\t\n\t\t\t\tif (clones.length !== cached.length || (!this.settings.loop && cached.length > 0)) {\n\t\t\t\t\tthis.$stage.children('.cloned').remove();\n\t\t\t\t\tthis._clones = [];\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tfilter: [ 'items', 'settings' ],\n\t\t\trun: function() {\n\t\t\t\tvar i, n,\n\t\t\t\t\tclones = this._clones,\n\t\t\t\t\titems = this._items,\n\t\t\t\t\tdelta = this.settings.loop ? clones.length - Math.max(this.settings.items * 2, 4) : 0;\n\t\n\t\t\t\tfor (i = 0, n = Math.abs(delta / 2); i < n; i++) {\n\t\t\t\t\tif (delta > 0) {\n\t\t\t\t\t\tthis.$stage.children().eq(items.length + clones.length - 1).remove();\n\t\t\t\t\t\tclones.pop();\n\t\t\t\t\t\tthis.$stage.children().eq(0).remove();\n\t\t\t\t\t\tclones.pop();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclones.push(clones.length / 2);\n\t\t\t\t\t\tthis.$stage.append(items[clones[clones.length - 1]].clone().addClass('cloned'));\n\t\t\t\t\t\tclones.push(items.length - 1 - (clones.length - 1) / 2);\n\t\t\t\t\t\tthis.$stage.prepend(items[clones[clones.length - 1]].clone().addClass('cloned'));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\t\trun: function() {\n\t\t\t\tvar rtl = (this.settings.rtl ? 1 : -1),\n\t\t\t\t\twidth = (this.width() / this.settings.items).toFixed(3),\n\t\t\t\t\tcoordinate = 0, merge, i, n;\n\t\n\t\t\t\tthis._coordinates = [];\n\t\t\t\tfor (i = 0, n = this._clones.length + this._items.length; i < n; i++) {\n\t\t\t\t\tmerge = this._mergers[this.relative(i)];\n\t\t\t\t\tmerge = (this.settings.mergeFit && Math.min(merge, this.settings.items)) || merge;\n\t\t\t\t\tcoordinate += (this.settings.autoWidth ? this._items[this.relative(i)].width() + this.settings.margin : width * merge) * rtl;\n\t\n\t\t\t\t\tthis._coordinates.push(coordinate);\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\t\trun: function() {\n\t\t\t\tvar i, n, width = (Math.ceil(this.width() / this.settings.items)).toFixed(3), css = {\n\t\t\t\t 'width': (width * this._items.length + this.settings.stagePadding * 2),\n\t\t\t\t\t'padding-left': this.settings.stagePadding || '',\n\t\t\t\t\t'padding-right': this.settings.stagePadding || ''\n\t\t\t\t};\n\t\n\t\t\t\tthis.$stage.css(css);\n\t\n\t\t\t\tcss = { 'width': this.settings.autoWidth ? 'auto' : width - this.settings.margin };\n\t\t\t\tcss[this.settings.rtl ? 'margin-left' : 'margin-right'] = this.settings.margin;\n\t\n\t\t\t\tif (!this.settings.autoWidth && $.grep(this._mergers, function(v) { return v > 1 }).length > 0) {\n\t\t\t\t\tfor (i = 0, n = this._coordinates.length; i < n; i++) {\n\t\t\t\t\t\tcss.width = Math.abs(this._coordinates[i]) - Math.abs(this._coordinates[i - 1] || 0) - this.settings.margin;\n\t\t\t\t\t\tthis.$stage.children().eq(i).css(css);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$stage.children().css(css);\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\t\trun: function(cache) {\n\t\t\t\tcache.current && this.reset(this.$stage.children().index(cache.current));\n\t\t\t}\n\t\t}, {\n\t\t\tfilter: [ 'position' ],\n\t\t\trun: function() {\n\t\t\t\tthis.animate(this.coordinates(this._current));\n\t\t\t}\n\t\t}, {\n\t\t\tfilter: [ 'width', 'position', 'items', 'settings' ],\n\t\t\trun: function() {\n\t\t\t\tvar rtl = this.settings.rtl ? 1 : -1,\n\t\t\t\t\tpadding = this.settings.stagePadding * 2,\n\t\t\t\t\tbegin = this.coordinates(this.current()) + padding,\n\t\t\t\t\tend = begin + this.width() * rtl,\n\t\t\t\t\tinner, outer, matches = [], i, n;\n\t\n\t\t\t\tfor (i = 0, n = this._coordinates.length; i < n; i++) {\n\t\t\t\t\tinner = this._coordinates[i - 1] || 0;\n\t\t\t\t\touter = Math.abs(this._coordinates[i]) + padding * rtl;\n\t\n\t\t\t\t\tif ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))\n\t\t\t\t\t\t|| (this.op(outer, '<', begin) && this.op(outer, '>', end))) {\n\t\t\t\t\t\tmatches.push(i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\tthis.$stage.children('.' + this.settings.activeClass).removeClass(this.settings.activeClass);\n\t\t\t\tthis.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass(this.settings.activeClass);\n\t\n\t\t\t\tif (this.settings.center) {\n\t\t\t\t\tthis.$stage.children('.' + this.settings.centerClass).removeClass(this.settings.centerClass);\n\t\t\t\t\tthis.$stage.children().eq(this.current()).addClass(this.settings.centerClass);\n\t\t\t\t}\n\t\t\t}\n\t\t} ];\n\t\n\t\t/**\n\t\t * Initializes the carousel.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.initialize = function() {\n\t\t\tthis.trigger('initialize');\n\t\n\t\t\tthis.$element\n\t\t\t\t.addClass(this.settings.baseClass)\n\t\t\t\t.addClass(this.settings.themeClass)\n\t\t\t\t.toggleClass('owl-rtl', this.settings.rtl);\n\t\n\t\t\t// check support\n\t\t\tthis.browserSupport();\n\t\n\t\t\tif (this.settings.autoWidth && this.state.imagesLoaded !== true) {\n\t\t\t\tvar imgs, nestedSelector, width;\n\t\t\t\timgs = this.$element.find('img');\n\t\t\t\tnestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;\n\t\t\t\twidth = this.$element.children(nestedSelector).width();\n\t\n\t\t\t\tif (imgs.length && width <= 0) {\n\t\t\t\t\tthis.preloadAutoWidthImages(imgs);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tthis.$element.addClass('owl-loading');\n\t\n\t\t\t// create stage\n\t\t\tthis.$stage = $('<' + this.settings.stageElement + ' class=\"owl-stage\"/>')\n\t\t\t\t.wrap('
    ');\n\t\n\t\t\t// append stage\n\t\t\tthis.$element.append(this.$stage.parent());\n\t\n\t\t\t// append content\n\t\t\tthis.replace(this.$element.children().not(this.$stage.parent()));\n\t\n\t\t\t// set view width\n\t\t\tthis._width = this.$element.width();\n\t\n\t\t\t// update view\n\t\t\tthis.refresh();\n\t\n\t\t\tthis.$element.removeClass('owl-loading').addClass('owl-loaded');\n\t\n\t\t\t// attach generic events\n\t\t\tthis.eventsCall();\n\t\n\t\t\t// attach generic events\n\t\t\tthis.internalEvents();\n\t\n\t\t\t// attach custom control events\n\t\t\tthis.addTriggerableEvents();\n\t\n\t\t\tthis.trigger('initialized');\n\t\t};\n\t\n\t\t/**\n\t\t * Setups the current settings.\n\t\t * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?\n\t\t * @todo Support for media queries by using `matchMedia` would be nice.\n\t\t * @public\n\t\t */\n\t\tOwl.prototype.setup = function() {\n\t\t\tvar viewport = this.viewport(),\n\t\t\t\toverwrites = this.options.responsive,\n\t\t\t\tmatch = -1,\n\t\t\t\tsettings = null;\n\t\n\t\t\tif (!overwrites) {\n\t\t\t\tsettings = $.extend({}, this.options);\n\t\t\t} else {\n\t\t\t\t$.each(overwrites, function(breakpoint) {\n\t\t\t\t\tif (breakpoint <= viewport && breakpoint > match) {\n\t\t\t\t\t\tmatch = Number(breakpoint);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\tsettings = $.extend({}, this.options, overwrites[match]);\n\t\t\t\tdelete settings.responsive;\n\t\n\t\t\t\t// responsive class\n\t\t\t\tif (settings.responsiveClass) {\n\t\t\t\t\tthis.$element.attr('class', function(i, c) {\n\t\t\t\t\t\treturn c.replace(/\\b owl-responsive-\\S+/g, '');\n\t\t\t\t\t}).addClass('owl-responsive-' + match);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (this.settings === null || this._breakpoint !== match) {\n\t\t\t\tthis.trigger('change', { property: { name: 'settings', value: settings } });\n\t\t\t\tthis._breakpoint = match;\n\t\t\t\tthis.settings = settings;\n\t\t\t\tthis.invalidate('settings');\n\t\t\t\tthis.trigger('changed', { property: { name: 'settings', value: this.settings } });\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Updates option logic if necessery.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.optionsLogic = function() {\n\t\t\t// Toggle Center class\n\t\t\tthis.$element.toggleClass('owl-center', this.settings.center);\n\t\n\t\t\t// if items number is less than in body\n\t\t\tif (this.settings.loop && this._items.length < this.settings.items) {\n\t\t\t\tthis.settings.loop = false;\n\t\t\t}\n\t\n\t\t\tif (this.settings.autoWidth) {\n\t\t\t\tthis.settings.stagePadding = false;\n\t\t\t\tthis.settings.merge = false;\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Prepares an item before add.\n\t\t * @todo Rename event parameter `content` to `item`.\n\t\t * @protected\n\t\t * @returns {jQuery|HTMLElement} - The item container.\n\t\t */\n\t\tOwl.prototype.prepare = function(item) {\n\t\t\tvar event = this.trigger('prepare', { content: item });\n\t\n\t\t\tif (!event.data) {\n\t\t\t $(item).addClass(this.settings.itemClass)\n\t\t\t event.data = $(item);\n\t\t\t}\n\t\n\t\t\tthis.trigger('prepared', { content: event.data });\n\t\n\t\t\treturn event.data;\n\t\t};\n\t\n\t\t/**\n\t\t * Updates the view.\n\t\t * @public\n\t\t */\n\t\tOwl.prototype.update = function() {\n\t\t\tvar i = 0,\n\t\t\t\tn = this._pipe.length,\n\t\t\t\tfilter = $.proxy(function(p) { return this[p] }, this._invalidated),\n\t\t\t\tcache = {};\n\t\n\t\t\twhile (i < n) {\n\t\t\t\tif (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {\n\t\t\t\t\tthis._pipe[i].run(cache);\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\n\t\t\tthis._invalidated = {};\n\t\t};\n\t\n\t\t/**\n\t\t * Gets the width of the view.\n\t\t * @public\n\t\t * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.\n\t\t * @returns {Number} - The width of the view in pixel.\n\t\t */\n\t\tOwl.prototype.width = function(dimension) {\n\t\t\tdimension = dimension || Owl.Width.Default;\n\t\t\tswitch (dimension) {\n\t\t\t\tcase Owl.Width.Inner:\n\t\t\t\tcase Owl.Width.Outer:\n\t\t\t\t\treturn this._width;\n\t\t\t\tdefault:\n\t\t\t\t\treturn this._width - this.settings.stagePadding * 2 + this.settings.margin;\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Refreshes the carousel primarily for adaptive purposes.\n\t\t * @public\n\t\t */\n\t\tOwl.prototype.refresh = function() {\n\t\t\tif (this._items.length === 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tvar start = new Date().getTime();\n\t\n\t\t\tthis.trigger('refresh');\n\t\n\t\t\tthis.setup();\n\t\n\t\t\tthis.optionsLogic();\n\t\n\t\t\t// hide and show methods helps here to set a proper widths,\n\t\t\t// this prevents scrollbar to be calculated in stage width\n\t\t\tthis.$stage.addClass('owl-refresh');\n\t\n\t\t\tthis.update();\n\t\n\t\t\tthis.$stage.removeClass('owl-refresh');\n\t\n\t\t\tthis.state.orientation = window.orientation;\n\t\n\t\t\tthis.watchVisibility();\n\t\n\t\t\tthis.trigger('refreshed');\n\t\t};\n\t\n\t\t/**\n\t\t * Save internal event references and add event based functions.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.eventsCall = function() {\n\t\t\t// Save events references\n\t\t\tthis.e._onDragStart = $.proxy(function(e) {\n\t\t\t\tthis.onDragStart(e);\n\t\t\t}, this);\n\t\t\tthis.e._onDragMove = $.proxy(function(e) {\n\t\t\t\tthis.onDragMove(e);\n\t\t\t}, this);\n\t\t\tthis.e._onDragEnd = $.proxy(function(e) {\n\t\t\t\tthis.onDragEnd(e);\n\t\t\t}, this);\n\t\t\tthis.e._onResize = $.proxy(function(e) {\n\t\t\t\tthis.onResize(e);\n\t\t\t}, this);\n\t\t\tthis.e._transitionEnd = $.proxy(function(e) {\n\t\t\t\tthis.transitionEnd(e);\n\t\t\t}, this);\n\t\t\tthis.e._preventClick = $.proxy(function(e) {\n\t\t\t\tthis.preventClick(e);\n\t\t\t}, this);\n\t\t};\n\t\n\t\t/**\n\t\t * Checks window `resize` event.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.onThrottledResize = function() {\n\t\t\twindow.clearTimeout(this.resizeTimer);\n\t\t\tthis.resizeTimer = window.setTimeout(this.e._onResize, this.settings.responsiveRefreshRate);\n\t\t};\n\t\n\t\t/**\n\t\t * Checks window `resize` event.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.onResize = function() {\n\t\t\tif (!this._items.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tif (this._width === this.$element.width()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tif (this.trigger('resize').isDefaultPrevented()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tthis._width = this.$element.width();\n\t\n\t\t\tthis.invalidate('width');\n\t\n\t\t\tthis.refresh();\n\t\n\t\t\tthis.trigger('resized');\n\t\t};\n\t\n\t\t/**\n\t\t * Checks for touch/mouse drag event type and add run event handlers.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.eventsRouter = function(event) {\n\t\t\tvar type = event.type;\n\t\n\t\t\tif (type === \"mousedown\" || type === \"touchstart\") {\n\t\t\t\tthis.onDragStart(event);\n\t\t\t} else if (type === \"mousemove\" || type === \"touchmove\") {\n\t\t\t\tthis.onDragMove(event);\n\t\t\t} else if (type === \"mouseup\" || type === \"touchend\") {\n\t\t\t\tthis.onDragEnd(event);\n\t\t\t} else if (type === \"touchcancel\") {\n\t\t\t\tthis.onDragEnd(event);\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Checks for touch/mouse drag options and add necessery event handlers.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.internalEvents = function() {\n\t\t\tvar isTouch = isTouchSupport(),\n\t\t\t\tisTouchIE = isTouchSupportIE();\n\t\n\t\t\tif (this.settings.mouseDrag){\n\t\t\t\tthis.$stage.on('mousedown', $.proxy(function(event) { this.eventsRouter(event) }, this));\n\t\t\t\tthis.$stage.on('dragstart', function() { return false });\n\t\t\t\tthis.$stage.get(0).onselectstart = function() { return false };\n\t\t\t} else {\n\t\t\t\tthis.$element.addClass('owl-text-select-on');\n\t\t\t}\n\t\n\t\t\tif (this.settings.touchDrag && !isTouchIE){\n\t\t\t\tthis.$stage.on('touchstart touchcancel', $.proxy(function(event) { this.eventsRouter(event) }, this));\n\t\t\t}\n\t\n\t\t\t// catch transitionEnd event\n\t\t\tif (this.transitionEndVendor) {\n\t\t\t\tthis.on(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd, false);\n\t\t\t}\n\t\n\t\t\t// responsive\n\t\t\tif (this.settings.responsive !== false) {\n\t\t\t\tthis.on(window, 'resize', $.proxy(this.onThrottledResize, this));\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Handles touchstart/mousedown event.\n\t\t * @protected\n\t\t * @param {Event} event - The event arguments.\n\t\t */\n\t\tOwl.prototype.onDragStart = function(event) {\n\t\t\tvar ev, isTouchEvent, pageX, pageY, animatedPos;\n\t\n\t\t\tev = event.originalEvent || event || window.event;\n\t\n\t\t\t// prevent right click\n\t\t\tif (ev.which === 3 || this.state.isTouch) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tif (ev.type === 'mousedown') {\n\t\t\t\tthis.$stage.addClass('owl-grab');\n\t\t\t}\n\t\n\t\t\tthis.trigger('drag');\n\t\t\tthis.drag.startTime = new Date().getTime();\n\t\t\tthis.speed(0);\n\t\t\tthis.state.isTouch = true;\n\t\t\tthis.state.isScrolling = false;\n\t\t\tthis.state.isSwiping = false;\n\t\t\tthis.drag.distance = 0;\n\t\n\t\t\tpageX = getTouches(ev).x;\n\t\t\tpageY = getTouches(ev).y;\n\t\n\t\t\t// get stage position left\n\t\t\tthis.drag.offsetX = this.$stage.position().left;\n\t\t\tthis.drag.offsetY = this.$stage.position().top;\n\t\n\t\t\tif (this.settings.rtl) {\n\t\t\t\tthis.drag.offsetX = this.$stage.position().left + this.$stage.width() - this.width()\n\t\t\t\t\t+ this.settings.margin;\n\t\t\t}\n\t\n\t\t\t// catch position // ie to fix\n\t\t\tif (this.state.inMotion && this.support3d) {\n\t\t\t\tanimatedPos = this.getTransformProperty();\n\t\t\t\tthis.drag.offsetX = animatedPos;\n\t\t\t\tthis.animate(animatedPos);\n\t\t\t\tthis.state.inMotion = true;\n\t\t\t} else if (this.state.inMotion && !this.support3d) {\n\t\t\t\tthis.state.inMotion = false;\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tthis.drag.startX = pageX - this.drag.offsetX;\n\t\t\tthis.drag.startY = pageY - this.drag.offsetY;\n\t\n\t\t\tthis.drag.start = pageX - this.drag.startX;\n\t\t\tthis.drag.targetEl = ev.target || ev.srcElement;\n\t\t\tthis.drag.updatedX = this.drag.start;\n\t\n\t\t\t// to do/check\n\t\t\t// prevent links and images dragging;\n\t\t\tif (this.drag.targetEl.tagName === \"IMG\" || this.drag.targetEl.tagName === \"A\") {\n\t\t\t\tthis.drag.targetEl.draggable = false;\n\t\t\t}\n\t\n\t\t\t$(document).on('mousemove.owl.dragEvents mouseup.owl.dragEvents touchmove.owl.dragEvents touchend.owl.dragEvents', $.proxy(function(event) {this.eventsRouter(event)},this));\n\t\t};\n\t\n\t\t/**\n\t\t * Handles the touchmove/mousemove events.\n\t\t * @todo Simplify\n\t\t * @protected\n\t\t * @param {Event} event - The event arguments.\n\t\t */\n\t\tOwl.prototype.onDragMove = function(event) {\n\t\t\tvar ev, isTouchEvent, pageX, pageY, minValue, maxValue, pull;\n\t\n\t\t\tif (!this.state.isTouch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tif (this.state.isScrolling) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tev = event.originalEvent || event || window.event;\n\t\n\t\t\tpageX = getTouches(ev).x;\n\t\t\tpageY = getTouches(ev).y;\n\t\n\t\t\t// Drag Direction\n\t\t\tthis.drag.currentX = pageX - this.drag.startX;\n\t\t\tthis.drag.currentY = pageY - this.drag.startY;\n\t\t\tthis.drag.distance = this.drag.currentX - this.drag.offsetX;\n\t\n\t\t\t// Check move direction\n\t\t\tif (this.drag.distance < 0) {\n\t\t\t\tthis.state.direction = this.settings.rtl ? 'right' : 'left';\n\t\t\t} else if (this.drag.distance > 0) {\n\t\t\t\tthis.state.direction = this.settings.rtl ? 'left' : 'right';\n\t\t\t}\n\t\t\t// Loop\n\t\t\tif (this.settings.loop) {\n\t\t\t\tif (this.op(this.drag.currentX, '>', this.coordinates(this.minimum())) && this.state.direction === 'right') {\n\t\t\t\t\tthis.drag.currentX -= (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length);\n\t\t\t\t} else if (this.op(this.drag.currentX, '<', this.coordinates(this.maximum())) && this.state.direction === 'left') {\n\t\t\t\t\tthis.drag.currentX += (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// pull\n\t\t\t minValue = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());\n\t\t\t maxValue = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());\n\t\t\t\tpull = this.settings.pullDrag ? this.drag.distance / 5 : 0;\n\t\t\t\tthis.drag.currentX = Math.max(Math.min(this.drag.currentX, minValue + pull), maxValue + pull);\n\t\t\t}\n\t\n\t\t\t// Lock browser if swiping horizontal\n\t\n\t\t\tif ((this.drag.distance > 8 || this.drag.distance < -8)) {\n\t\t\t\tif (ev.preventDefault !== undefined) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t} else {\n\t\t\t\t\tev.returnValue = false;\n\t\t\t\t}\n\t\t\t\tthis.state.isSwiping = true;\n\t\t\t}\n\t\n\t\t\tthis.drag.updatedX = this.drag.currentX;\n\t\n\t\t\t// Lock Owl if scrolling\n\t\t\tif ((this.drag.currentY > 16 || this.drag.currentY < -16) && this.state.isSwiping === false) {\n\t\t\t\tthis.state.isScrolling = true;\n\t\t\t\tthis.drag.updatedX = this.drag.start;\n\t\t\t}\n\t\n\t\t\tthis.animate(this.drag.updatedX);\n\t\t};\n\t\n\t\t/**\n\t\t * Handles the touchend/mouseup events.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.onDragEnd = function(event) {\n\t\t\tvar compareTimes, distanceAbs, closest;\n\t\n\t\t\tif (!this.state.isTouch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tif (event.type === 'mouseup') {\n\t\t\t\tthis.$stage.removeClass('owl-grab');\n\t\t\t}\n\t\n\t\t\tthis.trigger('dragged');\n\t\n\t\t\t// prevent links and images dragging;\n\t\t\tthis.drag.targetEl.removeAttribute(\"draggable\");\n\t\n\t\t\t// remove drag event listeners\n\t\n\t\t\tthis.state.isTouch = false;\n\t\t\tthis.state.isScrolling = false;\n\t\t\tthis.state.isSwiping = false;\n\t\n\t\t\t// to check\n\t\t\tif (this.drag.distance === 0 && this.state.inMotion !== true) {\n\t\t\t\tthis.state.inMotion = false;\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// prevent clicks while scrolling\n\t\n\t\t\tthis.drag.endTime = new Date().getTime();\n\t\t\tcompareTimes = this.drag.endTime - this.drag.startTime;\n\t\t\tdistanceAbs = Math.abs(this.drag.distance);\n\t\n\t\t\t// to test\n\t\t\tif (distanceAbs > 3 || compareTimes > 300) {\n\t\t\t\tthis.removeClick(this.drag.targetEl);\n\t\t\t}\n\t\n\t\t\tclosest = this.closest(this.drag.updatedX);\n\t\n\t\t\tthis.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);\n\t\t\tthis.current(closest);\n\t\t\tthis.invalidate('position');\n\t\t\tthis.update();\n\t\n\t\t\t// if pullDrag is off then fire transitionEnd event manually when stick\n\t\t\t// to border\n\t\t\tif (!this.settings.pullDrag && this.drag.updatedX === this.coordinates(closest)) {\n\t\t\t\tthis.transitionEnd();\n\t\t\t}\n\t\n\t\t\tthis.drag.distance = 0;\n\t\n\t\t\t$(document).off('.owl.dragEvents');\n\t\t};\n\t\n\t\t/**\n\t\t * Attaches `preventClick` to disable link while swipping.\n\t\t * @protected\n\t\t * @param {HTMLElement} [target] - The target of the `click` event.\n\t\t */\n\t\tOwl.prototype.removeClick = function(target) {\n\t\t\tthis.drag.targetEl = target;\n\t\t\t$(target).on('click.preventClick', this.e._preventClick);\n\t\t\t// to make sure click is removed:\n\t\t\twindow.setTimeout(function() {\n\t\t\t\t$(target).off('click.preventClick');\n\t\t\t}, 300);\n\t\t};\n\t\n\t\t/**\n\t\t * Suppresses click event.\n\t\t * @protected\n\t\t * @param {Event} ev - The event arguments.\n\t\t */\n\t\tOwl.prototype.preventClick = function(ev) {\n\t\t\tif (ev.preventDefault) {\n\t\t\t\tev.preventDefault();\n\t\t\t} else {\n\t\t\t\tev.returnValue = false;\n\t\t\t}\n\t\t\tif (ev.stopPropagation) {\n\t\t\t\tev.stopPropagation();\n\t\t\t}\n\t\t\t$(ev.target).off('click.preventClick');\n\t\t};\n\t\n\t\t/**\n\t\t * Catches stage position while animate (only CSS3).\n\t\t * @protected\n\t\t * @returns\n\t\t */\n\t\tOwl.prototype.getTransformProperty = function() {\n\t\t\tvar transform, matrix3d;\n\t\n\t\t\ttransform = window.getComputedStyle(this.$stage.get(0), null).getPropertyValue(this.vendorName + 'transform');\n\t\t\t// var transform = this.$stage.css(this.vendorName + 'transform')\n\t\t\ttransform = transform.replace(/matrix(3d)?\\(|\\)/g, '').split(',');\n\t\t\tmatrix3d = transform.length === 16;\n\t\n\t\t\treturn matrix3d !== true ? transform[4] : transform[12];\n\t\t};\n\t\n\t\t/**\n\t\t * Gets absolute position of the closest item for a coordinate.\n\t\t * @todo Setting `freeDrag` makes `closest` not reusable. See #165.\n\t\t * @protected\n\t\t * @param {Number} coordinate - The coordinate in pixel.\n\t\t * @return {Number} - The absolute position of the closest item.\n\t\t */\n\t\tOwl.prototype.closest = function(coordinate) {\n\t\t\tvar position = -1, pull = 30, width = this.width(), coordinates = this.coordinates();\n\t\n\t\t\tif (!this.settings.freeDrag) {\n\t\t\t\t// check closest item\n\t\t\t\t$.each(coordinates, $.proxy(function(index, value) {\n\t\t\t\t\tif (coordinate > value - pull && coordinate < value + pull) {\n\t\t\t\t\t\tposition = index;\n\t\t\t\t\t} else if (this.op(coordinate, '<', value)\n\t\t\t\t\t\t&& this.op(coordinate, '>', coordinates[index + 1] || value - width)) {\n\t\t\t\t\t\tposition = this.state.direction === 'left' ? index + 1 : index;\n\t\t\t\t\t}\n\t\t\t\t\treturn position === -1;\n\t\t\t\t}, this));\n\t\t\t}\n\t\n\t\t\tif (!this.settings.loop) {\n\t\t\t\t// non loop boundries\n\t\t\t\tif (this.op(coordinate, '>', coordinates[this.minimum()])) {\n\t\t\t\t\tposition = coordinate = this.minimum();\n\t\t\t\t} else if (this.op(coordinate, '<', coordinates[this.maximum()])) {\n\t\t\t\t\tposition = coordinate = this.maximum();\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn position;\n\t\t};\n\t\n\t\t/**\n\t\t * Animates the stage.\n\t\t * @public\n\t\t * @param {Number} coordinate - The coordinate in pixels.\n\t\t */\n\t\tOwl.prototype.animate = function(coordinate) {\n\t\t\tthis.trigger('translate');\n\t\t\tthis.state.inMotion = this.speed() > 0;\n\t\n\t\t\tif (this.support3d) {\n\t\t\t\tthis.$stage.css({\n\t\t\t\t\ttransform: 'translate(' + coordinate + 'px' + ',0px)',\n\t\t\t\t\ttransition: (this.speed() / 1000) + 's'\n\t\t\t\t});\n\t\t\t} else if (this.state.isTouch) {\n\t\t\t\tthis.$stage.css({\n\t\t\t\t\tleft: coordinate + 'px'\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.$stage.animate({\n\t\t\t\t\tleft: coordinate\n\t\t\t\t}, this.speed() / 1000, this.settings.fallbackEasing, $.proxy(function() {\n\t\t\t\t\tif (this.state.inMotion) {\n\t\t\t\t\t\tthis.transitionEnd();\n\t\t\t\t\t}\n\t\t\t\t}, this));\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Sets the absolute position of the current item.\n\t\t * @public\n\t\t * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.\n\t\t * @returns {Number} - The absolute position of the current item.\n\t\t */\n\t\tOwl.prototype.current = function(position) {\n\t\t\tif (position === undefined) {\n\t\t\t\treturn this._current;\n\t\t\t}\n\t\n\t\t\tif (this._items.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\n\t\t\tposition = this.normalize(position);\n\t\n\t\t\tif (this._current !== position) {\n\t\t\t\tvar event = this.trigger('change', { property: { name: 'position', value: position } });\n\t\n\t\t\t\tif (event.data !== undefined) {\n\t\t\t\t\tposition = this.normalize(event.data);\n\t\t\t\t}\n\t\n\t\t\t\tthis._current = position;\n\t\n\t\t\t\tthis.invalidate('position');\n\t\n\t\t\t\tthis.trigger('changed', { property: { name: 'position', value: this._current } });\n\t\t\t}\n\t\n\t\t\treturn this._current;\n\t\t};\n\t\n\t\t/**\n\t\t * Invalidates the given part of the update routine.\n\t\t * @param {String} part - The part to invalidate.\n\t\t */\n\t\tOwl.prototype.invalidate = function(part) {\n\t\t\tthis._invalidated[part] = true;\n\t\t}\n\t\n\t\t/**\n\t\t * Resets the absolute position of the current item.\n\t\t * @public\n\t\t * @param {Number} position - The absolute position of the new item.\n\t\t */\n\t\tOwl.prototype.reset = function(position) {\n\t\t\tposition = this.normalize(position);\n\t\n\t\t\tif (position === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tthis._speed = 0;\n\t\t\tthis._current = position;\n\t\n\t\t\tthis.suppress([ 'translate', 'translated' ]);\n\t\n\t\t\tthis.animate(this.coordinates(position));\n\t\n\t\t\tthis.release([ 'translate', 'translated' ]);\n\t\t};\n\t\n\t\t/**\n\t\t * Normalizes an absolute or a relative position for an item.\n\t\t * @public\n\t\t * @param {Number} position - The absolute or relative position to normalize.\n\t\t * @param {Boolean} [relative=false] - Whether the given position is relative or not.\n\t\t * @returns {Number} - The normalized position.\n\t\t */\n\t\tOwl.prototype.normalize = function(position, relative) {\n\t\t\tvar n = (relative ? this._items.length : this._items.length + this._clones.length);\n\t\n\t\t\tif (!$.isNumeric(position) || n < 1) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\n\t\t\tif (this._clones.length) {\n\t\t\t\tposition = ((position % n) + n) % n;\n\t\t\t} else {\n\t\t\t\tposition = Math.max(this.minimum(relative), Math.min(this.maximum(relative), position));\n\t\t\t}\n\t\n\t\t\treturn position;\n\t\t};\n\t\n\t\t/**\n\t\t * Converts an absolute position for an item into a relative position.\n\t\t * @public\n\t\t * @param {Number} position - The absolute position to convert.\n\t\t * @returns {Number} - The converted position.\n\t\t */\n\t\tOwl.prototype.relative = function(position) {\n\t\t\tposition = this.normalize(position);\n\t\t\tposition = position - this._clones.length / 2;\n\t\t\treturn this.normalize(position, true);\n\t\t};\n\t\n\t\t/**\n\t\t * Gets the maximum position for an item.\n\t\t * @public\n\t\t * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\n\t\t * @returns {Number}\n\t\t */\n\t\tOwl.prototype.maximum = function(relative) {\n\t\t\tvar maximum, width, i = 0, coordinate,\n\t\t\t\tsettings = this.settings;\n\t\n\t\t\tif (relative) {\n\t\t\t\treturn this._items.length - 1;\n\t\t\t}\n\t\n\t\t\tif (!settings.loop && settings.center) {\n\t\t\t\tmaximum = this._items.length - 1;\n\t\t\t} else if (!settings.loop && !settings.center) {\n\t\t\t\tmaximum = this._items.length - settings.items;\n\t\t\t} else if (settings.loop || settings.center) {\n\t\t\t\tmaximum = this._items.length + settings.items;\n\t\t\t} else if (settings.autoWidth || settings.merge) {\n\t\t\t\trevert = settings.rtl ? 1 : -1;\n\t\t\t\twidth = this.$stage.width() - this.$element.width();\n\t\t\t\twhile (coordinate = this.coordinates(i)) {\n\t\t\t\t\tif (coordinate * revert >= width) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmaximum = ++i;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow 'Can not detect maximum absolute position.'\n\t\t\t}\n\t\n\t\t\treturn maximum;\n\t\t};\n\t\n\t\t/**\n\t\t * Gets the minimum position for an item.\n\t\t * @public\n\t\t * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\n\t\t * @returns {Number}\n\t\t */\n\t\tOwl.prototype.minimum = function(relative) {\n\t\t\tif (relative) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\n\t\t\treturn this._clones.length / 2;\n\t\t};\n\t\n\t\t/**\n\t\t * Gets an item at the specified relative position.\n\t\t * @public\n\t\t * @param {Number} [position] - The relative position of the item.\n\t\t * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\n\t\t */\n\t\tOwl.prototype.items = function(position) {\n\t\t\tif (position === undefined) {\n\t\t\t\treturn this._items.slice();\n\t\t\t}\n\t\n\t\t\tposition = this.normalize(position, true);\n\t\t\treturn this._items[position];\n\t\t};\n\t\n\t\t/**\n\t\t * Gets an item at the specified relative position.\n\t\t * @public\n\t\t * @param {Number} [position] - The relative position of the item.\n\t\t * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\n\t\t */\n\t\tOwl.prototype.mergers = function(position) {\n\t\t\tif (position === undefined) {\n\t\t\t\treturn this._mergers.slice();\n\t\t\t}\n\t\n\t\t\tposition = this.normalize(position, true);\n\t\t\treturn this._mergers[position];\n\t\t};\n\t\n\t\t/**\n\t\t * Gets the absolute positions of clones for an item.\n\t\t * @public\n\t\t * @param {Number} [position] - The relative position of the item.\n\t\t * @returns {Array.} - The absolute positions of clones for the item or all if no position was given.\n\t\t */\n\t\tOwl.prototype.clones = function(position) {\n\t\t\tvar odd = this._clones.length / 2,\n\t\t\t\teven = odd + this._items.length,\n\t\t\t\tmap = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };\n\t\n\t\t\tif (position === undefined) {\n\t\t\t\treturn $.map(this._clones, function(v, i) { return map(i) });\n\t\t\t}\n\t\n\t\t\treturn $.map(this._clones, function(v, i) { return v === position ? map(i) : null });\n\t\t};\n\t\n\t\t/**\n\t\t * Sets the current animation speed.\n\t\t * @public\n\t\t * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.\n\t\t * @returns {Number} - The current animation speed in milliseconds.\n\t\t */\n\t\tOwl.prototype.speed = function(speed) {\n\t\t\tif (speed !== undefined) {\n\t\t\t\tthis._speed = speed;\n\t\t\t}\n\t\n\t\t\treturn this._speed;\n\t\t};\n\t\n\t\t/**\n\t\t * Gets the coordinate of an item.\n\t\t * @todo The name of this method is missleanding.\n\t\t * @public\n\t\t * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.\n\t\t * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates.\n\t\t */\n\t\tOwl.prototype.coordinates = function(position) {\n\t\t var coordinate = null;\n\t\n\t\t\tif (position === undefined) {\n\t\t\t\treturn $.map(this._coordinates, $.proxy(function(coordinate, index) {\n\t\t\t\t\treturn this.coordinates(index);\n\t\t\t\t}, this));\n\t\t\t}\n\t\n\t\t\tif (this.settings.center) {\n\t\t\t\tcoordinate = this._coordinates[position];\n\t\t\t\tcoordinate += (this.width() - coordinate + (this._coordinates[position - 1] || 0)) / 2 * (this.settings.rtl ? -1 : 1);\n\t\t\t} else {\n\t\t\t coordinate = this._coordinates[position - 1] || 0;\n\t\t\t if (window.App.globals.isMobileSmall) {\r\n\t\t\t if (position == 0)\n\t\t\t coordinate -= (this._items[0].outerWidth() / 2 - 1);\r\n\t\t\t if (position >= this._coordinates.length - 4)\n\t coordinate += (this._items[0].outerWidth() / 2 + 3);\r\n\t\t\t }\n\t\t\t}\n\t\n\t\t\treturn coordinate;\n\t\t};\n\t\n\t\t/**\n\t\t * Calculates the speed for a translation.\n\t\t * @protected\n\t\t * @param {Number} from - The absolute position of the start item.\n\t\t * @param {Number} to - The absolute position of the target item.\n\t\t * @param {Number} [factor=undefined] - The time factor in milliseconds.\n\t\t * @returns {Number} - The time in milliseconds for the translation.\n\t\t */\n\t\tOwl.prototype.duration = function(from, to, factor) {\n\t\t\treturn Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));\n\t\t};\n\t\n\t\t/**\n\t\t * Slides to the specified item.\n\t\t * @public\n\t\t * @param {Number} position - The position of the item.\n\t\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t\t */\n\t\tOwl.prototype.to = function(position, speed) {\n\t\t\tif (this.settings.loop) {\n\t\t\t\tvar distance = position - this.relative(this.current()),\n\t\t\t\t\trevert = this.current(),\n\t\t\t\t\tbefore = this.current(),\n\t\t\t\t\tafter = this.current() + distance,\n\t\t\t\t\tdirection = before - after < 0 ? true : false,\n\t\t\t\t\titems = this._clones.length + this._items.length;\n\t\n\t\t\t\tif (after < this.settings.items && direction === false) {\n\t\t\t\t\trevert = before + this._items.length;\n\t\t\t\t\tthis.reset(revert);\n\t\t\t\t} else if (after >= items - this.settings.items && direction === true) {\n\t\t\t\t\trevert = before - this._items.length;\n\t\t\t\t\tthis.reset(revert);\n\t\t\t\t}\n\t\t\t\twindow.clearTimeout(this.e._goToLoop);\n\t\t\t\tthis.e._goToLoop = window.setTimeout($.proxy(function() {\n\t\t\t\t\tthis.speed(this.duration(this.current(), revert + distance, speed));\n\t\t\t\t\tthis.current(revert + distance);\n\t\t\t\t\tthis.update();\n\t\t\t\t}, this), 30);\n\t\t\t} else {\n\t\t\t\tthis.speed(this.duration(this.current(), position, speed));\n\t\t\t\tthis.current(position);\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Slides to the next item.\n\t\t * @public\n\t\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t\t */\n\t\tOwl.prototype.next = function(speed) {\n\t\t\tspeed = speed || false;\n\t\t\tthis.to(this.relative(this.current()) + 1, speed);\n\t\t};\n\t\n\t\t/**\n\t\t * Slides to the previous item.\n\t\t * @public\n\t\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t\t */\n\t\tOwl.prototype.prev = function(speed) {\n\t\t\tspeed = speed || false;\n\t\t\tthis.to(this.relative(this.current()) - 1, speed);\n\t\t};\n\t\n\t\t/**\n\t\t * Handles the end of an animation.\n\t\t * @protected\n\t\t * @param {Event} event - The event arguments.\n\t\t */\n\t\tOwl.prototype.transitionEnd = function(event) {\n\t\n\t\t\t// if css2 animation then event object is undefined\n\t\t\tif (event !== undefined) {\n\t\t\t\tevent.stopPropagation();\n\t\n\t\t\t\t// Catch only owl-stage transitionEnd event\n\t\t\t\tif ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tthis.state.inMotion = false;\n\t\t\tthis.trigger('translated');\n\t\t};\n\t\n\t\t/**\n\t\t * Gets viewport width.\n\t\t * @protected\n\t\t * @return {Number} - The width in pixel.\n\t\t */\n\t\tOwl.prototype.viewport = function() {\n\t\t\tvar width;\n\t\t\tif (this.options.responsiveBaseElement !== window) {\n\t\t\t\twidth = $(this.options.responsiveBaseElement).width();\n\t\t\t} else if (window.innerWidth) {\n\t\t\t\twidth = window.innerWidth;\n\t\t\t} else if (document.documentElement && document.documentElement.clientWidth) {\n\t\t\t\twidth = document.documentElement.clientWidth;\n\t\t\t} else {\n\t\t\t\tthrow 'Can not detect viewport width.';\n\t\t\t}\n\t\t\treturn width;\n\t\t};\n\t\n\t\t/**\n\t\t * Replaces the current content.\n\t\t * @public\n\t\t * @param {HTMLElement|jQuery|String} content - The new content.\n\t\t */\n\t\tOwl.prototype.replace = function(content) {\n\t\t\tthis.$stage.empty();\n\t\t\tthis._items = [];\n\t\n\t\t\tif (content) {\n\t\t\t\tcontent = (content instanceof jQuery) ? content : $(content);\n\t\t\t}\n\t\n\t\t\tif (this.settings.nestedItemSelector) {\n\t\t\t\tcontent = content.find('.' + this.settings.nestedItemSelector);\n\t\t\t}\n\t\n\t\t\tcontent.filter(function() {\n\t\t\t\treturn this.nodeType === 1;\n\t\t\t}).each($.proxy(function(index, item) {\n\t\t\t\titem = this.prepare(item);\n\t\t\t\tthis.$stage.append(item);\n\t\t\t\tthis._items.push(item);\n\t\t\t\tthis._mergers.push(item.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t\t}, this));\n\t\n\t\t\tthis.reset($.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);\n\t\n\t\t\tthis.invalidate('items');\n\t\t};\n\t\n\t\t/**\n\t\t * Adds an item.\n\t\t * @todo Use `item` instead of `content` for the event arguments.\n\t\t * @public\n\t\t * @param {HTMLElement|jQuery|String} content - The item content to add.\n\t\t * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.\n\t\t */\n\t\tOwl.prototype.add = function(content, position) {\n\t\t\tposition = position === undefined ? this._items.length : this.normalize(position, true);\n\t\n\t\t\tthis.trigger('add', { content: content, position: position });\n\t\n\t\t\tif (this._items.length === 0 || position === this._items.length) {\n\t\t\t\tthis.$stage.append(content);\n\t\t\t\tthis._items.push(content);\n\t\t\t\tthis._mergers.push(content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t\t} else {\n\t\t\t\tthis._items[position].before(content);\n\t\t\t\tthis._items.splice(position, 0, content);\n\t\t\t\tthis._mergers.splice(position, 0, content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t\t}\n\t\n\t\t\tthis.invalidate('items');\n\t\n\t\t\tthis.trigger('added', { content: content, position: position });\n\t\t};\n\t\n\t\t/**\n\t\t * Removes an item by its position.\n\t\t * @todo Use `item` instead of `content` for the event arguments.\n\t\t * @public\n\t\t * @param {Number} position - The relative position of the item to remove.\n\t\t */\n\t\tOwl.prototype.remove = function(position) {\n\t\t\tposition = this.normalize(position, true);\n\t\n\t\t\tif (position === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tthis.trigger('remove', { content: this._items[position], position: position });\n\t\n\t\t\tthis._items[position].remove();\n\t\t\tthis._items.splice(position, 1);\n\t\t\tthis._mergers.splice(position, 1);\n\t\n\t\t\tthis.invalidate('items');\n\t\n\t\t\tthis.trigger('removed', { content: null, position: position });\n\t\t};\n\t\n\t\t/**\n\t\t * Adds triggerable events.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.addTriggerableEvents = function() {\n\t\t\tvar handler = $.proxy(function(callback, event) {\n\t\t\t\treturn $.proxy(function(e) {\n\t\t\t\t\tif (e.relatedTarget !== this) {\n\t\t\t\t\t\tthis.suppress([ event ]);\n\t\t\t\t\t\tcallback.apply(this, [].slice.call(arguments, 1));\n\t\t\t\t\t\tthis.release([ event ]);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}, this);\n\t\n\t\t\t$.each({\n\t\t\t\t'next': this.next,\n\t\t\t\t'prev': this.prev,\n\t\t\t\t'to': this.to,\n\t\t\t\t'destroy': this.destroy,\n\t\t\t\t'refresh': this.refresh,\n\t\t\t\t'replace': this.replace,\n\t\t\t\t'add': this.add,\n\t\t\t\t'remove': this.remove\n\t\t\t}, $.proxy(function(event, callback) {\n\t\t\t\tthis.$element.on(event + '.owl.carousel', handler(callback, event + '.owl.carousel'));\n\t\t\t}, this));\n\t\n\t\t};\n\t\n\t\t/**\n\t\t * Watches the visibility of the carousel element.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.watchVisibility = function() {\n\t\n\t\t\t// test on zepto\n\t\t\tif (!isElVisible(this.$element.get(0))) {\n\t\t\t\tthis.$element.addClass('owl-hidden');\n\t\t\t\twindow.clearInterval(this.e._checkVisibile);\n\t\t\t\tthis.e._checkVisibile = window.setInterval($.proxy(checkVisible, this), 500);\n\t\t\t}\n\t\n\t\t\tfunction isElVisible(el) {\n\t\t\t\treturn el.offsetWidth > 0 && el.offsetHeight > 0;\n\t\t\t}\n\t\n\t\t\tfunction checkVisible() {\n\t\t\t\tif (isElVisible(this.$element.get(0))) {\n\t\t\t\t\tthis.$element.removeClass('owl-hidden');\n\t\t\t\t\tthis.refresh();\n\t\t\t\t\twindow.clearInterval(this.e._checkVisibile);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Preloads images with auto width.\n\t\t * @protected\n\t\t * @todo Still to test\n\t\t */\n\t\tOwl.prototype.preloadAutoWidthImages = function(imgs) {\n\t\t\tvar loaded, that, $el, img;\n\t\n\t\t\tloaded = 0;\n\t\t\tthat = this;\n\t\t\timgs.each(function(i, el) {\n\t\t\t\t$el = $(el);\n\t\t\t\timg = new Image();\n\t\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tloaded++;\n\t\t\t\t\t$el.attr('src', img.src);\n\t\t\t\t\t$el.css('opacity', 1);\n\t\t\t\t\tif (loaded >= imgs.length) {\n\t\t\t\t\t\tthat.state.imagesLoaded = true;\n\t\t\t\t\t\tthat.initialize();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\timg.src = $el.attr('src') || $el.attr('data-src') || $el.attr('data-src-retina');\n\t\t\t});\n\t\t};\n\t\n\t\t/**\n\t\t * Destroys the carousel.\n\t\t * @public\n\t\t */\n\t\tOwl.prototype.destroy = function() {\n\t\n\t\t\tif (this.$element.hasClass(this.settings.themeClass)) {\n\t\t\t\tthis.$element.removeClass(this.settings.themeClass);\n\t\t\t}\n\t\n\t\t\tif (this.settings.responsive !== false) {\n\t\t\t\t$(window).off('resize.owl.carousel');\n\t\t\t}\n\t\n\t\t\tif (this.transitionEndVendor) {\n\t\t\t\tthis.off(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd);\n\t\t\t}\n\t\n\t\t\tfor ( var i in this._plugins) {\n\t\t\t\tthis._plugins[i].destroy();\n\t\t\t}\n\t\n\t\t\tif (this.settings.mouseDrag || this.settings.touchDrag) {\n\t\t\t\tthis.$stage.off('mousedown touchstart touchcancel');\n\t\t\t\t$(document).off('.owl.dragEvents');\n\t\t\t\tthis.$stage.get(0).onselectstart = function() {};\n\t\t\t\tthis.$stage.off('dragstart', function() { return false });\n\t\t\t}\n\t\n\t\t\t// remove event handlers in the \".owl.carousel\" namespace\n\t\t\tthis.$element.off('.owl');\n\t\n\t\t\tthis.$stage.children('.cloned').remove();\n\t\t\tthis.e = null;\n\t\t\tthis.$element.removeData('owlCarousel');\n\t\n\t\t\tthis.$stage.children().contents().unwrap();\n\t\t\tthis.$stage.children().unwrap();\n\t\t\tthis.$stage.unwrap();\n\t\t};\n\t\n\t\t/**\n\t\t * Operators to calculate right-to-left and left-to-right.\n\t\t * @protected\n\t\t * @param {Number} [a] - The left side operand.\n\t\t * @param {String} [o] - The operator.\n\t\t * @param {Number} [b] - The right side operand.\n\t\t */\n\t\tOwl.prototype.op = function(a, o, b) {\n\t\t\tvar rtl = this.settings.rtl;\n\t\t\tswitch (o) {\n\t\t\t\tcase '<':\n\t\t\t\t\treturn rtl ? a > b : a < b;\n\t\t\t\tcase '>':\n\t\t\t\t\treturn rtl ? a < b : a > b;\n\t\t\t\tcase '>=':\n\t\t\t\t\treturn rtl ? a <= b : a >= b;\n\t\t\t\tcase '<=':\n\t\t\t\t\treturn rtl ? a >= b : a <= b;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Attaches to an internal event.\n\t\t * @protected\n\t\t * @param {HTMLElement} element - The event source.\n\t\t * @param {String} event - The event name.\n\t\t * @param {Function} listener - The event handler to attach.\n\t\t * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.\n\t\t */\n\t\tOwl.prototype.on = function(element, event, listener, capture) {\n\t\t\tif (element.addEventListener) {\n\t\t\t\telement.addEventListener(event, listener, capture);\n\t\t\t} else if (element.attachEvent) {\n\t\t\t\telement.attachEvent('on' + event, listener);\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Detaches from an internal event.\n\t\t * @protected\n\t\t * @param {HTMLElement} element - The event source.\n\t\t * @param {String} event - The event name.\n\t\t * @param {Function} listener - The attached event handler to detach.\n\t\t * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.\n\t\t */\n\t\tOwl.prototype.off = function(element, event, listener, capture) {\n\t\t\tif (element.removeEventListener) {\n\t\t\t\telement.removeEventListener(event, listener, capture);\n\t\t\t} else if (element.detachEvent) {\n\t\t\t\telement.detachEvent('on' + event, listener);\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Triggers an public event.\n\t\t * @protected\n\t\t * @param {String} name - The event name.\n\t\t * @param {*} [data=null] - The event data.\n\t\t * @param {String} [namespace=.owl.carousel] - The event namespace.\n\t\t * @returns {Event} - The event arguments.\n\t\t */\n\t\tOwl.prototype.trigger = function(name, data, namespace) {\n\t\t\tvar status = {\n\t\t\t\titem: { count: this._items.length, index: this.current() }\n\t\t\t}, handler = $.camelCase(\n\t\t\t\t$.grep([ 'on', name, namespace ], function(v) { return v })\n\t\t\t\t\t.join('-').toLowerCase()\n\t\t\t), event = $.Event(\n\t\t\t\t[ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(),\n\t\t\t\t$.extend({ relatedTarget: this }, status, data)\n\t\t\t);\n\t\n\t\t\tif (!this._supress[name]) {\n\t\t\t\t$.each(this._plugins, function(name, plugin) {\n\t\t\t\t\tif (plugin.onTrigger) {\n\t\t\t\t\t\tplugin.onTrigger(event);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\tthis.$element.trigger(event);\n\t\n\t\t\t\tif (this.settings && typeof this.settings[handler] === 'function') {\n\t\t\t\t\tthis.settings[handler].apply(this, event);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn event;\n\t\t};\n\t\n\t\t/**\n\t\t * Suppresses events.\n\t\t * @protected\n\t\t * @param {Array.} events - The events to suppress.\n\t\t */\n\t\tOwl.prototype.suppress = function(events) {\n\t\t\t$.each(events, $.proxy(function(index, event) {\n\t\t\t\tthis._supress[event] = true;\n\t\t\t}, this));\n\t\t}\n\t\n\t\t/**\n\t\t * Releases suppressed events.\n\t\t * @protected\n\t\t * @param {Array.} events - The events to release.\n\t\t */\n\t\tOwl.prototype.release = function(events) {\n\t\t\t$.each(events, $.proxy(function(index, event) {\n\t\t\t\tdelete this._supress[event];\n\t\t\t}, this));\n\t\t}\n\t\n\t\t/**\n\t\t * Checks the availability of some browser features.\n\t\t * @protected\n\t\t */\n\t\tOwl.prototype.browserSupport = function() {\n\t\t this.support3d = isPerspective();\n\t\n\t\t\tif (this.support3d) {\n\t\t\t\tthis.transformVendor = isTransform();\n\t\n\t\t\t\t// take transitionend event name by detecting transition\n\t\t\t\tvar endVendors = [ 'transitionend', 'webkitTransitionEnd', 'transitionend', 'oTransitionEnd' ];\n\t\t\t\tthis.transitionEndVendor = endVendors[isTransition()];\n\t\n\t\t\t\t// take vendor name from transform name\n\t\t\t\tthis.vendorName = this.transformVendor.replace(/Transform/i, '');\n\t\t\t\tthis.vendorName = this.vendorName !== '' ? '-' + this.vendorName.toLowerCase() + '-' : '';\n\t\t\t}\n\t\n\t\t\tthis.state.orientation = window.orientation;\n\t\t};\n\t\n\t\t/**\n\t\t * Get touch/drag coordinats.\n\t\t * @private\n\t\t * @param {event} - mousedown/touchstart event\n\t\t * @returns {object} - Contains X and Y of current mouse/touch position\n\t\t */\n\t\n\t\tfunction getTouches(event) {\n\t\t\tif (event.touches !== undefined) {\n\t\t\t\treturn {\n\t\t\t\t\tx: event.touches[0].pageX,\n\t\t\t\t\ty: event.touches[0].pageY\n\t\t\t\t};\n\t\t\t}\n\t\n\t\t\tif (event.touches === undefined) {\n\t\t\t\tif (event.pageX !== undefined) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tx: event.pageX,\n\t\t\t\t\t\ty: event.pageY\n\t\t\t\t\t};\n\t\t\t\t}\n\t\n\t\t\tif (event.pageX === undefined) {\n\t\t\t\treturn {\n\t\t\t\t\t\tx: event.clientX,\n\t\t\t\t\t\ty: event.clientY\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t/**\n\t\t * Checks for CSS support.\n\t\t * @private\n\t\t * @param {Array} array - The CSS properties to check for.\n\t\t * @returns {Array} - Contains the supported CSS property name and its index or `false`.\n\t\t */\n\t\tfunction isStyleSupported(array) {\n\t\t\tvar p, s, fake = document.createElement('div'), list = array;\n\t\t\tfor (p in list) {\n\t\t\t\ts = list[p];\n\t\t\t\tif (typeof fake.style[s] !== 'undefined') {\n\t\t\t\t\tfake = null;\n\t\t\t\t\treturn [ s, p ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn [ false ];\n\t\t}\n\t\n\t\t/**\n\t\t * Checks for CSS transition support.\n\t\t * @private\n\t\t * @todo Realy bad design\n\t\t * @returns {Number}\n\t\t */\n\t\tfunction isTransition() {\n\t\t\treturn isStyleSupported([ 'transition', 'WebkitTransition', 'MozTransition', 'OTransition' ])[1];\n\t\t}\n\t\n\t\t/**\n\t\t * Checks for CSS transform support.\n\t\t * @private\n\t\t * @returns {String} The supported property name or false.\n\t\t */\n\t\tfunction isTransform() {\n\t\t\treturn isStyleSupported([ 'transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform' ])[0];\n\t\t}\n\t\n\t\t/**\n\t\t * Checks for CSS perspective support.\n\t\t * @private\n\t\t * @returns {String} The supported property name or false.\n\t\t */\n\t\tfunction isPerspective() {\n\t\t\treturn isStyleSupported([ 'perspective', 'webkitPerspective', 'MozPerspective', 'OPerspective', 'MsPerspective' ])[0];\n\t\t}\n\t\n\t\t/**\n\t\t * Checks wether touch is supported or not.\n\t\t * @private\n\t\t * @returns {Boolean}\n\t\t */\n\t\tfunction isTouchSupport() {\n\t\t\treturn 'ontouchstart' in window || !!(navigator.msMaxTouchPoints);\n\t\t}\n\t\n\t\t/**\n\t\t * Checks wether touch is supported or not for IE.\n\t\t * @private\n\t\t * @returns {Boolean}\n\t\t */\n\t\tfunction isTouchSupportIE() {\n\t\t\treturn window.navigator.msPointerEnabled;\n\t\t}\n\t\n\t\t/**\n\t\t * The jQuery Plugin for the Owl Carousel\n\t\t * @public\n\t\t */\n\t\t$.fn.owlCarousel = function(options) {\n\t\t\treturn this.each(function() {\n\t\t\t\tif (!$(this).data('owlCarousel')) {\n\t\t\t\t\t$(this).data('owlCarousel', new Owl(this, options));\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\n\t\t/**\n\t\t * The constructor for the jQuery Plugin\n\t\t * @public\n\t\t */\n\t\t$.fn.owlCarousel.Constructor = Owl;\n\t\n\t})(window.Zepto || window.jQuery, window, document);\n\t\n\t/**\n\t * Lazy Plugin\n\t * @version 2.0.0\n\t * @author Bartosz Wojciechowski\n\t * @license The MIT License (MIT)\n\t */\n\t;(function($, window, document, undefined) {\n\t\n\t\t/**\n\t\t * Creates the lazy plugin.\n\t\t * @class The Lazy Plugin\n\t\t * @param {Owl} carousel - The Owl Carousel\n\t\t */\n\t\tvar Lazy = function(carousel) {\n\t\n\t\t\t/**\n\t\t\t * Reference to the core.\n\t\t\t * @protected\n\t\t\t * @type {Owl}\n\t\t\t */\n\t\t\tthis._core = carousel;\n\t\n\t\t\t/**\n\t\t\t * Already loaded items.\n\t\t\t * @protected\n\t\t\t * @type {Array.}\n\t\t\t */\n\t\t\tthis._loaded = [];\n\t\n\t\t\t/**\n\t\t\t * Event handlers.\n\t\t\t * @protected\n\t\t\t * @type {Object}\n\t\t\t */\n\t\t\tthis._handlers = {\n\t\t\t\t'initialized.owl.carousel change.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (!e.namespace) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (!this._core.settings || !this._core.settings.lazyLoad) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif ((e.property && e.property.name == 'position') || e.type == 'initialized') {\n\t\t\t\t\t\tvar settings = this._core.settings,\n\t\t\t\t\t\t\tn = (settings.center && Math.ceil(settings.items / 2) || settings.items),\n\t\t\t\t\t\t\ti = ((settings.center && n * -1) || 0),\n\t\t\t\t\t\t\tposition = ((e.property && e.property.value) || this._core.current()) + i,\n\t\t\t\t\t\t\tclones = this._core.clones().length,\n\t\t\t\t\t\t\tload = $.proxy(function(i, v) { this.load(v) }, this);\n\t\n\t\t\t\t\t\twhile (i++ < n) {\n\t\t\t\t\t\t\tthis.load(clones / 2 + this._core.relative(position));\n\t\t\t\t\t\t\tclones && $.each(this._core.clones(this._core.relative(position++)), load);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, this)\n\t\t\t};\n\t\n\t\t\t// set the default options\n\t\t\tthis._core.options = $.extend({}, Lazy.Defaults, this._core.options);\n\t\n\t\t\t// register event handler\n\t\t\tthis._core.$element.on(this._handlers);\n\t\t}\n\t\n\t\t/**\n\t\t * Default options.\n\t\t * @public\n\t\t */\n\t\tLazy.Defaults = {\n\t\t\tlazyLoad: false\n\t\t}\n\t\n\t\t/**\n\t\t * Loads all resources of an item at the specified position.\n\t\t * @param {Number} position - The absolute position of the item.\n\t\t * @protected\n\t\t */\n\t\tLazy.prototype.load = function(position) {\n\t\t\tvar $item = this._core.$stage.children().eq(position),\n\t\t\t\t$elements = $item && $item.find('.owl-lazy');\n\t\n\t\t\tif (!$elements || $.inArray($item.get(0), this._loaded) > -1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t$elements.each($.proxy(function(index, element) {\n\t\t\t\tvar $element = $(element), image,\n\t\t\t\t\turl = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src');\n\t\n\t\t\t\tthis._core.trigger('load', { element: $element, url: url }, 'lazy');\n\t\n\t\t\t\tif ($element.is('img')) {\n\t\t\t\t\t$element.one('load.owl.lazy', $.proxy(function() {\n\t\t\t\t\t\t$element.css('opacity', 1);\n\t\t\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\n\t\t\t\t\t}, this)).attr('src', url);\n\t\t\t\t} else {\n\t\t\t\t\timage = new Image();\n\t\t\t\t\timage.onload = $.proxy(function() {\n\t\t\t\t\t\t$element.css({\n\t\t\t\t\t\t\t'background-image': 'url(' + url + ')',\n\t\t\t\t\t\t\t'opacity': '1'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\n\t\t\t\t\t}, this);\n\t\t\t\t\timage.src = url;\n\t\t\t\t}\n\t\t\t}, this));\n\t\n\t\t\tthis._loaded.push($item.get(0));\n\t\t}\n\t\n\t\t/**\n\t\t * Destroys the plugin.\n\t\t * @public\n\t\t */\n\t\tLazy.prototype.destroy = function() {\n\t\t\tvar handler, property;\n\t\n\t\t\tfor (handler in this.handlers) {\n\t\t\t\tthis._core.$element.off(handler, this.handlers[handler]);\n\t\t\t}\n\t\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t\t}\n\t\t}\n\t\n\t\t$.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;\n\t\n\t})(window.Zepto || window.jQuery, window, document);\n\t\n\t/**\n\t * AutoHeight Plugin\n\t * @version 2.0.0\n\t * @author Bartosz Wojciechowski\n\t * @license The MIT License (MIT)\n\t */\n\t;(function($, window, document, undefined) {\n\t\n\t\t/**\n\t\t * Creates the auto height plugin.\n\t\t * @class The Auto Height Plugin\n\t\t * @param {Owl} carousel - The Owl Carousel\n\t\t */\n\t\tvar AutoHeight = function(carousel) {\n\t\t\t/**\n\t\t\t * Reference to the core.\n\t\t\t * @protected\n\t\t\t * @type {Owl}\n\t\t\t */\n\t\t\tthis._core = carousel;\n\t\n\t\t\t/**\n\t\t\t * All event handlers.\n\t\t\t * @protected\n\t\t\t * @type {Object}\n\t\t\t */\n\t\t\tthis._handlers = {\n\t\t\t\t'initialized.owl.carousel': $.proxy(function() {\n\t\t\t\t\tif (this._core.settings.autoHeight) {\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (this._core.settings.autoHeight && e.property.name == 'position'){\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'loaded.owl.lazy': $.proxy(function(e) {\n\t\t\t\t\tif (this._core.settings.autoHeight && e.element.closest('.' + this._core.settings.itemClass)\n\t\t\t\t\t\t=== this._core.$stage.children().eq(this._core.current())) {\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t}\n\t\t\t\t}, this)\n\t\t\t};\n\t\n\t\t\t// set default options\n\t\t\tthis._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);\n\t\n\t\t\t// register event handlers\n\t\t\tthis._core.$element.on(this._handlers);\n\t\t};\n\t\n\t\t/**\n\t\t * Default options.\n\t\t * @public\n\t\t */\n\t\tAutoHeight.Defaults = {\n\t\t\tautoHeight: false,\n\t\t\tautoHeightClass: 'owl-height'\n\t\t};\n\t\n\t\t/**\n\t\t * Updates the view.\n\t\t */\n\t\tAutoHeight.prototype.update = function() {\n\t\t\tthis._core.$stage.parent()\n\t\t\t\t.height(this._core.$stage.children().eq(this._core.current()).height())\n\t\t\t\t.addClass(this._core.settings.autoHeightClass);\n\t\t};\n\t\n\t\tAutoHeight.prototype.destroy = function() {\n\t\t\tvar handler, property;\n\t\n\t\t\tfor (handler in this._handlers) {\n\t\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t\t}\n\t\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t\t}\n\t\t};\n\t\n\t\t$.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;\n\t\n\t})(window.Zepto || window.jQuery, window, document);\n\t\n\t/**\n\t * Video Plugin\n\t * @version 2.0.0\n\t * @author Bartosz Wojciechowski\n\t * @license The MIT License (MIT)\n\t */\n\t;(function($, window, document, undefined) {\n\t\n\t\t/**\n\t\t * Creates the video plugin.\n\t\t * @class The Video Plugin\n\t\t * @param {Owl} carousel - The Owl Carousel\n\t\t */\n\t\tvar Video = function(carousel) {\n\t\t\t/**\n\t\t\t * Reference to the core.\n\t\t\t * @protected\n\t\t\t * @type {Owl}\n\t\t\t */\n\t\t\tthis._core = carousel;\n\t\n\t\t\t/**\n\t\t\t * Cache all video URLs.\n\t\t\t * @protected\n\t\t\t * @type {Object}\n\t\t\t */\n\t\t\tthis._videos = {};\n\t\n\t\t\t/**\n\t\t\t * Current playing item.\n\t\t\t * @protected\n\t\t\t * @type {jQuery}\n\t\t\t */\n\t\t\tthis._playing = null;\n\t\n\t\t\t/**\n\t\t\t * Whether this is in fullscreen or not.\n\t\t\t * @protected\n\t\t\t * @type {Boolean}\n\t\t\t */\n\t\t\tthis._fullscreen = false;\n\t\n\t\t\t/**\n\t\t\t * All event handlers.\n\t\t\t * @protected\n\t\t\t * @type {Object}\n\t\t\t */\n\t\t\tthis._handlers = {\n\t\t\t\t'resize.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (this._core.settings.video && !this.isInFullScreen()) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'refresh.owl.carousel changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (this._playing) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tvar $element = $(e.content).find('.owl-video');\n\t\t\t\t\tif ($element.length) {\n\t\t\t\t\t\t$element.css('display', 'none');\n\t\t\t\t\t\tthis.fetch($element, $(e.content));\n\t\t\t\t\t}\n\t\t\t\t}, this)\n\t\t\t};\n\t\n\t\t\t// set default options\n\t\t\tthis._core.options = $.extend({}, Video.Defaults, this._core.options);\n\t\n\t\t\t// register event handlers\n\t\t\tthis._core.$element.on(this._handlers);\n\t\n\t\t\tthis._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) {\n\t\t\t\tthis.play(e);\n\t\t\t}, this));\n\t\t};\n\t\n\t\t/**\n\t\t * Default options.\n\t\t * @public\n\t\t */\n\t\tVideo.Defaults = {\n\t\t\tvideo: false,\n\t\t\tvideoHeight: false,\n\t\t\tvideoWidth: false\n\t\t};\n\t\n\t\t/**\n\t\t * Gets the video ID and the type (YouTube/Vimeo only).\n\t\t * @protected\n\t\t * @param {jQuery} target - The target containing the video data.\n\t\t * @param {jQuery} item - The item containing the video.\n\t\t */\n\t\tVideo.prototype.fetch = function(target, item) {\n\t\n\t\t\tvar type = target.attr('data-vimeo-id') ? 'vimeo' : 'youtube',\n\t\t\t\tid = target.attr('data-vimeo-id') || target.attr('data-youtube-id'),\n\t\t\t\twidth = target.attr('data-width') || this._core.settings.videoWidth,\n\t\t\t\theight = target.attr('data-height') || this._core.settings.videoHeight,\n\t\t\t\turl = target.attr('href');\n\t\n\t\t\tif (url) {\n\t\t\t\tid = 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+)?/);\n\t\n\t\t\t\tif (id[3].indexOf('youtu') > -1) {\n\t\t\t\t\ttype = 'youtube';\n\t\t\t\t} else if (id[3].indexOf('vimeo') > -1) {\n\t\t\t\t\ttype = 'vimeo';\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error('Video URL not supported.');\n\t\t\t\t}\n\t\t\t\tid = id[6];\n\t\t\t} else {\n\t\t\t\tthrow new Error('Missing video URL.');\n\t\t\t}\n\t\n\t\t\tthis._videos[url] = {\n\t\t\t\ttype: type,\n\t\t\t\tid: id,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\n\t\t\titem.attr('data-video', url);\n\t\n\t\t\tthis.thumbnail(target, this._videos[url]);\n\t\t};\n\t\n\t\t/**\n\t\t * Creates video thumbnail.\n\t\t * @protected\n\t\t * @param {jQuery} target - The target containing the video data.\n\t\t * @param {Object} info - The video info object.\n\t\t * @see `fetch`\n\t\t */\n\t\tVideo.prototype.thumbnail = function(target, video) {\n\t\n\t\t\tvar tnLink,\n\t\t\t\ticon,\n\t\t\t\tpath,\n\t\t\t\tdimensions = video.width && video.height ? 'style=\"width:' + video.width + 'px;height:' + video.height + 'px;\"' : '',\n\t\t\t\tcustomTn = target.find('img'),\n\t\t\t\tsrcType = 'src',\n\t\t\t\tlazyClass = '',\n\t\t\t\tsettings = this._core.settings,\n\t\t\t\tcreate = function(path) {\n\t\t\t\t\ticon = '
    ';\n\t\n\t\t\t\t\tif (settings.lazyLoad) {\n\t\t\t\t\t\ttnLink = '
    ';\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttnLink = '
    ';\n\t\t\t\t\t}\n\t\t\t\t\ttarget.after(tnLink);\n\t\t\t\t\ttarget.after(icon);\n\t\t\t\t};\n\t\n\t\t\t// wrap video content into owl-video-wrapper div\n\t\t\ttarget.wrap('
    ');\n\t\n\t\t\tif (this._core.settings.lazyLoad) {\n\t\t\t\tsrcType = 'data-src';\n\t\t\t\tlazyClass = 'owl-lazy';\n\t\t\t}\n\t\n\t\t\t// custom thumbnail\n\t\t\tif (customTn.length) {\n\t\t\t\tcreate(customTn.attr(srcType));\n\t\t\t\tcustomTn.remove();\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tif (video.type === 'youtube') {\n\t\t\t\tpath = \"http://img.youtube.com/vi/\" + video.id + \"/hqdefault.jpg\";\n\t\t\t\tcreate(path);\n\t\t\t} else if (video.type === 'vimeo') {\n\t\t\t\t$.ajax({\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\turl: 'http://vimeo.com/api/v2/video/' + video.id + '.json',\n\t\t\t\t\tjsonp: 'callback',\n\t\t\t\t\tdataType: 'jsonp',\n\t\t\t\t\tsuccess: function(data) {\n\t\t\t\t\t\tpath = data[0].thumbnail_large;\n\t\t\t\t\t\tcreate(path);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Stops the current video.\n\t\t * @public\n\t\t */\n\t\tVideo.prototype.stop = function() {\n\t\t\tthis._core.trigger('stop', null, 'video');\n\t\t\tthis._playing.find('.owl-video-frame').remove();\n\t\t\tthis._playing.removeClass('owl-video-playing');\n\t\t\tthis._playing = null;\n\t\t};\n\t\n\t\t/**\n\t\t * Starts the current video.\n\t\t * @public\n\t\t * @param {Event} ev - The event arguments.\n\t\t */\n\t\tVideo.prototype.play = function(ev) {\n\t\t\tthis._core.trigger('play', null, 'video');\n\t\n\t\t\tif (this._playing) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\n\t\t\tvar target = $(ev.target || ev.srcElement),\n\t\t\t\titem = target.closest('.' + this._core.settings.itemClass),\n\t\t\t\tvideo = this._videos[item.attr('data-video')],\n\t\t\t\twidth = video.width || '100%',\n\t\t\t\theight = video.height || this._core.$stage.height(),\n\t\t\t\thtml, wrap;\n\t\n\t\t\tif (video.type === 'youtube') {\n\t\t\t\thtml = '';\n\t\t\t} else if (video.type === 'vimeo') {\n\t\t\t\thtml = '';\n\t\t\t}\n\t\n\t\t\titem.addClass('owl-video-playing');\n\t\t\tthis._playing = item;\n\t\n\t\t\twrap = $('
    '\n\t\t\t\t+ html + '
    ');\n\t\t\ttarget.after(wrap);\n\t\t};\n\t\n\t\t/**\n\t\t * Checks whether an video is currently in full screen mode or not.\n\t\t * @todo Bad style because looks like a readonly method but changes members.\n\t\t * @protected\n\t\t * @returns {Boolean}\n\t\t */\n\t\tVideo.prototype.isInFullScreen = function() {\n\t\n\t\t\t// if Vimeo Fullscreen mode\n\t\t\tvar element = document.fullscreenElement || document.mozFullScreenElement\n\t\t\t\t|| document.webkitFullscreenElement;\n\t\n\t\t\tif (element && $(element).parent().hasClass('owl-video-frame')) {\n\t\t\t\tthis._core.speed(0);\n\t\t\t\tthis._fullscreen = true;\n\t\t\t}\n\t\n\t\t\tif (element && this._fullscreen && this._playing) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// comming back from fullscreen\n\t\t\tif (this._fullscreen) {\n\t\t\t\tthis._fullscreen = false;\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// check full screen mode and window orientation\n\t\t\tif (this._playing) {\n\t\t\t\tif (this._core.state.orientation !== window.orientation) {\n\t\t\t\t\tthis._core.state.orientation = window.orientation;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn true;\n\t\t};\n\t\n\t\t/**\n\t\t * Destroys the plugin.\n\t\t */\n\t\tVideo.prototype.destroy = function() {\n\t\t\tvar handler, property;\n\t\n\t\t\tthis._core.$element.off('click.owl.video');\n\t\n\t\t\tfor (handler in this._handlers) {\n\t\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t\t}\n\t\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t\t}\n\t\t};\n\t\n\t\t$.fn.owlCarousel.Constructor.Plugins.Video = Video;\n\t\n\t})(window.Zepto || window.jQuery, window, document);\n\t\n\t/**\n\t * Animate Plugin\n\t * @version 2.0.0\n\t * @author Bartosz Wojciechowski\n\t * @license The MIT License (MIT)\n\t */\n\t;(function($, window, document, undefined) {\n\t\n\t\t/**\n\t\t * Creates the animate plugin.\n\t\t * @class The Navigation Plugin\n\t\t * @param {Owl} scope - The Owl Carousel\n\t\t */\n\t\tvar Animate = function(scope) {\n\t\t\tthis.core = scope;\n\t\t\tthis.core.options = $.extend({}, Animate.Defaults, this.core.options);\n\t\t\tthis.swapping = true;\n\t\t\tthis.previous = undefined;\n\t\t\tthis.next = undefined;\n\t\n\t\t\tthis.handlers = {\n\t\t\t\t'change.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (e.property.name == 'position') {\n\t\t\t\t\t\tthis.previous = this.core.current();\n\t\t\t\t\t\tthis.next = e.property.value;\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tthis.swapping = e.type == 'translated';\n\t\t\t\t}, this),\n\t\t\t\t'translate.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {\n\t\t\t\t\t\tthis.swap();\n\t\t\t\t\t}\n\t\t\t\t}, this)\n\t\t\t};\n\t\n\t\t\tthis.core.$element.on(this.handlers);\n\t\t};\n\t\n\t\t/**\n\t\t * Default options.\n\t\t * @public\n\t\t */\n\t\tAnimate.Defaults = {\n\t\t\tanimateOut: false,\n\t\t\tanimateIn: false\n\t\t};\n\t\n\t\t/**\n\t\t * Toggles the animation classes whenever an translations starts.\n\t\t * @protected\n\t\t * @returns {Boolean|undefined}\n\t\t */\n\t\tAnimate.prototype.swap = function() {\n\t\n\t\t\tif (this.core.settings.items !== 1 || !this.core.support3d) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tthis.core.speed(0);\n\t\n\t\t\tvar left,\n\t\t\t\tclear = $.proxy(this.clear, this),\n\t\t\t\tprevious = this.core.$stage.children().eq(this.previous),\n\t\t\t\tnext = this.core.$stage.children().eq(this.next),\n\t\t\t\tincoming = this.core.settings.animateIn,\n\t\t\t\toutgoing = this.core.settings.animateOut;\n\t\n\t\t\tif (this.core.current() === this.previous) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tif (outgoing) {\n\t\t\t\tleft = this.core.coordinates(this.previous) - this.core.coordinates(this.next);\n\t\t\t\tprevious.css( { 'left': left + 'px' } )\n\t\t\t\t\t.addClass('animated owl-animated-out')\n\t\t\t\t\t.addClass(outgoing)\n\t\t\t\t\t.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', clear);\n\t\t\t}\n\t\n\t\t\tif (incoming) {\n\t\t\t\tnext.addClass('animated owl-animated-in')\n\t\t\t\t\t.addClass(incoming)\n\t\t\t\t\t.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', clear);\n\t\t\t}\n\t\t};\n\t\n\t\tAnimate.prototype.clear = function(e) {\n\t\t\t$(e.target).css( { 'left': '' } )\n\t\t\t\t.removeClass('animated owl-animated-out owl-animated-in')\n\t\t\t\t.removeClass(this.core.settings.animateIn)\n\t\t\t\t.removeClass(this.core.settings.animateOut);\n\t\t\tthis.core.transitionEnd();\n\t\t}\n\t\n\t\t/**\n\t\t * Destroys the plugin.\n\t\t * @public\n\t\t */\n\t\tAnimate.prototype.destroy = function() {\n\t\t\tvar handler, property;\n\t\n\t\t\tfor (handler in this.handlers) {\n\t\t\t\tthis.core.$element.off(handler, this.handlers[handler]);\n\t\t\t}\n\t\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t\t}\n\t\t};\n\t\n\t\t$.fn.owlCarousel.Constructor.Plugins.Animate = Animate;\n\t\n\t})(window.Zepto || window.jQuery, window, document);\n\t\n\t/**\n\t * Autoplay Plugin\n\t * @version 2.0.0\n\t * @author Bartosz Wojciechowski\n\t * @license The MIT License (MIT)\n\t */\n\t;(function($, window, document, undefined) {\n\t\n\t\t/**\n\t\t * Creates the autoplay plugin.\n\t\t * @class The Autoplay Plugin\n\t\t * @param {Owl} scope - The Owl Carousel\n\t\t */\n\t\tvar Autoplay = function(scope) {\n\t\t\tthis.core = scope;\n\t\t\tthis.core.options = $.extend({}, Autoplay.Defaults, this.core.options);\n\t\n\t\t\tthis.handlers = {\n\t\t\t\t'translated.owl.carousel refreshed.owl.carousel': $.proxy(function() {\n\t\t\t\t\tthis.autoplay();\n\t\t\t\t}, this),\n\t\t\t\t'play.owl.autoplay': $.proxy(function(e, t, s) {\n\t\t\t\t\tthis.play(t, s);\n\t\t\t\t}, this),\n\t\t\t\t'stop.owl.autoplay': $.proxy(function() {\n\t\t\t\t\tthis.stop();\n\t\t\t\t}, this),\n\t\t\t\t'mouseover.owl.autoplay': $.proxy(function() {\n\t\t\t\t\tif (this.core.settings.autoplayHoverPause) {\n\t\t\t\t\t\tthis.pause();\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'mouseleave.owl.autoplay': $.proxy(function() {\n\t\t\t\t\tif (this.core.settings.autoplayHoverPause) {\n\t\t\t\t\t\tthis.autoplay();\n\t\t\t\t\t}\n\t\t\t\t}, this)\n\t\t\t};\n\t\n\t\t\tthis.core.$element.on(this.handlers);\n\t\t};\n\t\n\t\t/**\n\t\t * Default options.\n\t\t * @public\n\t\t */\n\t\tAutoplay.Defaults = {\n\t\t\tautoplay: false,\n\t\t\tautoplayTimeout: 5000,\n\t\t\tautoplayHoverPause: false,\n\t\t\tautoplaySpeed: false\n\t\t};\n\t\n\t\t/**\n\t\t * @protected\n\t\t * @todo Must be documented.\n\t\t */\n\t\tAutoplay.prototype.autoplay = function() {\n\t\t\tif (this.core.settings.autoplay && !this.core.state.videoPlay) {\n\t\t\t\twindow.clearInterval(this.interval);\n\t\n\t\t\t\tthis.interval = window.setInterval($.proxy(function() {\n\t\t\t\t\tthis.play();\n\t\t\t\t}, this), this.core.settings.autoplayTimeout);\n\t\t\t} else {\n\t\t\t\twindow.clearInterval(this.interval);\n\t\t\t}\n\t\t};\n\t\n\t\t/**\n\t\t * Starts the autoplay.\n\t\t * @public\n\t\t * @param {Number} [timeout] - ...\n\t\t * @param {Number} [speed] - ...\n\t\t * @returns {Boolean|undefined} - ...\n\t\t * @todo Must be documented.\n\t\t */\n\t\tAutoplay.prototype.play = function(timeout, speed) {\n\t\t\t// if tab is inactive - doesnt work in }\n\t\t\t */\n\t\t\tthis._templates = [];\n\t\n\t\t\t/**\n\t\t\t * The carousel element.\n\t\t\t * @type {jQuery}\n\t\t\t */\n\t\t\tthis.$element = this._core.$element;\n\t\n\t\t\t/**\n\t\t\t * Overridden methods of the carousel.\n\t\t\t * @protected\n\t\t\t * @type {Object}\n\t\t\t */\n\t\t\tthis._overrides = {\n\t\t\t\tnext: this._core.next,\n\t\t\t\tprev: this._core.prev,\n\t\t\t\tto: this._core.to\n\t\t\t};\n\t\n\t\t\t/**\n\t\t\t * All event handlers.\n\t\t\t * @protected\n\t\t\t * @type {Object}\n\t\t\t */\n\t\t\tthis._handlers = {\n\t\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (this._core.settings.dotsData) {\n\t\t\t\t\t\tthis._templates.push($(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot'));\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'add.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (this._core.settings.dotsData) {\n\t\t\t\t\t\tthis._templates.splice(e.position, 0, $(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot'));\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'remove.owl.carousel prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (this._core.settings.dotsData) {\n\t\t\t\t\t\tthis._templates.splice(e.position, 1);\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'change.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (e.property.name == 'position') {\n\t\t\t\t\t\tif (!this._core.state.revert && !this._core.settings.loop && this._core.settings.navRewind) {\n\t\t\t\t\t\t\tvar current = this._core.current(),\n\t\t\t\t\t\t\t\tmaximum = this._core.maximum(),\n\t\t\t\t\t\t\t\tminimum = this._core.minimum();\n\t\t\t\t\t\t\te.data = e.property.value > maximum\n\t\t\t\t\t\t\t\t? current >= maximum ? minimum : maximum\n\t\t\t\t\t\t\t\t: e.property.value < minimum ? maximum : e.property.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tif (e.property.name == 'position') {\n\t\t\t\t\t\tthis.draw();\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'refreshed.owl.carousel': $.proxy(function() {\n\t\t\t\t\tif (!this._initialized) {\n\t\t\t\t\t\tthis.initialize();\n\t\t\t\t\t\tthis._initialized = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis._core.trigger('refresh', null, 'navigation');\n\t\t\t\t\tthis.update();\n\t\t\t\t\tthis.draw();\n\t\t\t\t\tthis._core.trigger('refreshed', null, 'navigation');\n\t\t\t\t}, this)\n\t\t\t};\n\t\n\t\t\t// set default options\n\t\t\tthis._core.options = $.extend({}, Navigation.Defaults, this._core.options);\n\t\n\t\t\t// register event handlers\n\t\t\tthis.$element.on(this._handlers);\n\t\t}\n\t\n\t\t/**\n\t\t * Default options.\n\t\t * @public\n\t\t * @todo Rename `slideBy` to `navBy`\n\t\t */\n\t\tNavigation.Defaults = {\n\t\t\tnav: false,\n\t\t\tnavRewind: true,\n\t\t\tnavText: [ 'prev', 'next' ],\n\t\t\tnavSpeed: false,\n\t\t\tnavElement: 'div',\n\t\t\tnavContainer: false,\n\t\t\tnavContainerClass: 'owl-nav',\n\t\t\tnavClass: [ 'owl-prev', 'owl-next' ],\n\t\t\tslideBy: 1,\n\t\t\tdotClass: 'owl-dot',\n\t\t\tdotsClass: 'owl-dots',\n\t\t\tdots: true,\n\t\t\tdotsEach: false,\n\t\t\tdotData: false,\n\t\t\tdotsSpeed: false,\n\t\t\tdotsContainer: false,\n\t\t\tcontrolsClass: 'owl-controls'\n\t\t}\n\t\n\t\t/**\n\t\t * Initializes the layout of the plugin and extends the carousel.\n\t\t * @protected\n\t\t */\n\t\tNavigation.prototype.initialize = function() {\n\t\t\tvar $container, override,\n\t\t\t\toptions = this._core.settings;\n\t\n\t\t\t// create the indicator template\n\t\t\tif (!options.dotsData) {\n\t\t\t\tthis._templates = [ $('
    ')\n\t\t\t\t\t.addClass(options.dotClass)\n\t\t\t\t\t.append($(''))\n\t\t\t\t\t.prop('outerHTML') ];\n\t\t\t}\n\t\n\t\t\t// create controls container if needed\n\t\t\tif (!options.navContainer || !options.dotsContainer) {\n\t\t\t\tthis._controls.$container = $('
    ')\n\t\t\t\t\t.addClass(options.controlsClass)\n\t\t\t\t\t.appendTo(this.$element);\n\t\t\t}\n\t\n\t\t\t// create DOM structure for absolute navigation\n\t\t\tthis._controls.$indicators = options.dotsContainer ? $(options.dotsContainer)\n\t\t\t\t: $('
    ').hide().addClass(options.dotsClass).appendTo(this._controls.$container);\n\t\n\t\t\tthis._controls.$indicators.on('click', 'div', $.proxy(function(e) {\n\t\t\t\tvar index = $(e.target).parent().is(this._controls.$indicators)\n\t\t\t\t\t? $(e.target).index() : $(e.target).parent().index();\n\t\n\t\t\t\te.preventDefault();\n\t\n\t\t\t\tthis.to(index, options.dotsSpeed);\n\t\t\t}, this));\n\t\n\t\t\t// create DOM structure for relative navigation\n\t\t\t$container = options.navContainer ? $(options.navContainer)\n\t\t\t\t: $('
    ').addClass(options.navContainerClass).prependTo(this._controls.$container);\n\t\n\t\t\tthis._controls.$next = $('<' + options.navElement + '>');\n\t\t\tthis._controls.$previous = this._controls.$next.clone();\n\t\n\t\t\tthis._controls.$previous\n\t\t\t\t.addClass(options.navClass[0])\n\t\t\t\t.html(options.navText[0])\n\t\t\t\t.hide()\n\t\t\t\t.prependTo($container)\n\t\t\t\t.on('click', $.proxy(function(e) {\n\t\t\t\t\tthis.prev(options.navSpeed);\n\t\t\t\t}, this));\n\t\t\tthis._controls.$next\n\t\t\t\t.addClass(options.navClass[1])\n\t\t\t\t.html(options.navText[1])\n\t\t\t\t.hide()\n\t\t\t\t.appendTo($container)\n\t\t\t\t.on('click', $.proxy(function(e) {\n\t\t\t\t\tthis.next(options.navSpeed);\n\t\t\t\t}, this));\n\t\n\t\t\t// override public methods of the carousel\n\t\t\tfor (override in this._overrides) {\n\t\t\t\tthis._core[override] = $.proxy(this[override], this);\n\t\t\t}\n\t\t}\n\t\n\t\t/**\n\t\t * Destroys the plugin.\n\t\t * @protected\n\t\t */\n\t\tNavigation.prototype.destroy = function() {\n\t\t\tvar handler, control, property, override;\n\t\n\t\t\tfor (handler in this._handlers) {\n\t\t\t\tthis.$element.off(handler, this._handlers[handler]);\n\t\t\t}\n\t\t\tfor (control in this._controls) {\n\t\t\t\tthis._controls[control].remove();\n\t\t\t}\n\t\t\tfor (override in this.overides) {\n\t\t\t\tthis._core[override] = this._overrides[override];\n\t\t\t}\n\t\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t\t}\n\t\t}\n\t\n\t\t/**\n\t\t * Updates the internal state.\n\t\t * @protected\n\t\t */\n\t\tNavigation.prototype.update = function() {\n\t\t\tvar i, j, k,\n\t\t\t\toptions = this._core.settings,\n\t\t\t\tlower = this._core.clones().length / 2,\n\t\t\t\tupper = lower + this._core.items().length,\n\t\t\t\tsize = options.center || options.autoWidth || options.dotData\n\t\t\t\t\t? 1 : options.dotsEach || options.items;\n\t\n\t\t\tif (options.slideBy !== 'page') {\n\t\t\t\toptions.slideBy = Math.min(options.slideBy, options.items);\n\t\t\t}\n\t\n\t\t\tif (options.dots || options.slideBy == 'page') {\n\t\t\t\tthis._pages = [];\n\t\n\t\t\t\tfor (i = lower, j = 0, k = 0; i < upper; i++) {\n\t\t\t\t\tif (j >= size || j === 0) {\n\t\t\t\t\t\tthis._pages.push({\n\t\t\t\t\t\t\tstart: i - lower,\n\t\t\t\t\t\t\tend: i - lower + size - 1\n\t\t\t\t\t\t});\n\t\t\t\t\t\tj = 0, ++k;\n\t\t\t\t\t}\n\t\t\t\t\tj += this._core.mergers(this._core.relative(i));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t/**\n\t\t * Draws the user interface.\n\t\t * @todo The option `dotData` wont work.\n\t\t * @protected\n\t\t */\n\t\tNavigation.prototype.draw = function() {\n\t\t\tvar difference, i, html = '',\n\t\t\t\toptions = this._core.settings,\n\t\t\t\t$items = this._core.$stage.children(),\n\t\t\t\tindex = this._core.relative(this._core.current());\n\t\n\t\t\tif (options.nav && !options.loop && !options.navRewind) {\n\t\t\t\tthis._controls.$previous.toggleClass('disabled', index <= 0);\n\t\t\t\tthis._controls.$next.toggleClass('disabled', index >= this._core.maximum());\n\t\t\t}\n\t\n\t\t\tthis._controls.$previous.toggle(options.nav);\n\t\t\tthis._controls.$next.toggle(options.nav);\n\t\n\t\t\tif (options.dots) {\n\t\t\t\tdifference = this._pages.length - this._controls.$indicators.children().length;\n\t\n\t\t\t\tif (options.dotData && difference !== 0) {\n\t\t\t\t\tfor (i = 0; i < this._controls.$indicators.children().length; i++) {\n\t\t\t\t\t\thtml += this._templates[this._core.relative(i)];\n\t\t\t\t\t}\n\t\t\t\t\tthis._controls.$indicators.html(html);\n\t\t\t\t} else if (difference > 0) {\n\t\t\t\t\thtml = new Array(difference + 1).join(this._templates[0]);\n\t\t\t\t\tthis._controls.$indicators.append(html);\n\t\t\t\t} else if (difference < 0) {\n\t\t\t\t\tthis._controls.$indicators.children().slice(difference).remove();\n\t\t\t\t}\n\t\n\t\t\t\tthis._controls.$indicators.find('.active').removeClass('active');\n\t\t\t\tthis._controls.$indicators.children().eq($.inArray(this.current(), this._pages)).addClass('active');\n\t\t\t}\n\t\n\t\t\tthis._controls.$indicators.toggle(options.dots);\n\t\t}\n\t\n\t\t/**\n\t\t * Extends event data.\n\t\t * @protected\n\t\t * @param {Event} event - The event object which gets thrown.\n\t\t */\n\t\tNavigation.prototype.onTrigger = function(event) {\n\t\t\tvar settings = this._core.settings;\n\t\n\t\t\tevent.page = {\n\t\t\t\tindex: $.inArray(this.current(), this._pages),\n\t\t\t\tcount: this._pages.length,\n\t\t\t\tsize: settings && (settings.center || settings.autoWidth || settings.dotData\n\t\t\t\t\t? 1 : settings.dotsEach || settings.items)\n\t\t\t};\n\t\t}\n\t\n\t\t/**\n\t\t * Gets the current page position of the carousel.\n\t\t * @protected\n\t\t * @returns {Number}\n\t\t */\n\t\tNavigation.prototype.current = function() {\n\t\t\tvar index = this._core.relative(this._core.current());\n\t\t\treturn $.grep(this._pages, function(o) {\n\t\t\t\treturn o.start <= index && o.end >= index;\n\t\t\t}).pop();\n\t\t}\n\t\n\t\t/**\n\t\t * Gets the current succesor/predecessor position.\n\t\t * @protected\n\t\t * @returns {Number}\n\t\t */\n\t\tNavigation.prototype.getPosition = function(successor) {\n\t\t\tvar position, length,\n\t\t\t\toptions = this._core.settings;\n\t\n\t\t\tif (options.slideBy == 'page') {\n\t\t\t\tposition = $.inArray(this.current(), this._pages);\n\t\t\t\tlength = this._pages.length;\n\t\t\t\tsuccessor ? ++position : --position;\n\t\t\t\tposition = this._pages[((position % length) + length) % length].start;\n\t\t\t} else {\n\t\t\t\tposition = this._core.relative(this._core.current());\n\t\t\t\tlength = this._core.items().length;\n\t\t\t\tsuccessor ? position += options.slideBy : position -= options.slideBy;\n\t\t\t}\n\t\t\treturn position;\n\t\t}\n\t\n\t\t/**\n\t\t * Slides to the next item or page.\n\t\t * @public\n\t\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\n\t\t */\n\t\tNavigation.prototype.next = function(speed) {\n\t\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);\n\t\t}\n\t\n\t\t/**\n\t\t * Slides to the previous item or page.\n\t\t * @public\n\t\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\n\t\t */\n\t\tNavigation.prototype.prev = function(speed) {\n\t\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);\n\t\t}\n\t\n\t\t/**\n\t\t * Slides to the specified item or page.\n\t\t * @public\n\t\t * @param {Number} position - The position of the item or page.\n\t\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t\t * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.\n\t\t */\n\t\tNavigation.prototype.to = function(position, speed, standard) {\n\t\t\tvar length;\n\t\n\t\t\tif (!standard) {\n\t\t\t\tlength = this._pages.length;\n\t\t\t\t$.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);\n\t\t\t} else {\n\t\t\t\t$.proxy(this._overrides.to, this._core)(position, speed);\n\t\t\t}\n\t\t}\n\t\n\t\t$.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;\n\t\n\t})(window.Zepto || window.jQuery, window, document);\n\t\n\t/**\n\t * Hash Plugin\n\t * @version 2.0.0\n\t * @author Artus Kolanowski\n\t * @license The MIT License (MIT)\n\t */\n\t;(function($, window, document, undefined) {\n\t\t'use strict';\n\t\n\t\t/**\n\t\t * Creates the hash plugin.\n\t\t * @class The Hash Plugin\n\t\t * @param {Owl} carousel - The Owl Carousel\n\t\t */\n\t\tvar Hash = function(carousel) {\n\t\t\t/**\n\t\t\t * Reference to the core.\n\t\t\t * @protected\n\t\t\t * @type {Owl}\n\t\t\t */\n\t\t\tthis._core = carousel;\n\t\n\t\t\t/**\n\t\t\t * Hash table for the hashes.\n\t\t\t * @protected\n\t\t\t * @type {Object}\n\t\t\t */\n\t\t\tthis._hashes = {};\n\t\n\t\t\t/**\n\t\t\t * The carousel element.\n\t\t\t * @type {jQuery}\n\t\t\t */\n\t\t\tthis.$element = this._core.$element;\n\t\n\t\t\t/**\n\t\t\t * All event handlers.\n\t\t\t * @protected\n\t\t\t * @type {Object}\n\t\t\t */\n\t\t\tthis._handlers = {\n\t\t\t\t'initialized.owl.carousel': $.proxy(function() {\n\t\t\t\t\tif (this._core.settings.startPosition == 'URLHash') {\n\t\t\t\t\t\t$(window).trigger('hashchange.owl.navigation');\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\t\tvar hash = $(e.content).find('[data-hash]').andSelf('[data-hash]').attr('data-hash');\n\t\t\t\t\tthis._hashes[hash] = e.content;\n\t\t\t\t}, this)\n\t\t\t};\n\t\n\t\t\t// set default options\n\t\t\tthis._core.options = $.extend({}, Hash.Defaults, this._core.options);\n\t\n\t\t\t// register the event handlers\n\t\t\tthis.$element.on(this._handlers);\n\t\n\t\t\t// register event listener for hash navigation\n\t\t\t$(window).on('hashchange.owl.navigation', $.proxy(function() {\n\t\t\t\tvar hash = window.location.hash.substring(1),\n\t\t\t\t\titems = this._core.$stage.children(),\n\t\t\t\t\tposition = this._hashes[hash] && items.index(this._hashes[hash]) || 0;\n\t\n\t\t\t\tif (!hash) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\n\t\t\t\tthis._core.to(position, false, true);\n\t\t\t}, this));\n\t\t}\n\t\n\t\t/**\n\t\t * Default options.\n\t\t * @public\n\t\t */\n\t\tHash.Defaults = {\n\t\t\tURLhashListener: false\n\t\t}\n\t\n\t\t/**\n\t\t * Destroys the plugin.\n\t\t * @public\n\t\t */\n\t\tHash.prototype.destroy = function() {\n\t\t\tvar handler, property;\n\t\n\t\t\t$(window).off('hashchange.owl.navigation');\n\t\n\t\t\tfor (handler in this._handlers) {\n\t\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t\t}\n\t\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t\t}\n\t\t}\n\t\n\t\t$.fn.owlCarousel.Constructor.Plugins.Hash = Hash;\n\t\n\t})(window.Zepto || window.jQuery, window, document);\n\n\n/***/ }\n\n});\n\n\n/** WEBPACK FOOTER **\n ** chunk.tab.868a00ef9a4b54239a47.js\n **/","/*! waitForImages jQuery Plugin - v2.0.2 - 2015-06-02\r\n* https://github.com/alexanderdickson/waitForImages\r\n* Copyright (c) 2015 Alex Dickson; Licensed MIT */\r\n;(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(['jquery'], factory);\r\n } else if (typeof exports === 'object') {\r\n // CommonJS / nodejs module\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n}(function ($) {\r\n // Namespace all events.\r\n var eventNamespace = 'waitForImages';\r\n\r\n // CSS properties which contain references to images.\r\n $.waitForImages = {\r\n hasImageProperties: [\r\n 'backgroundImage',\r\n 'listStyleImage',\r\n 'borderImage',\r\n 'borderCornerImage',\r\n 'cursor'\r\n ],\r\n hasImageAttributes: ['srcset']\r\n };\r\n\r\n // Custom selector to find all `img` elements with a valid `src` attribute.\r\n $.expr[':']['has-src'] = function (obj) {\r\n // Ensure we are dealing with an `img` element with a valid\r\n // `src` attribute.\r\n return $(obj).is('img[src][src!=\"\"]');\r\n };\r\n\r\n // Custom selector to find images which are not already cached by the\r\n // browser.\r\n $.expr[':'].uncached = function (obj) {\r\n // Ensure we are dealing with an `img` element with a valid\r\n // `src` attribute.\r\n if (!$(obj).is(':has-src')) {\r\n return false;\r\n }\r\n\r\n return !obj.complete;\r\n };\r\n\r\n $.fn.waitForImages = function () {\r\n\r\n var allImgsLength = 0;\r\n var allImgsLoaded = 0;\r\n var deferred = $.Deferred();\r\n\r\n var finishedCallback;\r\n var eachCallback;\r\n var waitForAll;\r\n\r\n // Handle options object (if passed).\r\n if ($.isPlainObject(arguments[0])) {\r\n\r\n waitForAll = arguments[0].waitForAll;\r\n eachCallback = arguments[0].each;\r\n finishedCallback = arguments[0].finished;\r\n\r\n } else {\r\n\r\n // Handle if using deferred object and only one param was passed in.\r\n if (arguments.length === 1 && $.type(arguments[0]) === 'boolean') {\r\n waitForAll = arguments[0];\r\n } else {\r\n finishedCallback = arguments[0];\r\n eachCallback = arguments[1];\r\n waitForAll = arguments[2];\r\n }\r\n\r\n }\r\n\r\n // Handle missing callbacks.\r\n finishedCallback = finishedCallback || $.noop;\r\n eachCallback = eachCallback || $.noop;\r\n\r\n // Convert waitForAll to Boolean\r\n waitForAll = !! waitForAll;\r\n\r\n // Ensure callbacks are functions.\r\n if (!$.isFunction(finishedCallback) || !$.isFunction(eachCallback)) {\r\n throw new TypeError('An invalid callback was supplied.');\r\n }\r\n\r\n this.each(function () {\r\n // Build a list of all imgs, dependent on what images will\r\n // be considered.\r\n var obj = $(this);\r\n var allImgs = [];\r\n // CSS properties which may contain an image.\r\n var hasImgProperties = $.waitForImages.hasImageProperties || [];\r\n // Element attributes which may contain an image.\r\n var hasImageAttributes = $.waitForImages.hasImageAttributes || [];\r\n // To match `url()` references.\r\n // Spec: http://www.w3.org/TR/CSS2/syndata.html#value-def-uri\r\n var matchUrl = /url\\(\\s*(['\"]?)(.*?)\\1\\s*\\)/g;\r\n\r\n if (waitForAll) {\r\n\r\n // Get all elements (including the original), as any one of\r\n // them could have a background image.\r\n obj.find('*').addBack().each(function () {\r\n var element = $(this);\r\n\r\n // If an `img` element, add it. But keep iterating in\r\n // case it has a background image too.\r\n if (element.is('img:has-src')) {\r\n allImgs.push({\r\n src: element.attr('src'),\r\n element: element[0]\r\n });\r\n }\r\n\r\n $.each(hasImgProperties, function (i, property) {\r\n var propertyValue = element.css(property);\r\n var match;\r\n\r\n // If it doesn't contain this property, skip.\r\n if (!propertyValue) {\r\n return true;\r\n }\r\n\r\n // Get all url() of this element.\r\n while (match = matchUrl.exec(propertyValue)) {\r\n allImgs.push({\r\n src: match[2],\r\n element: element[0]\r\n });\r\n }\r\n });\r\n\r\n $.each(hasImageAttributes, function (i, attribute) {\r\n var attributeValue = element.attr(attribute);\r\n var attributeValues;\r\n\r\n // If it doesn't contain this property, skip.\r\n if (!attributeValue) {\r\n return true;\r\n }\r\n\r\n // Check for multiple comma separated images\r\n attributeValues = attributeValue.split(',');\r\n\r\n $.each(attributeValues, function(i, value) {\r\n // Trim value and get string before first\r\n // whitespace (for use with srcset).\r\n value = $.trim(value).split(' ')[0];\r\n allImgs.push({\r\n src: value,\r\n element: element[0]\r\n });\r\n });\r\n });\r\n });\r\n } else {\r\n // For images only, the task is simpler.\r\n obj.find('img:has-src')\r\n .each(function () {\r\n allImgs.push({\r\n src: this.src,\r\n element: this\r\n });\r\n });\r\n }\r\n\r\n allImgsLength = allImgs.length;\r\n allImgsLoaded = 0;\r\n\r\n // If no images found, don't bother.\r\n if (allImgsLength === 0) {\r\n finishedCallback.call(obj[0]);\r\n deferred.resolveWith(obj[0]);\r\n }\r\n\r\n $.each(allImgs, function (i, img) {\r\n\r\n var image = new Image();\r\n var events =\r\n 'load.' + eventNamespace + ' error.' + eventNamespace;\r\n\r\n // Handle the image loading and error with the same callback.\r\n $(image).one(events, function me (event) {\r\n // If an error occurred with loading the image, set the\r\n // third argument accordingly.\r\n var eachArguments = [\r\n allImgsLoaded,\r\n allImgsLength,\r\n event.type == 'load'\r\n ];\r\n allImgsLoaded++;\r\n\r\n eachCallback.apply(img.element, eachArguments);\r\n deferred.notifyWith(img.element, eachArguments);\r\n\r\n // Unbind the event listeners. I use this in addition to\r\n // `one` as one of those events won't be called (either\r\n // 'load' or 'error' will be called).\r\n $(this).off(events, me);\r\n\r\n if (allImgsLoaded == allImgsLength) {\r\n finishedCallback.call(obj[0]);\r\n deferred.resolveWith(obj[0]);\r\n return false;\r\n }\r\n\r\n });\r\n\r\n image.src = img.src;\r\n });\r\n });\r\n\r\n return deferred.promise();\r\n\r\n };\r\n}));\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/plugins/jquery.waitforimages.js\n ** module id = 7\n ** module chunks = 1 5 6\n **/","/************************************\r\nMODULE: TABS CLASS\r\nWHAT IT DOES: all tabs logic is here\r\n*************************************/\r\n(function(root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery'], factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n root.returnExports = factory(root.jQuery);\r\n }\r\n})(this, function($) {\r\n function Tabs(el, options) {\r\n var helpers= require('modules/helpers');\r\n this.settings = $.extend({}, this._defaults, options || {});\r\n this.tablist = $(el);\r\n this.container = null;\r\n this.controller = null;\r\n this.tabs = null;\r\n this.carousel = null;\r\n this.tween = null;\r\n this.tween1 = null;\r\n\r\n this.init();\r\n $(window).on('resize:finished tabs:resize', this.resize.bind(this));\r\n this.tablist.on('tab:resize', this.resize.bind(this));\r\n this.tablist[0].addEventListener('load', helpers.debounce(this.resize.bind(this), 400), true);\r\n\r\n }\r\n\r\n Tabs.prototype = {\r\n _defaults: {\r\n effect: 'none', // scale / slideleft / slideright / slidetop / slidedown / none\r\n defaultTab: null,\r\n carouseled: false,\r\n tabsPosition: 'horizontal', // horizontal / vertical\r\n horizontalPosition: 'top', // top / bottom\r\n verticalPosition: 'left', // left / right\r\n theme: '' // 'name' - string\r\n },\r\n\r\n arEffects: ['scale', 'slideleft', 'slideright', 'slidetop', 'slidedown', 'none', 'js'],\r\n init: function() {\r\n this.tablist.addClass('tabs_list');\r\n this.tablist.wrap('
    ');\r\n\r\n this.tabs = this.tablist.children('[data-tab]');\r\n this.container = this.tablist.parent('.tabs_container');\r\n\r\n this.setTabContainerClasses();\r\n\r\n var controlls = this.createControlsOrTabs();\r\n this.setControllsToCorrectPos(controlls);\r\n\r\n this.tabs = this.tablist.children('[data-tab]');\r\n this.tabs.addClass('tab_hide');\r\n\r\n this.controller = controlls.find('a');\r\n\r\n if (this.settings.tabsPosition == 'vertical') {\r\n var verticalTabsWidth = this.controller.outerWidth() + 1,\r\n verticalTabsHeight = controlls.outerHeight(),\r\n verticalContentWidth = this.container.outerWidth() - verticalTabsWidth,\r\n verticalContentHeight = this.tablist.outerHeight();\r\n\r\n controlls.width(verticalTabsWidth);\r\n this.tablist.outerWidth(verticalContentWidth);\r\n\r\n if (verticalContentHeight < verticalTabsHeight)\r\n this.tablist.css('min-height', verticalTabsHeight);\r\n }\r\n\r\n if (this.settings.effect == 'js') {\r\n var tweenmax = require('tweenmax');\r\n }\r\n\r\n var defaultTab = this.settings.defaultTab\r\n ? this.tablist.find('[data-tab=\"' + this.settings.defaultTab + '\"]')\r\n : this.tabs.first();\r\n defaultTab.removeClass('tab_hide');\r\n defaultTab.addClass('tab_show');\r\n\r\n var defaultTabImages = defaultTab.find(\".lazy\");\r\n\t\t\tfor (var k=0;k= 0) {\r\n className += ' ' + this.settings.effect;\r\n } else {\r\n className += ' scale';\r\n }\r\n\r\n this.container.addClass(className);\r\n },\r\n\r\n createControlsOrTabs: function() {\r\n var controlls = this.container.find('.tabs_controll');\r\n //if there are no contols defined\r\n if (!controlls.length) {\r\n controlls = $('
      ');\r\n\r\n var insides = '';\r\n\r\n for (var i = 0, l = this.tabs.length; i < l; i++) {\r\n var $this = this.tabs.eq(i),\r\n id = $this.data('tab'),\r\n title = $this.data('tab-name');\r\n\r\n $this.addClass('tab_single');\r\n\r\n insides += '
    • ' + title + '
    • ';\r\n }\r\n\r\n controlls.html(insides);\r\n } else {\r\n var controller = controlls.find('a'),\r\n insidesTab = '';\r\n\r\n for (var i = 0, l = controller.length; i < l; i++) {\r\n var link = controller.eq(i),\r\n id = link.attr('data-tab-id'),\r\n tab = this.tabs.filter('[data-tab=\"' + id + '\"]');\r\n\r\n if (!tab.length)\r\n insidesTab +=\r\n '
      ';\r\n }\r\n\r\n this.tabs.last().after($(insidesTab));\r\n }\r\n\r\n return controlls;\r\n },\r\n\r\n //move or add contolls to a certain position within DOM\r\n setControllsToCorrectPos: function(controlls) {\r\n if (this.settings.tabsPosition == 'vertical') {\r\n this.settings.verticalPosition == 'left'\r\n ? this.container.prepend(controlls)\r\n : this.container.append(controlls);\r\n } else {\r\n // Horizontal\r\n this.settings.horizontalPosition == 'top'\r\n ? this.container.prepend(controlls)\r\n : this.container.append(controlls);\r\n }\r\n },\r\n\r\n iniControllsCarousel: function(controlls) {\r\n if (!this.settings.carouseled == true) return;\r\n\r\n controlls.addClass('tabs_carousel');\r\n\r\n require('owl.carousel');\r\n\r\n this.carousel = controlls;\r\n this.carousel.on('initialized.owl.carousel', this.updateCarousel.bind(this));\r\n $(document).on('popup:loaded', this.updateCarousel.bind(this));\r\n this.carousel.owlCarousel({\r\n loop: false,\r\n nav: true,\r\n navText: [\r\n '',\r\n ''\r\n ],\r\n navClass: ['owl-prev tabs_carousel--prev', 'owl-next tabs_carousel--next'],\r\n responsive: {\r\n 0: {\r\n items: 3\r\n },\r\n 768: {\r\n items: 5\r\n }\r\n }\r\n });\r\n },\r\n\r\n updateCarousel: function() {\r\n if (!this.carousel) return;\r\n\r\n var items = this.carousel.find('.owl-item'),\r\n active = this.carousel.find('.tab_active').parents('.owl-item'),\r\n index = items.index(active),\r\n len = items.length;\r\n\r\n if (isNaN(index)) return;\r\n\r\n index = Math.max(0, window.App.globals.isMobileSmall ? index : index - 2);\r\n index = Math.min(index, window.App.globals.isMobileSmall ? len - 3 : len - 5);\r\n\r\n this.carousel.trigger('to.owl.carousel', [index, 500, true]);\r\n },\r\n\r\n //process tab reload\r\n tabLinkClick: function(e) {\r\n if (typeof e != 'undefined' && typeof e.preventDefault == 'function')\r\n e.preventDefault();\r\n\r\n var link = $(e.target);\r\n if (!link.is('a')) link = link.parents('a');\r\n\r\n if (link.hasClass('tab_active')) {\r\n return;\r\n }\r\n\r\n this.controller.removeClass('tab_active');\r\n link.addClass('tab_active');\r\n\r\n $(window).trigger('video:pause');\r\n\r\n var tabId = link.data('tab-id');\r\n var currentTab = this.container.find('[data-tab=\"' + tabId + '\"]');\r\n\r\n if (currentTab.hasClass('noload')) {\r\n currentTab.addClass('loading');\r\n currentTab.removeClass('noload');\r\n var self = this;\r\n $.ajax({\r\n url: link.attr('href'),\r\n success: function(data) {\r\n currentTab.append(\r\n $(data)\r\n .find('[data-tab=\"' + tabId + '\"]')\r\n .children()\r\n );\r\n $(window).trigger('tabs:init');\r\n $(window).trigger('video:init');\r\n $(window).trigger('carousels:init');\r\n $(window).trigger('popup:reinit');\r\n $(window).trigger('gatracking:init');\r\n $(window).trigger('fixonscroll:reinit');\r\n $(window).trigger('sizeconvertlinks:reinit');\r\n\r\n var tween = new TimelineMax(),\r\n loader = currentTab.find('.loader');\r\n tween.fromTo(loader, 0.5, { opacity: 1 }, { opacity: 0 });\r\n tween.to(loader, 0.5, { minHeight: currentTab.outerHeight() }, '-=0.5');\r\n tween.to(loader, 0.0, { visibility: 'hidden' });\r\n tween.play();\r\n currentTab.removeClass('loading');\r\n require('jquery.waitforimages');\r\n if (self.settings.effect == 'js') {\r\n self.animateHeight(\r\n self.tablist.outerHeight(),\r\n currentTab.outerHeight(true)\r\n );\r\n currentTab.waitForImages(\r\n self.resize.bind(self),\r\n function(loaded, count, success) {},\r\n true\r\n );\r\n } else this.container.parents('.js-tabs').trigger('tab:resize');\r\n },\r\n error: function(data) {\r\n currentTab.addClass('noload');\r\n }\r\n });\r\n }\r\n\r\n this.updateCarousel();\r\n\r\n this.switchSlides(this.tabs.filter('.tab_show'), currentTab);\r\n\r\n }\r\n };\r\n\r\n return Tabs;\r\n});\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/app/generic/generic.tab.js\n ** module id = 29\n ** module chunks = 5\n **/","function debounce(f, ms) {\r\n var isCooldown = false;\r\n\r\n return function() {\r\n if (isCooldown) return;\r\n f.apply(this, arguments);\r\n isCooldown = true;\r\n setTimeout(function() {\r\n isCooldown = false\r\n }, ms);\r\n };\r\n}\r\n\r\nmodule.exports = {debounce: debounce}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/app/modules/helpers.js\n ** module id = 68\n ** module chunks = 5\n **/","//MIDIFIED TO SERVE OUR NEEDS (ONLY COORDINATES() FUNCTION)\n//DO NOT USE FOR ANYTHING EXCEPT QUOTE PROCESS STEP 2 CAROUSEL\n/**\n * Owl carousel\n * @version 2.0.0\n * @author Bartosz Wojciechowski\n * @license The MIT License (MIT)\n * @todo Lazy Load Icon\n * @todo prevent animationend bubling\n * @todo itemsScaleUp\n * @todo Test Zepto\n * @todo stagePadding calculate wrong active classes\n */\n;(function($, window, document, undefined) {\n\n\tvar drag, state, e;\n\n\t/**\n\t * Template for status information about drag and touch events.\n\t * @private\n\t */\n\tdrag = {\n\t\tstart: 0,\n\t\tstartX: 0,\n\t\tstartY: 0,\n\t\tcurrent: 0,\n\t\tcurrentX: 0,\n\t\tcurrentY: 0,\n\t\toffsetX: 0,\n\t\toffsetY: 0,\n\t\tdistance: null,\n\t\tstartTime: 0,\n\t\tendTime: 0,\n\t\tupdatedX: 0,\n\t\ttargetEl: null\n\t};\n\n\t/**\n\t * Template for some status informations.\n\t * @private\n\t */\n\tstate = {\n\t\tisTouch: false,\n\t\tisScrolling: false,\n\t\tisSwiping: false,\n\t\tdirection: false,\n\t\tinMotion: false\n\t};\n\n\t/**\n\t * Event functions references.\n\t * @private\n\t */\n\te = {\n\t\t_onDragStart: null,\n\t\t_onDragMove: null,\n\t\t_onDragEnd: null,\n\t\t_transitionEnd: null,\n\t\t_resizer: null,\n\t\t_responsiveCall: null,\n\t\t_goToLoop: null,\n\t\t_checkVisibile: null\n\t};\n\n\t/**\n\t * Creates a carousel.\n\t * @class The Owl Carousel.\n\t * @public\n\t * @param {HTMLElement|jQuery} element - The element to create the carousel for.\n\t * @param {Object} [options] - The options\n\t */\n\tfunction Owl(element, options) {\n\n\t\t/**\n\t\t * Current settings for the carousel.\n\t\t * @public\n\t\t */\n\t\tthis.settings = null;\n\n\t\t/**\n\t\t * Current options set by the caller including defaults.\n\t\t * @public\n\t\t */\n\t\tthis.options = $.extend({}, Owl.Defaults, options);\n\n\t\t/**\n\t\t * Plugin element.\n\t\t * @public\n\t\t */\n\t\tthis.$element = $(element);\n\n\t\t/**\n\t\t * Caches informations about drag and touch events.\n\t\t */\n\t\tthis.drag = $.extend({}, drag);\n\n\t\t/**\n\t\t * Caches some status informations.\n\t\t * @protected\n\t\t */\n\t\tthis.state = $.extend({}, state);\n\n\t\t/**\n\t\t * @protected\n\t\t * @todo Must be documented\n\t\t */\n\t\tthis.e = $.extend({}, e);\n\n\t\t/**\n\t\t * References to the running plugins of this carousel.\n\t\t * @protected\n\t\t */\n\t\tthis._plugins = {};\n\n\t\t/**\n\t\t * Currently suppressed events to prevent them from beeing retriggered.\n\t\t * @protected\n\t\t */\n\t\tthis._supress = {};\n\n\t\t/**\n\t\t * Absolute current position.\n\t\t * @protected\n\t\t */\n\t\tthis._current = null;\n\n\t\t/**\n\t\t * Animation speed in milliseconds.\n\t\t * @protected\n\t\t */\n\t\tthis._speed = null;\n\n\t\t/**\n\t\t * Coordinates of all items in pixel.\n\t\t * @todo The name of this member is missleading.\n\t\t * @protected\n\t\t */\n\t\tthis._coordinates = [];\n\n\t\t/**\n\t\t * Current breakpoint.\n\t\t * @todo Real media queries would be nice.\n\t\t * @protected\n\t\t */\n\t\tthis._breakpoint = null;\n\n\t\t/**\n\t\t * Current width of the plugin element.\n\t\t */\n\t\tthis._width = null;\n\n\t\t/**\n\t\t * All real items.\n\t\t * @protected\n\t\t */\n\t\tthis._items = [];\n\n\t\t/**\n\t\t * All cloned items.\n\t\t * @protected\n\t\t */\n\t\tthis._clones = [];\n\n\t\t/**\n\t\t * Merge values of all items.\n\t\t * @todo Maybe this could be part of a plugin.\n\t\t * @protected\n\t\t */\n\t\tthis._mergers = [];\n\n\t\t/**\n\t\t * Invalidated parts within the update process.\n\t\t * @protected\n\t\t */\n\t\tthis._invalidated = {};\n\n\t\t/**\n\t\t * Ordered list of workers for the update process.\n\t\t * @protected\n\t\t */\n\t\tthis._pipe = [];\n\n\t\t$.each(Owl.Plugins, $.proxy(function(key, plugin) {\n\t\t\tthis._plugins[key[0].toLowerCase() + key.slice(1)]\n\t\t\t\t= new plugin(this);\n\t\t}, this));\n\n\t\t$.each(Owl.Pipe, $.proxy(function(priority, worker) {\n\t\t\tthis._pipe.push({\n\t\t\t\t'filter': worker.filter,\n\t\t\t\t'run': $.proxy(worker.run, this)\n\t\t\t});\n\t\t}, this));\n\n\t\tthis.setup();\n\t\tthis.initialize();\n\t}\n\n\t/**\n\t * Default options for the carousel.\n\t * @public\n\t */\n\tOwl.Defaults = {\n\t\titems: 3,\n\t\tloop: false,\n\t\tcenter: false,\n\n\t\tmouseDrag: true,\n\t\ttouchDrag: true,\n\t\tpullDrag: true,\n\t\tfreeDrag: false,\n\n\t\tmargin: 0,\n\t\tstagePadding: 0,\n\n\t\tmerge: false,\n\t\tmergeFit: true,\n\t\tautoWidth: false,\n\n\t\tstartPosition: 0,\n\t\trtl: false,\n\n\t\tsmartSpeed: 250,\n\t\tfluidSpeed: false,\n\t\tdragEndSpeed: false,\n\n\t\tresponsive: {},\n\t\tresponsiveRefreshRate: 200,\n\t\tresponsiveBaseElement: window,\n\t\tresponsiveClass: false,\n\n\t\tfallbackEasing: 'swing',\n\n\t\tinfo: false,\n\n\t\tnestedItemSelector: false,\n\t\titemElement: 'div',\n\t\tstageElement: 'div',\n\n\t\t// Classes and Names\n\t\tthemeClass: 'owl-theme',\n\t\tbaseClass: 'owl-carousel',\n\t\titemClass: 'owl-item',\n\t\tcenterClass: 'center',\n\t\tactiveClass: 'active'\n\t};\n\n\t/**\n\t * Enumeration for width.\n\t * @public\n\t * @readonly\n\t * @enum {String}\n\t */\n\tOwl.Width = {\n\t\tDefault: 'default',\n\t\tInner: 'inner',\n\t\tOuter: 'outer'\n\t};\n\n\t/**\n\t * Contains all registered plugins.\n\t * @public\n\t */\n\tOwl.Plugins = {};\n\n\t/**\n\t * Update pipe.\n\t */\n\tOwl.Pipe = [ {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tcache.current = this._items && this._items[this.relative(this._current)];\n\t\t}\n\t}, {\n\t\tfilter: [ 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar cached = this._clones,\n\t\t\t\tclones = this.$stage.children('.cloned');\n\n\t\t\tif (clones.length !== cached.length || (!this.settings.loop && cached.length > 0)) {\n\t\t\t\tthis.$stage.children('.cloned').remove();\n\t\t\t\tthis._clones = [];\n\t\t\t}\n\t\t}\n\t}, {\n\t\tfilter: [ 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar i, n,\n\t\t\t\tclones = this._clones,\n\t\t\t\titems = this._items,\n\t\t\t\tdelta = this.settings.loop ? clones.length - Math.max(this.settings.items * 2, 4) : 0;\n\n\t\t\tfor (i = 0, n = Math.abs(delta / 2); i < n; i++) {\n\t\t\t\tif (delta > 0) {\n\t\t\t\t\tthis.$stage.children().eq(items.length + clones.length - 1).remove();\n\t\t\t\t\tclones.pop();\n\t\t\t\t\tthis.$stage.children().eq(0).remove();\n\t\t\t\t\tclones.pop();\n\t\t\t\t} else {\n\t\t\t\t\tclones.push(clones.length / 2);\n\t\t\t\t\tthis.$stage.append(items[clones[clones.length - 1]].clone().addClass('cloned'));\n\t\t\t\t\tclones.push(items.length - 1 - (clones.length - 1) / 2);\n\t\t\t\t\tthis.$stage.prepend(items[clones[clones.length - 1]].clone().addClass('cloned'));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar rtl = (this.settings.rtl ? 1 : -1),\n\t\t\t\twidth = (this.width() / this.settings.items).toFixed(3),\n\t\t\t\tcoordinate = 0, merge, i, n;\n\n\t\t\tthis._coordinates = [];\n\t\t\tfor (i = 0, n = this._clones.length + this._items.length; i < n; i++) {\n\t\t\t\tmerge = this._mergers[this.relative(i)];\n\t\t\t\tmerge = (this.settings.mergeFit && Math.min(merge, this.settings.items)) || merge;\n\t\t\t\tcoordinate += (this.settings.autoWidth ? this._items[this.relative(i)].width() + this.settings.margin : width * merge) * rtl;\n\n\t\t\t\tthis._coordinates.push(coordinate);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar i, n, width = (Math.ceil(this.width() / this.settings.items)).toFixed(3), css = {\n\t\t\t 'width': (width * this._items.length + this.settings.stagePadding * 2),\n\t\t\t\t'padding-left': this.settings.stagePadding || '',\n\t\t\t\t'padding-right': this.settings.stagePadding || ''\n\t\t\t};\n\n\t\t\tthis.$stage.css(css);\n\n\t\t\tcss = { 'width': this.settings.autoWidth ? 'auto' : width - this.settings.margin };\n\t\t\tcss[this.settings.rtl ? 'margin-left' : 'margin-right'] = this.settings.margin;\n\n\t\t\tif (!this.settings.autoWidth && $.grep(this._mergers, function(v) { return v > 1 }).length > 0) {\n\t\t\t\tfor (i = 0, n = this._coordinates.length; i < n; i++) {\n\t\t\t\t\tcss.width = Math.abs(this._coordinates[i]) - Math.abs(this._coordinates[i - 1] || 0) - this.settings.margin;\n\t\t\t\t\tthis.$stage.children().eq(i).css(css);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.$stage.children().css(css);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tcache.current && this.reset(this.$stage.children().index(cache.current));\n\t\t}\n\t}, {\n\t\tfilter: [ 'position' ],\n\t\trun: function() {\n\t\t\tthis.animate(this.coordinates(this._current));\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'position', 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar rtl = this.settings.rtl ? 1 : -1,\n\t\t\t\tpadding = this.settings.stagePadding * 2,\n\t\t\t\tbegin = this.coordinates(this.current()) + padding,\n\t\t\t\tend = begin + this.width() * rtl,\n\t\t\t\tinner, outer, matches = [], i, n;\n\n\t\t\tfor (i = 0, n = this._coordinates.length; i < n; i++) {\n\t\t\t\tinner = this._coordinates[i - 1] || 0;\n\t\t\t\touter = Math.abs(this._coordinates[i]) + padding * rtl;\n\n\t\t\t\tif ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))\n\t\t\t\t\t|| (this.op(outer, '<', begin) && this.op(outer, '>', end))) {\n\t\t\t\t\tmatches.push(i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.$stage.children('.' + this.settings.activeClass).removeClass(this.settings.activeClass);\n\t\t\tthis.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass(this.settings.activeClass);\n\n\t\t\tif (this.settings.center) {\n\t\t\t\tthis.$stage.children('.' + this.settings.centerClass).removeClass(this.settings.centerClass);\n\t\t\t\tthis.$stage.children().eq(this.current()).addClass(this.settings.centerClass);\n\t\t\t}\n\t\t}\n\t} ];\n\n\t/**\n\t * Initializes the carousel.\n\t * @protected\n\t */\n\tOwl.prototype.initialize = function() {\n\t\tthis.trigger('initialize');\n\n\t\tthis.$element\n\t\t\t.addClass(this.settings.baseClass)\n\t\t\t.addClass(this.settings.themeClass)\n\t\t\t.toggleClass('owl-rtl', this.settings.rtl);\n\n\t\t// check support\n\t\tthis.browserSupport();\n\n\t\tif (this.settings.autoWidth && this.state.imagesLoaded !== true) {\n\t\t\tvar imgs, nestedSelector, width;\n\t\t\timgs = this.$element.find('img');\n\t\t\tnestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;\n\t\t\twidth = this.$element.children(nestedSelector).width();\n\n\t\t\tif (imgs.length && width <= 0) {\n\t\t\t\tthis.preloadAutoWidthImages(imgs);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.$element.addClass('owl-loading');\n\n\t\t// create stage\n\t\tthis.$stage = $('<' + this.settings.stageElement + ' class=\"owl-stage\"/>')\n\t\t\t.wrap('
      ');\n\n\t\t// append stage\n\t\tthis.$element.append(this.$stage.parent());\n\n\t\t// append content\n\t\tthis.replace(this.$element.children().not(this.$stage.parent()));\n\n\t\t// set view width\n\t\tthis._width = this.$element.width();\n\n\t\t// update view\n\t\tthis.refresh();\n\n\t\tthis.$element.removeClass('owl-loading').addClass('owl-loaded');\n\n\t\t// attach generic events\n\t\tthis.eventsCall();\n\n\t\t// attach generic events\n\t\tthis.internalEvents();\n\n\t\t// attach custom control events\n\t\tthis.addTriggerableEvents();\n\n\t\tthis.trigger('initialized');\n\t};\n\n\t/**\n\t * Setups the current settings.\n\t * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?\n\t * @todo Support for media queries by using `matchMedia` would be nice.\n\t * @public\n\t */\n\tOwl.prototype.setup = function() {\n\t\tvar viewport = this.viewport(),\n\t\t\toverwrites = this.options.responsive,\n\t\t\tmatch = -1,\n\t\t\tsettings = null;\n\n\t\tif (!overwrites) {\n\t\t\tsettings = $.extend({}, this.options);\n\t\t} else {\n\t\t\t$.each(overwrites, function(breakpoint) {\n\t\t\t\tif (breakpoint <= viewport && breakpoint > match) {\n\t\t\t\t\tmatch = Number(breakpoint);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsettings = $.extend({}, this.options, overwrites[match]);\n\t\t\tdelete settings.responsive;\n\n\t\t\t// responsive class\n\t\t\tif (settings.responsiveClass) {\n\t\t\t\tthis.$element.attr('class', function(i, c) {\n\t\t\t\t\treturn c.replace(/\\b owl-responsive-\\S+/g, '');\n\t\t\t\t}).addClass('owl-responsive-' + match);\n\t\t\t}\n\t\t}\n\n\t\tif (this.settings === null || this._breakpoint !== match) {\n\t\t\tthis.trigger('change', { property: { name: 'settings', value: settings } });\n\t\t\tthis._breakpoint = match;\n\t\t\tthis.settings = settings;\n\t\t\tthis.invalidate('settings');\n\t\t\tthis.trigger('changed', { property: { name: 'settings', value: this.settings } });\n\t\t}\n\t};\n\n\t/**\n\t * Updates option logic if necessery.\n\t * @protected\n\t */\n\tOwl.prototype.optionsLogic = function() {\n\t\t// Toggle Center class\n\t\tthis.$element.toggleClass('owl-center', this.settings.center);\n\n\t\t// if items number is less than in body\n\t\tif (this.settings.loop && this._items.length < this.settings.items) {\n\t\t\tthis.settings.loop = false;\n\t\t}\n\n\t\tif (this.settings.autoWidth) {\n\t\t\tthis.settings.stagePadding = false;\n\t\t\tthis.settings.merge = false;\n\t\t}\n\t};\n\n\t/**\n\t * Prepares an item before add.\n\t * @todo Rename event parameter `content` to `item`.\n\t * @protected\n\t * @returns {jQuery|HTMLElement} - The item container.\n\t */\n\tOwl.prototype.prepare = function(item) {\n\t\tvar event = this.trigger('prepare', { content: item });\n\n\t\tif (!event.data) {\n\t\t $(item).addClass(this.settings.itemClass)\n\t\t event.data = $(item);\n\t\t}\n\n\t\tthis.trigger('prepared', { content: event.data });\n\n\t\treturn event.data;\n\t};\n\n\t/**\n\t * Updates the view.\n\t * @public\n\t */\n\tOwl.prototype.update = function() {\n\t\tvar i = 0,\n\t\t\tn = this._pipe.length,\n\t\t\tfilter = $.proxy(function(p) { return this[p] }, this._invalidated),\n\t\t\tcache = {};\n\n\t\twhile (i < n) {\n\t\t\tif (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {\n\t\t\t\tthis._pipe[i].run(cache);\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\n\t\tthis._invalidated = {};\n\t};\n\n\t/**\n\t * Gets the width of the view.\n\t * @public\n\t * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.\n\t * @returns {Number} - The width of the view in pixel.\n\t */\n\tOwl.prototype.width = function(dimension) {\n\t\tdimension = dimension || Owl.Width.Default;\n\t\tswitch (dimension) {\n\t\t\tcase Owl.Width.Inner:\n\t\t\tcase Owl.Width.Outer:\n\t\t\t\treturn this._width;\n\t\t\tdefault:\n\t\t\t\treturn this._width - this.settings.stagePadding * 2 + this.settings.margin;\n\t\t}\n\t};\n\n\t/**\n\t * Refreshes the carousel primarily for adaptive purposes.\n\t * @public\n\t */\n\tOwl.prototype.refresh = function() {\n\t\tif (this._items.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar start = new Date().getTime();\n\n\t\tthis.trigger('refresh');\n\n\t\tthis.setup();\n\n\t\tthis.optionsLogic();\n\n\t\t// hide and show methods helps here to set a proper widths,\n\t\t// this prevents scrollbar to be calculated in stage width\n\t\tthis.$stage.addClass('owl-refresh');\n\n\t\tthis.update();\n\n\t\tthis.$stage.removeClass('owl-refresh');\n\n\t\tthis.state.orientation = window.orientation;\n\n\t\tthis.watchVisibility();\n\n\t\tthis.trigger('refreshed');\n\t};\n\n\t/**\n\t * Save internal event references and add event based functions.\n\t * @protected\n\t */\n\tOwl.prototype.eventsCall = function() {\n\t\t// Save events references\n\t\tthis.e._onDragStart = $.proxy(function(e) {\n\t\t\tthis.onDragStart(e);\n\t\t}, this);\n\t\tthis.e._onDragMove = $.proxy(function(e) {\n\t\t\tthis.onDragMove(e);\n\t\t}, this);\n\t\tthis.e._onDragEnd = $.proxy(function(e) {\n\t\t\tthis.onDragEnd(e);\n\t\t}, this);\n\t\tthis.e._onResize = $.proxy(function(e) {\n\t\t\tthis.onResize(e);\n\t\t}, this);\n\t\tthis.e._transitionEnd = $.proxy(function(e) {\n\t\t\tthis.transitionEnd(e);\n\t\t}, this);\n\t\tthis.e._preventClick = $.proxy(function(e) {\n\t\t\tthis.preventClick(e);\n\t\t}, this);\n\t};\n\n\t/**\n\t * Checks window `resize` event.\n\t * @protected\n\t */\n\tOwl.prototype.onThrottledResize = function() {\n\t\twindow.clearTimeout(this.resizeTimer);\n\t\tthis.resizeTimer = window.setTimeout(this.e._onResize, this.settings.responsiveRefreshRate);\n\t};\n\n\t/**\n\t * Checks window `resize` event.\n\t * @protected\n\t */\n\tOwl.prototype.onResize = function() {\n\t\tif (!this._items.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this._width === this.$element.width()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.trigger('resize').isDefaultPrevented()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._width = this.$element.width();\n\n\t\tthis.invalidate('width');\n\n\t\tthis.refresh();\n\n\t\tthis.trigger('resized');\n\t};\n\n\t/**\n\t * Checks for touch/mouse drag event type and add run event handlers.\n\t * @protected\n\t */\n\tOwl.prototype.eventsRouter = function(event) {\n\t\tvar type = event.type;\n\n\t\tif (type === \"mousedown\" || type === \"touchstart\") {\n\t\t\tthis.onDragStart(event);\n\t\t} else if (type === \"mousemove\" || type === \"touchmove\") {\n\t\t\tthis.onDragMove(event);\n\t\t} else if (type === \"mouseup\" || type === \"touchend\") {\n\t\t\tthis.onDragEnd(event);\n\t\t} else if (type === \"touchcancel\") {\n\t\t\tthis.onDragEnd(event);\n\t\t}\n\t};\n\n\t/**\n\t * Checks for touch/mouse drag options and add necessery event handlers.\n\t * @protected\n\t */\n\tOwl.prototype.internalEvents = function() {\n\t\tvar isTouch = isTouchSupport(),\n\t\t\tisTouchIE = isTouchSupportIE();\n\n\t\tif (this.settings.mouseDrag){\n\t\t\tthis.$stage.on('mousedown', $.proxy(function(event) { this.eventsRouter(event) }, this));\n\t\t\tthis.$stage.on('dragstart', function() { return false });\n\t\t\tthis.$stage.get(0).onselectstart = function() { return false };\n\t\t} else {\n\t\t\tthis.$element.addClass('owl-text-select-on');\n\t\t}\n\n\t\tif (this.settings.touchDrag && !isTouchIE){\n\t\t\tthis.$stage.on('touchstart touchcancel', $.proxy(function(event) { this.eventsRouter(event) }, this));\n\t\t}\n\n\t\t// catch transitionEnd event\n\t\tif (this.transitionEndVendor) {\n\t\t\tthis.on(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd, false);\n\t\t}\n\n\t\t// responsive\n\t\tif (this.settings.responsive !== false) {\n\t\t\tthis.on(window, 'resize', $.proxy(this.onThrottledResize, this));\n\t\t}\n\t};\n\n\t/**\n\t * Handles touchstart/mousedown event.\n\t * @protected\n\t * @param {Event} event - The event arguments.\n\t */\n\tOwl.prototype.onDragStart = function(event) {\n\t\tvar ev, isTouchEvent, pageX, pageY, animatedPos;\n\n\t\tev = event.originalEvent || event || window.event;\n\n\t\t// prevent right click\n\t\tif (ev.which === 3 || this.state.isTouch) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (ev.type === 'mousedown') {\n\t\t\tthis.$stage.addClass('owl-grab');\n\t\t}\n\n\t\tthis.trigger('drag');\n\t\tthis.drag.startTime = new Date().getTime();\n\t\tthis.speed(0);\n\t\tthis.state.isTouch = true;\n\t\tthis.state.isScrolling = false;\n\t\tthis.state.isSwiping = false;\n\t\tthis.drag.distance = 0;\n\n\t\tpageX = getTouches(ev).x;\n\t\tpageY = getTouches(ev).y;\n\n\t\t// get stage position left\n\t\tthis.drag.offsetX = this.$stage.position().left;\n\t\tthis.drag.offsetY = this.$stage.position().top;\n\n\t\tif (this.settings.rtl) {\n\t\t\tthis.drag.offsetX = this.$stage.position().left + this.$stage.width() - this.width()\n\t\t\t\t+ this.settings.margin;\n\t\t}\n\n\t\t// catch position // ie to fix\n\t\tif (this.state.inMotion && this.support3d) {\n\t\t\tanimatedPos = this.getTransformProperty();\n\t\t\tthis.drag.offsetX = animatedPos;\n\t\t\tthis.animate(animatedPos);\n\t\t\tthis.state.inMotion = true;\n\t\t} else if (this.state.inMotion && !this.support3d) {\n\t\t\tthis.state.inMotion = false;\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.drag.startX = pageX - this.drag.offsetX;\n\t\tthis.drag.startY = pageY - this.drag.offsetY;\n\n\t\tthis.drag.start = pageX - this.drag.startX;\n\t\tthis.drag.targetEl = ev.target || ev.srcElement;\n\t\tthis.drag.updatedX = this.drag.start;\n\n\t\t// to do/check\n\t\t// prevent links and images dragging;\n\t\tif (this.drag.targetEl.tagName === \"IMG\" || this.drag.targetEl.tagName === \"A\") {\n\t\t\tthis.drag.targetEl.draggable = false;\n\t\t}\n\n\t\t$(document).on('mousemove.owl.dragEvents mouseup.owl.dragEvents touchmove.owl.dragEvents touchend.owl.dragEvents', $.proxy(function(event) {this.eventsRouter(event)},this));\n\t};\n\n\t/**\n\t * Handles the touchmove/mousemove events.\n\t * @todo Simplify\n\t * @protected\n\t * @param {Event} event - The event arguments.\n\t */\n\tOwl.prototype.onDragMove = function(event) {\n\t\tvar ev, isTouchEvent, pageX, pageY, minValue, maxValue, pull;\n\n\t\tif (!this.state.isTouch) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.state.isScrolling) {\n\t\t\treturn;\n\t\t}\n\n\t\tev = event.originalEvent || event || window.event;\n\n\t\tpageX = getTouches(ev).x;\n\t\tpageY = getTouches(ev).y;\n\n\t\t// Drag Direction\n\t\tthis.drag.currentX = pageX - this.drag.startX;\n\t\tthis.drag.currentY = pageY - this.drag.startY;\n\t\tthis.drag.distance = this.drag.currentX - this.drag.offsetX;\n\n\t\t// Check move direction\n\t\tif (this.drag.distance < 0) {\n\t\t\tthis.state.direction = this.settings.rtl ? 'right' : 'left';\n\t\t} else if (this.drag.distance > 0) {\n\t\t\tthis.state.direction = this.settings.rtl ? 'left' : 'right';\n\t\t}\n\t\t// Loop\n\t\tif (this.settings.loop) {\n\t\t\tif (this.op(this.drag.currentX, '>', this.coordinates(this.minimum())) && this.state.direction === 'right') {\n\t\t\t\tthis.drag.currentX -= (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length);\n\t\t\t} else if (this.op(this.drag.currentX, '<', this.coordinates(this.maximum())) && this.state.direction === 'left') {\n\t\t\t\tthis.drag.currentX += (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length);\n\t\t\t}\n\t\t} else {\n\t\t\t// pull\n\t\t minValue = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());\n\t\t maxValue = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());\n\t\t\tpull = this.settings.pullDrag ? this.drag.distance / 5 : 0;\n\t\t\tthis.drag.currentX = Math.max(Math.min(this.drag.currentX, minValue + pull), maxValue + pull);\n\t\t}\n\n\t\t// Lock browser if swiping horizontal\n\n\t\tif ((this.drag.distance > 8 || this.drag.distance < -8)) {\n\t\t\tif (ev.preventDefault !== undefined) {\n\t\t\t\tev.preventDefault();\n\t\t\t} else {\n\t\t\t\tev.returnValue = false;\n\t\t\t}\n\t\t\tthis.state.isSwiping = true;\n\t\t}\n\n\t\tthis.drag.updatedX = this.drag.currentX;\n\n\t\t// Lock Owl if scrolling\n\t\tif ((this.drag.currentY > 16 || this.drag.currentY < -16) && this.state.isSwiping === false) {\n\t\t\tthis.state.isScrolling = true;\n\t\t\tthis.drag.updatedX = this.drag.start;\n\t\t}\n\n\t\tthis.animate(this.drag.updatedX);\n\t};\n\n\t/**\n\t * Handles the touchend/mouseup events.\n\t * @protected\n\t */\n\tOwl.prototype.onDragEnd = function(event) {\n\t\tvar compareTimes, distanceAbs, closest;\n\n\t\tif (!this.state.isTouch) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.type === 'mouseup') {\n\t\t\tthis.$stage.removeClass('owl-grab');\n\t\t}\n\n\t\tthis.trigger('dragged');\n\n\t\t// prevent links and images dragging;\n\t\tthis.drag.targetEl.removeAttribute(\"draggable\");\n\n\t\t// remove drag event listeners\n\n\t\tthis.state.isTouch = false;\n\t\tthis.state.isScrolling = false;\n\t\tthis.state.isSwiping = false;\n\n\t\t// to check\n\t\tif (this.drag.distance === 0 && this.state.inMotion !== true) {\n\t\t\tthis.state.inMotion = false;\n\t\t\treturn false;\n\t\t}\n\n\t\t// prevent clicks while scrolling\n\n\t\tthis.drag.endTime = new Date().getTime();\n\t\tcompareTimes = this.drag.endTime - this.drag.startTime;\n\t\tdistanceAbs = Math.abs(this.drag.distance);\n\n\t\t// to test\n\t\tif (distanceAbs > 3 || compareTimes > 300) {\n\t\t\tthis.removeClick(this.drag.targetEl);\n\t\t}\n\n\t\tclosest = this.closest(this.drag.updatedX);\n\n\t\tthis.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);\n\t\tthis.current(closest);\n\t\tthis.invalidate('position');\n\t\tthis.update();\n\n\t\t// if pullDrag is off then fire transitionEnd event manually when stick\n\t\t// to border\n\t\tif (!this.settings.pullDrag && this.drag.updatedX === this.coordinates(closest)) {\n\t\t\tthis.transitionEnd();\n\t\t}\n\n\t\tthis.drag.distance = 0;\n\n\t\t$(document).off('.owl.dragEvents');\n\t};\n\n\t/**\n\t * Attaches `preventClick` to disable link while swipping.\n\t * @protected\n\t * @param {HTMLElement} [target] - The target of the `click` event.\n\t */\n\tOwl.prototype.removeClick = function(target) {\n\t\tthis.drag.targetEl = target;\n\t\t$(target).on('click.preventClick', this.e._preventClick);\n\t\t// to make sure click is removed:\n\t\twindow.setTimeout(function() {\n\t\t\t$(target).off('click.preventClick');\n\t\t}, 300);\n\t};\n\n\t/**\n\t * Suppresses click event.\n\t * @protected\n\t * @param {Event} ev - The event arguments.\n\t */\n\tOwl.prototype.preventClick = function(ev) {\n\t\tif (ev.preventDefault) {\n\t\t\tev.preventDefault();\n\t\t} else {\n\t\t\tev.returnValue = false;\n\t\t}\n\t\tif (ev.stopPropagation) {\n\t\t\tev.stopPropagation();\n\t\t}\n\t\t$(ev.target).off('click.preventClick');\n\t};\n\n\t/**\n\t * Catches stage position while animate (only CSS3).\n\t * @protected\n\t * @returns\n\t */\n\tOwl.prototype.getTransformProperty = function() {\n\t\tvar transform, matrix3d;\n\n\t\ttransform = window.getComputedStyle(this.$stage.get(0), null).getPropertyValue(this.vendorName + 'transform');\n\t\t// var transform = this.$stage.css(this.vendorName + 'transform')\n\t\ttransform = transform.replace(/matrix(3d)?\\(|\\)/g, '').split(',');\n\t\tmatrix3d = transform.length === 16;\n\n\t\treturn matrix3d !== true ? transform[4] : transform[12];\n\t};\n\n\t/**\n\t * Gets absolute position of the closest item for a coordinate.\n\t * @todo Setting `freeDrag` makes `closest` not reusable. See #165.\n\t * @protected\n\t * @param {Number} coordinate - The coordinate in pixel.\n\t * @return {Number} - The absolute position of the closest item.\n\t */\n\tOwl.prototype.closest = function(coordinate) {\n\t\tvar position = -1, pull = 30, width = this.width(), coordinates = this.coordinates();\n\n\t\tif (!this.settings.freeDrag) {\n\t\t\t// check closest item\n\t\t\t$.each(coordinates, $.proxy(function(index, value) {\n\t\t\t\tif (coordinate > value - pull && coordinate < value + pull) {\n\t\t\t\t\tposition = index;\n\t\t\t\t} else if (this.op(coordinate, '<', value)\n\t\t\t\t\t&& this.op(coordinate, '>', coordinates[index + 1] || value - width)) {\n\t\t\t\t\tposition = this.state.direction === 'left' ? index + 1 : index;\n\t\t\t\t}\n\t\t\t\treturn position === -1;\n\t\t\t}, this));\n\t\t}\n\n\t\tif (!this.settings.loop) {\n\t\t\t// non loop boundries\n\t\t\tif (this.op(coordinate, '>', coordinates[this.minimum()])) {\n\t\t\t\tposition = coordinate = this.minimum();\n\t\t\t} else if (this.op(coordinate, '<', coordinates[this.maximum()])) {\n\t\t\t\tposition = coordinate = this.maximum();\n\t\t\t}\n\t\t}\n\n\t\treturn position;\n\t};\n\n\t/**\n\t * Animates the stage.\n\t * @public\n\t * @param {Number} coordinate - The coordinate in pixels.\n\t */\n\tOwl.prototype.animate = function(coordinate) {\n\t\tthis.trigger('translate');\n\t\tthis.state.inMotion = this.speed() > 0;\n\n\t\tif (this.support3d) {\n\t\t\tthis.$stage.css({\n\t\t\t\ttransform: 'translate(' + coordinate + 'px' + ',0px)',\n\t\t\t\ttransition: (this.speed() / 1000) + 's'\n\t\t\t});\n\t\t} else if (this.state.isTouch) {\n\t\t\tthis.$stage.css({\n\t\t\t\tleft: coordinate + 'px'\n\t\t\t});\n\t\t} else {\n\t\t\tthis.$stage.animate({\n\t\t\t\tleft: coordinate\n\t\t\t}, this.speed() / 1000, this.settings.fallbackEasing, $.proxy(function() {\n\t\t\t\tif (this.state.inMotion) {\n\t\t\t\t\tthis.transitionEnd();\n\t\t\t\t}\n\t\t\t}, this));\n\t\t}\n\t};\n\n\t/**\n\t * Sets the absolute position of the current item.\n\t * @public\n\t * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.\n\t * @returns {Number} - The absolute position of the current item.\n\t */\n\tOwl.prototype.current = function(position) {\n\t\tif (position === undefined) {\n\t\t\treturn this._current;\n\t\t}\n\n\t\tif (this._items.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tposition = this.normalize(position);\n\n\t\tif (this._current !== position) {\n\t\t\tvar event = this.trigger('change', { property: { name: 'position', value: position } });\n\n\t\t\tif (event.data !== undefined) {\n\t\t\t\tposition = this.normalize(event.data);\n\t\t\t}\n\n\t\t\tthis._current = position;\n\n\t\t\tthis.invalidate('position');\n\n\t\t\tthis.trigger('changed', { property: { name: 'position', value: this._current } });\n\t\t}\n\n\t\treturn this._current;\n\t};\n\n\t/**\n\t * Invalidates the given part of the update routine.\n\t * @param {String} part - The part to invalidate.\n\t */\n\tOwl.prototype.invalidate = function(part) {\n\t\tthis._invalidated[part] = true;\n\t}\n\n\t/**\n\t * Resets the absolute position of the current item.\n\t * @public\n\t * @param {Number} position - The absolute position of the new item.\n\t */\n\tOwl.prototype.reset = function(position) {\n\t\tposition = this.normalize(position);\n\n\t\tif (position === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._speed = 0;\n\t\tthis._current = position;\n\n\t\tthis.suppress([ 'translate', 'translated' ]);\n\n\t\tthis.animate(this.coordinates(position));\n\n\t\tthis.release([ 'translate', 'translated' ]);\n\t};\n\n\t/**\n\t * Normalizes an absolute or a relative position for an item.\n\t * @public\n\t * @param {Number} position - The absolute or relative position to normalize.\n\t * @param {Boolean} [relative=false] - Whether the given position is relative or not.\n\t * @returns {Number} - The normalized position.\n\t */\n\tOwl.prototype.normalize = function(position, relative) {\n\t\tvar n = (relative ? this._items.length : this._items.length + this._clones.length);\n\n\t\tif (!$.isNumeric(position) || n < 1) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this._clones.length) {\n\t\t\tposition = ((position % n) + n) % n;\n\t\t} else {\n\t\t\tposition = Math.max(this.minimum(relative), Math.min(this.maximum(relative), position));\n\t\t}\n\n\t\treturn position;\n\t};\n\n\t/**\n\t * Converts an absolute position for an item into a relative position.\n\t * @public\n\t * @param {Number} position - The absolute position to convert.\n\t * @returns {Number} - The converted position.\n\t */\n\tOwl.prototype.relative = function(position) {\n\t\tposition = this.normalize(position);\n\t\tposition = position - this._clones.length / 2;\n\t\treturn this.normalize(position, true);\n\t};\n\n\t/**\n\t * Gets the maximum position for an item.\n\t * @public\n\t * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\n\t * @returns {Number}\n\t */\n\tOwl.prototype.maximum = function(relative) {\n\t\tvar maximum, width, i = 0, coordinate,\n\t\t\tsettings = this.settings;\n\n\t\tif (relative) {\n\t\t\treturn this._items.length - 1;\n\t\t}\n\n\t\tif (!settings.loop && settings.center) {\n\t\t\tmaximum = this._items.length - 1;\n\t\t} else if (!settings.loop && !settings.center) {\n\t\t\tmaximum = this._items.length - settings.items;\n\t\t} else if (settings.loop || settings.center) {\n\t\t\tmaximum = this._items.length + settings.items;\n\t\t} else if (settings.autoWidth || settings.merge) {\n\t\t\trevert = settings.rtl ? 1 : -1;\n\t\t\twidth = this.$stage.width() - this.$element.width();\n\t\t\twhile (coordinate = this.coordinates(i)) {\n\t\t\t\tif (coordinate * revert >= width) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmaximum = ++i;\n\t\t\t}\n\t\t} else {\n\t\t\tthrow 'Can not detect maximum absolute position.'\n\t\t}\n\n\t\treturn maximum;\n\t};\n\n\t/**\n\t * Gets the minimum position for an item.\n\t * @public\n\t * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\n\t * @returns {Number}\n\t */\n\tOwl.prototype.minimum = function(relative) {\n\t\tif (relative) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn this._clones.length / 2;\n\t};\n\n\t/**\n\t * Gets an item at the specified relative position.\n\t * @public\n\t * @param {Number} [position] - The relative position of the item.\n\t * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\n\t */\n\tOwl.prototype.items = function(position) {\n\t\tif (position === undefined) {\n\t\t\treturn this._items.slice();\n\t\t}\n\n\t\tposition = this.normalize(position, true);\n\t\treturn this._items[position];\n\t};\n\n\t/**\n\t * Gets an item at the specified relative position.\n\t * @public\n\t * @param {Number} [position] - The relative position of the item.\n\t * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\n\t */\n\tOwl.prototype.mergers = function(position) {\n\t\tif (position === undefined) {\n\t\t\treturn this._mergers.slice();\n\t\t}\n\n\t\tposition = this.normalize(position, true);\n\t\treturn this._mergers[position];\n\t};\n\n\t/**\n\t * Gets the absolute positions of clones for an item.\n\t * @public\n\t * @param {Number} [position] - The relative position of the item.\n\t * @returns {Array.} - The absolute positions of clones for the item or all if no position was given.\n\t */\n\tOwl.prototype.clones = function(position) {\n\t\tvar odd = this._clones.length / 2,\n\t\t\teven = odd + this._items.length,\n\t\t\tmap = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };\n\n\t\tif (position === undefined) {\n\t\t\treturn $.map(this._clones, function(v, i) { return map(i) });\n\t\t}\n\n\t\treturn $.map(this._clones, function(v, i) { return v === position ? map(i) : null });\n\t};\n\n\t/**\n\t * Sets the current animation speed.\n\t * @public\n\t * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.\n\t * @returns {Number} - The current animation speed in milliseconds.\n\t */\n\tOwl.prototype.speed = function(speed) {\n\t\tif (speed !== undefined) {\n\t\t\tthis._speed = speed;\n\t\t}\n\n\t\treturn this._speed;\n\t};\n\n\t/**\n\t * Gets the coordinate of an item.\n\t * @todo The name of this method is missleanding.\n\t * @public\n\t * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.\n\t * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates.\n\t */\n\tOwl.prototype.coordinates = function(position) {\n\t var coordinate = null;\n\n\t\tif (position === undefined) {\n\t\t\treturn $.map(this._coordinates, $.proxy(function(coordinate, index) {\n\t\t\t\treturn this.coordinates(index);\n\t\t\t}, this));\n\t\t}\n\n\t\tif (this.settings.center) {\n\t\t\tcoordinate = this._coordinates[position];\n\t\t\tcoordinate += (this.width() - coordinate + (this._coordinates[position - 1] || 0)) / 2 * (this.settings.rtl ? -1 : 1);\n\t\t} else {\n\t\t coordinate = this._coordinates[position - 1] || 0;\n\t\t if (window.App.globals.isMobileSmall) {\r\n\t\t if (position == 0)\n\t\t coordinate -= (this._items[0].outerWidth() / 2 - 1);\r\n\t\t if (position >= this._coordinates.length - 4)\n coordinate += (this._items[0].outerWidth() / 2 + 3);\r\n\t\t }\n\t\t}\n\n\t\treturn coordinate;\n\t};\n\n\t/**\n\t * Calculates the speed for a translation.\n\t * @protected\n\t * @param {Number} from - The absolute position of the start item.\n\t * @param {Number} to - The absolute position of the target item.\n\t * @param {Number} [factor=undefined] - The time factor in milliseconds.\n\t * @returns {Number} - The time in milliseconds for the translation.\n\t */\n\tOwl.prototype.duration = function(from, to, factor) {\n\t\treturn Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));\n\t};\n\n\t/**\n\t * Slides to the specified item.\n\t * @public\n\t * @param {Number} position - The position of the item.\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t */\n\tOwl.prototype.to = function(position, speed) {\n\t\tif (this.settings.loop) {\n\t\t\tvar distance = position - this.relative(this.current()),\n\t\t\t\trevert = this.current(),\n\t\t\t\tbefore = this.current(),\n\t\t\t\tafter = this.current() + distance,\n\t\t\t\tdirection = before - after < 0 ? true : false,\n\t\t\t\titems = this._clones.length + this._items.length;\n\n\t\t\tif (after < this.settings.items && direction === false) {\n\t\t\t\trevert = before + this._items.length;\n\t\t\t\tthis.reset(revert);\n\t\t\t} else if (after >= items - this.settings.items && direction === true) {\n\t\t\t\trevert = before - this._items.length;\n\t\t\t\tthis.reset(revert);\n\t\t\t}\n\t\t\twindow.clearTimeout(this.e._goToLoop);\n\t\t\tthis.e._goToLoop = window.setTimeout($.proxy(function() {\n\t\t\t\tthis.speed(this.duration(this.current(), revert + distance, speed));\n\t\t\t\tthis.current(revert + distance);\n\t\t\t\tthis.update();\n\t\t\t}, this), 30);\n\t\t} else {\n\t\t\tthis.speed(this.duration(this.current(), position, speed));\n\t\t\tthis.current(position);\n\t\t\tthis.update();\n\t\t}\n\t};\n\n\t/**\n\t * Slides to the next item.\n\t * @public\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t */\n\tOwl.prototype.next = function(speed) {\n\t\tspeed = speed || false;\n\t\tthis.to(this.relative(this.current()) + 1, speed);\n\t};\n\n\t/**\n\t * Slides to the previous item.\n\t * @public\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t */\n\tOwl.prototype.prev = function(speed) {\n\t\tspeed = speed || false;\n\t\tthis.to(this.relative(this.current()) - 1, speed);\n\t};\n\n\t/**\n\t * Handles the end of an animation.\n\t * @protected\n\t * @param {Event} event - The event arguments.\n\t */\n\tOwl.prototype.transitionEnd = function(event) {\n\n\t\t// if css2 animation then event object is undefined\n\t\tif (event !== undefined) {\n\t\t\tevent.stopPropagation();\n\n\t\t\t// Catch only owl-stage transitionEnd event\n\t\t\tif ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.state.inMotion = false;\n\t\tthis.trigger('translated');\n\t};\n\n\t/**\n\t * Gets viewport width.\n\t * @protected\n\t * @return {Number} - The width in pixel.\n\t */\n\tOwl.prototype.viewport = function() {\n\t\tvar width;\n\t\tif (this.options.responsiveBaseElement !== window) {\n\t\t\twidth = $(this.options.responsiveBaseElement).width();\n\t\t} else if (window.innerWidth) {\n\t\t\twidth = window.innerWidth;\n\t\t} else if (document.documentElement && document.documentElement.clientWidth) {\n\t\t\twidth = document.documentElement.clientWidth;\n\t\t} else {\n\t\t\tthrow 'Can not detect viewport width.';\n\t\t}\n\t\treturn width;\n\t};\n\n\t/**\n\t * Replaces the current content.\n\t * @public\n\t * @param {HTMLElement|jQuery|String} content - The new content.\n\t */\n\tOwl.prototype.replace = function(content) {\n\t\tthis.$stage.empty();\n\t\tthis._items = [];\n\n\t\tif (content) {\n\t\t\tcontent = (content instanceof jQuery) ? content : $(content);\n\t\t}\n\n\t\tif (this.settings.nestedItemSelector) {\n\t\t\tcontent = content.find('.' + this.settings.nestedItemSelector);\n\t\t}\n\n\t\tcontent.filter(function() {\n\t\t\treturn this.nodeType === 1;\n\t\t}).each($.proxy(function(index, item) {\n\t\t\titem = this.prepare(item);\n\t\t\tthis.$stage.append(item);\n\t\t\tthis._items.push(item);\n\t\t\tthis._mergers.push(item.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t}, this));\n\n\t\tthis.reset($.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);\n\n\t\tthis.invalidate('items');\n\t};\n\n\t/**\n\t * Adds an item.\n\t * @todo Use `item` instead of `content` for the event arguments.\n\t * @public\n\t * @param {HTMLElement|jQuery|String} content - The item content to add.\n\t * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.\n\t */\n\tOwl.prototype.add = function(content, position) {\n\t\tposition = position === undefined ? this._items.length : this.normalize(position, true);\n\n\t\tthis.trigger('add', { content: content, position: position });\n\n\t\tif (this._items.length === 0 || position === this._items.length) {\n\t\t\tthis.$stage.append(content);\n\t\t\tthis._items.push(content);\n\t\t\tthis._mergers.push(content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t} else {\n\t\t\tthis._items[position].before(content);\n\t\t\tthis._items.splice(position, 0, content);\n\t\t\tthis._mergers.splice(position, 0, content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t}\n\n\t\tthis.invalidate('items');\n\n\t\tthis.trigger('added', { content: content, position: position });\n\t};\n\n\t/**\n\t * Removes an item by its position.\n\t * @todo Use `item` instead of `content` for the event arguments.\n\t * @public\n\t * @param {Number} position - The relative position of the item to remove.\n\t */\n\tOwl.prototype.remove = function(position) {\n\t\tposition = this.normalize(position, true);\n\n\t\tif (position === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.trigger('remove', { content: this._items[position], position: position });\n\n\t\tthis._items[position].remove();\n\t\tthis._items.splice(position, 1);\n\t\tthis._mergers.splice(position, 1);\n\n\t\tthis.invalidate('items');\n\n\t\tthis.trigger('removed', { content: null, position: position });\n\t};\n\n\t/**\n\t * Adds triggerable events.\n\t * @protected\n\t */\n\tOwl.prototype.addTriggerableEvents = function() {\n\t\tvar handler = $.proxy(function(callback, event) {\n\t\t\treturn $.proxy(function(e) {\n\t\t\t\tif (e.relatedTarget !== this) {\n\t\t\t\t\tthis.suppress([ event ]);\n\t\t\t\t\tcallback.apply(this, [].slice.call(arguments, 1));\n\t\t\t\t\tthis.release([ event ]);\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}, this);\n\n\t\t$.each({\n\t\t\t'next': this.next,\n\t\t\t'prev': this.prev,\n\t\t\t'to': this.to,\n\t\t\t'destroy': this.destroy,\n\t\t\t'refresh': this.refresh,\n\t\t\t'replace': this.replace,\n\t\t\t'add': this.add,\n\t\t\t'remove': this.remove\n\t\t}, $.proxy(function(event, callback) {\n\t\t\tthis.$element.on(event + '.owl.carousel', handler(callback, event + '.owl.carousel'));\n\t\t}, this));\n\n\t};\n\n\t/**\n\t * Watches the visibility of the carousel element.\n\t * @protected\n\t */\n\tOwl.prototype.watchVisibility = function() {\n\n\t\t// test on zepto\n\t\tif (!isElVisible(this.$element.get(0))) {\n\t\t\tthis.$element.addClass('owl-hidden');\n\t\t\twindow.clearInterval(this.e._checkVisibile);\n\t\t\tthis.e._checkVisibile = window.setInterval($.proxy(checkVisible, this), 500);\n\t\t}\n\n\t\tfunction isElVisible(el) {\n\t\t\treturn el.offsetWidth > 0 && el.offsetHeight > 0;\n\t\t}\n\n\t\tfunction checkVisible() {\n\t\t\tif (isElVisible(this.$element.get(0))) {\n\t\t\t\tthis.$element.removeClass('owl-hidden');\n\t\t\t\tthis.refresh();\n\t\t\t\twindow.clearInterval(this.e._checkVisibile);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Preloads images with auto width.\n\t * @protected\n\t * @todo Still to test\n\t */\n\tOwl.prototype.preloadAutoWidthImages = function(imgs) {\n\t\tvar loaded, that, $el, img;\n\n\t\tloaded = 0;\n\t\tthat = this;\n\t\timgs.each(function(i, el) {\n\t\t\t$el = $(el);\n\t\t\timg = new Image();\n\n\t\t\timg.onload = function() {\n\t\t\t\tloaded++;\n\t\t\t\t$el.attr('src', img.src);\n\t\t\t\t$el.css('opacity', 1);\n\t\t\t\tif (loaded >= imgs.length) {\n\t\t\t\t\tthat.state.imagesLoaded = true;\n\t\t\t\t\tthat.initialize();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\timg.src = $el.attr('src') || $el.attr('data-src') || $el.attr('data-src-retina');\n\t\t});\n\t};\n\n\t/**\n\t * Destroys the carousel.\n\t * @public\n\t */\n\tOwl.prototype.destroy = function() {\n\n\t\tif (this.$element.hasClass(this.settings.themeClass)) {\n\t\t\tthis.$element.removeClass(this.settings.themeClass);\n\t\t}\n\n\t\tif (this.settings.responsive !== false) {\n\t\t\t$(window).off('resize.owl.carousel');\n\t\t}\n\n\t\tif (this.transitionEndVendor) {\n\t\t\tthis.off(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd);\n\t\t}\n\n\t\tfor ( var i in this._plugins) {\n\t\t\tthis._plugins[i].destroy();\n\t\t}\n\n\t\tif (this.settings.mouseDrag || this.settings.touchDrag) {\n\t\t\tthis.$stage.off('mousedown touchstart touchcancel');\n\t\t\t$(document).off('.owl.dragEvents');\n\t\t\tthis.$stage.get(0).onselectstart = function() {};\n\t\t\tthis.$stage.off('dragstart', function() { return false });\n\t\t}\n\n\t\t// remove event handlers in the \".owl.carousel\" namespace\n\t\tthis.$element.off('.owl');\n\n\t\tthis.$stage.children('.cloned').remove();\n\t\tthis.e = null;\n\t\tthis.$element.removeData('owlCarousel');\n\n\t\tthis.$stage.children().contents().unwrap();\n\t\tthis.$stage.children().unwrap();\n\t\tthis.$stage.unwrap();\n\t};\n\n\t/**\n\t * Operators to calculate right-to-left and left-to-right.\n\t * @protected\n\t * @param {Number} [a] - The left side operand.\n\t * @param {String} [o] - The operator.\n\t * @param {Number} [b] - The right side operand.\n\t */\n\tOwl.prototype.op = function(a, o, b) {\n\t\tvar rtl = this.settings.rtl;\n\t\tswitch (o) {\n\t\t\tcase '<':\n\t\t\t\treturn rtl ? a > b : a < b;\n\t\t\tcase '>':\n\t\t\t\treturn rtl ? a < b : a > b;\n\t\t\tcase '>=':\n\t\t\t\treturn rtl ? a <= b : a >= b;\n\t\t\tcase '<=':\n\t\t\t\treturn rtl ? a >= b : a <= b;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\t/**\n\t * Attaches to an internal event.\n\t * @protected\n\t * @param {HTMLElement} element - The event source.\n\t * @param {String} event - The event name.\n\t * @param {Function} listener - The event handler to attach.\n\t * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.\n\t */\n\tOwl.prototype.on = function(element, event, listener, capture) {\n\t\tif (element.addEventListener) {\n\t\t\telement.addEventListener(event, listener, capture);\n\t\t} else if (element.attachEvent) {\n\t\t\telement.attachEvent('on' + event, listener);\n\t\t}\n\t};\n\n\t/**\n\t * Detaches from an internal event.\n\t * @protected\n\t * @param {HTMLElement} element - The event source.\n\t * @param {String} event - The event name.\n\t * @param {Function} listener - The attached event handler to detach.\n\t * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.\n\t */\n\tOwl.prototype.off = function(element, event, listener, capture) {\n\t\tif (element.removeEventListener) {\n\t\t\telement.removeEventListener(event, listener, capture);\n\t\t} else if (element.detachEvent) {\n\t\t\telement.detachEvent('on' + event, listener);\n\t\t}\n\t};\n\n\t/**\n\t * Triggers an public event.\n\t * @protected\n\t * @param {String} name - The event name.\n\t * @param {*} [data=null] - The event data.\n\t * @param {String} [namespace=.owl.carousel] - The event namespace.\n\t * @returns {Event} - The event arguments.\n\t */\n\tOwl.prototype.trigger = function(name, data, namespace) {\n\t\tvar status = {\n\t\t\titem: { count: this._items.length, index: this.current() }\n\t\t}, handler = $.camelCase(\n\t\t\t$.grep([ 'on', name, namespace ], function(v) { return v })\n\t\t\t\t.join('-').toLowerCase()\n\t\t), event = $.Event(\n\t\t\t[ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(),\n\t\t\t$.extend({ relatedTarget: this }, status, data)\n\t\t);\n\n\t\tif (!this._supress[name]) {\n\t\t\t$.each(this._plugins, function(name, plugin) {\n\t\t\t\tif (plugin.onTrigger) {\n\t\t\t\t\tplugin.onTrigger(event);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$element.trigger(event);\n\n\t\t\tif (this.settings && typeof this.settings[handler] === 'function') {\n\t\t\t\tthis.settings[handler].apply(this, event);\n\t\t\t}\n\t\t}\n\n\t\treturn event;\n\t};\n\n\t/**\n\t * Suppresses events.\n\t * @protected\n\t * @param {Array.} events - The events to suppress.\n\t */\n\tOwl.prototype.suppress = function(events) {\n\t\t$.each(events, $.proxy(function(index, event) {\n\t\t\tthis._supress[event] = true;\n\t\t}, this));\n\t}\n\n\t/**\n\t * Releases suppressed events.\n\t * @protected\n\t * @param {Array.} events - The events to release.\n\t */\n\tOwl.prototype.release = function(events) {\n\t\t$.each(events, $.proxy(function(index, event) {\n\t\t\tdelete this._supress[event];\n\t\t}, this));\n\t}\n\n\t/**\n\t * Checks the availability of some browser features.\n\t * @protected\n\t */\n\tOwl.prototype.browserSupport = function() {\n\t this.support3d = isPerspective();\n\n\t\tif (this.support3d) {\n\t\t\tthis.transformVendor = isTransform();\n\n\t\t\t// take transitionend event name by detecting transition\n\t\t\tvar endVendors = [ 'transitionend', 'webkitTransitionEnd', 'transitionend', 'oTransitionEnd' ];\n\t\t\tthis.transitionEndVendor = endVendors[isTransition()];\n\n\t\t\t// take vendor name from transform name\n\t\t\tthis.vendorName = this.transformVendor.replace(/Transform/i, '');\n\t\t\tthis.vendorName = this.vendorName !== '' ? '-' + this.vendorName.toLowerCase() + '-' : '';\n\t\t}\n\n\t\tthis.state.orientation = window.orientation;\n\t};\n\n\t/**\n\t * Get touch/drag coordinats.\n\t * @private\n\t * @param {event} - mousedown/touchstart event\n\t * @returns {object} - Contains X and Y of current mouse/touch position\n\t */\n\n\tfunction getTouches(event) {\n\t\tif (event.touches !== undefined) {\n\t\t\treturn {\n\t\t\t\tx: event.touches[0].pageX,\n\t\t\t\ty: event.touches[0].pageY\n\t\t\t};\n\t\t}\n\n\t\tif (event.touches === undefined) {\n\t\t\tif (event.pageX !== undefined) {\n\t\t\t\treturn {\n\t\t\t\t\tx: event.pageX,\n\t\t\t\t\ty: event.pageY\n\t\t\t\t};\n\t\t\t}\n\n\t\tif (event.pageX === undefined) {\n\t\t\treturn {\n\t\t\t\t\tx: event.clientX,\n\t\t\t\t\ty: event.clientY\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks for CSS support.\n\t * @private\n\t * @param {Array} array - The CSS properties to check for.\n\t * @returns {Array} - Contains the supported CSS property name and its index or `false`.\n\t */\n\tfunction isStyleSupported(array) {\n\t\tvar p, s, fake = document.createElement('div'), list = array;\n\t\tfor (p in list) {\n\t\t\ts = list[p];\n\t\t\tif (typeof fake.style[s] !== 'undefined') {\n\t\t\t\tfake = null;\n\t\t\t\treturn [ s, p ];\n\t\t\t}\n\t\t}\n\t\treturn [ false ];\n\t}\n\n\t/**\n\t * Checks for CSS transition support.\n\t * @private\n\t * @todo Realy bad design\n\t * @returns {Number}\n\t */\n\tfunction isTransition() {\n\t\treturn isStyleSupported([ 'transition', 'WebkitTransition', 'MozTransition', 'OTransition' ])[1];\n\t}\n\n\t/**\n\t * Checks for CSS transform support.\n\t * @private\n\t * @returns {String} The supported property name or false.\n\t */\n\tfunction isTransform() {\n\t\treturn isStyleSupported([ 'transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform' ])[0];\n\t}\n\n\t/**\n\t * Checks for CSS perspective support.\n\t * @private\n\t * @returns {String} The supported property name or false.\n\t */\n\tfunction isPerspective() {\n\t\treturn isStyleSupported([ 'perspective', 'webkitPerspective', 'MozPerspective', 'OPerspective', 'MsPerspective' ])[0];\n\t}\n\n\t/**\n\t * Checks wether touch is supported or not.\n\t * @private\n\t * @returns {Boolean}\n\t */\n\tfunction isTouchSupport() {\n\t\treturn 'ontouchstart' in window || !!(navigator.msMaxTouchPoints);\n\t}\n\n\t/**\n\t * Checks wether touch is supported or not for IE.\n\t * @private\n\t * @returns {Boolean}\n\t */\n\tfunction isTouchSupportIE() {\n\t\treturn window.navigator.msPointerEnabled;\n\t}\n\n\t/**\n\t * The jQuery Plugin for the Owl Carousel\n\t * @public\n\t */\n\t$.fn.owlCarousel = function(options) {\n\t\treturn this.each(function() {\n\t\t\tif (!$(this).data('owlCarousel')) {\n\t\t\t\t$(this).data('owlCarousel', new Owl(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n\t/**\n\t * The constructor for the jQuery Plugin\n\t * @public\n\t */\n\t$.fn.owlCarousel.Constructor = Owl;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Lazy Plugin\n * @version 2.0.0\n * @author Bartosz Wojciechowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the lazy plugin.\n\t * @class The Lazy Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar Lazy = function(carousel) {\n\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * Already loaded items.\n\t\t * @protected\n\t\t * @type {Array.}\n\t\t */\n\t\tthis._loaded = [];\n\n\t\t/**\n\t\t * Event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'initialized.owl.carousel change.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (!e.namespace) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!this._core.settings || !this._core.settings.lazyLoad) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ((e.property && e.property.name == 'position') || e.type == 'initialized') {\n\t\t\t\t\tvar settings = this._core.settings,\n\t\t\t\t\t\tn = (settings.center && Math.ceil(settings.items / 2) || settings.items),\n\t\t\t\t\t\ti = ((settings.center && n * -1) || 0),\n\t\t\t\t\t\tposition = ((e.property && e.property.value) || this._core.current()) + i,\n\t\t\t\t\t\tclones = this._core.clones().length,\n\t\t\t\t\t\tload = $.proxy(function(i, v) { this.load(v) }, this);\n\n\t\t\t\t\twhile (i++ < n) {\n\t\t\t\t\t\tthis.load(clones / 2 + this._core.relative(position));\n\t\t\t\t\t\tclones && $.each(this._core.clones(this._core.relative(position++)), load);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set the default options\n\t\tthis._core.options = $.extend({}, Lazy.Defaults, this._core.options);\n\n\t\t// register event handler\n\t\tthis._core.$element.on(this._handlers);\n\t}\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tLazy.Defaults = {\n\t\tlazyLoad: false\n\t}\n\n\t/**\n\t * Loads all resources of an item at the specified position.\n\t * @param {Number} position - The absolute position of the item.\n\t * @protected\n\t */\n\tLazy.prototype.load = function(position) {\n\t\tvar $item = this._core.$stage.children().eq(position),\n\t\t\t$elements = $item && $item.find('.owl-lazy');\n\n\t\tif (!$elements || $.inArray($item.get(0), this._loaded) > -1) {\n\t\t\treturn;\n\t\t}\n\n\t\t$elements.each($.proxy(function(index, element) {\n\t\t\tvar $element = $(element), image,\n\t\t\t\turl = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src');\n\n\t\t\tthis._core.trigger('load', { element: $element, url: url }, 'lazy');\n\n\t\t\tif ($element.is('img')) {\n\t\t\t\t$element.one('load.owl.lazy', $.proxy(function() {\n\t\t\t\t\t$element.css('opacity', 1);\n\t\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\n\t\t\t\t}, this)).attr('src', url);\n\t\t\t} else {\n\t\t\t\timage = new Image();\n\t\t\t\timage.onload = $.proxy(function() {\n\t\t\t\t\t$element.css({\n\t\t\t\t\t\t'background-image': 'url(' + url + ')',\n\t\t\t\t\t\t'opacity': '1'\n\t\t\t\t\t});\n\t\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\n\t\t\t\t}, this);\n\t\t\t\timage.src = url;\n\t\t\t}\n\t\t}, this));\n\n\t\tthis._loaded.push($item.get(0));\n\t}\n\n\t/**\n\t * Destroys the plugin.\n\t * @public\n\t */\n\tLazy.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tfor (handler in this.handlers) {\n\t\t\tthis._core.$element.off(handler, this.handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t}\n\n\t$.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * AutoHeight Plugin\n * @version 2.0.0\n * @author Bartosz Wojciechowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the auto height plugin.\n\t * @class The Auto Height Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar AutoHeight = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'initialized.owl.carousel': $.proxy(function() {\n\t\t\t\tif (this._core.settings.autoHeight) {\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (this._core.settings.autoHeight && e.property.name == 'position'){\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'loaded.owl.lazy': $.proxy(function(e) {\n\t\t\t\tif (this._core.settings.autoHeight && e.element.closest('.' + this._core.settings.itemClass)\n\t\t\t\t\t=== this._core.$stage.children().eq(this._core.current())) {\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);\n\n\t\t// register event handlers\n\t\tthis._core.$element.on(this._handlers);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tAutoHeight.Defaults = {\n\t\tautoHeight: false,\n\t\tautoHeightClass: 'owl-height'\n\t};\n\n\t/**\n\t * Updates the view.\n\t */\n\tAutoHeight.prototype.update = function() {\n\t\tthis._core.$stage.parent()\n\t\t\t.height(this._core.$stage.children().eq(this._core.current()).height())\n\t\t\t.addClass(this._core.settings.autoHeightClass);\n\t};\n\n\tAutoHeight.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Video Plugin\n * @version 2.0.0\n * @author Bartosz Wojciechowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the video plugin.\n\t * @class The Video Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar Video = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * Cache all video URLs.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._videos = {};\n\n\t\t/**\n\t\t * Current playing item.\n\t\t * @protected\n\t\t * @type {jQuery}\n\t\t */\n\t\tthis._playing = null;\n\n\t\t/**\n\t\t * Whether this is in fullscreen or not.\n\t\t * @protected\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis._fullscreen = false;\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'resize.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (this._core.settings.video && !this.isInFullScreen()) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'refresh.owl.carousel changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (this._playing) {\n\t\t\t\t\tthis.stop();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\tvar $element = $(e.content).find('.owl-video');\n\t\t\t\tif ($element.length) {\n\t\t\t\t\t$element.css('display', 'none');\n\t\t\t\t\tthis.fetch($element, $(e.content));\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Video.Defaults, this._core.options);\n\n\t\t// register event handlers\n\t\tthis._core.$element.on(this._handlers);\n\n\t\tthis._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) {\n\t\t\tthis.play(e);\n\t\t}, this));\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tVideo.Defaults = {\n\t\tvideo: false,\n\t\tvideoHeight: false,\n\t\tvideoWidth: false\n\t};\n\n\t/**\n\t * Gets the video ID and the type (YouTube/Vimeo only).\n\t * @protected\n\t * @param {jQuery} target - The target containing the video data.\n\t * @param {jQuery} item - The item containing the video.\n\t */\n\tVideo.prototype.fetch = function(target, item) {\n\n\t\tvar type = target.attr('data-vimeo-id') ? 'vimeo' : 'youtube',\n\t\t\tid = target.attr('data-vimeo-id') || target.attr('data-youtube-id'),\n\t\t\twidth = target.attr('data-width') || this._core.settings.videoWidth,\n\t\t\theight = target.attr('data-height') || this._core.settings.videoHeight,\n\t\t\turl = target.attr('href');\n\n\t\tif (url) {\n\t\t\tid = 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+)?/);\n\n\t\t\tif (id[3].indexOf('youtu') > -1) {\n\t\t\t\ttype = 'youtube';\n\t\t\t} else if (id[3].indexOf('vimeo') > -1) {\n\t\t\t\ttype = 'vimeo';\n\t\t\t} else {\n\t\t\t\tthrow new Error('Video URL not supported.');\n\t\t\t}\n\t\t\tid = id[6];\n\t\t} else {\n\t\t\tthrow new Error('Missing video URL.');\n\t\t}\n\n\t\tthis._videos[url] = {\n\t\t\ttype: type,\n\t\t\tid: id,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\n\t\titem.attr('data-video', url);\n\n\t\tthis.thumbnail(target, this._videos[url]);\n\t};\n\n\t/**\n\t * Creates video thumbnail.\n\t * @protected\n\t * @param {jQuery} target - The target containing the video data.\n\t * @param {Object} info - The video info object.\n\t * @see `fetch`\n\t */\n\tVideo.prototype.thumbnail = function(target, video) {\n\n\t\tvar tnLink,\n\t\t\ticon,\n\t\t\tpath,\n\t\t\tdimensions = video.width && video.height ? 'style=\"width:' + video.width + 'px;height:' + video.height + 'px;\"' : '',\n\t\t\tcustomTn = target.find('img'),\n\t\t\tsrcType = 'src',\n\t\t\tlazyClass = '',\n\t\t\tsettings = this._core.settings,\n\t\t\tcreate = function(path) {\n\t\t\t\ticon = '
      ';\n\n\t\t\t\tif (settings.lazyLoad) {\n\t\t\t\t\ttnLink = '
      ';\n\t\t\t\t} else {\n\t\t\t\t\ttnLink = '
      ';\n\t\t\t\t}\n\t\t\t\ttarget.after(tnLink);\n\t\t\t\ttarget.after(icon);\n\t\t\t};\n\n\t\t// wrap video content into owl-video-wrapper div\n\t\ttarget.wrap('
      ');\n\n\t\tif (this._core.settings.lazyLoad) {\n\t\t\tsrcType = 'data-src';\n\t\t\tlazyClass = 'owl-lazy';\n\t\t}\n\n\t\t// custom thumbnail\n\t\tif (customTn.length) {\n\t\t\tcreate(customTn.attr(srcType));\n\t\t\tcustomTn.remove();\n\t\t\treturn false;\n\t\t}\n\n\t\tif (video.type === 'youtube') {\n\t\t\tpath = \"http://img.youtube.com/vi/\" + video.id + \"/hqdefault.jpg\";\n\t\t\tcreate(path);\n\t\t} else if (video.type === 'vimeo') {\n\t\t\t$.ajax({\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: 'http://vimeo.com/api/v2/video/' + video.id + '.json',\n\t\t\t\tjsonp: 'callback',\n\t\t\t\tdataType: 'jsonp',\n\t\t\t\tsuccess: function(data) {\n\t\t\t\t\tpath = data[0].thumbnail_large;\n\t\t\t\t\tcreate(path);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Stops the current video.\n\t * @public\n\t */\n\tVideo.prototype.stop = function() {\n\t\tthis._core.trigger('stop', null, 'video');\n\t\tthis._playing.find('.owl-video-frame').remove();\n\t\tthis._playing.removeClass('owl-video-playing');\n\t\tthis._playing = null;\n\t};\n\n\t/**\n\t * Starts the current video.\n\t * @public\n\t * @param {Event} ev - The event arguments.\n\t */\n\tVideo.prototype.play = function(ev) {\n\t\tthis._core.trigger('play', null, 'video');\n\n\t\tif (this._playing) {\n\t\t\tthis.stop();\n\t\t}\n\n\t\tvar target = $(ev.target || ev.srcElement),\n\t\t\titem = target.closest('.' + this._core.settings.itemClass),\n\t\t\tvideo = this._videos[item.attr('data-video')],\n\t\t\twidth = video.width || '100%',\n\t\t\theight = video.height || this._core.$stage.height(),\n\t\t\thtml, wrap;\n\n\t\tif (video.type === 'youtube') {\n\t\t\thtml = '';\n\t\t} else if (video.type === 'vimeo') {\n\t\t\thtml = '';\n\t\t}\n\n\t\titem.addClass('owl-video-playing');\n\t\tthis._playing = item;\n\n\t\twrap = $('
      '\n\t\t\t+ html + '
      ');\n\t\ttarget.after(wrap);\n\t};\n\n\t/**\n\t * Checks whether an video is currently in full screen mode or not.\n\t * @todo Bad style because looks like a readonly method but changes members.\n\t * @protected\n\t * @returns {Boolean}\n\t */\n\tVideo.prototype.isInFullScreen = function() {\n\n\t\t// if Vimeo Fullscreen mode\n\t\tvar element = document.fullscreenElement || document.mozFullScreenElement\n\t\t\t|| document.webkitFullscreenElement;\n\n\t\tif (element && $(element).parent().hasClass('owl-video-frame')) {\n\t\t\tthis._core.speed(0);\n\t\t\tthis._fullscreen = true;\n\t\t}\n\n\t\tif (element && this._fullscreen && this._playing) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// comming back from fullscreen\n\t\tif (this._fullscreen) {\n\t\t\tthis._fullscreen = false;\n\t\t\treturn false;\n\t\t}\n\n\t\t// check full screen mode and window orientation\n\t\tif (this._playing) {\n\t\t\tif (this._core.state.orientation !== window.orientation) {\n\t\t\t\tthis._core.state.orientation = window.orientation;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t */\n\tVideo.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tthis._core.$element.off('click.owl.video');\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Video = Video;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Animate Plugin\n * @version 2.0.0\n * @author Bartosz Wojciechowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the animate plugin.\n\t * @class The Navigation Plugin\n\t * @param {Owl} scope - The Owl Carousel\n\t */\n\tvar Animate = function(scope) {\n\t\tthis.core = scope;\n\t\tthis.core.options = $.extend({}, Animate.Defaults, this.core.options);\n\t\tthis.swapping = true;\n\t\tthis.previous = undefined;\n\t\tthis.next = undefined;\n\n\t\tthis.handlers = {\n\t\t\t'change.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.property.name == 'position') {\n\t\t\t\t\tthis.previous = this.core.current();\n\t\t\t\t\tthis.next = e.property.value;\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {\n\t\t\t\tthis.swapping = e.type == 'translated';\n\t\t\t}, this),\n\t\t\t'translate.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {\n\t\t\t\t\tthis.swap();\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\tthis.core.$element.on(this.handlers);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tAnimate.Defaults = {\n\t\tanimateOut: false,\n\t\tanimateIn: false\n\t};\n\n\t/**\n\t * Toggles the animation classes whenever an translations starts.\n\t * @protected\n\t * @returns {Boolean|undefined}\n\t */\n\tAnimate.prototype.swap = function() {\n\n\t\tif (this.core.settings.items !== 1 || !this.core.support3d) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.core.speed(0);\n\n\t\tvar left,\n\t\t\tclear = $.proxy(this.clear, this),\n\t\t\tprevious = this.core.$stage.children().eq(this.previous),\n\t\t\tnext = this.core.$stage.children().eq(this.next),\n\t\t\tincoming = this.core.settings.animateIn,\n\t\t\toutgoing = this.core.settings.animateOut;\n\n\t\tif (this.core.current() === this.previous) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (outgoing) {\n\t\t\tleft = this.core.coordinates(this.previous) - this.core.coordinates(this.next);\n\t\t\tprevious.css( { 'left': left + 'px' } )\n\t\t\t\t.addClass('animated owl-animated-out')\n\t\t\t\t.addClass(outgoing)\n\t\t\t\t.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', clear);\n\t\t}\n\n\t\tif (incoming) {\n\t\t\tnext.addClass('animated owl-animated-in')\n\t\t\t\t.addClass(incoming)\n\t\t\t\t.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', clear);\n\t\t}\n\t};\n\n\tAnimate.prototype.clear = function(e) {\n\t\t$(e.target).css( { 'left': '' } )\n\t\t\t.removeClass('animated owl-animated-out owl-animated-in')\n\t\t\t.removeClass(this.core.settings.animateIn)\n\t\t\t.removeClass(this.core.settings.animateOut);\n\t\tthis.core.transitionEnd();\n\t}\n\n\t/**\n\t * Destroys the plugin.\n\t * @public\n\t */\n\tAnimate.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tfor (handler in this.handlers) {\n\t\t\tthis.core.$element.off(handler, this.handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Animate = Animate;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Autoplay Plugin\n * @version 2.0.0\n * @author Bartosz Wojciechowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the autoplay plugin.\n\t * @class The Autoplay Plugin\n\t * @param {Owl} scope - The Owl Carousel\n\t */\n\tvar Autoplay = function(scope) {\n\t\tthis.core = scope;\n\t\tthis.core.options = $.extend({}, Autoplay.Defaults, this.core.options);\n\n\t\tthis.handlers = {\n\t\t\t'translated.owl.carousel refreshed.owl.carousel': $.proxy(function() {\n\t\t\t\tthis.autoplay();\n\t\t\t}, this),\n\t\t\t'play.owl.autoplay': $.proxy(function(e, t, s) {\n\t\t\t\tthis.play(t, s);\n\t\t\t}, this),\n\t\t\t'stop.owl.autoplay': $.proxy(function() {\n\t\t\t\tthis.stop();\n\t\t\t}, this),\n\t\t\t'mouseover.owl.autoplay': $.proxy(function() {\n\t\t\t\tif (this.core.settings.autoplayHoverPause) {\n\t\t\t\t\tthis.pause();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'mouseleave.owl.autoplay': $.proxy(function() {\n\t\t\t\tif (this.core.settings.autoplayHoverPause) {\n\t\t\t\t\tthis.autoplay();\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\tthis.core.$element.on(this.handlers);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tAutoplay.Defaults = {\n\t\tautoplay: false,\n\t\tautoplayTimeout: 5000,\n\t\tautoplayHoverPause: false,\n\t\tautoplaySpeed: false\n\t};\n\n\t/**\n\t * @protected\n\t * @todo Must be documented.\n\t */\n\tAutoplay.prototype.autoplay = function() {\n\t\tif (this.core.settings.autoplay && !this.core.state.videoPlay) {\n\t\t\twindow.clearInterval(this.interval);\n\n\t\t\tthis.interval = window.setInterval($.proxy(function() {\n\t\t\t\tthis.play();\n\t\t\t}, this), this.core.settings.autoplayTimeout);\n\t\t} else {\n\t\t\twindow.clearInterval(this.interval);\n\t\t}\n\t};\n\n\t/**\n\t * Starts the autoplay.\n\t * @public\n\t * @param {Number} [timeout] - ...\n\t * @param {Number} [speed] - ...\n\t * @returns {Boolean|undefined} - ...\n\t * @todo Must be documented.\n\t */\n\tAutoplay.prototype.play = function(timeout, speed) {\n\t\t// if tab is inactive - doesnt work in }\n\t\t */\n\t\tthis._templates = [];\n\n\t\t/**\n\t\t * The carousel element.\n\t\t * @type {jQuery}\n\t\t */\n\t\tthis.$element = this._core.$element;\n\n\t\t/**\n\t\t * Overridden methods of the carousel.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._overrides = {\n\t\t\tnext: this._core.next,\n\t\t\tprev: this._core.prev,\n\t\t\tto: this._core.to\n\t\t};\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.push($(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot'));\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'add.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.splice(e.position, 0, $(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot'));\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'remove.owl.carousel prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.splice(e.position, 1);\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'change.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.property.name == 'position') {\n\t\t\t\t\tif (!this._core.state.revert && !this._core.settings.loop && this._core.settings.navRewind) {\n\t\t\t\t\t\tvar current = this._core.current(),\n\t\t\t\t\t\t\tmaximum = this._core.maximum(),\n\t\t\t\t\t\t\tminimum = this._core.minimum();\n\t\t\t\t\t\te.data = e.property.value > maximum\n\t\t\t\t\t\t\t? current >= maximum ? minimum : maximum\n\t\t\t\t\t\t\t: e.property.value < minimum ? maximum : e.property.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.property.name == 'position') {\n\t\t\t\t\tthis.draw();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'refreshed.owl.carousel': $.proxy(function() {\n\t\t\t\tif (!this._initialized) {\n\t\t\t\t\tthis.initialize();\n\t\t\t\t\tthis._initialized = true;\n\t\t\t\t}\n\t\t\t\tthis._core.trigger('refresh', null, 'navigation');\n\t\t\t\tthis.update();\n\t\t\t\tthis.draw();\n\t\t\t\tthis._core.trigger('refreshed', null, 'navigation');\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Navigation.Defaults, this._core.options);\n\n\t\t// register event handlers\n\t\tthis.$element.on(this._handlers);\n\t}\n\n\t/**\n\t * Default options.\n\t * @public\n\t * @todo Rename `slideBy` to `navBy`\n\t */\n\tNavigation.Defaults = {\n\t\tnav: false,\n\t\tnavRewind: true,\n\t\tnavText: [ 'prev', 'next' ],\n\t\tnavSpeed: false,\n\t\tnavElement: 'div',\n\t\tnavContainer: false,\n\t\tnavContainerClass: 'owl-nav',\n\t\tnavClass: [ 'owl-prev', 'owl-next' ],\n\t\tslideBy: 1,\n\t\tdotClass: 'owl-dot',\n\t\tdotsClass: 'owl-dots',\n\t\tdots: true,\n\t\tdotsEach: false,\n\t\tdotData: false,\n\t\tdotsSpeed: false,\n\t\tdotsContainer: false,\n\t\tcontrolsClass: 'owl-controls'\n\t}\n\n\t/**\n\t * Initializes the layout of the plugin and extends the carousel.\n\t * @protected\n\t */\n\tNavigation.prototype.initialize = function() {\n\t\tvar $container, override,\n\t\t\toptions = this._core.settings;\n\n\t\t// create the indicator template\n\t\tif (!options.dotsData) {\n\t\t\tthis._templates = [ $('
      ')\n\t\t\t\t.addClass(options.dotClass)\n\t\t\t\t.append($(''))\n\t\t\t\t.prop('outerHTML') ];\n\t\t}\n\n\t\t// create controls container if needed\n\t\tif (!options.navContainer || !options.dotsContainer) {\n\t\t\tthis._controls.$container = $('
      ')\n\t\t\t\t.addClass(options.controlsClass)\n\t\t\t\t.appendTo(this.$element);\n\t\t}\n\n\t\t// create DOM structure for absolute navigation\n\t\tthis._controls.$indicators = options.dotsContainer ? $(options.dotsContainer)\n\t\t\t: $('
      ').hide().addClass(options.dotsClass).appendTo(this._controls.$container);\n\n\t\tthis._controls.$indicators.on('click', 'div', $.proxy(function(e) {\n\t\t\tvar index = $(e.target).parent().is(this._controls.$indicators)\n\t\t\t\t? $(e.target).index() : $(e.target).parent().index();\n\n\t\t\te.preventDefault();\n\n\t\t\tthis.to(index, options.dotsSpeed);\n\t\t}, this));\n\n\t\t// create DOM structure for relative navigation\n\t\t$container = options.navContainer ? $(options.navContainer)\n\t\t\t: $('
      ').addClass(options.navContainerClass).prependTo(this._controls.$container);\n\n\t\tthis._controls.$next = $('<' + options.navElement + '>');\n\t\tthis._controls.$previous = this._controls.$next.clone();\n\n\t\tthis._controls.$previous\n\t\t\t.addClass(options.navClass[0])\n\t\t\t.html(options.navText[0])\n\t\t\t.hide()\n\t\t\t.prependTo($container)\n\t\t\t.on('click', $.proxy(function(e) {\n\t\t\t\tthis.prev(options.navSpeed);\n\t\t\t}, this));\n\t\tthis._controls.$next\n\t\t\t.addClass(options.navClass[1])\n\t\t\t.html(options.navText[1])\n\t\t\t.hide()\n\t\t\t.appendTo($container)\n\t\t\t.on('click', $.proxy(function(e) {\n\t\t\t\tthis.next(options.navSpeed);\n\t\t\t}, this));\n\n\t\t// override public methods of the carousel\n\t\tfor (override in this._overrides) {\n\t\t\tthis._core[override] = $.proxy(this[override], this);\n\t\t}\n\t}\n\n\t/**\n\t * Destroys the plugin.\n\t * @protected\n\t */\n\tNavigation.prototype.destroy = function() {\n\t\tvar handler, control, property, override;\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (control in this._controls) {\n\t\t\tthis._controls[control].remove();\n\t\t}\n\t\tfor (override in this.overides) {\n\t\t\tthis._core[override] = this._overrides[override];\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t}\n\n\t/**\n\t * Updates the internal state.\n\t * @protected\n\t */\n\tNavigation.prototype.update = function() {\n\t\tvar i, j, k,\n\t\t\toptions = this._core.settings,\n\t\t\tlower = this._core.clones().length / 2,\n\t\t\tupper = lower + this._core.items().length,\n\t\t\tsize = options.center || options.autoWidth || options.dotData\n\t\t\t\t? 1 : options.dotsEach || options.items;\n\n\t\tif (options.slideBy !== 'page') {\n\t\t\toptions.slideBy = Math.min(options.slideBy, options.items);\n\t\t}\n\n\t\tif (options.dots || options.slideBy == 'page') {\n\t\t\tthis._pages = [];\n\n\t\t\tfor (i = lower, j = 0, k = 0; i < upper; i++) {\n\t\t\t\tif (j >= size || j === 0) {\n\t\t\t\t\tthis._pages.push({\n\t\t\t\t\t\tstart: i - lower,\n\t\t\t\t\t\tend: i - lower + size - 1\n\t\t\t\t\t});\n\t\t\t\t\tj = 0, ++k;\n\t\t\t\t}\n\t\t\t\tj += this._core.mergers(this._core.relative(i));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Draws the user interface.\n\t * @todo The option `dotData` wont work.\n\t * @protected\n\t */\n\tNavigation.prototype.draw = function() {\n\t\tvar difference, i, html = '',\n\t\t\toptions = this._core.settings,\n\t\t\t$items = this._core.$stage.children(),\n\t\t\tindex = this._core.relative(this._core.current());\n\n\t\tif (options.nav && !options.loop && !options.navRewind) {\n\t\t\tthis._controls.$previous.toggleClass('disabled', index <= 0);\n\t\t\tthis._controls.$next.toggleClass('disabled', index >= this._core.maximum());\n\t\t}\n\n\t\tthis._controls.$previous.toggle(options.nav);\n\t\tthis._controls.$next.toggle(options.nav);\n\n\t\tif (options.dots) {\n\t\t\tdifference = this._pages.length - this._controls.$indicators.children().length;\n\n\t\t\tif (options.dotData && difference !== 0) {\n\t\t\t\tfor (i = 0; i < this._controls.$indicators.children().length; i++) {\n\t\t\t\t\thtml += this._templates[this._core.relative(i)];\n\t\t\t\t}\n\t\t\t\tthis._controls.$indicators.html(html);\n\t\t\t} else if (difference > 0) {\n\t\t\t\thtml = new Array(difference + 1).join(this._templates[0]);\n\t\t\t\tthis._controls.$indicators.append(html);\n\t\t\t} else if (difference < 0) {\n\t\t\t\tthis._controls.$indicators.children().slice(difference).remove();\n\t\t\t}\n\n\t\t\tthis._controls.$indicators.find('.active').removeClass('active');\n\t\t\tthis._controls.$indicators.children().eq($.inArray(this.current(), this._pages)).addClass('active');\n\t\t}\n\n\t\tthis._controls.$indicators.toggle(options.dots);\n\t}\n\n\t/**\n\t * Extends event data.\n\t * @protected\n\t * @param {Event} event - The event object which gets thrown.\n\t */\n\tNavigation.prototype.onTrigger = function(event) {\n\t\tvar settings = this._core.settings;\n\n\t\tevent.page = {\n\t\t\tindex: $.inArray(this.current(), this._pages),\n\t\t\tcount: this._pages.length,\n\t\t\tsize: settings && (settings.center || settings.autoWidth || settings.dotData\n\t\t\t\t? 1 : settings.dotsEach || settings.items)\n\t\t};\n\t}\n\n\t/**\n\t * Gets the current page position of the carousel.\n\t * @protected\n\t * @returns {Number}\n\t */\n\tNavigation.prototype.current = function() {\n\t\tvar index = this._core.relative(this._core.current());\n\t\treturn $.grep(this._pages, function(o) {\n\t\t\treturn o.start <= index && o.end >= index;\n\t\t}).pop();\n\t}\n\n\t/**\n\t * Gets the current succesor/predecessor position.\n\t * @protected\n\t * @returns {Number}\n\t */\n\tNavigation.prototype.getPosition = function(successor) {\n\t\tvar position, length,\n\t\t\toptions = this._core.settings;\n\n\t\tif (options.slideBy == 'page') {\n\t\t\tposition = $.inArray(this.current(), this._pages);\n\t\t\tlength = this._pages.length;\n\t\t\tsuccessor ? ++position : --position;\n\t\t\tposition = this._pages[((position % length) + length) % length].start;\n\t\t} else {\n\t\t\tposition = this._core.relative(this._core.current());\n\t\t\tlength = this._core.items().length;\n\t\t\tsuccessor ? position += options.slideBy : position -= options.slideBy;\n\t\t}\n\t\treturn position;\n\t}\n\n\t/**\n\t * Slides to the next item or page.\n\t * @public\n\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\n\t */\n\tNavigation.prototype.next = function(speed) {\n\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);\n\t}\n\n\t/**\n\t * Slides to the previous item or page.\n\t * @public\n\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\n\t */\n\tNavigation.prototype.prev = function(speed) {\n\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);\n\t}\n\n\t/**\n\t * Slides to the specified item or page.\n\t * @public\n\t * @param {Number} position - The position of the item or page.\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.\n\t */\n\tNavigation.prototype.to = function(position, speed, standard) {\n\t\tvar length;\n\n\t\tif (!standard) {\n\t\t\tlength = this._pages.length;\n\t\t\t$.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);\n\t\t} else {\n\t\t\t$.proxy(this._overrides.to, this._core)(position, speed);\n\t\t}\n\t}\n\n\t$.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Hash Plugin\n * @version 2.0.0\n * @author Artus Kolanowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\t'use strict';\n\n\t/**\n\t * Creates the hash plugin.\n\t * @class The Hash Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar Hash = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * Hash table for the hashes.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._hashes = {};\n\n\t\t/**\n\t\t * The carousel element.\n\t\t * @type {jQuery}\n\t\t */\n\t\tthis.$element = this._core.$element;\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'initialized.owl.carousel': $.proxy(function() {\n\t\t\t\tif (this._core.settings.startPosition == 'URLHash') {\n\t\t\t\t\t$(window).trigger('hashchange.owl.navigation');\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\tvar hash = $(e.content).find('[data-hash]').andSelf('[data-hash]').attr('data-hash');\n\t\t\t\tthis._hashes[hash] = e.content;\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Hash.Defaults, this._core.options);\n\n\t\t// register the event handlers\n\t\tthis.$element.on(this._handlers);\n\n\t\t// register event listener for hash navigation\n\t\t$(window).on('hashchange.owl.navigation', $.proxy(function() {\n\t\t\tvar hash = window.location.hash.substring(1),\n\t\t\t\titems = this._core.$stage.children(),\n\t\t\t\tposition = this._hashes[hash] && items.index(this._hashes[hash]) || 0;\n\n\t\t\tif (!hash) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._core.to(position, false, true);\n\t\t}, this));\n\t}\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tHash.Defaults = {\n\t\tURLhashListener: false\n\t}\n\n\t/**\n\t * Destroys the plugin.\n\t * @public\n\t */\n\tHash.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\t$(window).off('hashchange.owl.navigation');\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t}\n\n\t$.fn.owlCarousel.Constructor.Plugins.Hash = Hash;\n\n})(window.Zepto || window.jQuery, window, document);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/plugins/owl.carousel.js\n ** module id = 88\n ** module chunks = 5\n **/"],"sourceRoot":""}