Файловый менеджер - Редактировать - /var/www/html/wp-content/cache/wpfc-minified/ff3ijuv6/2rmj9.js
Назад
// source --> https://umliloenergy.com/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=9.4.2 function focus_populate_live_region(){var e=["woocommerce-message","woocommerce-error","wc-block-components-notice-banner"].map(function(e){return"."+e+'[role="alert"]'}).join(", "),o=document.querySelectorAll(e);if(0!==o.length){var t=o[0];t.setAttribute("tabindex","-1");var n=setTimeout(function(){t.focus(),clearTimeout(n)},500)}}function refresh_sorted_by_live_region(){var e=document.querySelector('.woocommerce-result-count[data-is-sorted-by="true"]');if(e)var o=e.innerHTML,t=setTimeout(function(){e.innerHTML="",e.innerHTML=o,clearTimeout(t)},1e3)}function on_document_ready(){focus_populate_live_region(),refresh_sorted_by_live_region()}jQuery(function(e){e(".woocommerce-ordering").on("change","select.orderby",function(){e(this).closest("form").trigger("submit")}),e("input.qty:not(.product-quantity input.qty)").each(function(){var o=parseFloat(e(this).attr("min"));o>=0&&parseFloat(e(this).val())<o&&e(this).val(o)});var o="store_notice"+(e(".woocommerce-store-notice").data("noticeId")||"");"hidden"===Cookies.get(o)?e(".woocommerce-store-notice").hide():e(".woocommerce-store-notice").show(),e(".woocommerce-store-notice__dismiss-link").on("click",function(t){Cookies.set(o,"hidden",{path:"/"}),e(".woocommerce-store-notice").hide(),t.preventDefault()}),e(".woocommerce-input-wrapper span.description").length&&e(document.body).on("click",function(){e(".woocommerce-input-wrapper span.description:visible").prop("aria-hidden",!0).slideUp(250)}),e(".woocommerce-input-wrapper").on("click",function(e){e.stopPropagation()}),e(".woocommerce-input-wrapper :input").on("keydown",function(o){var t=e(this).parent().find("span.description");if(27===o.which&&t.length&&t.is(":visible"))return t.prop("aria-hidden",!0).slideUp(250),o.preventDefault(),!1}).on("click focus",function(){var o=e(this).parent(),t=o.find("span.description");o.addClass("currentTarget"),e(".woocommerce-input-wrapper:not(.currentTarget) span.description:visible").prop("aria-hidden",!0).slideUp(250),t.length&&t.is(":hidden")&&t.prop("aria-hidden",!1).slideDown(250),o.removeClass("currentTarget")}),e.scroll_to_notices=function(o){o.length&&e("html, body").animate({scrollTop:o.offset().top-100},1e3)},e('.woocommerce form .woocommerce-Input[type="password"]').wrap('<span class="password-input"></span>'),e(".woocommerce form input").filter(":password").parent("span").addClass("password-input"),e(".password-input").append('<span class="show-password-input"></span>'),e(".show-password-input").on("click",function(){e(this).hasClass("display-password")?e(this).removeClass("display-password"):e(this).addClass("display-password"),e(this).hasClass("display-password")?e(this).siblings(['input[type="password"]']).prop("type","text"):e(this).siblings('input[type="text"]').prop("type","password")}),e("a.coming-soon-footer-banner-dismiss").on("click",function(o){var t=e(o.target);e.ajax({type:"post",url:t.data("rest-url"),data:{woocommerce_meta:{coming_soon_banner_dismissed:"yes"}},beforeSend:function(e){e.setRequestHeader("X-WP-Nonce",t.data("rest-nonce"))},complete:function(){e("#coming-soon-footer-banner").hide()}})})}),document.addEventListener("DOMContentLoaded",on_document_ready); // source --> https://umliloenergy.com/wp-content/plugins/hunk-companion/gogolite/js/gogo-js/owl.carousel.js?ver=6.7.1 /** * Owl Carousel v2.3.4 * Copyright 2013-2018 David Deutsch * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE */ /** * Owl carousel * @version 2.3.4 * @author Bartosz Wojciechowski * @author David Deutsch * @license The MIT License (MIT) * @todo Lazy Load Icon * @todo prevent animationend bubling * @todo itemsScaleUp * @todo Test Zepto * @todo stagePadding calculate wrong active classes */ ;(function($, window, document, undefined) { /** * Creates a carousel. * @class The Owl Carousel. * @public * @param {HTMLElement|jQuery} element - The element to create the carousel for. * @param {Object} [options] - The options */ function Owl(element, options) { /** * Current settings for the carousel. * @public */ this.settings = null; /** * Current options set by the caller including defaults. * @public */ this.options = $.extend({}, Owl.Defaults, options); /** * Plugin element. * @public */ this.$element = $(element); /** * Proxied event handlers. * @protected */ this._handlers = {}; /** * References to the running plugins of this carousel. * @protected */ this._plugins = {}; /** * Currently suppressed events to prevent them from being retriggered. * @protected */ this._supress = {}; /** * Absolute current position. * @protected */ this._current = null; /** * Animation speed in milliseconds. * @protected */ this._speed = null; /** * Coordinates of all items in pixel. * @todo The name of this member is missleading. * @protected */ this._coordinates = []; /** * Current breakpoint. * @todo Real media queries would be nice. * @protected */ this._breakpoint = null; /** * Current width of the plugin element. */ this._width = null; /** * All real items. * @protected */ this._items = []; /** * All cloned items. * @protected */ this._clones = []; /** * Merge values of all items. * @todo Maybe this could be part of a plugin. * @protected */ this._mergers = []; /** * Widths of all items. */ this._widths = []; /** * Invalidated parts within the update process. * @protected */ this._invalidated = {}; /** * Ordered list of workers for the update process. * @protected */ this._pipe = []; /** * Current state information for the drag operation. * @todo #261 * @protected */ this._drag = { time: null, target: null, pointer: null, stage: { start: null, current: null }, direction: null }; /** * Current state information and their tags. * @type {Object} * @protected */ this._states = { current: {}, tags: { 'initializing': [ 'busy' ], 'animating': [ 'busy' ], 'dragging': [ 'interacting' ] } }; $.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) { this._handlers[handler] = $.proxy(this[handler], this); }, this)); $.each(Owl.Plugins, $.proxy(function(key, plugin) { this._plugins[key.charAt(0).toLowerCase() + key.slice(1)] = new plugin(this); }, this)); $.each(Owl.Workers, $.proxy(function(priority, worker) { this._pipe.push({ 'filter': worker.filter, 'run': $.proxy(worker.run, this) }); }, this)); this.setup(); this.initialize(); } /** * Default options for the carousel. * @public */ Owl.Defaults = { items: 3, loop: false, center: false, rewind: false, checkVisibility: true, mouseDrag: true, touchDrag: true, pullDrag: true, freeDrag: false, margin: 0, stagePadding: 0, merge: false, mergeFit: true, autoWidth: false, startPosition: 0, rtl: false, smartSpeed: 250, fluidSpeed: false, dragEndSpeed: false, responsive: {}, responsiveRefreshRate: 200, responsiveBaseElement: window, fallbackEasing: 'swing', slideTransition: '', info: false, nestedItemSelector: false, itemElement: 'div', stageElement: 'div', refreshClass: 'owl-refresh', loadedClass: 'owl-loaded', loadingClass: 'owl-loading', rtlClass: 'owl-rtl', responsiveClass: 'owl-responsive', dragClass: 'owl-drag', itemClass: 'owl-item', stageClass: 'owl-stage', stageOuterClass: 'owl-stage-outer', grabClass: 'owl-grab' }; /** * Enumeration for width. * @public * @readonly * @enum {String} */ Owl.Width = { Default: 'default', Inner: 'inner', Outer: 'outer' }; /** * Enumeration for types. * @public * @readonly * @enum {String} */ Owl.Type = { Event: 'event', State: 'state' }; /** * Contains all registered plugins. * @public */ Owl.Plugins = {}; /** * List of workers involved in the update process. */ Owl.Workers = [ { filter: [ 'width', 'settings' ], run: function() { this._width = this.$element.width(); } }, { filter: [ 'width', 'items', 'settings' ], run: function(cache) { cache.current = this._items && this._items[this.relative(this._current)]; } }, { filter: [ 'items', 'settings' ], run: function() { this.$stage.children('.cloned').remove(); } }, { filter: [ 'width', 'items', 'settings' ], run: function(cache) { var margin = this.settings.margin || '', grid = !this.settings.autoWidth, rtl = this.settings.rtl, css = { 'width': 'auto', 'margin-left': rtl ? margin : '', 'margin-right': rtl ? '' : margin }; !grid && this.$stage.children().css(css); cache.css = css; } }, { filter: [ 'width', 'items', 'settings' ], run: function(cache) { var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, merge = null, iterator = this._items.length, grid = !this.settings.autoWidth, widths = []; cache.items = { merge: false, width: width }; while (iterator--) { merge = this._mergers[iterator]; merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge; cache.items.merge = merge > 1 || cache.items.merge; widths[iterator] = !grid ? this._items[iterator].width() : width * merge; } this._widths = widths; } }, { filter: [ 'items', 'settings' ], run: function() { var clones = [], items = this._items, settings = this.settings, // TODO: Should be computed from number of min width items in stage view = Math.max(settings.items * 2, 4), size = Math.ceil(items.length / 2) * 2, repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0, append = '', prepend = ''; repeat /= 2; while (repeat > 0) { // Switch to only using appended clones clones.push(this.normalize(clones.length / 2, true)); append = append + items[clones[clones.length - 1]][0].outerHTML; clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true)); prepend = items[clones[clones.length - 1]][0].outerHTML + prepend; repeat -= 1; } this._clones = clones; $(append).addClass('cloned').appendTo(this.$stage); $(prepend).addClass('cloned').prependTo(this.$stage); } }, { filter: [ 'width', 'items', 'settings' ], run: function() { var rtl = this.settings.rtl ? 1 : -1, size = this._clones.length + this._items.length, iterator = -1, previous = 0, current = 0, coordinates = []; while (++iterator < size) { previous = coordinates[iterator - 1] || 0; current = this._widths[this.relative(iterator)] + this.settings.margin; coordinates.push(previous + current * rtl); } this._coordinates = coordinates; } }, { filter: [ 'width', 'items', 'settings' ], run: function() { var padding = this.settings.stagePadding, coordinates = this._coordinates, css = { 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2, 'padding-left': padding || '', 'padding-right': padding || '' }; this.$stage.css(css); } }, { filter: [ 'width', 'items', 'settings' ], run: function(cache) { var iterator = this._coordinates.length, grid = !this.settings.autoWidth, items = this.$stage.children(); if (grid && cache.items.merge) { while (iterator--) { cache.css.width = this._widths[this.relative(iterator)]; items.eq(iterator).css(cache.css); } } else if (grid) { cache.css.width = cache.items.width; items.css(cache.css); } } }, { filter: [ 'items' ], run: function() { this._coordinates.length < 1 && this.$stage.removeAttr('style'); } }, { filter: [ 'width', 'items', 'settings' ], run: function(cache) { cache.current = cache.current ? this.$stage.children().index(cache.current) : 0; cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current)); this.reset(cache.current); } }, { filter: [ 'position' ], run: function() { this.animate(this.coordinates(this._current)); } }, { filter: [ 'width', 'position', 'items', 'settings' ], run: function() { var rtl = this.settings.rtl ? 1 : -1, padding = this.settings.stagePadding * 2, begin = this.coordinates(this.current()) + padding, end = begin + this.width() * rtl, inner, outer, matches = [], i, n; for (i = 0, n = this._coordinates.length; i < n; i++) { inner = this._coordinates[i - 1] || 0; outer = Math.abs(this._coordinates[i]) + padding * rtl; if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end))) || (this.op(outer, '<', begin) && this.op(outer, '>', end))) { matches.push(i); } } this.$stage.children('.active').removeClass('active'); this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active'); this.$stage.children('.center').removeClass('center'); if (this.settings.center) { this.$stage.children().eq(this.current()).addClass('center'); } } } ]; /** * Create the stage DOM element */ Owl.prototype.initializeStage = function() { this.$stage = this.$element.find('.' + this.settings.stageClass); // if the stage is already in the DOM, grab it and skip stage initialization if (this.$stage.length) { return; } this.$element.addClass(this.options.loadingClass); // create stage this.$stage = $('<' + this.settings.stageElement + '>', { "class": this.settings.stageClass }).wrap( $( '<div/>', { "class": this.settings.stageOuterClass })); // append stage this.$element.append(this.$stage.parent()); }; /** * Create item DOM elements */ Owl.prototype.initializeItems = function() { var $items = this.$element.find('.owl-item'); // if the items are already in the DOM, grab them and skip item initialization if ($items.length) { this._items = $items.get().map(function(item) { return $(item); }); this._mergers = this._items.map(function() { return 1; }); this.refresh(); return; } // append content this.replace(this.$element.children().not(this.$stage.parent())); // check visibility if (this.isVisible()) { // update view this.refresh(); } else { // invalidate width this.invalidate('width'); } this.$element .removeClass(this.options.loadingClass) .addClass(this.options.loadedClass); }; /** * Initializes the carousel. * @protected */ Owl.prototype.initialize = function() { this.enter('initializing'); this.trigger('initialize'); this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl); if (this.settings.autoWidth && !this.is('pre-loading')) { var imgs, nestedSelector, width; imgs = this.$element.find('img'); nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined; width = this.$element.children(nestedSelector).width(); if (imgs.length && width <= 0) { this.preloadAutoWidthImages(imgs); } } this.initializeStage(); this.initializeItems(); // register event handlers this.registerEventHandlers(); this.leave('initializing'); this.trigger('initialized'); }; /** * @returns {Boolean} visibility of $element * if you know the carousel will always be visible you can set `checkVisibility` to `false` to * prevent the expensive browser layout forced reflow the $element.is(':visible') does */ Owl.prototype.isVisible = function() { return this.settings.checkVisibility ? this.$element.is(':visible') : true; }; /** * Setups the current settings. * @todo Remove responsive classes. Why should adaptive designs be brought into IE8? * @todo Support for media queries by using `matchMedia` would be nice. * @public */ Owl.prototype.setup = function() { var viewport = this.viewport(), overwrites = this.options.responsive, match = -1, settings = null; if (!overwrites) { settings = $.extend({}, this.options); } else { $.each(overwrites, function(breakpoint) { if (breakpoint <= viewport && breakpoint > match) { match = Number(breakpoint); } }); settings = $.extend({}, this.options, overwrites[match]); if (typeof settings.stagePadding === 'function') { settings.stagePadding = settings.stagePadding(); } delete settings.responsive; // responsive class if (settings.responsiveClass) { this.$element.attr('class', this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match) ); } } this.trigger('change', { property: { name: 'settings', value: settings } }); this._breakpoint = match; this.settings = settings; this.invalidate('settings'); this.trigger('changed', { property: { name: 'settings', value: this.settings } }); }; /** * Updates option logic if necessery. * @protected */ Owl.prototype.optionsLogic = function() { if (this.settings.autoWidth) { this.settings.stagePadding = false; this.settings.merge = false; } }; /** * Prepares an item before add. * @todo Rename event parameter `content` to `item`. * @protected * @returns {jQuery|HTMLElement} - The item container. */ Owl.prototype.prepare = function(item) { var event = this.trigger('prepare', { content: item }); if (!event.data) { event.data = $('<' + this.settings.itemElement + '/>') .addClass(this.options.itemClass).append(item) } this.trigger('prepared', { content: event.data }); return event.data; }; /** * Updates the view. * @public */ Owl.prototype.update = function() { var i = 0, n = this._pipe.length, filter = $.proxy(function(p) { return this[p] }, this._invalidated), cache = {}; while (i < n) { if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) { this._pipe[i].run(cache); } i++; } this._invalidated = {}; !this.is('valid') && this.enter('valid'); }; /** * Gets the width of the view. * @public * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return. * @returns {Number} - The width of the view in pixel. */ Owl.prototype.width = function(dimension) { dimension = dimension || Owl.Width.Default; switch (dimension) { case Owl.Width.Inner: case Owl.Width.Outer: return this._width; default: return this._width - this.settings.stagePadding * 2 + this.settings.margin; } }; /** * Refreshes the carousel primarily for adaptive purposes. * @public */ Owl.prototype.refresh = function() { this.enter('refreshing'); this.trigger('refresh'); this.setup(); this.optionsLogic(); this.$element.addClass(this.options.refreshClass); this.update(); this.$element.removeClass(this.options.refreshClass); this.leave('refreshing'); this.trigger('refreshed'); }; /** * Checks window `resize` event. * @protected */ Owl.prototype.onThrottledResize = function() { window.clearTimeout(this.resizeTimer); this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate); }; /** * Checks window `resize` event. * @protected */ Owl.prototype.onResize = function() { if (!this._items.length) { return false; } if (this._width === this.$element.width()) { return false; } if (!this.isVisible()) { return false; } this.enter('resizing'); if (this.trigger('resize').isDefaultPrevented()) { this.leave('resizing'); return false; } this.invalidate('width'); this.refresh(); this.leave('resizing'); this.trigger('resized'); }; /** * Registers event handlers. * @todo Check `msPointerEnabled` * @todo #261 * @protected */ Owl.prototype.registerEventHandlers = function() { if ($.support.transition) { this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this)); } if (this.settings.responsive !== false) { this.on(window, 'resize', this._handlers.onThrottledResize); } if (this.settings.mouseDrag) { this.$element.addClass(this.options.dragClass); this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this)); this.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false }); } if (this.settings.touchDrag){ this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this)); this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this)); } }; /** * Handles `touchstart` and `mousedown` events. * @todo Horizontal swipe threshold as option * @todo #261 * @protected * @param {Event} event - The event arguments. */ Owl.prototype.onDragStart = function(event) { var stage = null; if (event.which === 3) { return; } if ($.support.transform) { stage = this.$stage.css('transform').replace(/.*\(|\)| /g, '').split(','); stage = { x: stage[stage.length === 16 ? 12 : 4], y: stage[stage.length === 16 ? 13 : 5] }; } else { stage = this.$stage.position(); stage = { x: this.settings.rtl ? stage.left + this.$stage.width() - this.width() + this.settings.margin : stage.left, y: stage.top }; } if (this.is('animating')) { $.support.transform ? this.animate(stage.x) : this.$stage.stop() this.invalidate('position'); } this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown'); this.speed(0); this._drag.time = new Date().getTime(); this._drag.target = $(event.target); this._drag.stage.start = stage; this._drag.stage.current = stage; this._drag.pointer = this.pointer(event); $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this)); $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) { var delta = this.difference(this._drag.pointer, this.pointer(event)); $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this)); if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) { return; } event.preventDefault(); this.enter('dragging'); this.trigger('drag'); }, this)); }; /** * Handles the `touchmove` and `mousemove` events. * @todo #261 * @protected * @param {Event} event - The event arguments. */ Owl.prototype.onDragMove = function(event) { var minimum = null, maximum = null, pull = null, delta = this.difference(this._drag.pointer, this.pointer(event)), stage = this.difference(this._drag.stage.start, delta); if (!this.is('dragging')) { return; } event.preventDefault(); if (this.settings.loop) { minimum = this.coordinates(this.minimum()); maximum = this.coordinates(this.maximum() + 1) - minimum; stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum; } else { minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()); maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()); pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0; stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull); } this._drag.stage.current = stage; this.animate(stage.x); }; /** * Handles the `touchend` and `mouseup` events. * @todo #261 * @todo Threshold for click event * @protected * @param {Event} event - The event arguments. */ Owl.prototype.onDragEnd = function(event) { var delta = this.difference(this._drag.pointer, this.pointer(event)), stage = this._drag.stage.current, direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right'; $(document).off('.owl.core'); this.$element.removeClass(this.options.grabClass); if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) { this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed); this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction)); this.invalidate('position'); this.update(); this._drag.direction = direction; if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) { this._drag.target.one('click.owl.core', function() { return false; }); } } if (!this.is('dragging')) { return; } this.leave('dragging'); this.trigger('dragged'); }; /** * Gets absolute position of the closest item for a coordinate. * @todo Setting `freeDrag` makes `closest` not reusable. See #165. * @protected * @param {Number} coordinate - The coordinate in pixel. * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`. * @return {Number} - The absolute position of the closest item. */ Owl.prototype.closest = function(coordinate, direction) { var position = -1, pull = 30, width = this.width(), coordinates = this.coordinates(); if (!this.settings.freeDrag) { // check closest item $.each(coordinates, $.proxy(function(index, value) { // on a left pull, check on current index if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) { position = index; // on a right pull, check on previous index // to do so, subtract width from value and set position = index + 1 } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) { position = index + 1; } else if (this.op(coordinate, '<', value) && this.op(coordinate, '>', coordinates[index + 1] !== undefined ? coordinates[index + 1] : value - width)) { position = direction === 'left' ? index + 1 : index; } return position === -1; }, this)); } if (!this.settings.loop) { // non loop boundries if (this.op(coordinate, '>', coordinates[this.minimum()])) { position = coordinate = this.minimum(); } else if (this.op(coordinate, '<', coordinates[this.maximum()])) { position = coordinate = this.maximum(); } } return position; }; /** * Animates the stage. * @todo #270 * @public * @param {Number} coordinate - The coordinate in pixels. */ Owl.prototype.animate = function(coordinate) { var animate = this.speed() > 0; this.is('animating') && this.onTransitionEnd(); if (animate) { this.enter('animating'); this.trigger('translate'); } if ($.support.transform3d && $.support.transition) { this.$stage.css({ transform: 'translate3d(' + coordinate + 'px,0px,0px)', transition: (this.speed() / 1000) + 's' + ( this.settings.slideTransition ? ' ' + this.settings.slideTransition : '' ) }); } else if (animate) { this.$stage.animate({ left: coordinate + 'px' }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this)); } else { this.$stage.css({ left: coordinate + 'px' }); } }; /** * Checks whether the carousel is in a specific state or not. * @param {String} state - The state to check. * @returns {Boolean} - The flag which indicates if the carousel is busy. */ Owl.prototype.is = function(state) { return this._states.current[state] && this._states.current[state] > 0; }; /** * Sets the absolute position of the current item. * @public * @param {Number} [position] - The new absolute position or nothing to leave it unchanged. * @returns {Number} - The absolute position of the current item. */ Owl.prototype.current = function(position) { if (position === undefined) { return this._current; } if (this._items.length === 0) { return undefined; } position = this.normalize(position); if (this._current !== position) { var event = this.trigger('change', { property: { name: 'position', value: position } }); if (event.data !== undefined) { position = this.normalize(event.data); } this._current = position; this.invalidate('position'); this.trigger('changed', { property: { name: 'position', value: this._current } }); } return this._current; }; /** * Invalidates the given part of the update routine. * @param {String} [part] - The part to invalidate. * @returns {Array.<String>} - The invalidated parts. */ Owl.prototype.invalidate = function(part) { if ($.type(part) === 'string') { this._invalidated[part] = true; this.is('valid') && this.leave('valid'); } return $.map(this._invalidated, function(v, i) { return i }); }; /** * Resets the absolute position of the current item. * @public * @param {Number} position - The absolute position of the new item. */ Owl.prototype.reset = function(position) { position = this.normalize(position); if (position === undefined) { return; } this._speed = 0; this._current = position; this.suppress([ 'translate', 'translated' ]); this.animate(this.coordinates(position)); this.release([ 'translate', 'translated' ]); }; /** * Normalizes an absolute or a relative position of an item. * @public * @param {Number} position - The absolute or relative position to normalize. * @param {Boolean} [relative=false] - Whether the given position is relative or not. * @returns {Number} - The normalized position. */ Owl.prototype.normalize = function(position, relative) { var n = this._items.length, m = relative ? 0 : this._clones.length; if (!this.isNumeric(position) || n < 1) { position = undefined; } else if (position < 0 || position >= n + m) { position = ((position - m / 2) % n + n) % n + m / 2; } return position; }; /** * Converts an absolute position of an item into a relative one. * @public * @param {Number} position - The absolute position to convert. * @returns {Number} - The converted position. */ Owl.prototype.relative = function(position) { position -= this._clones.length / 2; return this.normalize(position, true); }; /** * Gets the maximum position for the current item. * @public * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. * @returns {Number} */ Owl.prototype.maximum = function(relative) { var settings = this.settings, maximum = this._coordinates.length, iterator, reciprocalItemsWidth, elementWidth; if (settings.loop) { maximum = this._clones.length / 2 + this._items.length - 1; } else if (settings.autoWidth || settings.merge) { iterator = this._items.length; if (iterator) { reciprocalItemsWidth = this._items[--iterator].width(); elementWidth = this.$element.width(); while (iterator--) { reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin; if (reciprocalItemsWidth > elementWidth) { break; } } } maximum = iterator + 1; } else if (settings.center) { maximum = this._items.length - 1; } else { maximum = this._items.length - settings.items; } if (relative) { maximum -= this._clones.length / 2; } return Math.max(maximum, 0); }; /** * Gets the minimum position for the current item. * @public * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. * @returns {Number} */ Owl.prototype.minimum = function(relative) { return relative ? 0 : this._clones.length / 2; }; /** * Gets an item at the specified relative position. * @public * @param {Number} [position] - The relative position of the item. * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given. */ Owl.prototype.items = function(position) { if (position === undefined) { return this._items.slice(); } position = this.normalize(position, true); return this._items[position]; }; /** * Gets an item at the specified relative position. * @public * @param {Number} [position] - The relative position of the item. * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given. */ Owl.prototype.mergers = function(position) { if (position === undefined) { return this._mergers.slice(); } position = this.normalize(position, true); return this._mergers[position]; }; /** * Gets the absolute positions of clones for an item. * @public * @param {Number} [position] - The relative position of the item. * @returns {Array.<Number>} - The absolute positions of clones for the item or all if no position was given. */ Owl.prototype.clones = function(position) { var odd = this._clones.length / 2, even = odd + this._items.length, map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 }; if (position === undefined) { return $.map(this._clones, function(v, i) { return map(i) }); } return $.map(this._clones, function(v, i) { return v === position ? map(i) : null }); }; /** * Sets the current animation speed. * @public * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged. * @returns {Number} - The current animation speed in milliseconds. */ Owl.prototype.speed = function(speed) { if (speed !== undefined) { this._speed = speed; } return this._speed; }; /** * Gets the coordinate of an item. * @todo The name of this method is missleanding. * @public * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`. * @returns {Number|Array.<Number>} - The coordinate of the item in pixel or all coordinates. */ Owl.prototype.coordinates = function(position) { var multiplier = 1, newPosition = position - 1, coordinate; if (position === undefined) { return $.map(this._coordinates, $.proxy(function(coordinate, index) { return this.coordinates(index); }, this)); } if (this.settings.center) { if (this.settings.rtl) { multiplier = -1; newPosition = position + 1; } coordinate = this._coordinates[position]; coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier; } else { coordinate = this._coordinates[newPosition] || 0; } coordinate = Math.ceil(coordinate); return coordinate; }; /** * Calculates the speed for a translation. * @protected * @param {Number} from - The absolute position of the start item. * @param {Number} to - The absolute position of the target item. * @param {Number} [factor=undefined] - The time factor in milliseconds. * @returns {Number} - The time in milliseconds for the translation. */ Owl.prototype.duration = function(from, to, factor) { if (factor === 0) { return 0; } return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed)); }; /** * Slides to the specified item. * @public * @param {Number} position - The position of the item. * @param {Number} [speed] - The time in milliseconds for the transition. */ Owl.prototype.to = function(position, speed) { var current = this.current(), revert = null, distance = position - this.relative(current), direction = (distance > 0) - (distance < 0), items = this._items.length, minimum = this.minimum(), maximum = this.maximum(); if (this.settings.loop) { if (!this.settings.rewind && Math.abs(distance) > items / 2) { distance += direction * -1 * items; } position = current + distance; revert = ((position - minimum) % items + items) % items + minimum; if (revert !== position && revert - distance <= maximum && revert - distance > 0) { current = revert - distance; position = revert; this.reset(current); } } else if (this.settings.rewind) { maximum += 1; position = (position % maximum + maximum) % maximum; } else { position = Math.max(minimum, Math.min(maximum, position)); } this.speed(this.duration(current, position, speed)); this.current(position); if (this.isVisible()) { this.update(); } }; /** * Slides to the next item. * @public * @param {Number} [speed] - The time in milliseconds for the transition. */ Owl.prototype.next = function(speed) { speed = speed || false; this.to(this.relative(this.current()) + 1, speed); }; /** * Slides to the previous item. * @public * @param {Number} [speed] - The time in milliseconds for the transition. */ Owl.prototype.prev = function(speed) { speed = speed || false; this.to(this.relative(this.current()) - 1, speed); }; /** * Handles the end of an animation. * @protected * @param {Event} event - The event arguments. */ Owl.prototype.onTransitionEnd = function(event) { // if css2 animation then event object is undefined if (event !== undefined) { event.stopPropagation(); // Catch only owl-stage transitionEnd event if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) { return false; } } this.leave('animating'); this.trigger('translated'); }; /** * Gets viewport width. * @protected * @return {Number} - The width in pixel. */ Owl.prototype.viewport = function() { var width; if (this.options.responsiveBaseElement !== window) { width = $(this.options.responsiveBaseElement).width(); } else if (window.innerWidth) { width = window.innerWidth; } else if (document.documentElement && document.documentElement.clientWidth) { width = document.documentElement.clientWidth; } else { console.warn('Can not detect viewport width.'); } return width; }; /** * Replaces the current content. * @public * @param {HTMLElement|jQuery|String} content - The new content. */ Owl.prototype.replace = function(content) { this.$stage.empty(); this._items = []; if (content) { content = (content instanceof jQuery) ? content : $(content); } if (this.settings.nestedItemSelector) { content = content.find('.' + this.settings.nestedItemSelector); } content.filter(function() { return this.nodeType === 1; }).each($.proxy(function(index, item) { item = this.prepare(item); this.$stage.append(item); this._items.push(item); this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); }, this)); this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0); this.invalidate('items'); }; /** * Adds an item. * @todo Use `item` instead of `content` for the event arguments. * @public * @param {HTMLElement|jQuery|String} content - The item content to add. * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end. */ Owl.prototype.add = function(content, position) { var current = this.relative(this._current); position = position === undefined ? this._items.length : this.normalize(position, true); content = content instanceof jQuery ? content : $(content); this.trigger('add', { content: content, position: position }); content = this.prepare(content); if (this._items.length === 0 || position === this._items.length) { this._items.length === 0 && this.$stage.append(content); this._items.length !== 0 && this._items[position - 1].after(content); this._items.push(content); this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); } else { this._items[position].before(content); this._items.splice(position, 0, content); this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); } this._items[current] && this.reset(this._items[current].index()); this.invalidate('items'); this.trigger('added', { content: content, position: position }); }; /** * Removes an item by its position. * @todo Use `item` instead of `content` for the event arguments. * @public * @param {Number} position - The relative position of the item to remove. */ Owl.prototype.remove = function(position) { position = this.normalize(position, true); if (position === undefined) { return; } this.trigger('remove', { content: this._items[position], position: position }); this._items[position].remove(); this._items.splice(position, 1); this._mergers.splice(position, 1); this.invalidate('items'); this.trigger('removed', { content: null, position: position }); }; /** * Preloads images with auto width. * @todo Replace by a more generic approach * @protected */ Owl.prototype.preloadAutoWidthImages = function(images) { images.each($.proxy(function(i, element) { this.enter('pre-loading'); element = $(element); $(new Image()).one('load', $.proxy(function(e) { element.attr('src', e.target.src); element.css('opacity', 1); this.leave('pre-loading'); !this.is('pre-loading') && !this.is('initializing') && this.refresh(); }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina')); }, this)); }; /** * Destroys the carousel. * @public */ Owl.prototype.destroy = function() { this.$element.off('.owl.core'); this.$stage.off('.owl.core'); $(document).off('.owl.core'); if (this.settings.responsive !== false) { window.clearTimeout(this.resizeTimer); this.off(window, 'resize', this._handlers.onThrottledResize); } for (var i in this._plugins) { this._plugins[i].destroy(); } this.$stage.children('.cloned').remove(); this.$stage.unwrap(); this.$stage.children().contents().unwrap(); this.$stage.children().unwrap(); this.$stage.remove(); this.$element .removeClass(this.options.refreshClass) .removeClass(this.options.loadingClass) .removeClass(this.options.loadedClass) .removeClass(this.options.rtlClass) .removeClass(this.options.dragClass) .removeClass(this.options.grabClass) .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), '')) .removeData('owl.carousel'); }; /** * Operators to calculate right-to-left and left-to-right. * @protected * @param {Number} [a] - The left side operand. * @param {String} [o] - The operator. * @param {Number} [b] - The right side operand. */ Owl.prototype.op = function(a, o, b) { var rtl = this.settings.rtl; switch (o) { case '<': return rtl ? a > b : a < b; case '>': return rtl ? a < b : a > b; case '>=': return rtl ? a <= b : a >= b; case '<=': return rtl ? a >= b : a <= b; default: break; } }; /** * Attaches to an internal event. * @protected * @param {HTMLElement} element - The event source. * @param {String} event - The event name. * @param {Function} listener - The event handler to attach. * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not. */ Owl.prototype.on = function(element, event, listener, capture) { if (element.addEventListener) { element.addEventListener(event, listener, capture); } else if (element.attachEvent) { element.attachEvent('on' + event, listener); } }; /** * Detaches from an internal event. * @protected * @param {HTMLElement} element - The event source. * @param {String} event - The event name. * @param {Function} listener - The attached event handler to detach. * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not. */ Owl.prototype.off = function(element, event, listener, capture) { if (element.removeEventListener) { element.removeEventListener(event, listener, capture); } else if (element.detachEvent) { element.detachEvent('on' + event, listener); } }; /** * Triggers a public event. * @todo Remove `status`, `relatedTarget` should be used instead. * @protected * @param {String} name - The event name. * @param {*} [data=null] - The event data. * @param {String} [namespace=carousel] - The event namespace. * @param {String} [state] - The state which is associated with the event. * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not. * @returns {Event} - The event arguments. */ Owl.prototype.trigger = function(name, data, namespace, state, enter) { var status = { item: { count: this._items.length, index: this.current() } }, handler = $.camelCase( $.grep([ 'on', name, namespace ], function(v) { return v }) .join('-').toLowerCase() ), event = $.Event( [ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(), $.extend({ relatedTarget: this }, status, data) ); if (!this._supress[name]) { $.each(this._plugins, function(name, plugin) { if (plugin.onTrigger) { plugin.onTrigger(event); } }); this.register({ type: Owl.Type.Event, name: name }); this.$element.trigger(event); if (this.settings && typeof this.settings[handler] === 'function') { this.settings[handler].call(this, event); } } return event; }; /** * Enters a state. * @param name - The state name. */ Owl.prototype.enter = function(name) { $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { if (this._states.current[name] === undefined) { this._states.current[name] = 0; } this._states.current[name]++; }, this)); }; /** * Leaves a state. * @param name - The state name. */ Owl.prototype.leave = function(name) { $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { this._states.current[name]--; }, this)); }; /** * Registers an event or state. * @public * @param {Object} object - The event or state to register. */ Owl.prototype.register = function(object) { if (object.type === Owl.Type.Event) { if (!$.event.special[object.name]) { $.event.special[object.name] = {}; } if (!$.event.special[object.name].owl) { var _default = $.event.special[object.name]._default; $.event.special[object.name]._default = function(e) { if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) { return _default.apply(this, arguments); } return e.namespace && e.namespace.indexOf('owl') > -1; }; $.event.special[object.name].owl = true; } } else if (object.type === Owl.Type.State) { if (!this._states.tags[object.name]) { this._states.tags[object.name] = object.tags; } else { this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags); } this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) { return $.inArray(tag, this._states.tags[object.name]) === i; }, this)); } }; /** * Suppresses events. * @protected * @param {Array.<String>} events - The events to suppress. */ Owl.prototype.suppress = function(events) { $.each(events, $.proxy(function(index, event) { this._supress[event] = true; }, this)); }; /** * Releases suppressed events. * @protected * @param {Array.<String>} events - The events to release. */ Owl.prototype.release = function(events) { $.each(events, $.proxy(function(index, event) { delete this._supress[event]; }, this)); }; /** * Gets unified pointer coordinates from event. * @todo #261 * @protected * @param {Event} - The `mousedown` or `touchstart` event. * @returns {Object} - Contains `x` and `y` coordinates of current pointer position. */ Owl.prototype.pointer = function(event) { var result = { x: null, y: null }; event = event.originalEvent || event || window.event; event = event.touches && event.touches.length ? event.touches[0] : event.changedTouches && event.changedTouches.length ? event.changedTouches[0] : event; if (event.pageX) { result.x = event.pageX; result.y = event.pageY; } else { result.x = event.clientX; result.y = event.clientY; } return result; }; /** * Determines if the input is a Number or something that can be coerced to a Number * @protected * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number */ Owl.prototype.isNumeric = function(number) { return !isNaN(parseFloat(number)); }; /** * Gets the difference of two vectors. * @todo #261 * @protected * @param {Object} - The first vector. * @param {Object} - The second vector. * @returns {Object} - The difference. */ Owl.prototype.difference = function(first, second) { return { x: first.x - second.x, y: first.y - second.y }; }; /** * The jQuery Plugin for the Owl Carousel * @todo Navigation plugin `next` and `prev` * @public */ $.fn.owlCarousel = function(option) { var args = Array.prototype.slice.call(arguments, 1); return this.each(function() { var $this = $(this), data = $this.data('owl.carousel'); if (!data) { data = new Owl(this, typeof option == 'object' && option); $this.data('owl.carousel', data); $.each([ 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove' ], function(i, event) { data.register({ type: Owl.Type.Event, name: event }); data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) { if (e.namespace && e.relatedTarget !== this) { this.suppress([ event ]); data[event].apply(this, [].slice.call(arguments, 1)); this.release([ event ]); } }, data)); }); } if (typeof option == 'string' && option.charAt(0) !== '_') { data[option].apply(data, args); } }); }; /** * The constructor for the jQuery Plugin * @public */ $.fn.owlCarousel.Constructor = Owl; })(window.Zepto || window.jQuery, window, document); /** * AutoRefresh Plugin * @version 2.3.4 * @author Artus Kolanowski * @author David Deutsch * @license The MIT License (MIT) */ ;(function($, window, document, undefined) { /** * Creates the auto refresh plugin. * @class The Auto Refresh Plugin * @param {Owl} carousel - The Owl Carousel */ var AutoRefresh = function(carousel) { /** * Reference to the core. * @protected * @type {Owl} */ this._core = carousel; /** * Refresh interval. * @protected * @type {number} */ this._interval = null; /** * Whether the element is currently visible or not. * @protected * @type {Boolean} */ this._visible = null; /** * All event handlers. * @protected * @type {Object} */ this._handlers = { 'initialized.owl.carousel': $.proxy(function(e) { if (e.namespace && this._core.settings.autoRefresh) { this.watch(); } }, this) }; // set default options this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options); // register event handlers this._core.$element.on(this._handlers); }; /** * Default options. * @public */ AutoRefresh.Defaults = { autoRefresh: true, autoRefreshInterval: 500 }; /** * Watches the element. */ AutoRefresh.prototype.watch = function() { if (this._interval) { return; } this._visible = this._core.isVisible(); this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval); }; /** * Refreshes the element. */ AutoRefresh.prototype.refresh = function() { if (this._core.isVisible() === this._visible) { return; } this._visible = !this._visible; this._core.$element.toggleClass('owl-hidden', !this._visible); this._visible && (this._core.invalidate('width') && this._core.refresh()); }; /** * Destroys the plugin. */ AutoRefresh.prototype.destroy = function() { var handler, property; window.clearInterval(this._interval); for (handler in this._handlers) { this._core.$element.off(handler, this._handlers[handler]); } for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null); } }; $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh; })(window.Zepto || window.jQuery, window, document); /** * Lazy Plugin * @version 2.3.4 * @author Bartosz Wojciechowski * @author David Deutsch * @license The MIT License (MIT) */ ;(function($, window, document, undefined) { /** * Creates the lazy plugin. * @class The Lazy Plugin * @param {Owl} carousel - The Owl Carousel */ var Lazy = function(carousel) { /** * Reference to the core. * @protected * @type {Owl} */ this._core = carousel; /** * Already loaded items. * @protected * @type {Array.<jQuery>} */ this._loaded = []; /** * Event handlers. * @protected * @type {Object} */ this._handlers = { 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) { if (!e.namespace) { return; } if (!this._core.settings || !this._core.settings.lazyLoad) { return; } if ((e.property && e.property.name == 'position') || e.type == 'initialized') { var settings = this._core.settings, n = (settings.center && Math.ceil(settings.items / 2) || settings.items), i = ((settings.center && n * -1) || 0), position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i, clones = this._core.clones().length, load = $.proxy(function(i, v) { this.load(v) }, this); //TODO: Need documentation for this new option if (settings.lazyLoadEager > 0) { n += settings.lazyLoadEager; // If the carousel is looping also preload images that are to the "left" if (settings.loop) { position -= settings.lazyLoadEager; n++; } } while (i++ < n) { this.load(clones / 2 + this._core.relative(position)); clones && $.each(this._core.clones(this._core.relative(position)), load); position++; } } }, this) }; // set the default options this._core.options = $.extend({}, Lazy.Defaults, this._core.options); // register event handler this._core.$element.on(this._handlers); }; /** * Default options. * @public */ Lazy.Defaults = { lazyLoad: false, lazyLoadEager: 0 }; /** * Loads all resources of an item at the specified position. * @param {Number} position - The absolute position of the item. * @protected */ Lazy.prototype.load = function(position) { var $item = this._core.$stage.children().eq(position), $elements = $item && $item.find('.owl-lazy'); if (!$elements || $.inArray($item.get(0), this._loaded) > -1) { return; } $elements.each($.proxy(function(index, element) { var $element = $(element), image, url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src') || $element.attr('data-srcset'); this._core.trigger('load', { element: $element, url: url }, 'lazy'); if ($element.is('img')) { $element.one('load.owl.lazy', $.proxy(function() { $element.css('opacity', 1); this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); }, this)).attr('src', url); } else if ($element.is('source')) { $element.one('load.owl.lazy', $.proxy(function() { this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); }, this)).attr('srcset', url); } else { image = new Image(); image.onload = $.proxy(function() { $element.css({ 'background-image': 'url("' + url + '")', 'opacity': '1' }); this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); }, this); image.src = url; } }, this)); this._loaded.push($item.get(0)); }; /** * Destroys the plugin. * @public */ Lazy.prototype.destroy = function() { var handler, property; for (handler in this.handlers) { this._core.$element.off(handler, this.handlers[handler]); } for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null); } }; $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy; })(window.Zepto || window.jQuery, window, document); /** * AutoHeight Plugin * @version 2.3.4 * @author Bartosz Wojciechowski * @author David Deutsch * @license The MIT License (MIT) */ ;(function($, window, document, undefined) { /** * Creates the auto height plugin. * @class The Auto Height Plugin * @param {Owl} carousel - The Owl Carousel */ var AutoHeight = function(carousel) { /** * Reference to the core. * @protected * @type {Owl} */ this._core = carousel; this._previousHeight = null; /** * All event handlers. * @protected * @type {Object} */ this._handlers = { 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) { if (e.namespace && this._core.settings.autoHeight) { this.update(); } }, this), 'changed.owl.carousel': $.proxy(function(e) { if (e.namespace && this._core.settings.autoHeight && e.property.name === 'position'){ this.update(); } }, this), 'loaded.owl.lazy': $.proxy(function(e) { if (e.namespace && this._core.settings.autoHeight && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) { this.update(); } }, this) }; // set default options this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options); // register event handlers this._core.$element.on(this._handlers); this._intervalId = null; var refThis = this; // These changes have been taken from a PR by gavrochelegnou proposed in #1575 // and have been made compatible with the latest jQuery version $(window).on('load', function() { if (refThis._core.settings.autoHeight) { refThis.update(); } }); // Autoresize the height of the carousel when window is resized // When carousel has images, the height is dependent on the width // and should also change on resize $(window).resize(function() { if (refThis._core.settings.autoHeight) { if (refThis._intervalId != null) { clearTimeout(refThis._intervalId); } refThis._intervalId = setTimeout(function() { refThis.update(); }, 250); } }); }; /** * Default options. * @public */ AutoHeight.Defaults = { autoHeight: false, autoHeightClass: 'owl-height' }; /** * Updates the view. */ AutoHeight.prototype.update = function() { var start = this._core._current, end = start + this._core.settings.items, lazyLoadEnabled = this._core.settings.lazyLoad, visible = this._core.$stage.children().toArray().slice(start, end), heights = [], maxheight = 0; $.each(visible, function(index, item) { heights.push($(item).height()); }); maxheight = Math.max.apply(null, heights); if (maxheight <= 1 && lazyLoadEnabled && this._previousHeight) { maxheight = this._previousHeight; } this._previousHeight = maxheight; this._core.$stage.parent() .height(maxheight) .addClass(this._core.settings.autoHeightClass); }; AutoHeight.prototype.destroy = function() { var handler, property; for (handler in this._handlers) { this._core.$element.off(handler, this._handlers[handler]); } for (property in Object.getOwnPropertyNames(this)) { typeof this[property] !== 'function' && (this[property] = null); } }; $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight; })(window.Zepto || window.jQuery, window, document); /** * Video Plugin * @version 2.3.4 * @author Bartosz Wojciechowski * @author David Deutsch * @license The MIT License (MIT) */ ;(function($, window, document, undefined) { /** * Creates the video plugin. * @class The Video Plugin * @param {Owl} carousel - The Owl Carousel */ var Video = function(carousel) { /** * Reference to the core. * @protected * @type {Owl} */ this._core = carousel; /** * Cache all video URLs. * @protected * @type {Object} */ this._videos = {}; /** * Current playing item. * @protected * @type {jQuery} */ this._playing = null; /** * All event handlers. * @todo The cloned content removale is too late * @protected * @type {Object} */ this._handlers = { 'initialized.owl.carousel': $.proxy(function(e) { if (e.namespace) { this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] }); } }, this), 'resize.owl.carousel': $.proxy(function(e) { if (e.namespace && this._core.settings.video && this.isInFullScreen()) { e.preventDefault(); } }, this), 'refreshed.owl.carousel': $.proxy(function(e) { if (e.namespace && this._core.is('resizing')) { this._core.$stage.find('.cloned .owl-video-frame').remove(); } }, this), 'changed.owl.carousel': $.proxy(function(e) { if (e.namespace && e.property.name === 'position' && this._playing) { this.stop(); } }, this), 'prepared.owl.carousel': $.proxy(function(e) { if (!e.namespace) { return; } var $element = $(e.content).find('.owl-video'); if ($element.length) { $element.css('display', 'none'); this.fetch($element, $(e.content)); } }, this) }; // set default options this._core.options = $.extend({}, Video.Defaults, this._core.options); // register event handlers this._core.$element.on(this._handlers); this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) { this.play(e); }, this)); }; /** * Default options. * @public */ Video.Defaults = { video: false, videoHeight: false, videoWidth: false }; /** * Gets the video ID and the type (YouTube/Vimeo/vzaar only). * @protected * @param {jQuery} target - The target containing the video data. * @param {jQuery} item - The item containing the video. */ Video.prototype.fetch = function(target, item) { var type = (function() { if (target.attr('data-vimeo-id')) { return 'vimeo'; } else if (target.attr('data-vzaar-id')) { return 'vzaar' } else { return 'youtube'; } })(), id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'), width = target.attr('data-width') || this._core.settings.videoWidth, height = target.attr('data-height') || this._core.settings.videoHeight, url = target.attr('href'); if (url) { /* Parses the id's out of the following urls (and probably more): https://www.youtube.com/watch?v=:id https://youtu.be/:id https://vimeo.com/:id https://vimeo.com/channels/:channel/:id https://vimeo.com/groups/:group/videos/:id https://app.vzaar.com/videos/:id Visual 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 */ id = url.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/); if (id[3].indexOf('youtu') > -1) { type = 'youtube'; } else if (id[3].indexOf('vimeo') > -1) { type = 'vimeo'; } else if (id[3].indexOf('vzaar') > -1) { type = 'vzaar'; } else { throw new Error('Video URL not supported.'); } id = id[6]; } else { throw new Error('Missing video URL.'); } this._videos[url] = { type: type, id: id, width: width, height: height }; item.attr('data-video', url); this.thumbnail(target, this._videos[url]); }; /** * Creates video thumbnail. * @protected * @param {jQuery} target - The target containing the video data. * @param {Object} info - The video info object. * @see `fetch` */ Video.prototype.thumbnail = function(target, video) { var tnLink, icon, path, dimensions = video.width && video.height ? 'width:' + video.width + 'px;height:' + video.height + 'px;' : '', customTn = target.find('img'), srcType = 'src', lazyClass = '', settings = this._core.settings, create = function(path) { icon = '<div class="owl-video-play-icon"></div>'; if (settings.lazyLoad) { tnLink = $('<div/>',{ "class": 'owl-video-tn ' + lazyClass, "srcType": path }); } else { tnLink = $( '<div/>', { "class": "owl-video-tn", "style": 'opacity:1;background-image:url(' + path + ')' }); } target.after(tnLink); target.after(icon); }; // wrap video content into owl-video-wrapper div target.wrap( $( '<div/>', { "class": "owl-video-wrapper", "style": dimensions })); if (this._core.settings.lazyLoad) { srcType = 'data-src'; lazyClass = 'owl-lazy'; } // custom thumbnail if (customTn.length) { create(customTn.attr(srcType)); customTn.remove(); return false; } if (video.type === 'youtube') { path = "//img.youtube.com/vi/" + video.id + "/hqdefault.jpg"; create(path); } else if (video.type === 'vimeo') { $.ajax({ type: 'GET', url: '//vimeo.com/api/v2/video/' + video.id + '.json', jsonp: 'callback', dataType: 'jsonp', success: function(data) { path = data[0].thumbnail_large; create(path); } }); } else if (video.type === 'vzaar') { $.ajax({ type: 'GET', url: '//vzaar.com/api/videos/' + video.id + '.json', jsonp: 'callback', dataType: 'jsonp', success: function(data) { path = data.framegrab_url; create(path); } }); } }; /** * Stops the current video. * @public */ Video.prototype.stop = function() { this._core.trigger('stop', null, 'video'); this._playing.find('.owl-video-frame').remove(); this._playing.removeClass('owl-video-playing'); this._playing = null; this._core.leave('playing'); this._core.trigger('stopped', null, 'video'); }; /** * Starts the current video. * @public * @param {Event} event - The event arguments. */ Video.prototype.play = function(event) { var target = $(event.target), item = target.closest('.' + this._core.settings.itemClass), video = this._videos[item.attr('data-video')], width = video.width || '100%', height = video.height || this._core.$stage.height(), html, iframe; if (this._playing) { return; } this._core.enter('playing'); this._core.trigger('play', null, 'video'); item = this._core.items(this._core.relative(item.index())); this._core.reset(item.index()); html = $( '<iframe frameborder="0" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>' ); html.attr( 'height', height ); html.attr( 'width', width ); if (video.type === 'youtube') { html.attr( 'src', '//www.youtube.com/embed/' + video.id + '?autoplay=1&rel=0&v=' + video.id ); } else if (video.type === 'vimeo') { html.attr( 'src', '//player.vimeo.com/video/' + video.id + '?autoplay=1' ); } else if (video.type === 'vzaar') { html.attr( 'src', '//view.vzaar.com/' + video.id + '/player?autoplay=true' ); } iframe = $(html).wrap( '<div class="owl-video-frame" />' ).insertAfter(item.find('.owl-video')); this._playing = item.addClass('owl-video-playing'); }; /** * Checks whether an video is currently in full screen mode or not. * @todo Bad style because looks like a readonly method but changes members. * @protected * @returns {Boolean} */ Video.prototype.isInFullScreen = function() { var element = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement; return element && $(element).parent().hasClass('owl-video-frame'); }; /** * Destroys the plugin. */ Video.prototype.destroy = function() { var handler, property; this._core.$element.off('click.owl.video'); for (handler in this._handlers) { this._core.$element.off(handler, this._handlers[handler]); } for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null); } }; $.fn.owlCarousel.Constructor.Plugins.Video = Video; })(window.Zepto || window.jQuery, window, document); /** * Animate Plugin * @version 2.3.4 * @author Bartosz Wojciechowski * @author David Deutsch * @license The MIT License (MIT) */ ;(function($, window, document, undefined) { /** * Creates the animate plugin. * @class The Navigation Plugin * @param {Owl} scope - The Owl Carousel */ var Animate = function(scope) { this.core = scope; this.core.options = $.extend({}, Animate.Defaults, this.core.options); this.swapping = true; this.previous = undefined; this.next = undefined; this.handlers = { 'change.owl.carousel': $.proxy(function(e) { if (e.namespace && e.property.name == 'position') { this.previous = this.core.current(); this.next = e.property.value; } }, this), 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) { if (e.namespace) { this.swapping = e.type == 'translated'; } }, this), 'translate.owl.carousel': $.proxy(function(e) { if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) { this.swap(); } }, this) }; this.core.$element.on(this.handlers); }; /** * Default options. * @public */ Animate.Defaults = { animateOut: false, animateIn: false }; /** * Toggles the animation classes whenever an translations starts. * @protected * @returns {Boolean|undefined} */ Animate.prototype.swap = function() { if (this.core.settings.items !== 1) { return; } if (!$.support.animation || !$.support.transition) { return; } this.core.speed(0); var left, clear = $.proxy(this.clear, this), previous = this.core.$stage.children().eq(this.previous), next = this.core.$stage.children().eq(this.next), incoming = this.core.settings.animateIn, outgoing = this.core.settings.animateOut; if (this.core.current() === this.previous) { return; } if (outgoing) { left = this.core.coordinates(this.previous) - this.core.coordinates(this.next); previous.one($.support.animation.end, clear) .css( { 'left': left + 'px' } ) .addClass('animated owl-animated-out') .addClass(outgoing); } if (incoming) { next.one($.support.animation.end, clear) .addClass('animated owl-animated-in') .addClass(incoming); } }; Animate.prototype.clear = function(e) { $(e.target).css( { 'left': '' } ) .removeClass('animated owl-animated-out owl-animated-in') .removeClass(this.core.settings.animateIn) .removeClass(this.core.settings.animateOut); this.core.onTransitionEnd(); }; /** * Destroys the plugin. * @public */ Animate.prototype.destroy = function() { var handler, property; for (handler in this.handlers) { this.core.$element.off(handler, this.handlers[handler]); } for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null); } }; $.fn.owlCarousel.Constructor.Plugins.Animate = Animate; })(window.Zepto || window.jQuery, window, document); /** * Autoplay Plugin * @version 2.3.4 * @author Bartosz Wojciechowski * @author Artus Kolanowski * @author David Deutsch * @author Tom De Caluwé * @license The MIT License (MIT) */ ;(function($, window, document, undefined) { /** * Creates the autoplay plugin. * @class The Autoplay Plugin * @param {Owl} scope - The Owl Carousel */ var Autoplay = function(carousel) { /** * Reference to the core. * @protected * @type {Owl} */ this._core = carousel; /** * The autoplay timeout id. * @type {Number} */ this._call = null; /** * Depending on the state of the plugin, this variable contains either * the start time of the timer or the current timer value if it's * paused. Since we start in a paused state we initialize the timer * value. * @type {Number} */ this._time = 0; /** * Stores the timeout currently used. * @type {Number} */ this._timeout = 0; /** * Indicates whenever the autoplay is paused. * @type {Boolean} */ this._paused = true; /** * All event handlers. * @protected * @type {Object} */ this._handlers = { 'changed.owl.carousel': $.proxy(function(e) { if (e.namespace && e.property.name === 'settings') { if (this._core.settings.autoplay) { this.play(); } else { this.stop(); } } else if (e.namespace && e.property.name === 'position' && this._paused) { // Reset the timer. This code is triggered when the position // of the carousel was changed through user interaction. this._time = 0; } }, this), 'initialized.owl.carousel': $.proxy(function(e) { if (e.namespace && this._core.settings.autoplay) { this.play(); } }, this), 'play.owl.autoplay': $.proxy(function(e, t, s) { if (e.namespace) { this.play(t, s); } }, this), 'stop.owl.autoplay': $.proxy(function(e) { if (e.namespace) { this.stop(); } }, this), 'mouseover.owl.autoplay': $.proxy(function() { if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { this.pause(); } }, this), 'mouseleave.owl.autoplay': $.proxy(function() { if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { this.play(); } }, this), 'touchstart.owl.core': $.proxy(function() { if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { this.pause(); } }, this), 'touchend.owl.core': $.proxy(function() { if (this._core.settings.autoplayHoverPause) { this.play(); } }, this) }; // register event handlers this._core.$element.on(this._handlers); // set default options this._core.options = $.extend({}, Autoplay.Defaults, this._core.options); }; /** * Default options. * @public */ Autoplay.Defaults = { autoplay: false, autoplayTimeout: 5000, autoplayHoverPause: false, autoplaySpeed: false }; /** * Transition to the next slide and set a timeout for the next transition. * @private * @param {Number} [speed] - The animation speed for the animations. */ Autoplay.prototype._next = function(speed) { this._call = window.setTimeout( $.proxy(this._next, this, speed), this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read() ); if (this._core.is('interacting') || document.hidden) { return; } this._core.next(speed || this._core.settings.autoplaySpeed); } /** * Reads the current timer value when the timer is playing. * @public */ Autoplay.prototype.read = function() { return new Date().getTime() - this._time; }; /** * Starts the autoplay. * @public * @param {Number} [timeout] - The interval before the next animation starts. * @param {Number} [speed] - The animation speed for the animations. */ Autoplay.prototype.play = function(timeout, speed) { var elapsed; if (!this._core.is('rotating')) { this._core.enter('rotating'); } timeout = timeout || this._core.settings.autoplayTimeout; // Calculate the elapsed time since the last transition. If the carousel // wasn't playing this calculation will yield zero. elapsed = Math.min(this._time % (this._timeout || timeout), timeout); if (this._paused) { // Start the clock. this._time = this.read(); this._paused = false; } else { // Clear the active timeout to allow replacement. window.clearTimeout(this._call); } // Adjust the origin of the timer to match the new timeout value. this._time += this.read() % timeout - elapsed; this._timeout = timeout; this._call = window.setTimeout($.proxy(this._next, this, speed), timeout - elapsed); }; /** * Stops the autoplay. * @public */ Autoplay.prototype.stop = function() { if (this._core.is('rotating')) { // Reset the clock. this._time = 0; this._paused = true; window.clearTimeout(this._call); this._core.leave('rotating'); } }; /** * Pauses the autoplay. * @public */ Autoplay.prototype.pause = function() { if (this._core.is('rotating') && !this._paused) { // Pause the clock. this._time = this.read(); this._paused = true; window.clearTimeout(this._call); } }; /** * Destroys the plugin. */ Autoplay.prototype.destroy = function() { var handler, property; this.stop(); for (handler in this._handlers) { this._core.$element.off(handler, this._handlers[handler]); } for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null); } }; $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay; })(window.Zepto || window.jQuery, window, document); /** * Navigation Plugin * @version 2.3.4 * @author Artus Kolanowski * @author David Deutsch * @license The MIT License (MIT) */ ;(function($, window, document, undefined) { 'use strict'; /** * Creates the navigation plugin. * @class The Navigation Plugin * @param {Owl} carousel - The Owl Carousel. */ var Navigation = function(carousel) { /** * Reference to the core. * @protected * @type {Owl} */ this._core = carousel; /** * Indicates whether the plugin is initialized or not. * @protected * @type {Boolean} */ this._initialized = false; /** * The current paging indexes. * @protected * @type {Array} */ this._pages = []; /** * All DOM elements of the user interface. * @protected * @type {Object} */ this._controls = {}; /** * Markup for an indicator. * @protected * @type {Array.<String>} */ this._templates = []; /** * The carousel element. * @type {jQuery} */ this.$element = this._core.$element; /** * Overridden methods of the carousel. * @protected * @type {Object} */ this._overrides = { next: this._core.next, prev: this._core.prev, to: this._core.to }; /** * All event handlers. * @protected * @type {Object} */ this._handlers = { 'prepared.owl.carousel': $.proxy(function(e) { if (e.namespace && this._core.settings.dotsData) { this._templates.push('<div class="' + this._core.settings.dotClass + '">' + $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '</div>'); } }, this), 'added.owl.carousel': $.proxy(function(e) { if (e.namespace && this._core.settings.dotsData) { this._templates.splice(e.position, 0, this._templates.pop()); } }, this), 'remove.owl.carousel': $.proxy(function(e) { if (e.namespace && this._core.settings.dotsData) { this._templates.splice(e.position, 1); } }, this), 'changed.owl.carousel': $.proxy(function(e) { if (e.namespace && e.property.name == 'position') { this.draw(); } }, this), 'initialized.owl.carousel': $.proxy(function(e) { if (e.namespace && !this._initialized) { this._core.trigger('initialize', null, 'navigation'); this.initialize(); this.update(); this.draw(); this._initialized = true; this._core.trigger('initialized', null, 'navigation'); } }, this), 'refreshed.owl.carousel': $.proxy(function(e) { if (e.namespace && this._initialized) { this._core.trigger('refresh', null, 'navigation'); this.update(); this.draw(); this._core.trigger('refreshed', null, 'navigation'); } }, this) }; // set default options this._core.options = $.extend({}, Navigation.Defaults, this._core.options); // register event handlers this.$element.on(this._handlers); }; /** * Default options. * @public * @todo Rename `slideBy` to `navBy` */ Navigation.Defaults = { nav: false, navText: [ '<span aria-label="' + 'Previous' + '">‹</span>', '<span aria-label="' + 'Next' + '">›</span>' ], navSpeed: false, navElement: 'button type="button" role="presentation"', navContainer: false, navContainerClass: 'owl-nav', navClass: [ 'owl-prev', 'owl-next' ], slideBy: 1, dotClass: 'owl-dot', dotsClass: 'owl-dots', dots: true, dotsEach: false, dotsData: false, dotsSpeed: false, dotsContainer: false }; /** * Initializes the layout of the plugin and extends the carousel. * @protected */ Navigation.prototype.initialize = function() { var override, settings = this._core.settings; // create DOM structure for relative navigation this._controls.$relative = (settings.navContainer ? $(settings.navContainer) : $('<div>').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled'); this._controls.$previous = $('<' + settings.navElement + '>') .addClass(settings.navClass[0]) .html(settings.navText[0]) .prependTo(this._controls.$relative) .on('click', $.proxy(function(e) { this.prev(settings.navSpeed); }, this)); this._controls.$next = $('<' + settings.navElement + '>') .addClass(settings.navClass[1]) .html(settings.navText[1]) .appendTo(this._controls.$relative) .on('click', $.proxy(function(e) { this.next(settings.navSpeed); }, this)); // create DOM structure for absolute navigation if (!settings.dotsData) { this._templates = [ $('<button role="button">') .addClass(settings.dotClass) .append($('<span>')) .prop('outerHTML') ]; } this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer) : $('<div>').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled'); this._controls.$absolute.on('click', 'button', $.proxy(function(e) { var index = $(e.target).parent().is(this._controls.$absolute) ? $(e.target).index() : $(e.target).parent().index(); e.preventDefault(); this.to(index, settings.dotsSpeed); }, this)); /*$el.on('focusin', function() { $(document).off(".carousel"); $(document).on('keydown.carousel', function(e) { if(e.keyCode == 37) { $el.trigger('prev.owl') } if(e.keyCode == 39) { $el.trigger('next.owl') } }); });*/ // override public methods of the carousel for (override in this._overrides) { this._core[override] = $.proxy(this[override], this); } }; /** * Destroys the plugin. * @protected */ Navigation.prototype.destroy = function() { var handler, control, property, override, settings; settings = this._core.settings; for (handler in this._handlers) { this.$element.off(handler, this._handlers[handler]); } for (control in this._controls) { if (control === '$relative' && settings.navContainer) { this._controls[control].html(''); } else { this._controls[control].remove(); } } for (override in this.overides) { this._core[override] = this._overrides[override]; } for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null); } }; /** * Updates the internal state. * @protected */ Navigation.prototype.update = function() { var i, j, k, lower = this._core.clones().length / 2, upper = lower + this._core.items().length, maximum = this._core.maximum(true), settings = this._core.settings, size = settings.center || settings.autoWidth || settings.dotsData ? 1 : settings.dotsEach || settings.items; if (settings.slideBy !== 'page') { settings.slideBy = Math.min(settings.slideBy, settings.items); } if (settings.dots || settings.slideBy == 'page') { this._pages = []; for (i = lower, j = 0, k = 0; i < upper; i++) { if (j >= size || j === 0) { this._pages.push({ start: Math.min(maximum, i - lower), end: i - lower + size - 1 }); if (Math.min(maximum, i - lower) === maximum) { break; } j = 0, ++k; } j += this._core.mergers(this._core.relative(i)); } } }; /** * Draws the user interface. * @todo The option `dotsData` wont work. * @protected */ Navigation.prototype.draw = function() { var difference, settings = this._core.settings, disabled = this._core.items().length <= settings.items, index = this._core.relative(this._core.current()), loop = settings.loop || settings.rewind; this._controls.$relative.toggleClass('disabled', !settings.nav || disabled); if (settings.nav) { this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true)); this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true)); } this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled); if (settings.dots) { difference = this._pages.length - this._controls.$absolute.children().length; if (settings.dotsData && difference !== 0) { this._controls.$absolute.html(this._templates.join('')); } else if (difference > 0) { this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0])); } else if (difference < 0) { this._controls.$absolute.children().slice(difference).remove(); } this._controls.$absolute.find('.active').removeClass('active'); this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active'); } }; /** * Extends event data. * @protected * @param {Event} event - The event object which gets thrown. */ Navigation.prototype.onTrigger = function(event) { var settings = this._core.settings; event.page = { index: $.inArray(this.current(), this._pages), count: this._pages.length, size: settings && (settings.center || settings.autoWidth || settings.dotsData ? 1 : settings.dotsEach || settings.items) }; }; /** * Gets the current page position of the carousel. * @protected * @returns {Number} */ Navigation.prototype.current = function() { var current = this._core.relative(this._core.current()); return $.grep(this._pages, $.proxy(function(page, index) { return page.start <= current && page.end >= current; }, this)).pop(); }; /** * Gets the current succesor/predecessor position. * @protected * @returns {Number} */ Navigation.prototype.getPosition = function(successor) { var position, length, settings = this._core.settings; if (settings.slideBy == 'page') { position = $.inArray(this.current(), this._pages); length = this._pages.length; successor ? ++position : --position; position = this._pages[((position % length) + length) % length].start; } else { position = this._core.relative(this._core.current()); length = this._core.items().length; successor ? position += settings.slideBy : position -= settings.slideBy; } return position; }; /** * Slides to the next item or page. * @public * @param {Number} [speed=false] - The time in milliseconds for the transition. */ Navigation.prototype.next = function(speed) { $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed); }; /** * Slides to the previous item or page. * @public * @param {Number} [speed=false] - The time in milliseconds for the transition. */ Navigation.prototype.prev = function(speed) { $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed); }; /** * Slides to the specified item or page. * @public * @param {Number} position - The position of the item or page. * @param {Number} [speed] - The time in milliseconds for the transition. * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not. */ Navigation.prototype.to = function(position, speed, standard) { var length; if (!standard && this._pages.length) { length = this._pages.length; $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed); } else { $.proxy(this._overrides.to, this._core)(position, speed); } }; $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation; })(window.Zepto || window.jQuery, window, document); /** * Hash Plugin * @version 2.3.4 * @author Artus Kolanowski * @author David Deutsch * @license The MIT License (MIT) */ ;(function($, window, document, undefined) { 'use strict'; /** * Creates the hash plugin. * @class The Hash Plugin * @param {Owl} carousel - The Owl Carousel */ var Hash = function(carousel) { /** * Reference to the core. * @protected * @type {Owl} */ this._core = carousel; /** * Hash index for the items. * @protected * @type {Object} */ this._hashes = {}; /** * The carousel element. * @type {jQuery} */ this.$element = this._core.$element; /** * All event handlers. * @protected * @type {Object} */ this._handlers = { 'initialized.owl.carousel': $.proxy(function(e) { if (e.namespace && this._core.settings.startPosition === 'URLHash') { $(window).trigger('hashchange.owl.navigation'); } }, this), 'prepared.owl.carousel': $.proxy(function(e) { if (e.namespace) { var hash = $(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash'); if (!hash) { return; } this._hashes[hash] = e.content; } }, this), 'changed.owl.carousel': $.proxy(function(e) { if (e.namespace && e.property.name === 'position') { var current = this._core.items(this._core.relative(this._core.current())), hash = $.map(this._hashes, function(item, hash) { return item === current ? hash : null; }).join(); if (!hash || window.location.hash.slice(1) === hash) { return; } window.location.hash = hash; } }, this) }; // set default options this._core.options = $.extend({}, Hash.Defaults, this._core.options); // register the event handlers this.$element.on(this._handlers); // register event listener for hash navigation $(window).on('hashchange.owl.navigation', $.proxy(function(e) { var hash = window.location.hash.substring(1), items = this._core.$stage.children(), position = this._hashes[hash] && items.index(this._hashes[hash]); if (position === undefined || position === this._core.current()) { return; } this._core.to(this._core.relative(position), false, true); }, this)); }; /** * Default options. * @public */ Hash.Defaults = { URLhashListener: false }; /** * Destroys the plugin. * @public */ Hash.prototype.destroy = function() { var handler, property; $(window).off('hashchange.owl.navigation'); for (handler in this._handlers) { this._core.$element.off(handler, this._handlers[handler]); } for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null); } }; $.fn.owlCarousel.Constructor.Plugins.Hash = Hash; })(window.Zepto || window.jQuery, window, document); /** * Support Plugin * * @version 2.3.4 * @author Vivid Planet Software GmbH * @author Artus Kolanowski * @author David Deutsch * @license The MIT License (MIT) */ ;(function($, window, document, undefined) { var style = $('<support>').get(0).style, prefixes = 'Webkit Moz O ms'.split(' '), events = { transition: { end: { WebkitTransition: 'webkitTransitionEnd', MozTransition: 'transitionend', OTransition: 'oTransitionEnd', transition: 'transitionend' } }, animation: { end: { WebkitAnimation: 'webkitAnimationEnd', MozAnimation: 'animationend', OAnimation: 'oAnimationEnd', animation: 'animationend' } } }, tests = { csstransforms: function() { return !!test('transform'); }, csstransforms3d: function() { return !!test('perspective'); }, csstransitions: function() { return !!test('transition'); }, cssanimations: function() { return !!test('animation'); } }; function test(property, prefixed) { var result = false, upper = property.charAt(0).toUpperCase() + property.slice(1); $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) { if (style[property] !== undefined) { result = prefixed ? property : true; return false; } }); return result; } function prefixed(property) { return test(property, true); } if (tests.csstransitions()) { /* jshint -W053 */ $.support.transition = new String(prefixed('transition')) $.support.transition.end = events.transition.end[ $.support.transition ]; } if (tests.cssanimations()) { /* jshint -W053 */ $.support.animation = new String(prefixed('animation')) $.support.animation.end = events.animation.end[ $.support.animation ]; } if (tests.csstransforms()) { /* jshint -W053 */ $.support.transform = new String(prefixed('transform')); $.support.transform3d = tests.csstransforms3d(); } })(window.Zepto || window.jQuery, window, document); // source --> https://umliloenergy.com/wp-content/plugins/hunk-companion/open-shop/assets/js/jssor.slider.min.js?ver=6.7.1 /*! Jssor Slider (MIT license) */ /* eslint-disable */ !function(i,h,m,f,d,k,e){new(function(){});var c={E:m.PI,m:m.max,j:m.min,Q:m.ceil,R:m.floor,H:m.abs,pb:m.sin,bc:m.cos,Id:m.tan,Zf:m.atan,fc:m.sqrt,v:m.pow,Md:m.random,$Round:m.round},g=i.$Jease$={$Swing:function(a){return-c.bc(a*c.E)/2+.5},$Linear:function(a){return a},$InQuad:function(a){return a*a},$OutQuad:function(a){return-a*(a-2)},$InOutQuad:function(a){return(a*=2)<1?1/2*a*a:-1/2*(--a*(a-2)-1)},$InCubic:function(a){return a*a*a},$OutCubic:function(a){return(a-=1)*a*a+1},$InOutCubic:function(a){return(a*=2)<1?1/2*a*a*a:1/2*((a-=2)*a*a+2)},$InQuart:function(a){return a*a*a*a},$OutQuart:function(a){return-((a-=1)*a*a*a-1)},$InOutQuart:function(a){return(a*=2)<1?1/2*a*a*a*a:-1/2*((a-=2)*a*a*a-2)},$InQuint:function(a){return a*a*a*a*a},$OutQuint:function(a){return(a-=1)*a*a*a*a+1},$InOutQuint:function(a){return(a*=2)<1?1/2*a*a*a*a*a:1/2*((a-=2)*a*a*a*a+2)},$InSine:function(a){return 1-c.bc(c.E/2*a)},$OutSine:function(a){return c.pb(c.E/2*a)},$InOutSine:function(a){return-1/2*(c.bc(c.E*a)-1)},$InExpo:function(a){return a==0?0:c.v(2,10*(a-1))},$OutExpo:function(a){return a==1?1:-c.v(2,-10*a)+1},$InOutExpo:function(a){return a==0||a==1?a:(a*=2)<1?1/2*c.v(2,10*(a-1)):1/2*(-c.v(2,-10*--a)+2)},$InCirc:function(a){return-(c.fc(1-a*a)-1)},$OutCirc:function(a){return c.fc(1-(a-=1)*a)},$InOutCirc:function(a){return(a*=2)<1?-1/2*(c.fc(1-a*a)-1):1/2*(c.fc(1-(a-=2)*a)+1)},$InElastic:function(a){if(!a||a==1)return a;var b=.3,d=.075;return-(c.v(2,10*(a-=1))*c.pb((a-d)*2*c.E/b))},$OutElastic:function(a){if(!a||a==1)return a;var b=.3,d=.075;return c.v(2,-10*a)*c.pb((a-d)*2*c.E/b)+1},$InOutElastic:function(a){if(!a||a==1)return a;var b=.45,d=.1125;return(a*=2)<1?-.5*c.v(2,10*(a-=1))*c.pb((a-d)*2*c.E/b):c.v(2,-10*(a-=1))*c.pb((a-d)*2*c.E/b)*.5+1},$InBack:function(a){var b=1.70158;return a*a*((b+1)*a-b)},$OutBack:function(a){var b=1.70158;return(a-=1)*a*((b+1)*a+b)+1},$InOutBack:function(a){var b=1.70158;return(a*=2)<1?1/2*a*a*(((b*=1.525)+1)*a-b):1/2*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)},$InBounce:function(a){return 1-g.$OutBounce(1-a)},$OutBounce:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},$InOutBounce:function(a){return a<1/2?g.$InBounce(a*2)*.5:g.$OutBounce(a*2-1)*.5+.5},$GoBack:function(a){return 1-c.H(2-1)},$InWave:function(a){return 1-c.bc(a*c.E*2)},$OutWave:function(a){return c.pb(a*c.E*2)},$OutJump:function(a){return 1-((a*=2)<1?(a=1-a)*a*a:(a-=1)*a*a)},$InJump:function(a){return(a*=2)<1?a*a*a:(a=2-a)*a*a},$Early:c.Q,$Late:c.R};var b=i.$Jssor$=new function(){var j=this,xb=/\S+/g,K=1,eb=2,hb=3,gb=4,kb=5,L,r=0,n=0,C=0,x=navigator,qb=x.appName,p=x.userAgent,q=parseFloat;function Gb(){if(!L){L={Hc:"ontouchstart"in i||"createTouch"in h};var a;if(x.pointerEnabled||(a=x.msPointerEnabled))L.ze=a?"msTouchAction":"touchAction"}return L}function u(g){if(!r){r=-1;if(qb=="Microsoft Internet Explorer"&&!!i.attachEvent&&!!i.ActiveXObject){var e=p.indexOf("MSIE");r=K;n=q(p.substring(e+5,p.indexOf(";",e)));/*@cc_on@*/}else if(qb=="Netscape"&&!!i.addEventListener){var d=p.indexOf("Firefox"),b=p.indexOf("Safari"),f=p.indexOf("Chrome"),c=p.indexOf("AppleWebKit");if(d>=0){r=eb;n=q(p.substring(d+8))}else if(b>=0){var h=p.substring(0,b).lastIndexOf("/");r=f>=0?gb:hb;n=q(p.substring(h+1,b))}else{var a=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i.exec(p);if(a){r=K;n=q(a[1])}}if(c>=0)C=q(p.substring(c+12))}else{var a=/(opera)(?:.*version|)[ \/]([\w.]+)/i.exec(p);if(a){r=kb;n=q(a[2])}}}return g==r}function v(){return u(K)}function fb(){return u(hb)}function jb(){return u(kb)}function bb(){return fb()&&C>534&&C<535}function H(){u();return C>537||n>42||r==K&&n>=11}function cb(a){var b,c;return function(g){if(!b){b=d;var f=a.substr(0,1).toUpperCase()+a.substr(1);l([a].concat(["WebKit","ms","Moz","O","webkit"]),function(h,d){var b=a;if(d)b=h+f;if(g.style[b]!=e)return c=b})}return c}}function ab(b){var a;return function(c){a=a||cb(b)(c)||b;return a}}var M=ab("transform");function pb(a){return{}.toString.call(a)}var mb={};l(["Boolean","Number","String","Function","Array","Date","RegExp","Object"],function(a){mb["[object "+a+"]"]=a.toLowerCase()});function l(b,d){var a,c;if(pb(b)=="[object Array]"){for(a=0;a<b.length;a++)if(c=d(b[a],a,b))return c}else for(a in b)if(c=d(b[a],a,b))return c}function G(a){return a==f?String(a):mb[pb(a)]||"object"}function nb(a){for(var b in a)return d}function D(a){try{return G(a)=="object"&&!a.nodeType&&a!=a.window&&(!a.constructor||{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))}catch(b){}}function ub(b,a){setTimeout(b,a||0)}function lb(b,d,c){var a=!b||b=="inherit"?"":b;l(d,function(c){var b=c.exec(a);if(b){var d=a.substr(0,b.index),e=a.substr(b.index+b[0].length+1,a.length-1);a=d+e}});a&&(c+=(!a.indexOf(" ")?"":" ")+a);return c}function rb(a,b){if(a===e)a=b;return a}j.Rc=Gb;j.be=v;j.eh=fb;j.Wg=H;cb("transform");j.hd=function(){return n};j.Sg=function(){u();return C};j.$Delay=ub;j.X=rb;j.Y=function(a,b){b.call(a);return A({},a)};function V(a){a.constructor===V.caller&&a.B&&a.B.apply(a,V.caller.arguments)}j.B=V;j.$GetElement=function(a){if(j.Tg(a))a=h.getElementById(a);return a};function t(a){return a||i.event}j.Yg=t;j.$EvtSrc=function(b){b=t(b);var a=b.target||b.srcElement||h;if(a.nodeType==3)a=j.rd(a);return a};j.Ee=function(a){a=t(a);return a.relatedTarget||a.toElement};j.he=function(a){a=t(a);return a.which||([0,1,3,0,2])[a.button]||a.charCode||a.keyCode};j.pd=function(a){a=t(a);return{x:a.clientX||0,y:a.clientY||0}};j.Vg=function(b,a){return b.x>=a.x&&b.x<=a.x+a.w&&b.y>=a.y&&b.y<=a.y+a.h};j.fe=function(c,e){var a=b.Zg(e),d=b.pd(c);return j.Vg(d,a)};function w(c,d,a){if(a!==e)c.style[d]=a==e?"":a;else{var b=c.currentStyle||c.style;a=b[d];if(a==""&&i.getComputedStyle){b=c.ownerDocument.defaultView.getComputedStyle(c,f);b&&(a=b.getPropertyValue(d)||b[d])}return a}}function Y(b,c,a,d){if(a===e){a=q(w(b,c));isNaN(a)&&(a=f);return a}if(a==f)a="";else d&&(a+="px");w(b,c,a)}function m(c,a){var d=a?Y:w,b;if(a&4)b=ab(c);return function(e,f){return d(e,b?b(e):c,f,a&2)}}function Bb(a){return q(a.style.opacity||"1")}function Db(b,a){b.style.opacity=a==1||a==f?"":c.$Round(a*100)/100}var O={$Rotate:["rotate"],$RotateX:["rotateX"],$RotateY:["rotateY"],$SkewX:["skewX"],$SkewY:["skewY"]};if(!H())O=A(O,{$ScaleX:["scaleX",2],$ScaleY:["scaleY",2],$TranslateZ:["translateZ",1]});function N(c,a){var b="";if(a){if(v()&&n&&n<10){delete a.$RotateX;delete a.$RotateY;delete a.$TranslateZ}l(a,function(d,c){var a=O[c];if(a){var e=a[1]||0;if(P[c]!=d)b+=" "+a[0]+"("+d+(["deg","px",""])[e]+")"}});if(H()){if(a.$TranslateX||a.$TranslateY||a.$TranslateZ!=e)b+=" translate3d("+(a.$TranslateX||0)+"px,"+(a.$TranslateY||0)+"px,"+(a.$TranslateZ||0)+"px)";if(a.$ScaleX==e)a.$ScaleX=1;if(a.$ScaleY==e)a.$ScaleY=1;if(a.$ScaleX!=1||a.$ScaleY!=1)b+=" scale3d("+a.$ScaleX+", "+a.$ScaleY+", 1)"}}c.style[M(c)]=b}j.ch=m("transformOrigin",4);j.bh=m("backfaceVisibility",4);j.kc=m("transformStyle",4);j.ah=m("perspective",6);j.yg=m("perspectiveOrigin",4);j.Vd=function(b,a){if(v()&&n<9)b.style.zoom=a==1?"":a;else{var c=M(b),f=a==1?"":"scale("+a+")",e=b.style[c],g=new RegExp(/[\s]*scale\(.*?\)/g),d=lb(e,[g],f);b.style[c]=d}};j.$AddEvent=function(a,c,d,b){a=j.$GetElement(a);if(a.addEventListener){c=="mousewheel"&&a.addEventListener("DOMMouseScroll",d,b);a.addEventListener(c,d,b)}else if(a.attachEvent){a.attachEvent("on"+c,d);b&&a.setCapture&&a.setCapture()}};j.$RemoveEvent=function(a,c,d,b){a=j.$GetElement(a);if(a.removeEventListener){c=="mousewheel"&&a.removeEventListener("DOMMouseScroll",d,b);a.removeEventListener(c,d,b)}else if(a.detachEvent){a.detachEvent("on"+c,d);b&&a.releaseCapture&&a.releaseCapture()}};j.$CancelEvent=function(a){a=t(a);a.preventDefault&&a.preventDefault();a.cancel=d;a.returnValue=k};j.$StopEvent=function(a){a=t(a);a.stopPropagation&&a.stopPropagation();a.cancelBubble=d};j.T=function(d,c){var a=[].slice.call(arguments,2),b=function(){var b=a.concat([].slice.call(arguments,0));return c.apply(d,b)};return b};j.zg=function(a,b){if(b==e)return a.textContent||a.innerText;var c=h.createTextNode(b);j.Qb(a);a.appendChild(c)};j.Zg=function(b){var a=b.getBoundingClientRect();return{x:a.left,y:a.top,w:a.right-a.left,h:a.bottom-a.top}};j.Cb=function(d,c){for(var b=[],a=d.firstChild;a;a=a.nextSibling)(c||a.nodeType==1)&&b.push(a);return b};function ob(a,c,e,b){b=b||"u";for(a=a?a.firstChild:f;a;a=a.nextSibling)if(a.nodeType==1){if(E(a,b)==c)return a;if(!e){var d=ob(a,c,e,b);if(d)return d}}}j.$FindChild=ob;function T(a,d,g,b){b=b||"u";var c=[];for(a=a?a.firstChild:f;a;a=a.nextSibling)if(a.nodeType==1){E(a,b)==d&&c.push(a);if(!g){var e=T(a,d,g,b);if(e.length)c=c.concat(e)}}return c}j.rg=function(b,a){return b.getElementsByTagName(a)};j.lb=function(a,f,d,g){d=d||"u";var e;do{if(a.nodeType==1){var c;d&&(c=E(a,d));if(c&&c==rb(f,c)||g==a.tagName){e=a;break}}a=b.rd(a)}while(a&&a!=h.body);return e};j.qg=function(a){return X(["INPUT","TEXTAREA","SELECT"])[a.tagName]};function A(){var f=arguments,d,c,b,a,h=1&f[0],g=1+h;d=f[g-1]||{};for(;g<f.length;g++)if(c=f[g])for(b in c){a=c[b];if(a!==e){a=c[b];var i=d[b];d[b]=h&&(D(i)||D(a))?A(h,{},i,a):a}}return d}j.F=A;function W(f,g){var d={},c,a,b;for(c in f){a=f[c];b=g[c];if(a!==b){var e;if(D(a)&&D(b)){a=W(a,b);e=!nb(a)}!e&&(d[c]=a)}}return d}j.qe=function(a){return G(a)=="function"};j.te=function(a){return G(a)=="array"};j.Tg=function(a){return G(a)=="string"};j.uc=function(a){return!isNaN(q(a))&&isFinite(a)};j.c=l;j.Jd=D;function R(a){return h.createElement(a)}j.Rb=function(){return R("DIV")};j.vg=function(){return R("SPAN")};j.ug=function(){};function F(b,c,a){if(a==e)return b.getAttribute(c);b.setAttribute(c,a)}function E(a,b){return F(a,b)||F(a,"data-"+b)}j.n=F;j.db=E;j.q=function(d,b,c){var a=j.tg(E(d,b));if(isNaN(a))a=c;return a};function y(b,a){return F(b,"class",a)||""}function X(b){var a={};l(b,function(b){if(b!=e)a[b]=b});return a}function vb(b,a){return b.match(a||xb)}function Q(b,a){return X(vb(b||"",a))}j.Dd=X;j.Lg=vb;j.Kg=function(a){a&&(a=a.toLowerCase());return a};function Z(b,c){var a="";l(c,function(c){a&&(a+=b);a+=c});return a}function I(a,c,b){y(a,Z(" ",A(W(Q(y(a)),Q(c)),Q(b))))}j.ud=Z;j.rd=function(a){return a.parentNode};j.xb=function(a){j.zb(a,"none")};j.eb=function(a,b){j.zb(a,b?"none":"")};j.Ng=function(b,a){b.removeAttribute(a)};j.Pg=function(d,a){if(a)d.style.clip="rect("+c.$Round(a.$Top||a.N||0)+"px "+c.$Round(a.$Right)+"px "+c.$Round(a.$Bottom)+"px "+c.$Round(a.$Left||a.K||0)+"px)";else if(a!==e){var h=d.style.cssText,g=[new RegExp(/[\s]*clip: rect\(.*?\)[;]?/i),new RegExp(/[\s]*cliptop: .*?[;]?/i),new RegExp(/[\s]*clipright: .*?[;]?/i),new RegExp(/[\s]*clipbottom: .*?[;]?/i),new RegExp(/[\s]*clipleft: .*?[;]?/i)],f=lb(h,g,"");b.xd(d,f)}};j.Og=function(b,a){if(a)b.style.backgroundColor="rgba("+c.$Round(a.Fd)+","+c.$Round(a.Ad)+","+c.$Round(a.Od)+","+a.$Opacity+")"};j.Db=function(){return+new Date};j.J=function(b,a){b.appendChild(a)};j.Gg=function(b,a){l(a,function(a){j.J(b,a)})};j.tb=function(b,a,c){(c||a.parentNode).insertBefore(b,a)};j.Fg=function(b,a,c){b.insertAdjacentHTML(a,c)};j.qb=function(b,a){a=a||b.parentNode;a&&a.removeChild(b)};j.Eg=function(a,b){l(a,function(a){j.qb(a,b)})};j.Qb=function(a){j.Eg(j.Cb(a,d),a)};function sb(){l([].slice.call(arguments,0),function(a){if(j.te(a))sb.apply(f,a);else a&&a.$Destroy()})}j.$Destroy=sb;j.fd=function(a,b){var c=j.rd(a);if(b&1){j.Z(a,(j.C(c)-j.C(a))/2);j.Pd(a,f)}if(b&2){j.V(a,(j.D(c)-j.D(a))/2);j.Ed(a,f)}};var S={$Top:f,$Right:f,$Bottom:f,$Left:f,I:f,G:f};j.Hg=function(a){var b=j.Rb();s(b,{Rd:"block",Ob:j.wb(a),$Top:0,$Left:0,I:0,G:0});var d=j.Nd(a,S);j.tb(b,a);j.J(b,a);var e=j.Nd(a,S),c={};l(d,function(b,a){if(b==e[a])c[a]=b});s(b,S);s(b,c);s(a,{$Top:0,$Left:0});return c};j.Jg=function(b,a){return parseInt(b,a||10)};j.tg=q;j.de=function(b,a){var c=h.body;while(a&&b!==a&&c!==a)a=a.parentNode;return b===a};function U(d,c,b){var a=d.cloneNode(!c);!b&&j.Ng(a,"id");return a}j.fb=U;j.Kb=function(e,f){var a=new Image;function b(e,d){j.$RemoveEvent(a,"load",b);j.$RemoveEvent(a,"abort",c);j.$RemoveEvent(a,"error",c);f&&f(a,d)}function c(a){b(a,d)}if(jb()&&n<11.6||!e)b(!e);else{j.$AddEvent(a,"load",b);j.$AddEvent(a,"abort",c);j.$AddEvent(a,"error",c);a.src=e}};j.Ig=function(e,a,d){var b=1;function c(c){b--;if(a&&c&&c.src==a.src)a=c;!b&&d&&d(a)}l(e,function(a){if(a.src){b++;j.Kb(a.src,c)}});c()};j.zd=function(a,g,i,h){if(h)a=U(a);var c=T(a,g);if(!c.length)c=b.rg(a,g);for(var f=c.length-1;f>-1;f--){var d=c[f],e=U(i);y(e,y(d));b.xd(e,d.style.cssText);b.tb(e,d);b.qb(d)}return a};function Eb(){var a=this;b.Y(a,o);var d,q="",s=["av","pv","ds","dn"],f=[],r,n=0,k=0,g=0;function m(){I(d,r,(f[g||k&2||k]||"")+" "+(f[n]||""));j.Fc(d,g?"none":"")}function c(){n=0;a.ab(i,"mouseup",c);a.ab(h,"mouseup",c);a.ab(h,"touchend",c);a.ab(h,"touchcancel",c);a.ab(i,"blur",c);m()}function p(b){if(g)j.$CancelEvent(b);else{n=4;m();a.a(i,"mouseup",c);a.a(h,"mouseup",c);a.a(h,"touchend",c);a.a(h,"touchcancel",c);a.a(i,"blur",c)}}a.Kd=function(a){if(a===e)return k;k=a&2||a&1;m()};a.$Enable=function(a){if(a===e)return!g;g=a?0:3;m()};a.B=function(e){a.$Elmt=d=j.$GetElement(e);F(d,"data-jssor-button","1");var c=b.Lg(y(d));if(c)q=c.shift();l(s,function(a){f.push(q+a)});r=Z(" ",f);f.unshift("");a.a(d,"mousedown",p);a.a(d,"touchstart",p)};b.B(a)}j.Bc=function(a){return new Eb(a)};j.O=w;m("backgroundColor");j.ic=m("overflow");j.Fc=m("pointerEvents");j.V=m("top",2);j.Pd=m("right",2);j.Ed=m("bottom",2);j.Z=m("left",2);j.C=m("width",2);j.D=m("height",2);m("marginLeft",2);m("marginTop",2);j.wb=m("position");j.zb=m("display");j.S=m("zIndex",1);j.cf=function(b,a,c){if(a!==e)Db(b,a,c);else return Bb(b)};j.xd=function(a,b){if(b!=e)a.style.cssText=b;else return a.style.cssText};j.lf=function(b,a){if(a===e){a=w(b,"backgroundImage")||"";var c=/\burl\s*\(\s*["']?([^"'\r\n,]+)["']?\s*\)/gi.exec(a)||[];return c[1]}w(b,"backgroundImage",a?"url('"+a+"')":"")};var J;j.kf=J={$Opacity:j.cf,$Top:j.V,$Right:j.Pd,$Bottom:j.Ed,$Left:j.Z,I:j.C,G:j.D,Ob:j.wb,Rd:j.zb,$ZIndex:j.S};j.Nd=function(c,b){var a={};l(b,function(d,b){if(J[b])a[b]=J[b](c)});return a};function s(b,i){var a=H(),g=bb(),h=M(b);function d(l,a){a=a||{};var g=a.$TranslateZ||0,i=(a.$RotateX||0)%360,j=(a.$RotateY||0)%360,k=(a.$Rotate||0)%360,c=a.$ScaleX,d=a.$ScaleY,f=a.Mh;if(c==e)c=1;if(d==e)d=1;if(f==e)f=1;var b=new Ab(a.$TranslateX,a.$TranslateY,g);b.$Scale(c,d,f);b.Ue(a.$SkewX,a.$SkewY);b.$RotateX(i);b.$RotateY(j);b.Xe(k);b.$Move(a.K,a.N);l.style[h]=b.Ve()}s=function(c,b){b=b||{};var i=b.K,k=b.N,h;l(J,function(a,d){h=b[d];h!==e&&a(c,h)});j.Pg(c,b.$Clip);j.Og(c,b.Ab);if(!a){i!=e&&j.Z(c,(b.se||0)+i);k!=e&&j.V(c,(b.ve||0)+k)}if(b.We)if(g)ub(j.T(f,N,c,b));else if(a)d(c,b);else N(c,b)};j.U=s;s(b,i)}j.U=s;function Ab(j,k,o){var d=this,b=[1,0,0,0,0,1,0,0,0,0,1,0,j||0,k||0,o||0,1],i=c.pb,h=c.bc,l=c.Id;function g(a){return a*c.E/180}function m(b,c,f,g,i,l,n,o,q,t,u,w,y,A,C,F,a,d,e,h,j,k,m,p,r,s,v,x,z,B,D,E){return[b*a+c*j+f*r+g*z,b*d+c*k+f*s+g*B,b*e+c*m+f*v+g*D,b*h+c*p+f*x+g*E,i*a+l*j+n*r+o*z,i*d+l*k+n*s+o*B,i*e+l*m+n*v+o*D,i*h+l*p+n*x+o*E,q*a+t*j+u*r+w*z,q*d+t*k+u*s+w*B,q*e+t*m+u*v+w*D,q*h+t*p+u*x+w*E,y*a+A*j+C*r+F*z,y*d+A*k+C*s+F*B,y*e+A*m+C*v+F*D,y*h+A*p+C*x+F*E]}function e(c,a){return m.apply(f,(a||b).concat(c))}d.$Scale=function(a,c,d){if(a!=1||c!=1||d!=1)b=e([a,0,0,0,0,c,0,0,0,0,d,0,0,0,0,1])};d.$Move=function(a,c,d){b[12]+=a||0;b[13]+=c||0;b[14]+=d||0};d.$RotateX=function(c){if(c){a=g(c);var d=h(a),f=i(a);b=e([1,0,0,0,0,d,f,0,0,-f,d,0,0,0,0,1])}};d.$RotateY=function(c){if(c){a=g(c);var d=h(a),f=i(a);b=e([d,0,-f,0,0,1,0,0,f,0,d,0,0,0,0,1])}};d.Xe=function(c){if(c){a=g(c);var d=h(a),f=i(a);b=e([d,f,0,0,-f,d,0,0,0,0,1,0,0,0,0,1])}};d.Ue=function(a,c){if(a||c){j=g(a);k=g(c);b=e([1,l(k),0,0,l(j),1,0,0,0,0,1,0,0,0,0,1])}};d.Ve=function(){return"matrix3d("+b.join(",")+")"}}var P={se:0,ve:0,K:0,N:0,$Zoom:1,$ScaleX:1,$ScaleY:1,$Rotate:0,$RotateX:0,$RotateY:0,$TranslateX:0,$TranslateY:0,$TranslateZ:0,$SkewX:0,$SkewY:0};j.Zc=function(c,d){var a=c||{};if(c)if(b.qe(c))a={X:a};else if(b.qe(c.$Clip))a.$Clip={X:c.$Clip};a.X=a.X||d;if(a.$Clip)a.$Clip.X=a.$Clip.X||d;if(a.Ab)a.Ab.X=a.Ab.X||d;return a};function tb(c,a){var b={};l(c,function(c,d){var f=c;if(a[d]!=e)if(j.uc(c))f=c+a[d];else f=tb(c,a[d]);b[d]=f});return b}j.Re=tb;j.Ae=function(o,j,s,t,D,E,p){var a=j;if(o){a={};for(var i in j){var F=E[i]||1,B=D[i]||[0,1],h=(s-B[0])/B[1];h=c.j(c.m(h,0),1);h=h*F;var y=c.R(h);if(h!=y)h-=y;var k=t.X||g.$Linear,m,G=o[i],r=j[i];if(b.uc(r)){k=t[i]||k;var C=k(h);m=G+r*C}else{m=A({rc:{}},o[i]);var z=t[i]||{};l(r.rc||r,function(d,a){k=z[a]||z.X||k;var c=k(h),b=d*c;m.rc[a]=b;m[a]+=b})}a[i]=m}var x=l(j,function(b,a){return P[a]!=e});x&&l(P,function(c,b){if(a[b]==e&&o[b]!==e)a[b]=o[b]});if(x){if(a.$Zoom)a.$ScaleX=a.$ScaleY=a.$Zoom;a.$OriginalWidth=p.$OriginalWidth;a.$OriginalHeight=p.$OriginalHeight;if(v()&&n>=11&&(j.K||j.N)&&s!=0&&s!=1)a.$Rotate=a.$Rotate||1e-8;a.We=d}}if(j.$Clip&&p.$Move){var q=a.$Clip.rc,w=(q.$Top||0)+(q.$Bottom||0),u=(q.$Left||0)+(q.$Right||0);a.$Left=(a.$Left||0)+u;a.$Top=(a.$Top||0)+w;a.$Clip.$Left-=u;a.$Clip.$Right-=u;a.$Clip.$Top-=w;a.$Clip.$Bottom-=w}if(a.$Clip&&!a.$Clip.$Top&&!a.$Clip.$Left&&!a.$Clip.N&&!a.$Clip.K&&a.$Clip.$Right==p.$OriginalWidth&&a.$Clip.$Bottom==p.$OriginalHeight)a.$Clip=f;return a}};function o(){var a=this,f,e=[],c=[];function k(a,b){e.push({Nb:a,Pb:b})}function j(a,c){b.c(e,function(b,d){b.Nb==a&&b.Pb===c&&e.splice(d,1)})}function h(){e=[]}function g(){b.c(c,function(a){b.$RemoveEvent(a.Wd,a.Nb,a.Pb,a.Xd)});c=[]}a.Nc=function(){return f};a.a=function(f,d,e,a){b.$AddEvent(f,d,e,a);c.push({Wd:f,Nb:d,Pb:e,Xd:a})};a.ab=function(f,d,e,a){b.c(c,function(g,h){if(g.Wd===f&&g.Nb==d&&g.Pb===e&&g.Xd==a){b.$RemoveEvent(f,d,e,a);c.splice(h,1)}})};a.Zd=g;a.$On=a.addEventListener=k;a.$Off=a.removeEventListener=j;a.k=function(a){var c=[].slice.call(arguments,1);b.c(e,function(b){b.Nb==a&&b.Pb.apply(i,c)})};a.$Destroy=function(){if(!f){f=d;g();h()}}}var l=function(C,F,h,m,T,O){C=C||0;var a=this,p,n,o,t,D=0,Q=1,M,N,L,E,B=0,j=0,r=0,A,l,f,g,s,z,v=[],y,I=k,J,H=k;function U(a){f+=a;g+=a;l+=a;j+=a;r+=a;B+=a}function x(C){var k=C;if(s)if(!z&&(k>=g||k<f)||z&&k>=f)k=((k-f)%s+s)%s+f;if(!A||t||j!=k){var i=c.j(k,g);i=c.m(i,f);if(h.$Reverse)i=g-i+f;if(!A||t||i!=r){if(O){var x=(i-l)/(F||1),o=b.Ae(T,O,x,M,L,N,h);if(y)b.c(o,function(b,a){y[a]&&y[a](m,b)});else b.U(m,o);var n;if(J){var p=i>f&&i<g;if(p!=H)n=H=p}if(!n&&o.$Opacity!=e){var q=o.$Opacity<.001;if(q!=I)n=I=q}if(n!=e){n&&b.Fc(m,"none");!n&&b.Fc(m,b.n(m,"data-events"))}}var w=r,u=r=i;b.c(v,function(b,c){var a=!A&&z||k<=j?v[v.length-c-1]:b;a.M(i-B)});j=k;A=d;a.md(w-l,u-l);a.Gb(w,u)}}}function G(a,b,d){b&&a.$Shift(g);if(!d){f=c.j(f,a.Dc()+B);g=c.m(g,a.nb()+B)}v.push(a)}var u=i.requestAnimationFrame||i.webkitRequestAnimationFrame||i.mozRequestAnimationFrame||i.msRequestAnimationFrame;if(b.eh()&&b.hd()<7||!u)u=function(a){b.$Delay(a,h.$Interval)};function P(){if(p){var d=b.Db(),e=c.j(d-D,h.le),a=j+e*o*Q;D=d;if(a*o>=n*o)a=n;x(a);if(!t&&a*o>=n*o)R(E);else u(P)}}function w(e,h,i){if(!p){p=d;t=i;E=h;e=c.m(e,f);e=c.j(e,g);n=e;o=n<j?-1:1;a.Oc();D=b.Db();u(P)}}function R(b){if(p){t=p=E=k;a.Kc();b&&b()}}a.$Play=function(a,b,c){w(a?j+a:g,b,c)};a.Gc=w;a.Le=function(a,b){w(g,a,b)};a.L=R;a.pe=function(){return j};a.ue=function(){return n};a.o=function(){return r};a.M=x;a.Je=function(){x(g,d)};a.$IsPlaying=function(){return p};a.je=function(a){Q=a};a.$Shift=U;a.ud=G;a.W=function(a,b){G(a,0,b)};a.od=function(a){G(a,1)};a.nd=function(a){g+=a};a.Dc=function(){return f};a.nb=function(){return g};a.Gb=a.Oc=a.Kc=a.md=b.ug;a.sd=b.Db();h=b.F({$Interval:16,le:50},h);m&&(J=b.n(m,"data-inactive"));s=h.lc;z=h.bf;y=h.mf;f=l=C;g=C+F;N=h.$Round||{};L=h.$During||{};M=b.Zc(h.$Easing)};var n={af:"data-scale",Eb:"data-autocenter",Lc:"data-nofreeze",ee:"data-nodrag"},q=new function(){var a=this;a.xc=function(c,a,e,d){(d||!b.n(c,a))&&b.n(c,a,e)};a.yc=function(a){var c=b.q(a,n.Eb);b.fd(a,c)}},s=i.$JssorSlideshowFormations$=new function(){var h=this,b=0,a=1,f=2,e=3,s=1,r=2,t=4,q=8,w=256,x=512,v=1024,u=2048,j=u+s,i=u+r,o=x+s,m=x+r,n=w+t,k=w+q,l=v+t,p=v+q;function y(a){return(a&r)==r}function z(a){return(a&t)==t}function g(b,a,c){c.push(a);b[a]=b[a]||[];b[a].push(c)}h.$FormationStraight=function(f){for(var d=f.$Cols,e=f.$Rows,s=f.$Assembly,t=f.sc,r=[],a=0,b=0,p=d-1,q=e-1,h=t-1,c,b=0;b<e;b++)for(a=0;a<d;a++){switch(s){case j:c=h-(a*e+(q-b));break;case l:c=h-(b*d+(p-a));break;case o:c=h-(a*e+b);case n:c=h-(b*d+a);break;case i:c=a*e+b;break;case k:c=b*d+(p-a);break;case m:c=a*e+(q-b);break;default:c=b*d+a}g(r,c,[b,a])}return r};h.$FormationSwirl=function(q){var x=q.$Cols,y=q.$Rows,B=q.$Assembly,w=q.sc,A=[],z=[],u=0,c=0,h=0,r=x-1,s=y-1,t,p,v=0;switch(B){case j:c=r;h=0;p=[f,a,e,b];break;case l:c=0;h=s;p=[b,e,a,f];break;case o:c=r;h=s;p=[e,a,f,b];break;case n:c=r;h=s;p=[a,e,b,f];break;case i:c=0;h=0;p=[f,b,e,a];break;case k:c=r;h=0;p=[a,f,b,e];break;case m:c=0;h=s;p=[e,b,f,a];break;default:c=0;h=0;p=[b,f,a,e]}u=0;while(u<w){t=h+","+c;if(c>=0&&c<x&&h>=0&&h<y&&!z[t]){z[t]=d;g(A,u++,[h,c])}else switch(p[v++%p.length]){case b:c--;break;case f:h--;break;case a:c++;break;case e:h++}switch(p[v%p.length]){case b:c++;break;case f:h++;break;case a:c--;break;case e:h--}}return A};h.$FormationZigZag=function(p){var w=p.$Cols,x=p.$Rows,z=p.$Assembly,v=p.sc,t=[],u=0,c=0,d=0,q=w-1,r=x-1,y,h,s=0;switch(z){case j:c=q;d=0;h=[f,a,e,a];break;case l:c=0;d=r;h=[b,e,a,e];break;case o:c=q;d=r;h=[e,a,f,a];break;case n:c=q;d=r;h=[a,e,b,e];break;case i:c=0;d=0;h=[f,b,e,b];break;case k:c=q;d=0;h=[a,f,b,f];break;case m:c=0;d=r;h=[e,b,f,b];break;default:c=0;d=0;h=[b,f,a,f]}u=0;while(u<v){y=d+","+c;if(c>=0&&c<w&&d>=0&&d<x&&typeof t[y]=="undefined"){g(t,u++,[d,c]);switch(h[s%h.length]){case b:c++;break;case f:d++;break;case a:c--;break;case e:d--}}else{switch(h[s++%h.length]){case b:c--;break;case f:d--;break;case a:c++;break;case e:d++}switch(h[s++%h.length]){case b:c++;break;case f:d++;break;case a:c--;break;case e:d--}}}return t};h.$FormationStraightStairs=function(q){var u=q.$Cols,v=q.$Rows,e=q.$Assembly,t=q.sc,r=[],s=0,c=0,d=0,f=u-1,h=v-1,x=t-1;switch(e){case j:case m:case o:case i:var a=0,b=0;break;case k:case l:case n:case p:var a=f,b=0;break;default:e=p;var a=f,b=0}c=a;d=b;while(s<t){if(z(e)||y(e))g(r,x-s++,[d,c]);else g(r,s++,[d,c]);switch(e){case j:case m:c--;d++;break;case o:case i:c++;d--;break;case k:case l:c--;d--;break;case p:case n:default:c++;d++}if(c<0||d<0||c>f||d>h){switch(e){case j:case m:a++;break;case k:case l:case o:case i:b++;break;case p:case n:default:a--}if(a<0||b<0||a>f||b>h){switch(e){case j:case m:a=f;b++;break;case o:case i:b=h;a++;break;case k:case l:b=h;a--;break;case p:case n:default:a=0;b++}if(b>h)b=h;else if(b<0)b=0;else if(a>f)a=f;else if(a<0)a=0}d=b;c=a}}return r};h.$FormationRectangle=function(f){var d=f.$Cols||1,e=f.$Rows||1,h=[],a,b,i;i=c.$Round(c.j(d/2,e/2))+1;for(a=0;a<d;a++)for(b=0;b<e;b++)g(h,i-c.j(a+1,b+1,d-a,e-b),[b,a]);return h};h.$FormationRandom=function(d){for(var e=[],a,b=0;b<d.$Rows;b++)for(a=0;a<d.$Cols;a++)g(e,c.Q(1e5*c.Md())%13,[b,a]);return e};h.$FormationCircle=function(d){for(var e=d.$Cols||1,f=d.$Rows||1,h=[],a,i=e/2-.5,j=f/2-.5,b=0;b<e;b++)for(a=0;a<f;a++)g(h,c.$Round(c.fc(c.v(b-i,2)+c.v(a-j,2))),[a,b]);return h};h.$FormationCross=function(d){for(var e=d.$Cols||1,f=d.$Rows||1,h=[],a,i=e/2-.5,j=f/2-.5,b=0;b<e;b++)for(a=0;a<f;a++)g(h,c.$Round(c.j(c.H(b-i),c.H(a-j))),[a,b]);return h};h.$FormationRectangleCross=function(f){for(var h=f.$Cols||1,i=f.$Rows||1,j=[],a,d=h/2-.5,e=i/2-.5,k=c.m(d,e)+1,b=0;b<h;b++)for(a=0;a<i;a++)g(j,c.$Round(k-c.m(d-c.H(b-d),e-c.H(a-e)))-1,[a,b]);return j}};i.$JssorSlideshowRunner$=function(m,r,p,u,z,A){var a=this,v,h,e,y=0,x=u.$TransitionsOrder,q,i=8;function t(a){if(a.$Top)a.N=a.$Top;if(a.$Left)a.K=a.$Left;b.c(a,function(a){b.Jd(a)&&t(a)})}function j(h,e,f){var a={$Interval:e,$Duration:1,$Delay:0,$Cols:1,$Rows:1,$Opacity:0,$Zoom:0,$Clip:0,$Move:k,$SlideOut:k,$Reverse:k,$Formation:s.$FormationRandom,$Assembly:1032,$ChessMode:{$Column:0,$Row:0},$Easing:g.$Linear,$Round:{},tc:[],$During:{}};b.F(a,h);if(a.$Rows==0)a.$Rows=c.$Round(a.$Cols*f);t(a);a.sc=a.$Cols*a.$Rows;a.$Easing=b.Zc(a.$Easing,g.$Linear);a.Te=c.Q(a.$Duration/a.$Interval);a.Se=function(c,b){c/=a.$Cols;b/=a.$Rows;var f=c+"x"+b;if(!a.tc[f]){a.tc[f]={I:c,G:b};for(var d=0;d<a.$Cols;d++)for(var e=0;e<a.$Rows;e++)a.tc[f][e+","+d]={$Top:e*b,$Right:d*c+c,$Bottom:e*b+b,$Left:d*c}}return a.tc[f]};if(a.$Brother){a.$Brother=j(a.$Brother,e,f);a.$SlideOut=d}return a}function n(z,i,a,v,n,l){var y=this,t,u={},h={},m=[],f,e,r,p=a.$ChessMode.$Column||0,q=a.$ChessMode.$Row||0,g=a.Se(n,l),o=B(a),C=o.length-1,s=a.$Duration+a.$Delay*C,w=v+s,j=a.$SlideOut,x;w+=50;function B(a){var b=a.$Formation(a);return a.$Reverse?b.reverse():b}y.Td=w;y.jc=function(d){d-=v;var e=d<s;if(e||x){x=e;if(!j)d=s-d;var f=c.Q(d/a.$Interval);b.c(h,function(a,e){var d=c.m(f,a.j);d=c.j(d,a.length-1);if(a.Sd!=d){if(!a.Sd&&!j)b.eb(m[e]);else d==a.m&&j&&b.xb(m[e]);a.Sd=d;b.U(m[e],a[d])}})}};i=b.fb(i);A(i,0,0);b.c(o,function(i,m){b.c(i,function(G){var I=G[0],H=G[1],v=I+","+H,o=k,s=k,x=k;if(p&&H%2){if(p&3)o=!o;if(p&12)s=!s;if(p&16)x=!x}if(q&&I%2){if(q&3)o=!o;if(q&12)s=!s;if(q&16)x=!x}a.$Top=a.$Top||a.$Clip&4;a.$Bottom=a.$Bottom||a.$Clip&8;a.$Left=a.$Left||a.$Clip&1;a.$Right=a.$Right||a.$Clip&2;var C=s?a.$Bottom:a.$Top,z=s?a.$Top:a.$Bottom,B=o?a.$Right:a.$Left,A=o?a.$Left:a.$Right;a.$Clip=C||z||B||A;r={};e={N:0,K:0,$Opacity:1,I:n,G:l};f=b.F({},e);t=b.F({},g[v]);if(a.$Opacity)e.$Opacity=2-a.$Opacity;if(a.$ZIndex){e.$ZIndex=a.$ZIndex;f.$ZIndex=0}var K=a.$Cols*a.$Rows>1||a.$Clip;if(a.$Zoom||a.$Rotate){var J=d;if(J){e.$Zoom=a.$Zoom?a.$Zoom-1:1;f.$Zoom=1;var N=a.$Rotate||0;e.$Rotate=N*360*(x?-1:1);f.$Rotate=0}}if(K){var i=t.rc={};if(a.$Clip){var w=a.$ScaleClip||1;if(C&&z){i.$Top=g.G/2*w;i.$Bottom=-i.$Top}else if(C)i.$Bottom=-g.G*w;else if(z)i.$Top=g.G*w;if(B&&A){i.$Left=g.I/2*w;i.$Right=-i.$Left}else if(B)i.$Right=-g.I*w;else if(A)i.$Left=g.I*w}r.$Clip=t;f.$Clip=g[v]}var L=o?1:-1,M=s?1:-1;if(a.x)e.K+=n*a.x*L;if(a.y)e.N+=l*a.y*M;b.c(e,function(a,c){if(b.uc(a))if(a!=f[c])r[c]=a-f[c]});u[v]=j?f:e;var D=a.Te,y=c.$Round(m*a.$Delay/a.$Interval);h[v]=new Array(y);h[v].j=y;h[v].m=y+D-1;for(var F=0;F<=D;F++){var E=b.Ae(f,r,F/D,a.$Easing,a.$During,a.$Round,{$Move:a.$Move,$OriginalWidth:n,$OriginalHeight:l});E.$ZIndex=E.$ZIndex||1;h[v].push(E)}})});o.reverse();b.c(o,function(a){b.c(a,function(c){var f=c[0],e=c[1],d=f+","+e,a=i;if(e||f)a=b.fb(i);b.U(a,u[d]);b.ic(a,"hidden");b.wb(a,"absolute");z.gf(a);m[d]=a;b.eb(a,!j)})})}function w(){var a=this,b=0;l.call(a,0,v);a.Gb=function(c,a){if(a-b>i){b=a;e&&e.jc(a);h&&h.jc(a)}};a.ld=q}a.Ge=function(){var a=0,b=u.$Transitions,d=b.length;if(x)a=y++%d;else a=c.R(c.Md()*d);b[a]&&(b[a].ec=a);return b[a]};a.He=function(x,y,k,l,b,t){a.yb();q=b;b=j(b,i,t);var g=l.Cd,f=k.Cd;g["no-image"]=!l.Qc;f["no-image"]=!k.Qc;var o=g,s=f,w=b,d=b.$Brother||j({},i,t);if(!b.$SlideOut){o=f;s=g}var u=d.$Shift||0;h=new n(m,s,d,c.m(u-d.$Interval,0),r,p);e=new n(m,o,w,c.m(d.$Interval-u,0),r,p);h.jc(0);e.jc(0);v=c.m(h.Td,e.Td);a.ec=x};a.yb=function(){m.yb();h=f;e=f};a.Me=function(){var a=f;if(e)a=new w;return a};if(z&&b.Sg()<537)i=16;o.call(a);l.call(a,-1e7,1e7)};var r={Ec:1};i.$JssorBulletNavigator$=function(){var a=this,E=b.Y(a,o),h,v,C,B,m,l=0,g,s,p,z,A,i,k,u,t,x,j;function y(a){j[a]&&j[a].Kd(a==l)}function w(b){a.k(r.Ec,b*s)}a.Wc=function(a){if(a!=m){var d=l,b=c.R(a/s);l=b;m=a;y(d);y(b)}};a.Xc=function(a){b.eb(h,a)};a.Yc=function(J){b.$Destroy(j);m=e;a.Zd();x=[];j=[];b.Qb(h);v=c.Q(J/s);l=0;var F=u+z,G=t+A,r=c.Q(v/p)-1;C=u+F*(!i?r:p-1);B=t+G*(i?r:p-1);b.C(h,C);b.D(h,B);for(var n=0;n<v;n++){var H=b.vg();b.zg(H,n+1);var o=b.zd(k,"numbertemplate",H,d);b.wb(o,"absolute");var E=n%(r+1),I=c.R(n/(r+1)),y=g.gc&&!i?r-E:E;b.Z(o,(!i?y:I)*F);b.V(o,(i?y:I)*G);b.J(h,o);x[n]=o;g.$ActionMode&1&&a.a(o,"click",b.T(f,w,n));g.$ActionMode&2&&a.a(o,"mouseenter",b.T(f,w,n));j[n]=b.Bc(o)}q.yc(h)};a.B=function(d,c){a.$Elmt=h=b.$GetElement(d);a.dd=g=b.F({$SpacingX:10,$SpacingY:10,$ActionMode:1},c);k=b.$FindChild(h,"prototype");u=b.C(k);t=b.D(k);b.qb(k,h);s=g.$Steps||1;p=g.$Rows||1;z=g.$SpacingX;A=g.$SpacingY;i=g.$Orientation&2;g.$AutoCenter&&q.xc(h,n.Eb,g.$AutoCenter)};a.$Destroy=function(){b.$Destroy(j,E)};b.B(a)};i.$JssorArrowNavigator$=function(){var a=this,v=b.Y(a,o),e,c,g,l,s,k,h,m,j,i;function p(b){a.k(r.Ec,b,d)}function u(a){b.eb(e,a);b.eb(c,a)}function t(){j.$Enable((g.$Loop||!l.hf(h))&&k>1);i.$Enable((g.$Loop||!l.ff(h))&&k>1)}a.Wc=function(c,a,b){h=a;!b&&t()};a.Xc=u;a.Yc=function(g){k=g;h=0;if(!s){a.a(e,"click",b.T(f,p,-m));a.a(c,"click",b.T(f,p,m));j=b.Bc(e);i=b.Bc(c);b.n(e,n.Lc,1);b.n(c,n.Lc,1);s=d}};a.B=function(f,d,h,i){a.dd=g=b.F({$Steps:1},h);e=f;c=d;if(g.gc){e=d;c=f}m=g.$Steps;l=i;if(g.$AutoCenter){q.xc(e,n.Eb,g.$AutoCenter);q.xc(c,n.Eb,g.$AutoCenter)}q.yc(e);q.yc(c)};a.$Destroy=function(){b.$Destroy(j,i,v)};b.B(a)};i.$JssorThumbnailNavigator$=function(){var i=this,E=b.Y(i,o),h,B,a,y,C,m,l=[],A,z,g,p,s,w,v,x,t,u;function D(){var c=this;b.Y(c,o);var h,e,n,l;function p(){n.Kd(m==h)}function j(e){if(e||!t.$LastDragSucceeded()){var c=g-h%g,a=t.ie((h+c)/g-1),b=a*g+g-c;if(a<0)b+=y%g;if(a>=C)b-=y%g;i.k(r.Ec,b,k,d)}}c.ne=p;c.B=function(g,i){c.ec=h=i;l=g.Ne||g.Qc||b.Rb();c.id=e=b.zd(u,"thumbnailtemplate",l,d);n=b.Bc(e);a.$ActionMode&1&&c.a(e,"click",b.T(f,j,0));a.$ActionMode&2&&c.a(e,"mouseenter",b.T(f,j,1))};b.B(c)}i.Wc=function(a,e,d){if(a!=m){var b=m;m=a;b!=-1&&l[b].ne();l[a]&&l[a].ne()}!d&&t.$PlayTo(t.ie(c.R(a/g)))};i.Xc=function(a){b.eb(h,a)};i.Yc=function(I,J){b.$Destroy(t,l);m=e;l=[];var K=b.fb(B);b.Qb(h);a.gc&&b.n(h,"dir","rtl");b.Gg(h,b.Cb(K));var i=b.$FindChild(h,"slides",d);y=I;C=c.Q(y/g);m=-1;var f=a.$Orientation&1,r=w+(w+p)*(g-1)*(1-f),o=v+(v+s)*(g-1)*f,E=(f?c.m:c.j)(A,r),u=(f?c.j:c.m)(z,o);x=c.Q((A-p)/(w+p)*f+(z-s)/(v+s)*(1-f));var G=r+(r+p)*(x-1)*f,F=o+(o+s)*(x-1)*(1-f);E=c.j(E,G);u=c.j(u,F);b.C(i,E);b.D(i,u);b.fd(i,3);var n=[];b.c(J,function(k,e){var h=new D(k,e),d=h.id,a=c.R(e/g),j=e%g;b.Z(d,(w+p)*j*(1-f));b.V(d,(v+s)*j*f);if(!n[a]){n[a]=b.Rb();b.J(i,n[a])}b.J(n[a],d);l.push(h)});var H=b.F({$AutoPlay:0,$NaviQuitDrag:k,$SlideWidth:r,$SlideHeight:o,$SlideSpacing:p*f+s*(1-f),$MinDragOffsetToSlide:12,$SlideDuration:200,$PauseOnHover:1,$Cols:x,$PlayOrientation:a.$Orientation,$DragOrientation:a.$NoDrag||a.$DisableDrag?0:a.$Orientation},a);t=new j(h,H);q.yc(h)};i.B=function(j,f,e){h=j;i.dd=a=b.F({$SpacingX:0,$SpacingY:0,$Orientation:1,$ActionMode:1},f);A=b.C(h);z=b.D(h);var c=b.$FindChild(h,"slides",d);u=b.$FindChild(c,"prototype");e=b.fb(e);b.tb(e,c);w=b.C(u);v=b.D(u);b.qb(u,c);b.wb(c,"absolute");b.ic(c,"hidden");g=a.$Rows||1;p=a.$SpacingX;s=a.$SpacingY;a.$AutoCenter&=a.$Orientation;a.$AutoCenter&&q.xc(h,n.Eb,a.$AutoCenter);B=b.fb(h)};i.$Destroy=function(){b.$Destroy(t,l,E)};b.B(i)};function p(e,d,c){var a=this;b.Y(a,o);l.call(a,0,c.$Idle);a.oc=0;a.Tc=c.$Idle}p.kd=21;p.vc=24;var t=i.$JssorCaptionSlideo$=function(){var a=this,hb=b.Y(a,o);l.call(a,0,0);var e,s,gb=[g.$Linear,g.$Swing,g.$InQuad,g.$OutQuad,g.$InOutQuad,g.$InCubic,g.$OutCubic,g.$InOutCubic,g.$InQuart,g.$OutQuart,g.$InOutQuart,g.$InQuint,g.$OutQuint,g.$InOutQuint,g.$InSine,g.$OutSine,g.$InOutSine,g.$InExpo,g.$OutExpo,g.$InOutExpo,g.$InCirc,g.$OutCirc,g.$InOutCirc,g.$InElastic,g.$OutElastic,g.$InOutElastic,g.$InBack,g.$OutBack,g.$InOutBack,g.$InBounce,g.$OutBounce,g.$InOutBounce,g.$Early,g.$Late],G={},J,C,x=new l(0,0),K=[],v=[],E,q=0;function M(d,c){var a={};b.c(d,function(d,f){var e=G[f];if(e){if(b.Jd(d))d=M(d,c||f=="e");else if(c)if(b.uc(d))d=gb[d];a[e]=d}});return a}function O(c,f){var e=[],d=b.q(c,"play");if(f&&d){var g=new t(c,s,{Qg:d});T.push(g);a.a(g,p.kd,Z);a.a(g,p.vc,U)}else b.c(b.Cb(c),function(a){e=e.concat(O(a,f+1))});if(!f&&(!j||j&16)||f&&(!d||!(d&16))){var h=J[b.q(c,"t")];h&&e.push({$Elmt:c,ld:h})}return e}function F(c,e){var a=K[c];if(a==f){a=K[c]={ub:c,Vc:[],wd:[]};var d=0;!b.c(v,function(a,b){d=b;return a.ub>c})&&d++;v.splice(d,0,a)}return a}function db(o,p,g){var a,e;if(C){var k=C[b.q(o,"c")];if(k){a=F(k.r,0);a.Mg=k.e||0}}b.c(p,function(h){var f=b.F(d,{},M(h)),i=b.Zc(f.$Easing);delete f.$Easing;if(f.$Left){f.K=f.$Left;i.K=i.$Left;delete f.$Left}if(f.$Top){f.N=f.$Top;i.N=i.$Top;delete f.$Top}var m={$Easing:i,$OriginalWidth:g.I,$OriginalHeight:g.G},j=new l(h.b,h.d,m,o,g,f);q=c.m(q,h.b+h.d);if(a){if(!e)e=new l(h.b,0);e.W(j)}else{var k=F(h.b,h.b+h.d);k.Vc.push(j)}if(f.Ab)g.Ab={Fd:0,Ad:0,Od:0,$Opacity:0};g=b.Re(g,f)});if(a&&e){e.Je();var h=e,j,i=e.Dc(),m=e.nb(),n=c.m(m,a.Mg);if(a.ub<m){if(a.ub>i){h=new l(i,a.ub-i);h.W(e,d)}else h=f;j=new l(a.ub,n-i,{lc:n-a.ub,bf:d});j.W(e,d)}h&&a.Vc.push(h);j&&a.wd.push(j)}return g}function cb(a){b.c(a,function(f){var a=f.$Elmt,e=b.C(a),d=b.D(a),c={$Left:b.Z(a),$Top:b.V(a),K:0,N:0,$Opacity:1,$ZIndex:b.S(a)||0,$Rotate:0,$RotateX:0,$RotateY:0,$ScaleX:1,$ScaleY:1,$TranslateX:0,$TranslateY:0,$TranslateZ:0,$SkewX:0,$SkewY:0,I:e,G:d,$Clip:{$Top:0,$Right:e,$Bottom:d,$Left:0}};c.se=c.$Left;c.ve=c.$Top;db(a,f.ld,c)})}function fb(f,e,g){var c=f.b-e;if(c){var b=new l(e,c);b.W(x,d);b.$Shift(g);a.W(b)}a.nd(f.d);return c}function eb(e){var c=x.Dc(),d=0;b.c(e,function(e,f){e=b.F({d:3e3},e);fb(e,c,d);c=e.b;d+=e.d;if(!f||e.t==2){a.oc=c;a.Tc=c+e.d}})}function B(i,d,e){var f=d.length;if(f>4)for(var j=c.Q(f/4),a=0;a<j;a++){var g=d.slice(a*4,c.j(a*4+4,f)),h=new l(g[0].ub,0);B(h,g,e);i.W(h)}else b.c(d,function(a){b.c(e?a.wd:a.Vc,function(a){e&&a.nd(q-a.nb());i.W(a)})})}var j,L,z=0,i,y,Q,P,A,T=[],N=[],r,D,m;function w(a){return a&2||a&4&&b.Rc().Hc}function ab(){if(!A){i&8&&a.a(h,"keydown",H);if(i&32){a.a(h,"mousedown",u);a.a(h,"touchstart",u)}A=d}}function Y(){a.ab(h,"keydown",H);a.ab(h,"mousedown",u);a.ab(h,"touchstart",u);A=k}function R(b){if(!r||b){r=d;a.L();b&&z&&a.M(0);a.je(1);a.Le();ab();a.k(p.kd,a)}}function n(){if(!D&&(r||a.o())){D=d;a.L();a.pe()>a.oc&&a.M(a.oc);a.je(Q||1);a.Gc(0)}}function V(){!m&&n()}function S(c){var b=c;if(c<0&&a.o())b=1;if(b!=z){z=b;L&&a.k(p.vc,a,z)}}function H(a){i&8&&b.he(a)==27&&n()}function X(a){if(m&&b.Ee(a)!==f){m=k;i&16&&b.$Delay(V,160)}}function u(a){i&32&&!b.de(e,b.$EvtSrc(a))&&n()}function W(a){if(!m){m=d;if(j&1)b.fe(a,e)&&R()}}function bb(h){var g=b.$EvtSrc(h),a=b.lb(g,f,f,"A"),c=a&&(b.qg(a)||a===e||b.de(e,a));if(r&&w(i))!c&&n();else if(w(j))!c&&R(d)}function Z(b){var c=b.Dg(),a=N[c];a!==b&&a&&a.sg();N[c]=b}function U(b,c){a.k(p.vc,b,c)}a.Dg=function(){return P||""};a.sg=n;a.Oc=function(){S(1)};a.Kc=function(){r=k;D=k;S(-1);!a.o()&&Y()};a.Gb=function(){!m&&y&&a.pe()>a.Tc&&n()};a.B=function(m,h,f){e=m;s=h;j=f.Qg;E=f.pg;J=s.$Transitions;C=s.$Controls;var l={$Top:"y",$Left:"x",$Bottom:"m",$Right:"t",$Rotate:"r",$RotateX:"rX",$RotateY:"rY",$ScaleX:"sX",$ScaleY:"sY",$TranslateX:"tX",$TranslateY:"tY",$TranslateZ:"tZ",$SkewX:"kX",$SkewY:"kY",$Opacity:"o",$Easing:"e",$ZIndex:"i",$Clip:"c",Ab:"bc",Fd:"re",Ad:"gr",Od:"bl"};b.c(l,function(b,a){G[b]=a});cb(O(e,0));B(x,v);if(j){a.W(x);E=d;y=b.q(e,"idle");i=b.q(e,"rollback");Q=b.q(e,"speed",1);P=b.db(e,"group");(w(j)||w(i))&&a.a(e,"click",bb);if((j&1||y)&&!b.Rc().Hc){a.a(e,"mouseenter",W);a.a(e,"mouseleave",X)}L=b.q(e,"pause")}var k=s.$Breaks||[],c=k[b.q(e,"b")]||[],g={b:q,d:c.length?0:f.$Idle||y||0};c=c.concat([g]);eb(c);a.nb();E&&a.nd(1e8);q=a.nb();B(a,v,d);a.M(-1);a.M(b.q(e,"initial")||0)};a.$Destroy=function(){b.$Destroy(hb,T);a.L();a.M(-1)};b.B(a)},j=i.$JssorSlider$=(i.module||{}).exports=function(){var a=this,Ec=b.Y(a,o),Nb="data-jssor-slider",ic="data-jssor-thumb",u,m,S,Cb,cb,jb,W,J,O,M,Zb,Bc,Fc=1,Ac=1,kc=1,rc=1,nc={},w,R,Lb,bc,Yb,wb,zb,yb,gb,E=[],Qb,s=-1,tc,q,I,H,P,nb,ob,F,N,kb,T,z,V,mb,Y=[],vc,xc,oc,t,vb,Hb,qb,eb,X,sc,Gb,Pb,Rb,G,Kb=0,bb=0,Q=Number.MAX_VALUE,K=Number.MIN_VALUE,C,lb,db,U=1,Wb=0,pb,A,Fb,Eb,L,Ab,Db,B,Z,rb,y,Bb,cc=b.Rc(),Ub=cc.Hc,x=[],D,hb,ab,Mb,hc,mc,ib;function Jb(){return!U&&X&12}function Gc(){return Wb||!U&&X&3}function Ib(){return!A&&!Jb()&&!y.$IsPlaying()}function Xc(){return!Gc()&&Ib()}function jc(){return z||S}function Oc(){return jc()&2?ob:nb}function lc(a,c,d){b.Z(a,c);b.V(a,d)}function Dc(c,b){var a=jc(),d=(nb*b+Kb)*(a&1),e=(ob*b+Kb)*(a&2)/2;lc(c,d,e)}function dc(b,f){if(A&&!(C&1)){var e=b,d;if(b<K){e=K;d=-1}if(b>Q){e=Q;d=1}if(d){var a=b-e;if(f){a=c.Zf(a)*2/c.E;a=c.v(a*d,1.6)}else{a=c.v(a*d,.625);a=c.Id(a*c.E/2)}b=e+a*d}}return b}function Qc(a){return dc(a,d)}function Lc(a){return dc(a)}function xb(a,b){if(!(C&1)){var c=a-Q+(b||0),d=K-a+(b||0);if(c>0&&c>d)a=Q;else if(d>0)a=K}return a}function yc(a){return!(C&1)&&a-K<.0001}function wc(a){return!(C&1)&&Q-a<.0001}function sb(a){return!(C&1)&&(a-K<.0001||Q-a<.0001)}function Sb(c,a,d){!ib&&b.c(Y,function(b){b.Wc(c,a,d)})}function ec(b){var a=b,d=sb(b);if(d)a=xb(a);else{b=v(b);a=b}a=c.R(a);a=c.m(a,0);return a}function gd(a){x[s];Qb=s;s=a;tc=x[s]}function Uc(){z=0;var b=B.o(),d=ec(b);Sb(d,b);if(sb(b)||b==c.R(b)){if(t&2&&(eb>0&&d==q-1||eb<0&&!d))t=0;gd(d);a.k(j.$EVT_PARK,s,Qb)}}function pc(a,b){if(q&&(!b||!y.$IsPlaying())){y.L();y.bd(a,a)}}function ub(a){if(q){a=v(a);a=xb(a);pc(a)}else Sb(0,0)}function ad(){var b=j.ae||0,a=lb;j.ae|=a;return V=a&~b}function Vc(){if(V){j.ae&=~lb;V=0}}function Xb(c){var a=b.Rb();b.U(a,gb);c&&b.ic(a,"hidden");return a}function v(b,a){a=a||q||1;return(b%a+a)%a}function fc(c,a,b){t&8&&(t=0);tb(c,Gb,a,b)}function Tb(){b.c(Y,function(a){a.Xc(a.dd.$ChanceToShow<=U)})}function Kc(c){if(!U&&(b.Ee(c)||!b.fe(c,u))){U=1;Tb();if(!A){X&12&&Hc();x[s]&&x[s].zc()}a.k(j.$EVT_MOUSE_LEAVE)}}function Jc(){if(U){U=0;Tb();A||!(X&12)||Ic()}a.k(j.$EVT_MOUSE_ENTER)}function Nc(){b.U(R,gb)}function Vb(b,a){tb(b,a,d)}function tb(g,h,l,p){if(q&&(!A||m.$NaviQuitDrag)&&!Jb()&&!isNaN(g)){var f=B.o(),a=g;if(l){a=f+g;if(C&2){if(yc(f)&&g<0)a=Q;if(wc(f)&&g>0)a=K}}if(!(C&1))if(p)a=v(a);else a=xb(a,.5);if(l&&!sb(a))a=c.$Round(a);var i=(a-f)%q;a=f+i;if(h==e)h=Gb;var b=c.H(i),j=0;if(b){if(b<1)b=c.v(b,.5);if(b>1){var o=Oc(),n=(S&1?zb:yb)/o;b=c.j(b,n*1.5)}j=h*b}ib=d;y.L();ib=k;y.bd(f,a,j)}}function Rc(e,h,o){var l=this,i={$Top:2,$Right:1,$Bottom:2,$Left:1},m={$Top:"top",$Right:"right",$Bottom:"bottom",$Left:"left"},g,a,f,j,k={};l.$Elmt=e;l.$ScaleSize=function(q,l,u){var p,s=q,r=l;if(!f){f=b.Hg(e);g=e.parentNode;j={$Scale:b.q(e,n.af,1),$AutoCenter:b.q(e,n.Eb)};b.c(m,function(c,a){k[a]=b.q(e,"data-scale-"+c,1)});a=e;if(h){a=b.fb(g,d);b.U(a,{$Top:0,$Left:0});b.J(a,e);b.J(g,a)}}if(o){p=c.m(q,l);if(h)if(u>=0&&u<1){var w=c.j(q,l);p=c.j(p/w,1/(1-u))*w}}else s=r=p=c.v(O<M?l:q,j.$Scale);var x=h?1.001:1,t=p*x;h&&(rc=t);b.Vd(a,t);b.C(g,f.I*s);b.D(g,f.G*r);var v=b.be()&&b.hd()<9?t:1,y=(s-v)*f.I/2,z=(r-v)*f.G/2;b.Z(a,y);b.V(a,z);b.c(f,function(d,a){if(i[a]&&d){var e=(i[a]&1)*c.v(q,k[a])*d+(i[a]&2)*c.v(l,k[a])*d/2;b.kf[a](g,e)}});b.fd(g,j.$AutoCenter)}}function ed(){var a=this;l.call(a,0,0,{lc:q});b.c(x,function(b){a.od(b);b.$Shift(G/F)})}function dd(){var a=this,b=Bb.$Elmt;l.call(a,-1,2,{$Easing:g.$Linear,mf:{Ob:Dc},lc:q,$Reverse:Hb},b,{Ob:1},{Ob:-2});a.id=b}function fd(){var b=this;l.call(b,-1e8,2e8);b.Gb=function(e,b){if(c.H(b-e)>1e-5){var g=b,f=b;if(c.R(b)!=b&&b>e&&(C&1||b>bb))f++;var h=ec(f);Sb(h,g,d);a.k(j.$EVT_POSITION_CHANGE,v(g),v(e),b,e)}}}function Tc(o,n){var b=this,g,i,e,c,h;l.call(b,-1e8,2e8,{le:100});b.Oc=function(){pb=d;a.k(j.$EVT_SWIPE_START,v(B.o()),Z.o())};b.Kc=function(){pb=k;c=k;a.k(j.$EVT_SWIPE_END,v(B.o()),Z.o());!A&&Uc()};b.Gb=function(f,b){var a=b;if(c)a=h;else if(e){var d=b/e;a=m.$SlideEasing(d)*(i-g)+g}a=Qc(a);Z.M(a)};b.bd=function(a,c,h,f){A=k;e=h||1;g=a;i=c;ib=d;Z.M(a);ib=k;b.M(0);b.Gc(e,f)};b.Rg=function(){c=d;c&&b.$Play(f,f,d)};b.Ug=function(a){h=a};Z=new fd;Z.W(o);Rb&&Z.W(n)}function Pc(){var c=this,a=Xb();b.S(a,0);c.$Elmt=a;c.gf=function(c){b.J(a,c);b.eb(a)};c.yb=function(){b.xb(a);b.Qb(a)}}function cd(w,h){var g=this,jb=b.Y(g,o),y,G=0,V,u,E,A,J,n,F=[],U,M,Q,i,r,z,S;l.call(g,-N,N+1,{lc:C&1?q:e,$Reverse:Hb});function K(){y&&y.$Destroy();Wb-=G;G=0;y=new cb.$Class(u,cb,{$Idle:b.q(u,"idle",sc),pg:!t});y.$On(p.vc,X)}function Y(){y.sd<cb.sd&&K()}function X(b,a){G+=a;Wb+=a;if(h==s)!G&&g.zc()}function P(p,s,o){if(!M){M=d;if(n&&o){var q=b.q(n,"data-expand",0)*2,f=o.width,e=o.height,l=f,i=e;if(f&&e){if(A){if(A&3&&(!(A&4)||f>I||e>H)){var m=k,r=I/H*e/f;if(A&1)m=r>1;else if(A&2)m=r<1;l=m?f*H/e:I;i=m?H:e*I/f}b.C(n,l);b.D(n,i);b.V(n,(H-i)/2);b.Z(n,(I-l)/2)}b.Vd(n,c.m((l+q)/l,(i+q)/i))}b.wb(n,"absolute")}a.k(j.$EVT_LOAD_END,h)}s.Yd(k);p&&p(g)}function W(f,b,c,e){if(e==z&&s==h&&t&&Ib()&&!g.Nc()){var a=v(f);D.He(a,h,b,g,c,H/I);b.dh();rb.$Shift(a-rb.Dc()-1);rb.M(a);pc(a,d)}}function ab(b){if(b==z&&s==h&&Ib()&&!g.Nc()){if(!i){var a=f;if(D)if(D.ec==h)a=D.Me();else D.yb();Y();i=new bd(w,h,a,y);i.og(r)}!i.$IsPlaying()&&i.Jc()}}function L(a,d,k){if(a==h){if(a!=d)x[d]&&x[d].Ce();else!k&&i&&i.Df();r&&r.$Enable();z=b.Db();g.Kb(b.T(f,ab,z))}else{var j=c.j(h,a),e=c.m(h,a),n=c.j(e-j,j+q-e),l=N+m.$LazyLoading-1;(!Q||n<=l)&&g.Kb()}}function bb(){if(s==h&&i){i.L();r&&r.$Quit();r&&r.$Disable();i.De()}}function hb(){s==h&&i&&i.L()}function Z(b){!db&&a.k(j.$EVT_CLICK,h,b)}g.Yd=function(a){if(S!=a){S=a;a&&b.J(w,J);!a&&b.qb(J)}};g.Kb=function(e,c){c=c||g;if(F.length&&!M){c.Yd(d);if(!U){U=d;a.k(j.$EVT_LOAD_START,h);b.c(F,function(a){if(!b.n(a,"src")){var c=b.db(a,"src")||b.db(a,"src2")||"";if(c){a.src=c;b.zb(a,b.n(a,"data-display"))}}})}b.Ig(F,n,b.T(f,P,e,c))}else P(e,c)};g.Gf=function(){if(Xc())if(q==1){g.Ce();L(h,h)}else{var a;if(D)a=D.Ge(q);if(a){z=b.Db();var c=h+eb,d=x[v(c)];return d.Kb(b.T(f,W,c,d,a,z),g)}else(C||!sb(B.o())||!sb(B.o()+eb))&&Vb(eb)}};g.zc=function(){L(h,h,d)};g.Ce=function(){r&&r.$Quit();r&&r.$Disable();g.re();i&&i.Kf();i=f;K()};g.dh=function(){b.xb(w)};g.re=function(){b.eb(w)};function T(a,j,e){if(b.n(a,Nb))return;if(e){if(!u){u=a;E=Xb(d);var c="background";b.O(E,c+"Color",b.O(u,c+"Color"));b.O(E,c+"Image",b.O(u,c+"Image"));b.O(u,c,f);b.tb(E,u)}b.n(a,"data-events",b.Fc(a));b.n(a,"data-display",b.zb(a));b.ch(a,b.db(a,"data-to"));b.bh(a,b.db(a,"data-bf"));e>1&&b.kc(a,b.n(a,"data-ts"));b.ah(a,b.q(a,"data-p"));b.yg(a,b.db(a,"po"));if(a.tagName=="IMG"){F.push(a);if(!b.n(a,"src")){Q=d;b.xb(a)}}var g=b.lf(a);if(g){var h=new Image;b.n(h,"src",g);F.push(h)}e&&b.S(a,(b.S(a)||0)+1)}var i=b.Cb(a);b.c(i,function(c){if(e<3&&!n)if(b.db(c,"u")=="image"){n=c;n.border=0;b.U(n,gb);b.U(a,gb);b.O(n,"maxWidth","10000px");b.J(E,n)}T(c,j,e+1)})}g.md=function(c,b){var a=N-b;Dc(V,a)};g.ec=h;T(w,d,0);A=b.q(u,"data-fillmode",m.$FillMode);var O=b.$FindChild(u,"thumb",d);if(O){g.Ne=b.fb(O);b.xb(O)}b.eb(w);J=b.fb(R);b.S(J,1e3);g.a(w,"click",Z);K(d);g.Qc=n;g.Cd=w;g.id=V=w;g.a(a,203,L);g.a(a,28,hb);g.a(a,24,bb);g.$Destroy=function(){b.$Destroy(jb,y,i)}}function bd(F,h,q,r){var c=this,E=b.Y(c,o),i=0,u=0,g,m,f,e,n,w,v,y=x[h];l.call(c,0,0);function B(){c.Jc()}function C(a){v=a;c.L();c.Jc()}function z(){}c.Jc=function(){if(!A&&!pb&&!v&&s==h&&!c.Nc()){var k=c.o();if(!k)if(g&&!n){n=d;c.De(d);a.k(j.$EVT_SLIDESHOW_START,h,u,i,u,g,e)}a.k(j.$EVT_STATE_CHANGE,h,k,i,m,f,e);if(!Jb()){var l;if(k==e)t&&b.$Delay(y.Gf,20);else{if(k==f)l=e;else if(!k)l=f;else l=c.ue();(k!=f||!Gc())&&c.Gc(l,B)}}}};c.Df=function(){f==e&&f==c.o()&&c.M(m)};c.Kf=function(){D&&D.ec==h&&D.yb();var b=c.o();b<e&&a.k(j.$EVT_STATE_CHANGE,h,-b-1,i,m,f,e)};c.De=function(a){q&&b.ic(T,a&&q.ld.$Outside?"":"hidden")};c.md=function(c,b){if(n&&b>=g){n=k;y.re();D.yb();a.k(j.$EVT_SLIDESHOW_END,h,g,i,u,g,e)}a.k(j.$EVT_PROGRESS_CHANGE,h,b,i,m,f,e)};c.og=function(a){if(a&&!w){w=a;a.$On($JssorPlayer$.jf,C)}};c.a(r,p.kd,z);q&&c.od(q);g=c.nb();c.od(r);m=g+r.oc;e=c.nb();f=t?g+r.Tc:e;c.$Destroy=function(){E.$Destroy();c.L()}}function qc(){Mb=pb;hc=y.ue();ab=B.o();hb=Lc(ab)}function Ic(){qc();if(A||Jb()){y.L();a.k(j.Jf)}}function Hc(f){if(Ib()){var b=B.o(),a=hb,e=0;if(f&&c.H(L)>=m.$MinDragOffsetToSlide){a=b;e=Db}a=c.Q(a);a=xb(a+e,.5);var d=c.H(a-b);if(d<1&&m.$SlideEasing!=g.$Linear)d=c.v(d,.5);if((!db||!f)&&Mb)y.Gc(hc);else if(b==a)tc.zc();else y.bd(b,a,d*Gb)}}function gc(a){!b.lb(b.$EvtSrc(a),e,n.ee)&&b.$CancelEvent(a)}function zc(b){Fb=k;A=d;Ic();if(!Mb)z=0;a.k(j.$EVT_DRAG_START,v(ab),ab,b)}function Zc(a){Cc(a,1)}function Cc(c,d){L=0;Ab=0;Db=0;kc=rc;if(d){var i=c.touches[0];Eb={x:i.clientX,y:i.clientY}}else Eb=b.pd(c);var f=b.$EvtSrc(c),g=b.lb(f,"1",ic);if((!g||g===u)&&!V&&(!d||c.touches.length==1)){mb=b.lb(f,e,n.ee)||!lb||!ad();a.a(h,d?"touchmove":"mousemove",ac);Fb=!mb&&b.lb(f,e,n.Lc);!Fb&&!mb&&zc(c,d)}}function ac(a){var e,f;a=b.Yg(a);if(a.type!="mousemove")if(a.touches.length==1){f=a.touches[0];e={x:f.clientX,y:f.clientY}}else fb();else e=b.pd(a);if(e){var i=e.x-Eb.x,j=e.y-Eb.y,g=c.H(i),h=c.H(j);if(z||g>1.5||h>1.5)if(Fb)zc(a,f);else{if(c.R(hb)!=hb)z=z||S&V;if((i||j)&&!z){if(V==3)if(h>g)z=2;else z=1;else z=V;if(Ub&&z==1&&h>g*2.4)mb=d}var l=i,k=nb;if(z==2){l=j;k=ob}(L-Ab)*qb<-1.5&&(Db=0);(L-Ab)*qb>1.5&&(Db=-1);Ab=L;L=l;mc=hb-L*qb/k/kc*m.$DragRatio;if(L&&z&&!mb){b.$CancelEvent(a);y.Rg(d);y.Ug(mc)}}}}function fb(){Vc();a.ab(h,"mousemove",ac);a.ab(h,"touchmove",ac);db=L;if(A){db&&t&8&&(t=0);y.L();A=k;var b=B.o();a.k(j.$EVT_DRAG_END,v(b),b,v(ab),ab);X&12&&qc();Hc(d)}}function Mc(c){var f=b.$EvtSrc(c),a=b.lb(f,"1",Nb);if(u===a)if(db){b.$StopEvent(c);a=b.lb(f,e,"data-jssor-button","A");a&&b.$CancelEvent(c)}else{t&4&&(t=0);a=b.lb(f,e,"data-jssor-click");if(a){b.$CancelEvent(c);hitValues=(b.n(a,"data-jssor-click")||"").split(":");var g=b.Jg(hitValues[1]);hitValues[0]=="to"&&tb(g-1);hitValues[0]=="next"&&tb(g,e,d)}}}a.$SlidesCount=function(){return E.length};a.$CurrentIndex=function(){return s};a.$CurrentPosition=function(){return B.o()};a.$AutoPlay=function(a){if(a==e)return t;if(a!=t){t=a;t&&x[s]&&x[s].zc()}};a.$IsDragging=function(){return A};a.$IsSliding=function(){return pb};a.$IsMouseOver=function(){return!U};a.$LastDragSucceeded=function(){return db};a.$OriginalWidth=function(){return O};a.$OriginalHeight=function(){return M};a.$ScaleHeight=function(b){if(b==e)return Bc||M;a.$ScaleSize(b/M*O,b)};a.$ScaleWidth=function(b){if(b==e)return Zb||O;a.$ScaleSize(b,b/O*M)};a.$ScaleSize=function(c,a,d){b.C(u,c);b.D(u,a);Fc=c/O;Ac=a/M;b.c(nc,function(a){a.$ScaleSize(Fc,Ac,d)});if(!Zb){b.tb(T,w);b.V(T,0);b.Z(T,0)}Zb=c;Bc=a};a.hf=yc;a.ff=wc;a.$PlayTo=tb;a.$GoTo=ub;a.$Next=function(){Vb(1)};a.$Prev=function(){Vb(-1)};a.$Pause=function(){t=0};a.$Play=function(){a.$AutoPlay(t||1)};a.$SetSlideshowTransitions=function(a){m.$SlideshowOptions.$Transitions=a};a.$SetCaptionTransitions=function(a){cb.$Transitions=a;cb.sd=b.Db()};a.ie=function(a){a=v(a);if(C&1){var d=G/F,b=v(B.o()),e=v(a-b+d),f=v(c.H(a-b));if(e>=N){if(f>q/2)if(a>b)a-=q;else a+=q}else if(a>b&&e<d)a-=q;else if(a<b&&e>d)a+=q}return a};function Yc(){cc.ze&&b.O(w,cc.ze,([f,"pan-y","pan-x","auto"])[lb]||"");a.a(u,"click",Mc,d);a.a(u,"mouseleave",Kc);a.a(u,"mouseenter",Jc);a.a(u,"mousedown",Cc);a.a(u,"touchstart",Zc);a.a(u,"dragstart",gc);a.a(u,"selectstart",gc);a.a(i,"mouseup",fb);a.a(h,"mouseup",fb);a.a(h,"touchend",fb);a.a(h,"touchcancel",fb);a.a(i,"blur",fb);m.$ArrowKeyNavigation&&a.a(h,"keydown",function(c){var a=b.he(c);if(a==37||a==39){t&8&&(t=0);fc(m.$ArrowKeyNavigation*(a-38)*qb,d)}})}function uc(g){Ec.Zd();E=[];x=[];var h=b.Cb(w),k=b.Dd(["DIV","A","LI"]);b.c(h,function(a){var c=a;if(k[a.tagName.toUpperCase()]&&!b.db(a,"u")&&b.zb(a)!="none"){var c=Xb(d);b.U(a,gb);b.tb(c,a);b.J(c,a);b.kc(c,"flat");b.kc(a,"preserve-3d");b.xb(c);E.push(c)}b.S(c,(b.S(c)||0)+1)});q=E.length;if(q){var a=S&1?zb:yb;Nc();G=m.$Align;if(G==e)G=(a-F+P)/2;kb=a/F;N=c.j(q,m.$Cols||q,c.Q(kb));C=N<q?m.$Loop:0;if(q*F-P<=a){kb=q-P/F;G=(a-F+P)/2;Kb=(a-F*q+P)/2}if(Cb){Pb=Cb.$Class;Rb=!G&&N==1&&q>1&&Pb&&(!b.be()||b.hd()>=9)}if(!(C&1)){bb=G/F;if(bb>q-1){bb=q-1;G=bb*F}K=bb;Q=K+q-kb-P/F}lb=(N>1||G?S:-1)&m.$DragOrientation;if(Rb)D=new Pb(Bb,I,H,Cb,Ub,lc);for(var f=0;f<E.length;f++){var i=E[f],j=new cd(i,f);x.push(j)}rb=new dd;B=new ed;y=new Tc(B,rb);Yc()}b.c(Y,function(a){a.Yc(q,x);g&&a.$On(r.Ec,fc)})}function Ob(a,d,g){b.te(a)&&(a=b.ud("",a));var c,f;if(q){if(d==e)d=q;f="beforebegin";c=E[d];if(!c){f="afterend";c=E[q-1]}}b.$Destroy(x);a&&b.Fg(c||w,f||"afterbegin",a);b.c(g,function(a){b.qb(a)});uc()}a.$AppendSlides=function(f,a){if(a==e)a=s+1;var d=E[s];Ob(f,a);var c=0;b.c(E,function(a,b){a==d&&(c=b)});ub(c)};a.$ReloadSlides=function(a){Ob(a,f,E);ub(0)};a.$RemoveSlides=function(e){var a=s,d=[];b.c(e,function(b){if(b<q&&b>=0){d.push(E[b]);b<s&&a--}});Ob(f,f,d);a=c.j(a,q-1);ub(a)};a.B=function(i,f){a.$Elmt=u=b.$GetElement(i);O=b.C(u);M=b.D(u);m=b.F({$FillMode:0,$LazyLoading:1,$ArrowKeyNavigation:1,$StartIndex:0,$AutoPlay:0,$Loop:1,$HWA:d,$NaviQuitDrag:d,$AutoPlaySteps:1,$AutoPlayInterval:3e3,$PauseOnHover:1,$SlideDuration:500,$SlideEasing:g.$OutQuad,$MinDragOffsetToSlide:20,$DragRatio:1,$SlideSpacing:0,$UISearchMode:1,$PlayOrientation:1,$DragOrientation:1},f);m.$HWA=m.$HWA&&b.Wg();if(m.$Idle!=e)m.$AutoPlayInterval=m.$Idle;if(m.$DisplayPieces!=e)m.$Cols=m.$DisplayPieces;if(m.$ParkingPosition!=e)m.$Align=m.$ParkingPosition;t=m.$AutoPlay&63;!m.$UISearchMode;eb=m.$AutoPlaySteps;X=m.$PauseOnHover;X&=Ub?10:5;sc=m.$AutoPlayInterval;Gb=m.$SlideDuration;S=m.$PlayOrientation&3;vb=b.Kg(b.n(u,"dir"))=="rtl";Hb=vb&&(S==1||m.$DragOrientation&1);qb=Hb?-1:1;Cb=m.$SlideshowOptions;cb=b.F({$Class:p},m.$CaptionSliderOptions);jb=m.$BulletNavigatorOptions;W=m.$ArrowNavigatorOptions;J=m.$ThumbnailNavigatorOptions;var c=b.Cb(u);b.c(c,function(a,d){var c=b.db(a,"u");if(c=="loading")R=a;else{if(c=="slides"){w=a;b.O(w,"margin",0);b.O(w,"padding",0);b.kc(w,"flat")}if(c=="navigator")Lb=a;if(c=="arrowleft")bc=a;if(c=="arrowright")Yb=a;if(c=="thumbnavigator")wb=a;if(a.tagName!="STYLE"&&a.tagName!="SCRIPT")nc[c||d]=new Rc(a,c=="slides",b.Dd(["slides","thumbnavigator"])[c])}});R&&b.qb(R);R=R||b.Rb(h);zb=b.C(w);yb=b.D(w);I=m.$SlideWidth||zb;H=m.$SlideHeight||yb;gb={I:I,G:H,$Top:0,$Left:0,Rd:"block",Ob:"absolute"};P=m.$SlideSpacing;nb=I+P;ob=H+P;F=S&1?nb:ob;Bb=new Pc;b.n(u,Nb,"1");b.S(w,b.S(w)||0);b.wb(w,"absolute");T=b.fb(w,d);b.O(T,"pointerEvents","none");b.tb(T,w);b.J(T,Bb.$Elmt);b.ic(w,"hidden");if(Lb&&jb){jb.gc=vb;vc=new jb.$Class(Lb,jb,O,M);Y.push(vc)}if(W&&bc&&Yb){W.gc=vb;W.$Loop=m.$Loop;xc=new W.$Class(bc,Yb,W,a);Y.push(xc)}if(wb&&J){J.$StartIndex=m.$StartIndex;J.$ArrowKeyNavigation=J.$ArrowKeyNavigation||0;J.gc=vb;oc=new J.$Class(wb,J,R);!J.$NoDrag&&b.n(wb,ic,"1");Y.push(oc)}uc(d);a.$ScaleSize(O,M);Tb();ub(v(m.$StartIndex));b.O(u,"visibility","visible")};a.$Destroy=function(){t=0;b.$Destroy(x,Y,Ec);b.Qb(u)};b.B(a)};j.$EVT_CLICK=21;j.$EVT_DRAG_START=22;j.$EVT_DRAG_END=23;j.$EVT_SWIPE_START=24;j.$EVT_SWIPE_END=25;j.$EVT_LOAD_START=26;j.$EVT_LOAD_END=27;j.Jf=28;j.$EVT_MOUSE_ENTER=31;j.$EVT_MOUSE_LEAVE=32;j.$EVT_POSITION_CHANGE=202;j.$EVT_PARK=203;j.$EVT_SLIDESHOW_START=206;j.$EVT_SLIDESHOW_END=207;j.$EVT_PROGRESS_CHANGE=208;j.$EVT_STATE_CHANGE=209}(window,document,Math,null,true,false);
| ver. 1.4 |
Github
|
.
| PHP 8.1.2-1ubuntu2.19 | Генерация страницы: 0.01 |
proxy
|
phpinfo
|
Настройка