{"version":3,"sources":["owl-slider.min.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","$","window","document","undefined","Owl","element","options","this","settings","extend","Defaults","$element","_handlers","_plugins","_supress","_current","_speed","_coordinates","_breakpoint","_width","_items","_clones","_mergers","_widths","_invalidated","_pipe","_drag","time","target","pointer","stage","start","current","direction","_states","tags","initializing","animating","dragging","each","proxy","i","handler","Plugins","key","plugin","charAt","toLowerCase","slice","Workers","priority","worker","push","filter","run","setup","initialize","items","loop","center","rewind","mouseDrag","touchDrag","pullDrag","freeDrag","margin","stagePadding","merge","mergeFit","autoWidth","startPosition","rtl","smartSpeed","fluidSpeed","dragEndSpeed","responsive","responsiveRefreshRate","responsiveBaseElement","fallbackEasing","info","nestedItemSelector","itemElement","stageElement","refreshClass","loadedClass","loadingClass","rtlClass","responsiveClass","dragClass","itemClass","stageClass","stageOuterClass","grabClass","Width","Default","Inner","Outer","Type","Event","State","width","cache","relative","$stage","children","remove","grid","css","margin-left","margin-right","toFixed","length","widths","Math","min","clones","view","max","size","ceil","repeat","append","prepend","normalize","outerHTML","addClass","appendTo","prependTo","previous","coordinates","padding","abs","padding-left","padding-right","eq","removeAttr","index","minimum","maximum","reset","animate","inner","outer","n","begin","end","matches","op","removeClass","join","enter","trigger","toggleClass","is","imgs","nestedSelector","find","preloadAutoWidthImages","wrap","parent","replace","not","refresh","invalidate","registerEventHandlers","leave","viewport","overwrites","match","breakpoint","Number","attr","RegExp","property","name","value","optionsLogic","prepare","item","event","content","data","update","p","all","grep","dimension","onThrottledResize","clearTimeout","resizeTimer","setTimeout","onResize","isDefaultPrevented","support","transition","on","onTransitionEnd","onDragStart","onDragEnd","which","transform","split","x","y","position","left","top","stop","type","speed","Date","getTime","one","delta","difference","onDragMove","preventDefault","pull","off","closest","coordinate","transform3d","state","part","map","v","suppress","release","m","isNumeric","reciprocalItemsWidth","elementWidth","mergers","odd","even","multiplier","newPosition","duration","from","to","factor","revert","distance","next","prev","stopPropagation","srcElement","originalTarget","get","innerWidth","documentElement","clientWidth","console","warn","empty","jQuery","nodeType","addBack","add","after","before","splice","images","Image","e","src","destroy","unwrap","contents","removeData","a","o","b","listener","capture","addEventListener","attachEvent","removeEventListener","detachEvent","namespace","status","count","camelCase","relatedTarget","onTrigger","register","call","concat","object","special","owl","_default","apply","indexOf","arguments","tag","inArray","events","result","originalEvent","touches","changedTouches","pageX","pageY","clientX","clientY","number","isNaN","parseFloat","first","second","fn","owlCarousel","option","args","Array","$this","Constructor","Zepto","AutoRefresh","carousel","_core","_interval","_visible","initialized.owl.carousel","autoRefresh","watch","autoRefreshInterval","setInterval","clearInterval","Object","getOwnPropertyNames","Lazy","_loaded","initialized.owl.carousel change.owl.carousel resized.owl.carousel","lazyLoad","load","$item","$elements","image","url","devicePixelRatio","onload","background-image","opacity","handlers","AutoHeight","initialized.owl.carousel refreshed.owl.carousel","autoHeight","changed.owl.carousel","loaded.owl.lazy","autoHeightClass","visible","toArray","heights","maxheight","height","Video","_videos","_playing","resize.owl.carousel","video","isInFullScreen","refreshed.owl.carousel","prepared.owl.carousel","fetch","play","videoHeight","videoWidth","id","Error","thumbnail","tnLink","icon","path","dimensions","customTn","srcType","lazyClass","create","ajax","jsonp","dataType","success","thumbnail_large","framegrab_url","html","insertAfter","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","hasClass","Animate","scope","core","swapping","change.owl.carousel","drag.owl.carousel dragged.owl.carousel translated.owl.carousel","translate.owl.carousel","animateOut","animateIn","swap","animation","clear","incoming","outgoing","Autoplay","_timeout","_paused","autoplay","_setAutoPlayInterval","play.owl.autoplay","t","s","stop.owl.autoplay","mouseover.owl.autoplay","autoplayHoverPause","pause","mouseleave.owl.autoplay","touchstart.owl.core","touchend.owl.core","autoplayTimeout","autoplaySpeed","timeout","_getNextTimeout","hidden","Navigation","_initialized","_pages","_controls","_templates","_overrides","dotsData","dotClass","added.owl.carousel","pop","remove.owl.carousel","draw","nav","navText","navSpeed","navElement","navContainer","navContainerClass","navClass","slideBy","dotsClass","dots","dotsEach","dotsSpeed","dotsContainer","override","$relative","$previous","$next","prop","$absolute","control","overides","j","k","lower","upper","disabled","page","getPosition","successor","standard","Hash","_hashes","hash","location","substring","URLhashListener","test","prefixed","toUpperCase","prefixes","style","WebkitTransition","MozTransition","OTransition","WebkitAnimation","MozAnimation","OAnimation","tests","csstransforms","csstransforms3d","csstransitions","cssanimations","String"],"mappings":"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","file":"owl-slider.min.js","sourcesContent":["/**\n * Owl Carousel v2.2.1\n * Copyright 2013-2017 David Deutsch\n * Licensed under ()\n */\n/**\n * Owl carousel\n * @version 2.1.6\n * @author Bartosz Wojciechowski\n * @author David Deutsch\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\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 * Proxied event handlers.\n\t\t * @protected\n\t\t */\n\t\tthis._handlers = {};\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 * Widths of all items.\n\t\t */\n\t\tthis._widths = [];\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/**\n\t\t * Current state information for the drag operation.\n\t\t * @todo #261\n\t\t * @protected\n\t\t */\n\t\tthis._drag = {\n\t\t\ttime: null,\n\t\t\ttarget: null,\n\t\t\tpointer: null,\n\t\t\tstage: {\n\t\t\t\tstart: null,\n\t\t\t\tcurrent: null\n\t\t\t},\n\t\t\tdirection: null\n\t\t};\n\n\t\t/**\n\t\t * Current state information and their tags.\n\t\t * @type {Object}\n\t\t * @protected\n\t\t */\n\t\tthis._states = {\n\t\t\tcurrent: {},\n\t\t\ttags: {\n\t\t\t\t'initializing': [ 'busy' ],\n\t\t\t\t'animating': [ 'busy' ],\n\t\t\t\t'dragging': [ 'interacting' ]\n\t\t\t}\n\t\t};\n\n\t\t$.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) {\n\t\t\tthis._handlers[handler] = $.proxy(this[handler], this);\n\t\t}, this));\n\n\t\t$.each(Owl.Plugins, $.proxy(function(key, plugin) {\n\t\t\tthis._plugins[key.charAt(0).toLowerCase() + key.slice(1)]\n\t\t\t\t= new plugin(this);\n\t\t}, this));\n\n\t\t$.each(Owl.Workers, $.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\t\trewind: 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\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\trefreshClass: 'owl-refresh',\n\t\tloadedClass: 'owl-loaded',\n\t\tloadingClass: 'owl-loading',\n\t\trtlClass: 'owl-rtl',\n\t\tresponsiveClass: 'owl-responsive',\n\t\tdragClass: 'owl-drag',\n\t\titemClass: 'owl-item',\n\t\tstageClass: 'owl-stage',\n\t\tstageOuterClass: 'owl-stage-outer',\n\t\tgrabClass: 'owl-grab'\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 * Enumeration for types.\n\t * @public\n\t * @readonly\n\t * @enum {String}\n\t */\n\tOwl.Type = {\n\t\tEvent: 'event',\n\t\tState: 'state'\n\t};\n\n\t/**\n\t * Contains all registered plugins.\n\t * @public\n\t */\n\tOwl.Plugins = {};\n\n\t/**\n\t * List of workers involved in the update process.\n\t */\n\tOwl.Workers = [ {\n\t\tfilter: [ 'width', 'settings' ],\n\t\trun: function() {\n\t\t\tthis._width = this.$element.width();\n\t\t}\n\t}, {\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\tthis.$stage.children('.cloned').remove();\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tvar margin = this.settings.margin || '',\n\t\t\t\tgrid = !this.settings.autoWidth,\n\t\t\t\trtl = this.settings.rtl,\n\t\t\t\tcss = {\n\t\t\t\t\t'width': 'auto',\n\t\t\t\t\t'margin-left': rtl ? margin : '',\n\t\t\t\t\t'margin-right': rtl ? '' : margin\n\t\t\t\t};\n\n\t\t\t!grid && this.$stage.children().css(css);\n\n\t\t\tcache.css = css;\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tvar width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,\n\t\t\t\tmerge = null,\n\t\t\t\titerator = this._items.length,\n\t\t\t\tgrid = !this.settings.autoWidth,\n\t\t\t\twidths = [];\n\n\t\t\tcache.items = {\n\t\t\t\tmerge: false,\n\t\t\t\twidth: width\n\t\t\t};\n\n\t\t\twhile (iterator--) {\n\t\t\t\tmerge = this._mergers[iterator];\n\t\t\t\tmerge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge;\n\n\t\t\t\tcache.items.merge = merge > 1 || cache.items.merge;\n\n\t\t\t\twidths[iterator] = !grid ? this._items[iterator].width() : width * merge;\n\t\t\t}\n\n\t\t\tthis._widths = widths;\n\t\t}\n\t}, {\n\t\tfilter: [ 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar clones = [],\n\t\t\t\titems = this._items,\n\t\t\t\tsettings = this.settings,\n\t\t\t\t// TODO: Should be computed from number of min width items in stage\n\t\t\t\tview = Math.max(settings.items * 2, 4),\n\t\t\t\tsize = Math.ceil(items.length / 2) * 2,\n\t\t\t\trepeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0,\n\t\t\t\tappend = '',\n\t\t\t\tprepend = '';\n\n\t\t\trepeat /= 2;\n\n\t\t\twhile (repeat--) {\n\t\t\t\t// Switch to only using appended clones\n\t\t\t\tclones.push(this.normalize(clones.length / 2, true));\n\t\t\t\tappend = append + items[clones[clones.length - 1]][0].outerHTML;\n\t\t\t\tclones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true));\n\t\t\t\tprepend = items[clones[clones.length - 1]][0].outerHTML + prepend;\n\t\t\t}\n\n\t\t\tthis._clones = clones;\n\n\t\t\t$(append).addClass('cloned').appendTo(this.$stage);\n\t\t\t$(prepend).addClass('cloned').prependTo(this.$stage);\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\tsize = this._clones.length + this._items.length,\n\t\t\t\titerator = -1,\n\t\t\t\tprevious = 0,\n\t\t\t\tcurrent = 0,\n\t\t\t\tcoordinates = [];\n\n\t\t\twhile (++iterator < size) {\n\t\t\t\tprevious = coordinates[iterator - 1] || 0;\n\t\t\t\tcurrent = this._widths[this.relative(iterator)] + this.settings.margin;\n\t\t\t\tcoordinates.push(previous + current * rtl);\n\t\t\t}\n\n\t\t\tthis._coordinates = coordinates;\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function() {\n\t\t\tvar padding = this.settings.stagePadding,\n\t\t\t\tcoordinates = this._coordinates,\n\t\t\t\tcss = {\n\t\t\t\t\t'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,\n\t\t\t\t\t'padding-left': padding || '',\n\t\t\t\t\t'padding-right': padding || ''\n\t\t\t\t};\n\n\t\t\tthis.$stage.css(css);\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tvar iterator = this._coordinates.length,\n\t\t\t\tgrid = !this.settings.autoWidth,\n\t\t\t\titems = this.$stage.children();\n\n\t\t\tif (grid && cache.items.merge) {\n\t\t\t\twhile (iterator--) {\n\t\t\t\t\tcache.css.width = this._widths[this.relative(iterator)];\n\t\t\t\t\titems.eq(iterator).css(cache.css);\n\t\t\t\t}\n\t\t\t} else if (grid) {\n\t\t\t\tcache.css.width = cache.items.width;\n\t\t\t\titems.css(cache.css);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tfilter: [ 'items' ],\n\t\trun: function() {\n\t\t\tthis._coordinates.length < 1 && this.$stage.removeAttr('style');\n\t\t}\n\t}, {\n\t\tfilter: [ 'width', 'items', 'settings' ],\n\t\trun: function(cache) {\n\t\t\tcache.current = cache.current ? this.$stage.children().index(cache.current) : 0;\n\t\t\tcache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current));\n\t\t\tthis.reset(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('.active').removeClass('active');\n\t\t\tthis.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active');\n\n\t\t\tif (this.settings.center) {\n\t\t\t\tthis.$stage.children('.center').removeClass('center');\n\t\t\t\tthis.$stage.children().eq(this.current()).addClass('center');\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.enter('initializing');\n\t\tthis.trigger('initialize');\n\n\t\tthis.$element.toggleClass(this.settings.rtlClass, this.settings.rtl);\n\n\t\tif (this.settings.autoWidth && !this.is('pre-loading')) {\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}\n\t\t}\n\n\t\tthis.$element.addClass(this.options.loadingClass);\n\n\t\t// create stage\n\t\tthis.$stage = $('<' + this.settings.stageElement + ' class=\"' + this.settings.stageClass + '\"/>')\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// check visibility\n\t\tif (this.$element.is(':visible')) {\n\t\t\t// update view\n\t\t\tthis.refresh();\n\t\t} else {\n\t\t\t// invalidate width\n\t\t\tthis.invalidate('width');\n\t\t}\n\n\t\tthis.$element\n\t\t\t.removeClass(this.options.loadingClass)\n\t\t\t.addClass(this.options.loadedClass);\n\n\t\t// register event handlers\n\t\tthis.registerEventHandlers();\n\n\t\tthis.leave('initializing');\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\tif (typeof settings.stagePadding === 'function') {\n\t\t\t\tsettings.stagePadding = settings.stagePadding();\n\t\t\t}\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',\n\t\t\t\t\tthis.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\\\S+\\\\s', 'g'), '$1' + match)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis.trigger('change', { property: { name: 'settings', value: settings } });\n\t\tthis._breakpoint = match;\n\t\tthis.settings = settings;\n\t\tthis.invalidate('settings');\n\t\tthis.trigger('changed', { property: { name: 'settings', value: this.settings } });\n\t};\n\n\t/**\n\t * Updates option logic if necessery.\n\t * @protected\n\t */\n\tOwl.prototype.optionsLogic = function() {\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\tevent.data = $('<' + this.settings.itemElement + '/>')\n\t\t\t\t.addClass(this.options.itemClass).append(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\n\t\t!this.is('valid') && this.enter('valid');\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\tthis.enter('refreshing');\n\t\tthis.trigger('refresh');\n\n\t\tthis.setup();\n\n\t\tthis.optionsLogic();\n\n\t\tthis.$element.addClass(this.options.refreshClass);\n\n\t\tthis.update();\n\n\t\tthis.$element.removeClass(this.options.refreshClass);\n\n\t\tthis.leave('refreshing');\n\t\tthis.trigger('refreshed');\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._handlers.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.$element.is(':visible')) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.enter('resizing');\n\n\t\tif (this.trigger('resize').isDefaultPrevented()) {\n\t\t\tthis.leave('resizing');\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.invalidate('width');\n\n\t\tthis.refresh();\n\n\t\tthis.leave('resizing');\n\t\tthis.trigger('resized');\n\t};\n\n\t/**\n\t * Registers event handlers.\n\t * @todo Check `msPointerEnabled`\n\t * @todo #261\n\t * @protected\n\t */\n\tOwl.prototype.registerEventHandlers = function() {\n\t\tif ($.support.transition) {\n\t\t\tthis.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this));\n\t\t}\n\n\t\tif (this.settings.responsive !== false) {\n\t\t\tthis.on(window, 'resize', this._handlers.onThrottledResize);\n\t\t}\n\n\t\tif (this.settings.mouseDrag) {\n\t\t\tthis.$element.addClass(this.options.dragClass);\n\t\t\tthis.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this));\n\t\t\tthis.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false });\n\t\t}\n\n\t\tif (this.settings.touchDrag){\n\t\t\tthis.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this));\n\t\t\tthis.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this));\n\t\t}\n\t};\n\n\t/**\n\t * Handles `touchstart` and `mousedown` events.\n\t * @todo Horizontal swipe threshold as option\n\t * @todo #261\n\t * @protected\n\t * @param {Event} event - The event arguments.\n\t */\n\tOwl.prototype.onDragStart = function(event) {\n\t\tvar stage = null;\n\n\t\tif (event.which === 3) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ($.support.transform) {\n\t\t\tstage = this.$stage.css('transform').replace(/.*\\(|\\)| /g, '').split(',');\n\t\t\tstage = {\n\t\t\t\tx: stage[stage.length === 16 ? 12 : 4],\n\t\t\t\ty: stage[stage.length === 16 ? 13 : 5]\n\t\t\t};\n\t\t} else {\n\t\t\tstage = this.$stage.position();\n\t\t\tstage = {\n\t\t\t\tx: this.settings.rtl ?\n\t\t\t\t\tstage.left + this.$stage.width() - this.width() + this.settings.margin :\n\t\t\t\t\tstage.left,\n\t\t\t\ty: stage.top\n\t\t\t};\n\t\t}\n\n\t\tif (this.is('animating')) {\n\t\t\t$.support.transform ? this.animate(stage.x) : this.$stage.stop()\n\t\t\tthis.invalidate('position');\n\t\t}\n\n\t\tthis.$element.toggleClass(this.options.grabClass, event.type === 'mousedown');\n\n\t\tthis.speed(0);\n\n\t\tthis._drag.time = new Date().getTime();\n\t\tthis._drag.target = $(event.target);\n\t\tthis._drag.stage.start = stage;\n\t\tthis._drag.stage.current = stage;\n\t\tthis._drag.pointer = this.pointer(event);\n\n\t\t$(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this));\n\n\t\t$(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) {\n\t\t\tvar delta = this.difference(this._drag.pointer, this.pointer(event));\n\n\t\t\t$(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this));\n\n\t\t\tif (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tthis.enter('dragging');\n\t\t\tthis.trigger('drag');\n\t\t}, this));\n\t};\n\n\t/**\n\t * Handles the `touchmove` and `mousemove` events.\n\t * @todo #261\n\t * @protected\n\t * @param {Event} event - The event arguments.\n\t */\n\tOwl.prototype.onDragMove = function(event) {\n\t\tvar minimum = null,\n\t\t\tmaximum = null,\n\t\t\tpull = null,\n\t\t\tdelta = this.difference(this._drag.pointer, this.pointer(event)),\n\t\t\tstage = this.difference(this._drag.stage.start, delta);\n\n\t\tif (!this.is('dragging')) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tif (this.settings.loop) {\n\t\t\tminimum = this.coordinates(this.minimum());\n\t\t\tmaximum = this.coordinates(this.maximum() + 1) - minimum;\n\t\t\tstage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum;\n\t\t} else {\n\t\t\tminimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());\n\t\t\tmaximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());\n\t\t\tpull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;\n\t\t\tstage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull);\n\t\t}\n\n\t\tthis._drag.stage.current = stage;\n\n\t\tthis.animate(stage.x);\n\t};\n\n\t/**\n\t * Handles the `touchend` and `mouseup` events.\n\t * @todo #261\n\t * @todo Threshold for click event\n\t * @protected\n\t * @param {Event} event - The event arguments.\n\t */\n\tOwl.prototype.onDragEnd = function(event) {\n\t\tvar delta = this.difference(this._drag.pointer, this.pointer(event)),\n\t\t\tstage = this._drag.stage.current,\n\t\t\tdirection = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right';\n\n\t\t$(document).off('.owl.core');\n\n\t\tthis.$element.removeClass(this.options.grabClass);\n\n\t\tif (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {\n\t\t\tthis.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);\n\t\t\tthis.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction));\n\t\t\tthis.invalidate('position');\n\t\t\tthis.update();\n\n\t\t\tthis._drag.direction = direction;\n\n\t\t\tif (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) {\n\t\t\t\tthis._drag.target.one('click.owl.core', function() { return false; });\n\t\t\t}\n\t\t}\n\n\t\tif (!this.is('dragging')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.leave('dragging');\n\t\tthis.trigger('dragged');\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 * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`.\n\t * @return {Number} - The absolute position of the closest item.\n\t */\n\tOwl.prototype.closest = function(coordinate, direction) {\n\t\tvar position = -1,\n\t\t\tpull = 30,\n\t\t\twidth = this.width(),\n\t\t\tcoordinates = 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\t// on a left pull, check on current index\n\t\t\t\tif (direction === 'left' && coordinate > value - pull && coordinate < value + pull) {\n\t\t\t\t\tposition = index;\n\t\t\t\t// on a right pull, check on previous index\n\t\t\t\t// to do so, subtract width from value and set position = index + 1\n\t\t\t\t} else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) {\n\t\t\t\t\tposition = index + 1;\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 = 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 * @todo #270\n\t * @public\n\t * @param {Number} coordinate - The coordinate in pixels.\n\t */\n\tOwl.prototype.animate = function(coordinate) {\n\t\tvar animate = this.speed() > 0;\n\n\t\tthis.is('animating') && this.onTransitionEnd();\n\n\t\tif (animate) {\n\t\t\tthis.enter('animating');\n\t\t\tthis.trigger('translate');\n\t\t}\n\n\t\tif ($.support.transform3d && $.support.transition) {\n\t\t\tthis.$stage.css({\n\t\t\t\ttransform: 'translate3d(' + coordinate + 'px,0px,0px)',\n\t\t\t\ttransition: (this.speed() / 1000) + 's'\n\t\t\t});\n\t\t} else if (animate) {\n\t\t\tthis.$stage.animate({\n\t\t\t\tleft: coordinate + 'px'\n\t\t\t}, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this));\n\t\t} else {\n\t\t\tthis.$stage.css({\n\t\t\t\tleft: coordinate + 'px'\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Checks whether the carousel is in a specific state or not.\n\t * @param {String} state - The state to check.\n\t * @returns {Boolean} - The flag which indicates if the carousel is busy.\n\t */\n\tOwl.prototype.is = function(state) {\n\t\treturn this._states.current[state] && this._states.current[state] > 0;\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 * @returns {Array.} - The invalidated parts.\n\t */\n\tOwl.prototype.invalidate = function(part) {\n\t\tif ($.type(part) === 'string') {\n\t\t\tthis._invalidated[part] = true;\n\t\t\tthis.is('valid') && this.leave('valid');\n\t\t}\n\t\treturn $.map(this._invalidated, function(v, i) { return i });\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 of 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 = this._items.length,\n\t\t\tm = relative ? 0 : this._clones.length;\n\n\t\tif (!this.isNumeric(position) || n < 1) {\n\t\t\tposition = undefined;\n\t\t} else if (position < 0 || position >= n + m) {\n\t\t\tposition = ((position - m / 2) % n + n) % n + m / 2;\n\t\t}\n\n\t\treturn position;\n\t};\n\n\t/**\n\t * Converts an absolute position of an item into a relative one.\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._clones.length / 2;\n\t\treturn this.normalize(position, true);\n\t};\n\n\t/**\n\t * Gets the maximum position for the current 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 settings = this.settings,\n\t\t\tmaximum = this._coordinates.length,\n\t\t\titerator,\n\t\t\treciprocalItemsWidth,\n\t\t\telementWidth;\n\n\t\tif (settings.loop) {\n\t\t\tmaximum = this._clones.length / 2 + this._items.length - 1;\n\t\t} else if (settings.autoWidth || settings.merge) {\n\t\t\titerator = this._items.length;\n\t\t\treciprocalItemsWidth = this._items[--iterator].width();\n\t\t\telementWidth = this.$element.width();\n\t\t\twhile (iterator--) {\n\t\t\t\treciprocalItemsWidth += this._items[iterator].width() + this.settings.margin;\n\t\t\t\tif (reciprocalItemsWidth > elementWidth) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmaximum = iterator + 1;\n\t\t} else if (settings.center) {\n\t\t\tmaximum = this._items.length - 1;\n\t\t} else {\n\t\t\tmaximum = this._items.length - settings.items;\n\t\t}\n\n\t\tif (relative) {\n\t\t\tmaximum -= this._clones.length / 2;\n\t\t}\n\n\t\treturn Math.max(maximum, 0);\n\t};\n\n\t/**\n\t * Gets the minimum position for the current 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\treturn relative ? 0 : 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\tvar multiplier = 1,\n\t\t\tnewPosition = position - 1,\n\t\t\tcoordinate;\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\tif (this.settings.rtl) {\n\t\t\t\tmultiplier = -1;\n\t\t\t\tnewPosition = position + 1;\n\t\t\t}\n\n\t\t\tcoordinate = this._coordinates[position];\n\t\t\tcoordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier;\n\t\t} else {\n\t\t\tcoordinate = this._coordinates[newPosition] || 0;\n\t\t}\n\n\t\tcoordinate = Math.ceil(coordinate);\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\tif (factor === 0) {\n\t\t\treturn 0;\n\t\t}\n\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\tvar current = this.current(),\n\t\t\trevert = null,\n\t\t\tdistance = position - this.relative(current),\n\t\t\tdirection = (distance > 0) - (distance < 0),\n\t\t\titems = this._items.length,\n\t\t\tminimum = this.minimum(),\n\t\t\tmaximum = this.maximum();\n\n\t\tif (this.settings.loop) {\n\t\t\tif (!this.settings.rewind && Math.abs(distance) > items / 2) {\n\t\t\t\tdistance += direction * -1 * items;\n\t\t\t}\n\n\t\t\tposition = current + distance;\n\t\t\trevert = ((position - minimum) % items + items) % items + minimum;\n\n\t\t\tif (revert !== position && revert - distance <= maximum && revert - distance > 0) {\n\t\t\t\tcurrent = revert - distance;\n\t\t\t\tposition = revert;\n\t\t\t\tthis.reset(current);\n\t\t\t}\n\t\t} else if (this.settings.rewind) {\n\t\t\tmaximum += 1;\n\t\t\tposition = (position % maximum + maximum) % maximum;\n\t\t} else {\n\t\t\tposition = Math.max(minimum, Math.min(maximum, position));\n\t\t}\n\n\t\tthis.speed(this.duration(current, position, speed));\n\t\tthis.current(position);\n\n\t\tif (this.$element.is(':visible')) {\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.onTransitionEnd = 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.leave('animating');\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\tconsole.warn('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]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t}, this));\n\n\t\tthis.reset(this.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\tvar current = this.relative(this._current);\n\n\t\tposition = position === undefined ? this._items.length : this.normalize(position, true);\n\t\tcontent = content instanceof jQuery ? content : $(content);\n\n\t\tthis.trigger('add', { content: content, position: position });\n\n\t\tcontent = this.prepare(content);\n\n\t\tif (this._items.length === 0 || position === this._items.length) {\n\t\t\tthis._items.length === 0 && this.$stage.append(content);\n\t\t\tthis._items.length !== 0 && this._items[position - 1].after(content);\n\t\t\tthis._items.push(content);\n\t\t\tthis._mergers.push(content.find('[data-merge]').addBack('[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]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\n\t\t}\n\n\t\tthis._items[current] && this.reset(this._items[current].index());\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 * Preloads images with auto width.\n\t * @todo Replace by a more generic approach\n\t * @protected\n\t */\n\tOwl.prototype.preloadAutoWidthImages = function(images) {\n\t\timages.each($.proxy(function(i, element) {\n\t\t\tthis.enter('pre-loading');\n\t\t\telement = $(element);\n\t\t\t$(new Image()).one('load', $.proxy(function(e) {\n\t\t\t\telement.attr('src', e.target.src);\n\t\t\t\telement.css('opacity', 1);\n\t\t\t\tthis.leave('pre-loading');\n\t\t\t\t!this.is('pre-loading') && !this.is('initializing') && this.refresh();\n\t\t\t}, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina'));\n\t\t}, this));\n\t};\n\n\t/**\n\t * Destroys the carousel.\n\t * @public\n\t */\n\tOwl.prototype.destroy = function() {\n\n\t\tthis.$element.off('.owl.core');\n\t\tthis.$stage.off('.owl.core');\n\t\t$(document).off('.owl.core');\n\n\t\tif (this.settings.responsive !== false) {\n\t\t\twindow.clearTimeout(this.resizeTimer);\n\t\t\tthis.off(window, 'resize', this._handlers.onThrottledResize);\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\tthis.$stage.children('.cloned').remove();\n\n\t\tthis.$stage.unwrap();\n\t\tthis.$stage.children().contents().unwrap();\n\t\tthis.$stage.children().unwrap();\n\n\t\tthis.$element\n\t\t\t.removeClass(this.options.refreshClass)\n\t\t\t.removeClass(this.options.loadingClass)\n\t\t\t.removeClass(this.options.loadedClass)\n\t\t\t.removeClass(this.options.rtlClass)\n\t\t\t.removeClass(this.options.dragClass)\n\t\t\t.removeClass(this.options.grabClass)\n\t\t\t.attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\\\S+\\\\s', 'g'), ''))\n\t\t\t.removeData('owl.carousel');\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 a public event.\n\t * @todo Remove `status`, `relatedTarget` should be used instead.\n\t * @protected\n\t * @param {String} name - The event name.\n\t * @param {*} [data=null] - The event data.\n\t * @param {String} [namespace=carousel] - The event namespace.\n\t * @param {String} [state] - The state which is associated with the event.\n\t * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not.\n\t * @returns {Event} - The event arguments.\n\t */\n\tOwl.prototype.trigger = function(name, data, namespace, state, enter) {\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.register({ type: Owl.Type.Event, name: name });\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].call(this, event);\n\t\t\t}\n\t\t}\n\n\t\treturn event;\n\t};\n\n\t/**\n\t * Enters a state.\n\t * @param name - The state name.\n\t */\n\tOwl.prototype.enter = function(name) {\n\t\t$.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {\n\t\t\tif (this._states.current[name] === undefined) {\n\t\t\t\tthis._states.current[name] = 0;\n\t\t\t}\n\n\t\t\tthis._states.current[name]++;\n\t\t}, this));\n\t};\n\n\t/**\n\t * Leaves a state.\n\t * @param name - The state name.\n\t */\n\tOwl.prototype.leave = function(name) {\n\t\t$.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {\n\t\t\tthis._states.current[name]--;\n\t\t}, this));\n\t};\n\n\t/**\n\t * Registers an event or state.\n\t * @public\n\t * @param {Object} object - The event or state to register.\n\t */\n\tOwl.prototype.register = function(object) {\n\t\tif (object.type === Owl.Type.Event) {\n\t\t\tif (!$.event.special[object.name]) {\n\t\t\t\t$.event.special[object.name] = {};\n\t\t\t}\n\n\t\t\tif (!$.event.special[object.name].owl) {\n\t\t\t\tvar _default = $.event.special[object.name]._default;\n\t\t\t\t$.event.special[object.name]._default = function(e) {\n\t\t\t\t\tif (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) {\n\t\t\t\t\t\treturn _default.apply(this, arguments);\n\t\t\t\t\t}\n\t\t\t\t\treturn e.namespace && e.namespace.indexOf('owl') > -1;\n\t\t\t\t};\n\t\t\t\t$.event.special[object.name].owl = true;\n\t\t\t}\n\t\t} else if (object.type === Owl.Type.State) {\n\t\t\tif (!this._states.tags[object.name]) {\n\t\t\t\tthis._states.tags[object.name] = object.tags;\n\t\t\t} else {\n\t\t\t\tthis._states.tags[object.name] = this._states.tags[object.name].concat(object.tags);\n\t\t\t}\n\n\t\t\tthis._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) {\n\t\t\t\treturn $.inArray(tag, this._states.tags[object.name]) === i;\n\t\t\t}, this));\n\t\t}\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 * Gets unified pointer coordinates from event.\n\t * @todo #261\n\t * @protected\n\t * @param {Event} - The `mousedown` or `touchstart` event.\n\t * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.\n\t */\n\tOwl.prototype.pointer = function(event) {\n\t\tvar result = { x: null, y: null };\n\n\t\tevent = event.originalEvent || event || window.event;\n\n\t\tevent = event.touches && event.touches.length ?\n\t\t\tevent.touches[0] : event.changedTouches && event.changedTouches.length ?\n\t\t\t\tevent.changedTouches[0] : event;\n\n\t\tif (event.pageX) {\n\t\t\tresult.x = event.pageX;\n\t\t\tresult.y = event.pageY;\n\t\t} else {\n\t\t\tresult.x = event.clientX;\n\t\t\tresult.y = event.clientY;\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t/**\n\t * Determines if the input is a Number or something that can be coerced to a Number\n\t * @protected\n\t * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested\n\t * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number\n\t */\n\tOwl.prototype.isNumeric = function(number) {\n\t\treturn !isNaN(parseFloat(number));\n\t};\n\n\t/**\n\t * Gets the difference of two vectors.\n\t * @todo #261\n\t * @protected\n\t * @param {Object} - The first vector.\n\t * @param {Object} - The second vector.\n\t * @returns {Object} - The difference.\n\t */\n\tOwl.prototype.difference = function(first, second) {\n\t\treturn {\n\t\t\tx: first.x - second.x,\n\t\t\ty: first.y - second.y\n\t\t};\n\t};\n\n\t/**\n\t * The jQuery Plugin for the Owl Carousel\n\t * @todo Navigation plugin `next` and `prev`\n\t * @public\n\t */\n\t$.fn.owlCarousel = function(option) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\n\t\treturn this.each(function() {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('owl.carousel');\n\n\t\t\tif (!data) {\n\t\t\t\tdata = new Owl(this, typeof option == 'object' && option);\n\t\t\t\t$this.data('owl.carousel', data);\n\n\t\t\t\t$.each([\n\t\t\t\t\t'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'\n\t\t\t\t], function(i, event) {\n\t\t\t\t\tdata.register({ type: Owl.Type.Event, name: event });\n\t\t\t\t\tdata.$element.on(event + '.owl.carousel.core', $.proxy(function(e) {\n\t\t\t\t\t\tif (e.namespace && e.relatedTarget !== this) {\n\t\t\t\t\t\t\tthis.suppress([ event ]);\n\t\t\t\t\t\t\tdata[event].apply(this, [].slice.call(arguments, 1));\n\t\t\t\t\t\t\tthis.release([ event ]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, data));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (typeof option == 'string' && option.charAt(0) !== '_') {\n\t\t\t\tdata[option].apply(data, args);\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 * AutoRefresh Plugin\n * @version 2.1.0\n * @author Artus Kolanowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the auto refresh plugin.\n\t * @class The Auto Refresh Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar AutoRefresh = 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 * Refresh interval.\n\t\t * @protected\n\t\t * @type {number}\n\t\t */\n\t\tthis._interval = null;\n\n\t\t/**\n\t\t * Whether the element is currently visible or not.\n\t\t * @protected\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis._visible = null;\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(e) {\n\t\t\t\tif (e.namespace && this._core.settings.autoRefresh) {\n\t\t\t\t\tthis.watch();\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({}, AutoRefresh.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\tAutoRefresh.Defaults = {\n\t\tautoRefresh: true,\n\t\tautoRefreshInterval: 500\n\t};\n\n\t/**\n\t * Watches the element.\n\t */\n\tAutoRefresh.prototype.watch = function() {\n\t\tif (this._interval) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._visible = this._core.$element.is(':visible');\n\t\tthis._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);\n\t};\n\n\t/**\n\t * Refreshes the element.\n\t */\n\tAutoRefresh.prototype.refresh = function() {\n\t\tif (this._core.$element.is(':visible') === this._visible) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._visible = !this._visible;\n\n\t\tthis._core.$element.toggleClass('owl-hidden', !this._visible);\n\n\t\tthis._visible && (this._core.invalidate('width') && this._core.refresh());\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t */\n\tAutoRefresh.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\twindow.clearInterval(this._interval);\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.AutoRefresh = AutoRefresh;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Lazy Plugin\n * @version 2.1.0\n * @author Bartosz Wojciechowski\n * @author David Deutsch\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 resized.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 !== undefined ? 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\tposition++;\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.1.0\n * @author Bartosz Wojciechowski\n * @author David Deutsch\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 refreshed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && 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 (e.namespace && 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 (e.namespace && this._core.settings.autoHeight\n\t\t\t\t\t&& e.element.closest('.' + this._core.settings.itemClass).index() === 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\tvar start = this._core._current,\n\t\t\tend = start + this._core.settings.items,\n\t\t\tvisible = this._core.$stage.children().toArray().slice(start, end),\n\t\t\theights = [],\n\t\t\tmaxheight = 0;\n\n\t\t$.each(visible, function(index, item) {\n\t\t\theights.push($(item).height());\n\t\t});\n\n\t\tmaxheight = Math.max.apply(null, heights);\n\n\t\tthis._core.$stage.parent()\n\t\t\t.height(maxheight)\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.1.0\n * @author Bartosz Wojciechowski\n * @author David Deutsch\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 * All event handlers.\n\t\t * @todo The cloned content removale is too late\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(e) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tthis._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] });\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'resize.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && 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'refreshed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.is('resizing')) {\n\t\t\t\t\tthis._core.$stage.find('.cloned .owl-video-frame').remove();\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.namespace && e.property.name === 'position' && 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\tif (!e.namespace) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar $element = $(e.content).find('.owl-video');\n\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/vzaar 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\t\t\tvar type = (function() {\n\t\t\t\t\tif (target.attr('data-vimeo-id')) {\n\t\t\t\t\t\treturn 'vimeo';\n\t\t\t\t\t} else if (target.attr('data-vzaar-id')) {\n\t\t\t\t\t\treturn 'vzaar'\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn 'youtube';\n\t\t\t\t\t}\n\t\t\t\t})(),\n\t\t\t\tid = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-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\n\t\tif (url) {\n\n\t\t\t/*\n\t\t\t\t\tParses the id's out of the following urls (and probably more):\n\t\t\t\t\thttps://www.youtube.com/watch?v=:id\n\t\t\t\t\thttps://youtu.be/:id\n\t\t\t\t\thttps://vimeo.com/:id\n\t\t\t\t\thttps://vimeo.com/channels/:channel/:id\n\t\t\t\t\thttps://vimeo.com/groups/:group/videos/:id\n\t\t\t\t\thttps://app.vzaar.com/videos/:id\n\n\t\t\t\t\tVisual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F\n\t\t\t*/\n\n\t\t\tid = url.match(/(http:|https:|)\\/\\/(player.|www.|app.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com)|vzaar\\.com)\\/(video\\/|videos\\/|embed\\/|channels\\/.+\\/|groups\\/.+\\/|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 if (id[3].indexOf('vzaar') > -1) {\n\t\t\t\ttype = 'vzaar';\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\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 = \"//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: '//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} else if (video.type === 'vzaar') {\n\t\t\t$.ajax({\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: '//vzaar.com/api/videos/' + 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.framegrab_url;\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\tthis._core.leave('playing');\n\t\tthis._core.trigger('stopped', null, 'video');\n\t};\n\n\t/**\n\t * Starts the current video.\n\t * @public\n\t * @param {Event} event - The event arguments.\n\t */\n\tVideo.prototype.play = function(event) {\n\t\tvar target = $(event.target),\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;\n\n\t\tif (this._playing) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._core.enter('playing');\n\t\tthis._core.trigger('play', null, 'video');\n\n\t\titem = this._core.items(this._core.relative(item.index()));\n\n\t\tthis._core.reset(item.index());\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} else if (video.type === 'vzaar') {\n\t\t\thtml = '';\n\t\t}\n\n\t\t$('
' + html + '
').insertAfter(item.find('.owl-video'));\n\n\t\tthis._playing = item.addClass('owl-video-playing');\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\t\tvar element = document.fullscreenElement || document.mozFullScreenElement ||\n\t\t\t\tdocument.webkitFullscreenElement;\n\n\t\treturn element && $(element).parent().hasClass('owl-video-frame');\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.1.0\n * @author Bartosz Wojciechowski\n * @author David Deutsch\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.namespace && 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\tif (e.namespace) {\n\t\t\t\t\tthis.swapping = e.type == 'translated';\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'translate.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && 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) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!$.support.animation || !$.support.transition) {\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.one($.support.animation.end, clear)\n\t\t\t\t.css( { 'left': left + 'px' } )\n\t\t\t\t.addClass('animated owl-animated-out')\n\t\t\t\t.addClass(outgoing);\n\t\t}\n\n\t\tif (incoming) {\n\t\t\tnext.one($.support.animation.end, clear)\n\t\t\t\t.addClass('animated owl-animated-in')\n\t\t\t\t.addClass(incoming);\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.onTransitionEnd();\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.1.0\n * @author Bartosz Wojciechowski\n * @author Artus Kolanowski\n * @author David Deutsch\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(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 * The autoplay timeout.\n\t\t * @type {Timeout}\n\t\t */\n\t\tthis._timeout = null;\n\n\t\t/**\n\t\t * Indicates whenever the autoplay is paused.\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis._paused = 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'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && e.property.name === 'settings') {\n\t\t\t\t\tif (this._core.settings.autoplay) {\n\t\t\t\t\t\tthis.play();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.namespace && e.property.name === 'position') {\n\t\t\t\t\t//console.log('play?', e);\n\t\t\t\t\tif (this._core.settings.autoplay) {\n\t\t\t\t\t\tthis._setAutoPlayInterval();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.autoplay) {\n\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'play.owl.autoplay': $.proxy(function(e, t, s) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tthis.play(t, s);\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'stop.owl.autoplay': $.proxy(function(e) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tthis.stop();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'mouseover.owl.autoplay': $.proxy(function() {\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\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 && this._core.is('rotating')) {\n\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'touchstart.owl.core': $.proxy(function() {\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\n\t\t\t\t\tthis.pause();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'touchend.owl.core': $.proxy(function() {\n\t\t\t\tif (this._core.settings.autoplayHoverPause) {\n\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// register event handlers\n\t\tthis._core.$element.on(this._handlers);\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Autoplay.Defaults, this._core.options);\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 * Starts the autoplay.\n\t * @public\n\t * @param {Number} [timeout] - The interval before the next animation starts.\n\t * @param {Number} [speed] - The animation speed for the animations.\n\t */\n\tAutoplay.prototype.play = function(timeout, speed) {\n\t\tthis._paused = false;\n\n\t\tif (this._core.is('rotating')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._core.enter('rotating');\n\n\t\tthis._setAutoPlayInterval();\n\t};\n\n\t/**\n\t * Gets a new timeout\n\t * @private\n\t * @param {Number} [timeout] - The interval before the next animation starts.\n\t * @param {Number} [speed] - The animation speed for the animations.\n\t * @return {Timeout}\n\t */\n\tAutoplay.prototype._getNextTimeout = function(timeout, speed) {\n\t\tif ( this._timeout ) {\n\t\t\twindow.clearTimeout(this._timeout);\n\t\t}\n\t\treturn window.setTimeout($.proxy(function() {\n\t\t\tif (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._core.next(speed || this._core.settings.autoplaySpeed);\n\t\t}, this), timeout || this._core.settings.autoplayTimeout);\n\t};\n\n\t/**\n\t * Sets autoplay in motion.\n\t * @private\n\t */\n\tAutoplay.prototype._setAutoPlayInterval = function() {\n\t\tthis._timeout = this._getNextTimeout();\n\t};\n\n\t/**\n\t * Stops the autoplay.\n\t * @public\n\t */\n\tAutoplay.prototype.stop = function() {\n\t\tif (!this._core.is('rotating')) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.clearTimeout(this._timeout);\n\t\tthis._core.leave('rotating');\n\t};\n\n\t/**\n\t * Stops the autoplay.\n\t * @public\n\t */\n\tAutoplay.prototype.pause = function() {\n\t\tif (!this._core.is('rotating')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._paused = true;\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t */\n\tAutoplay.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tthis.stop();\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.autoplay = Autoplay;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Navigation Plugin\n * @version 2.1.0\n * @author Artus Kolanowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\t'use strict';\n\n\t/**\n\t * Creates the navigation plugin.\n\t * @class The Navigation Plugin\n\t * @param {Owl} carousel - The Owl Carousel.\n\t */\n\tvar Navigation = 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 * Indicates whether the plugin is initialized or not.\n\t\t * @protected\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis._initialized = false;\n\n\t\t/**\n\t\t * The current paging indexes.\n\t\t * @protected\n\t\t * @type {Array}\n\t\t */\n\t\tthis._pages = [];\n\n\t\t/**\n\t\t * All DOM elements of the user interface.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._controls = {};\n\n\t\t/**\n\t\t * Markup for an indicator.\n\t\t * @protected\n\t\t * @type {Array.}\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 (e.namespace && this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.push('
' +\n\t\t\t\t\t\t$(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
');\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'added.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.splice(e.position, 0, this._templates.pop());\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'remove.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && 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'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && 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'initialized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && !this._initialized) {\n\t\t\t\t\tthis._core.trigger('initialize', null, 'navigation');\n\t\t\t\t\tthis.initialize();\n\t\t\t\t\tthis.update();\n\t\t\t\t\tthis.draw();\n\t\t\t\t\tthis._initialized = true;\n\t\t\t\t\tthis._core.trigger('initialized', null, 'navigation');\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'refreshed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._initialized) {\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}\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\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\tdotsData: false,\n\t\tdotsSpeed: false,\n\t\tdotsContainer: false\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 override,\n\t\t\tsettings = this._core.settings;\n\n\t\t// create DOM structure for relative navigation\n\t\tthis._controls.$relative = (settings.navContainer ? $(settings.navContainer)\n\t\t\t: $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');\n\n\t\tthis._controls.$previous = $('<' + settings.navElement + '>')\n\t\t\t.addClass(settings.navClass[0])\n\t\t\t.html(settings.navText[0])\n\t\t\t.prependTo(this._controls.$relative)\n\t\t\t.on('click', $.proxy(function(e) {\n\t\t\t\tthis.prev(settings.navSpeed);\n\t\t\t}, this));\n\t\tthis._controls.$next = $('<' + settings.navElement + '>')\n\t\t\t.addClass(settings.navClass[1])\n\t\t\t.html(settings.navText[1])\n\t\t\t.appendTo(this._controls.$relative)\n\t\t\t.on('click', $.proxy(function(e) {\n\t\t\t\tthis.next(settings.navSpeed);\n\t\t\t}, this));\n\n\t\t// create DOM structure for absolute navigation\n\t\tif (!settings.dotsData) {\n\t\t\tthis._templates = [ $('
')\n\t\t\t\t.addClass(settings.dotClass)\n\t\t\t\t.append($(''))\n\t\t\t\t.prop('outerHTML') ];\n\t\t}\n\n\t\tthis._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer)\n\t\t\t: $('
').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');\n\n\t\tthis._controls.$absolute.on('click', 'div', $.proxy(function(e) {\n\t\t\tvar index = $(e.target).parent().is(this._controls.$absolute)\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, settings.dotsSpeed);\n\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\tlower = this._core.clones().length / 2,\n\t\t\tupper = lower + this._core.items().length,\n\t\t\tmaximum = this._core.maximum(true),\n\t\t\tsettings = this._core.settings,\n\t\t\tsize = settings.center || settings.autoWidth || settings.dotsData\n\t\t\t\t? 1 : settings.dotsEach || settings.items;\n\n\t\tif (settings.slideBy !== 'page') {\n\t\t\tsettings.slideBy = Math.min(settings.slideBy, settings.items);\n\t\t}\n\n\t\tif (settings.dots || settings.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: Math.min(maximum, i - lower),\n\t\t\t\t\t\tend: i - lower + size - 1\n\t\t\t\t\t});\n\t\t\t\t\tif (Math.min(maximum, i - lower) === maximum) {\n\t\t\t\t\t\tbreak;\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 `dotsData` wont work.\n\t * @protected\n\t */\n\tNavigation.prototype.draw = function() {\n\t\tvar difference,\n\t\t\tsettings = this._core.settings,\n\t\t\tdisabled = this._core.items().length <= settings.items,\n\t\t\tindex = this._core.relative(this._core.current()),\n\t\t\tloop = settings.loop || settings.rewind;\n\n\t\tthis._controls.$relative.toggleClass('disabled', !settings.nav || disabled);\n\n\t\tif (settings.nav) {\n\t\t\tthis._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true));\n\t\t\tthis._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true));\n\t\t}\n\n\t\tthis._controls.$absolute.toggleClass('disabled', !settings.dots || disabled);\n\n\t\tif (settings.dots) {\n\t\t\tdifference = this._pages.length - this._controls.$absolute.children().length;\n\n\t\t\tif (settings.dotsData && difference !== 0) {\n\t\t\t\tthis._controls.$absolute.html(this._templates.join(''));\n\t\t\t} else if (difference > 0) {\n\t\t\t\tthis._controls.$absolute.append(new Array(difference + 1).join(this._templates[0]));\n\t\t\t} else if (difference < 0) {\n\t\t\t\tthis._controls.$absolute.children().slice(difference).remove();\n\t\t\t}\n\n\t\t\tthis._controls.$absolute.find('.active').removeClass('active');\n\t\t\tthis._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active');\n\t\t}\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.dotsData\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 current = this._core.relative(this._core.current());\n\t\treturn $.grep(this._pages, $.proxy(function(page, index) {\n\t\t\treturn page.start <= current && page.end >= current;\n\t\t}, this)).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\tsettings = this._core.settings;\n\n\t\tif (settings.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 += settings.slideBy : position -= settings.slideBy;\n\t\t}\n\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 && this._pages.length) {\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.1.0\n * @author Artus Kolanowski\n * @author David Deutsch\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 index for the items.\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(e) {\n\t\t\t\tif (e.namespace && 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\tif (e.namespace) {\n\t\t\t\t\tvar hash = $(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash');\n\n\t\t\t\t\tif (!hash) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._hashes[hash] = e.content;\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.namespace && e.property.name === 'position') {\n\t\t\t\t\tvar current = this._core.items(this._core.relative(this._core.current())),\n\t\t\t\t\t\thash = $.map(this._hashes, function(item, hash) {\n\t\t\t\t\t\t\treturn item === current ? hash : null;\n\t\t\t\t\t\t}).join();\n\n\t\t\t\t\tif (!hash || window.location.hash.slice(1) === hash) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\twindow.location.hash = hash;\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({}, 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(e) {\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]);\n\n\t\t\tif (position === undefined || position === this._core.current()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._core.to(this._core.relative(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 * Support Plugin\n *\n * @version 2.1.0\n * @author Vivid Planet Software GmbH\n * @author Artus Kolanowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\tvar style = $('').get(0).style,\n\t\tprefixes = 'Webkit Moz O ms'.split(' '),\n\t\tevents = {\n\t\t\ttransition: {\n\t\t\t\tend: {\n\t\t\t\t\tWebkitTransition: 'webkitTransitionEnd',\n\t\t\t\t\tMozTransition: 'transitionend',\n\t\t\t\t\tOTransition: 'oTransitionEnd',\n\t\t\t\t\ttransition: 'transitionend'\n\t\t\t\t}\n\t\t\t},\n\t\t\tanimation: {\n\t\t\t\tend: {\n\t\t\t\t\tWebkitAnimation: 'webkitAnimationEnd',\n\t\t\t\t\tMozAnimation: 'animationend',\n\t\t\t\t\tOAnimation: 'oAnimationEnd',\n\t\t\t\t\tanimation: 'animationend'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttests = {\n\t\t\tcsstransforms: function() {\n\t\t\t\treturn !!test('transform');\n\t\t\t},\n\t\t\tcsstransforms3d: function() {\n\t\t\t\treturn !!test('perspective');\n\t\t\t},\n\t\t\tcsstransitions: function() {\n\t\t\t\treturn !!test('transition');\n\t\t\t},\n\t\t\tcssanimations: function() {\n\t\t\t\treturn !!test('animation');\n\t\t\t}\n\t\t};\n\n\tfunction test(property, prefixed) {\n\t\tvar result = false,\n\t\t\tupper = property.charAt(0).toUpperCase() + property.slice(1);\n\n\t\t$.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) {\n\t\t\tif (style[property] !== undefined) {\n\t\t\t\tresult = prefixed ? property : true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tfunction prefixed(property) {\n\t\treturn test(property, true);\n\t}\n\n\tif (tests.csstransitions()) {\n\t\t/* jshint -W053 */\n\t\t$.support.transition = new String(prefixed('transition'))\n\t\t$.support.transition.end = events.transition.end[ $.support.transition ];\n\t}\n\n\tif (tests.cssanimations()) {\n\t\t/* jshint -W053 */\n\t\t$.support.animation = new String(prefixed('animation'))\n\t\t$.support.animation.end = events.animation.end[ $.support.animation ];\n\t}\n\n\tif (tests.csstransforms()) {\n\t\t/* jshint -W053 */\n\t\t$.support.transform = new String(prefixed('transform'));\n\t\t$.support.transform3d = tests.csstransforms3d();\n\t}\n\n})(window.Zepto || window.jQuery, window, document);\n"]}