{
  "version": 3,
  "sources": ["/cdn/shop/t/14/assets/theme.js?a=1789188610"],
  "sourcesContent": ["window.theme = window.theme || {};\nwindow.slate = window.slate || {};\n\nfunction debounce(func, wait) {\n  let timeout;\n  return function(...args) {\n    const context = this;\n    clearTimeout(timeout);\n    timeout = setTimeout(() => func.apply(context, args), wait);\n  };\n}\n\n/* ================ SLATE ================ */\ntheme.Sections = function Sections() {\n  this.constructors = {};\n  this.instances = [];\n\n  $(document)\n    .on('shopify:section:load', this._onSectionLoad.bind(this))\n    .on('shopify:section:unload', this._onSectionUnload.bind(this))\n    .on('shopify:section:select', this._onSelect.bind(this))\n    .on('shopify:section:deselect', this._onDeselect.bind(this))\n    .on('shopify:block:select', this._onBlockSelect.bind(this))\n    .on('shopify:block:deselect', this._onBlockDeselect.bind(this));\n};\n\ntheme.Sections.prototype = _.assignIn({}, theme.Sections.prototype, {\n  _createInstance: function(container, constructor) {\n    var $container = $(container);\n    var id = $container.attr('data-section-id');\n    var type = $container.attr('data-section-type');\n\n    constructor = constructor || this.constructors[type];\n\n    if (_.isUndefined(constructor)) {\n      return;\n    }\n\n    var instance = _.assignIn(new constructor(container), {\n      id: id,\n      type: type,\n      container: container\n    });\n\n    this.instances.push(instance);\n  },\n\n  _onSectionLoad: function(evt) {\n    var container = $('[data-section-id]', evt.target)[0];\n    if (container) {\n      this._createInstance(container);\n    }\n    if (AOS) {\n      AOS.refreshHard();\n    }\n  },\n  _loadSubSections: function() {\n    if (AOS) {\n      AOS.refreshHard();\n    }\n  },\n  _onSectionUnload: function(evt) {\n    this.instances = _.filter(this.instances, function(instance) {\n      var isEventInstance = instance.id === evt.detail.sectionId;\n\n      if (isEventInstance) {\n        if (_.isFunction(instance.onUnload)) {\n          instance.onUnload(evt);\n        }\n      }\n\n      return !isEventInstance;\n    });\n  },\n\n  _onSelect: function(evt) {\n    // eslint-disable-next-line no-shadow\n    var instance = _.find(this.instances, function(instance) {\n      return instance.id === evt.detail.sectionId;\n    });\n\n    if (!_.isUndefined(instance) && _.isFunction(instance.onSelect)) {\n      instance.onSelect(evt);\n    }\n  },\n\n  _onDeselect: function(evt) {\n    // eslint-disable-next-line no-shadow\n    var instance = _.find(this.instances, function(instance) {\n      return instance.id === evt.detail.sectionId;\n    });\n\n    if (!_.isUndefined(instance) && _.isFunction(instance.onDeselect)) {\n      instance.onDeselect(evt);\n    }\n  },\n\n  _onBlockSelect: function(evt) {\n    // eslint-disable-next-line no-shadow\n    var instance = _.find(this.instances, function(instance) {\n      return instance.id === evt.detail.sectionId;\n    });\n\n    if (!_.isUndefined(instance) && _.isFunction(instance.onBlockSelect)) {\n      instance.onBlockSelect(evt);\n    }\n  },\n\n  _onBlockDeselect: function(evt) {\n    // eslint-disable-next-line no-shadow\n    var instance = _.find(this.instances, function(instance) {\n      return instance.id === evt.detail.sectionId;\n    });\n\n    if (!_.isUndefined(instance) && _.isFunction(instance.onBlockDeselect)) {\n      instance.onBlockDeselect(evt);\n    }\n  },\n\n  register: function(type, constructor) {\n    this.constructors[type] = constructor;\n\n    $('[data-section-type=' + type + ']').each(\n      function(index, container) {\n        this._createInstance(container, constructor);\n      }.bind(this)\n    );\n  }\n});\n\nwindow.slate = window.slate || {};\n\n/**\n * iFrames\n * -----------------------------------------------------------------------------\n * Wrap videos in div to force responsive layout.\n *\n * @namespace iframes\n */\n\nslate.rte = {\n  wrapTable: function() {\n    $('.rte table').wrap('<div class=\"rte__table-wrapper\"></div>');\n  },\n\n  iframeReset: function() {\n    var $iframeVideo = $(\n      '.rte iframe[src*=\"youtube.com/embed\"], .rte iframe[src*=\"player.vimeo\"]'\n    );\n    var $iframeReset = $iframeVideo.add('.rte iframe#admin_bar_iframe');\n\n    $iframeVideo.each(function() {\n      // Add wrapper to make video responsive\n      $(this).wrap('<div class=\"video-wrapper\"></div>');\n    });\n\n    $iframeReset.each(function() {\n      // Re-set the src attribute on each iframe after page load\n      // for Chrome's \"incorrect iFrame content on 'back'\" bug.\n      // https://code.google.com/p/chromium/issues/detail?id=395791\n      // Need to specifically target video and admin bar\n      this.src = this.src;\n    });\n  }\n};\n\nwindow.slate = window.slate || {};\n\n/**\n * A11y Helpers\n * -----------------------------------------------------------------------------\n * A collection of useful functions that help make your theme more accessible\n * to users with visual impairments.\n *\n *\n * @namespace a11y\n */\n\nslate.a11y = {\n  /**\n   * For use when focus shifts to a container rather than a link\n   * eg for In-page links, after scroll, focus shifts to content area so that\n   * next `tab` is where user expects if focusing a link, just $link.focus();\n   *\n   * @param {JQuery} $element - The element to be acted upon\n   */\n  pageLinkFocus: function($element) {\n    var focusClass = 'js-focus-hidden';\n\n    $element\n      .first()\n      .attr('tabIndex', '-1')\n      .focus()\n      .addClass(focusClass)\n      .one('blur', callback);\n\n    function callback() {\n      $element\n        .first()\n        .removeClass(focusClass)\n        .removeAttr('tabindex');\n    }\n  },\n\n  /**\n   * If there's a hash in the url, focus the appropriate element\n   */\n  focusHash: function() {\n    var hash = window.location.hash;\n\n    // is there a hash in the url? is it an element on the page?\n    if (hash && document.getElementById(hash.slice(1))) {\n      this.pageLinkFocus($(hash));\n    }\n  },\n\n  /**\n   * When an in-page (url w/hash) link is clicked, focus the appropriate element\n   */\n  bindInPageLinks: function() {\n    $('a[href*=#]').on(\n      'click',\n      function(evt) {\n        this.pageLinkFocus($(evt.currentTarget.hash));\n      }.bind(this)\n    );\n  },\n\n  /**\n   * Traps the focus in a particular container\n   *\n   * @param {object} options - Options to be used\n   * @param {jQuery} options.$container - Container to trap focus within\n   * @param {jQuery} options.$elementToFocus - Element to be focused when focus leaves container\n   * @param {string} options.namespace - Namespace used for new focus event handler\n   */\n  trapFocus: function(options) {\n    var eventName = options.namespace\n      ? 'focusin.' + options.namespace\n      : 'focusin';\n\n    if (!options.$elementToFocus) {\n      options.$elementToFocus = options.$container;\n    }\n\n    options.$container.attr('tabindex', '-1');\n    options.$elementToFocus.focus();\n\n    $(document).on(eventName, function(evt) {\n      if (\n        options.$container[0] !== evt.target &&\n        !options.$container.has(evt.target).length\n      ) {\n        options.$container.focus();\n      }\n    });\n  },\n\n  /**\n   * Removes the trap of focus in a particular container\n   *\n   * @param {object} options - Options to be used\n   * @param {jQuery} options.$container - Container to trap focus within\n   * @param {string} options.namespace - Namespace used for new focus event handler\n   */\n  removeTrapFocus: function(options) {\n    var eventName = options.namespace\n      ? 'focusin.' + options.namespace\n      : 'focusin';\n\n    if (options.$container && options.$container.length) {\n      options.$container.removeAttr('tabindex');\n    }\n\n    $(document).off(eventName);\n  }\n};\n\n/**\n * Currency Helpers\n * -----------------------------------------------------------------------------\n * A collection of useful functions that help with currency formatting\n *\n * Current contents\n * - formatMoney - Takes an amount in cents and returns it as a formatted dollar value.\n *\n * Alternatives\n * - Accounting.js - http://openexchangerates.github.io/accounting.js/\n *\n */\n\ntheme.Currency = (function() {\n  var moneyFormat = '${{amount}}'; // eslint-disable-line camelcase\n\n  function formatMoney(cents, format) {\n    if (typeof cents === 'string') {\n      cents = cents.replace('.', '');\n    }\n    var value = '';\n    var placeholderRegex = /\\{\\{\\s*(\\w+)\\s*\\}\\}/;\n    var formatString = format || moneyFormat;\n\n    function formatWithDelimiters(number, precision, thousands, decimal) {\n      thousands = thousands || ',';\n      decimal = decimal || '.';\n\n      if (isNaN(number) || number === null) {\n        return 0;\n      }\n\n      number = (number / 100.0).toFixed(precision);\n\n      var parts = number.split('.');\n      var dollarsAmount = parts[0].replace(\n        /(\\d)(?=(\\d\\d\\d)+(?!\\d))/g,\n        '$1' + thousands\n      );\n      var centsAmount = parts[1] ? decimal + parts[1] : '';\n\n      return dollarsAmount + centsAmount;\n    }\n\n    switch (formatString.match(placeholderRegex)[1]) {\n      case 'amount':\n        value = formatWithDelimiters(cents, 2);\n        break;\n      case 'amount_no_decimals':\n        value = formatWithDelimiters(cents, 0);\n        break;\n      case 'amount_with_comma_separator':\n        value = formatWithDelimiters(cents, 2, '.', ',');\n        break;\n      case 'amount_no_decimals_with_comma_separator':\n        value = formatWithDelimiters(cents, 0, '.', ',');\n        break;\n      case 'amount_no_decimals_with_space_separator':\n        value = formatWithDelimiters(cents, 0, ' ');\n        break;\n      case 'amount_with_apostrophe_separator':\n        value = formatWithDelimiters(cents, 2, \"'\");\n        break;\n    }\n    return formatString.replace(placeholderRegex, value);\n  }\n\n  return {\n    formatMoney: formatMoney\n  };\n})();\n\n/**\n * Image Helper Functions\n * -----------------------------------------------------------------------------\n * A collection of functions that help with basic image operations.\n *\n */\n\ntheme.Images = (function() {\n  /**\n   * Preloads an image in memory and uses the browsers cache to store it until needed.\n   *\n   * @param {Array} images - A list of image urls\n   * @param {String} size - A shopify image size attribute\n   */\n\n  function preload(images, size) {\n    if (typeof images === 'string') {\n      images = [images];\n    }\n\n    for (var i = 0; i < images.length; i++) {\n      var image = images[i];\n      this.loadImage(this.getSizedImageUrl(image, size));\n    }\n  }\n\n  /**\n   * Loads and caches an image in the browsers cache.\n   * @param {string} path - An image url\n   */\n  function loadImage(path) {\n    new Image().src = path;\n  }\n\n  /**\n   * Swaps the src of an image for another OR returns the imageURL to the callback function\n   * @param image\n   * @param element\n   * @param callback\n   */\n  function switchImage(image, element, callback) {\n    var size = this.imageSize(element.src);\n    var imageUrl = this.getSizedImageUrl(image.src, size);\n\n    if (callback) {\n      callback(imageUrl, image, element); // eslint-disable-line callback-return\n    } else {\n      element.src = imageUrl;\n    }\n  }\n\n  /**\n   * +++ Useful\n   * Find the Shopify image attribute size\n   *\n   * @param {string} src\n   * @returns {null}\n   */\n  function imageSize(src) {\n    src = src || '';\n\n    var match = src.match(\n      /.+_((?:pico|icon|thumb|small|compact|medium|large|grande)|\\d{1,4}x\\d{0,4}|x\\d{1,4})[_\\\\.@]/\n    );\n\n    if (match === null) {\n      return null;\n    } else {\n      return match[1];\n    }\n  }\n\n  /**\n   * +++ Useful\n   * Adds a Shopify size attribute to a URL\n   *\n   * @param src\n   * @param size\n   * @returns {*}\n   */\n  function getSizedImageUrl(src, size) {\n    if (size === null) {\n      return src;\n    }\n\n    if (size === 'master') {\n      return this.removeProtocol(src);\n    }\n\n    var match = src.match(\n      /\\.(jpg|jpeg|gif|png|bmp|bitmap|tiff|tif)(\\?v=\\d+)?$/i\n    );\n\n    if (match !== null) {\n      var prefix = src.split(match[0]);\n      var suffix = match[0];\n\n      return this.removeProtocol(prefix[0] + '_' + size + suffix);\n    }\n\n    return null;\n  }\n\n  function removeProtocol(path) {\n    return path.replace(/http(s)?:/, '');\n  }\n\n  return {\n    preload: preload,\n    loadImage: loadImage,\n    switchImage: switchImage,\n    imageSize: imageSize,\n    getSizedImageUrl: getSizedImageUrl,\n    removeProtocol: removeProtocol\n  };\n})();\n\n/**\n * Variant Selection scripts\n * ------------------------------------------------------------------------------\n *\n * Handles change events from the variant inputs in any `cart/add` forms that may\n * exist.  Also updates the master select and triggers updates when the variants\n * price or image changes.\n *\n * @namespace variants\n */\n\nslate.Variants = (function() {\n  /**\n   * Variant constructor\n   *\n   * @param {object} options - Settings from `product.js`\n   */\n  function Variants(options) {\n    this.$container = options.$container;\n    this.product = options.product;\n    this.singleOptionSelector = options.singleOptionSelector;\n    this.originalSelectorId = options.originalSelectorId;\n    this.enableHistoryState = options.enableHistoryState;\n    this.currentVariant = this._getVariantFromOptions();\n    \n    $(this.singleOptionSelector, this.$container).on(\n      'change',\n      this._onSelectChange.bind(this)\n    );\n  }\n\n  Variants.prototype = _.assignIn({}, Variants.prototype, {\n    /**\n     * Get the currently selected options from add-to-cart form. Works with all\n     * form input elements.\n     *\n     * @return {array} options - Values of currently selected variants\n     */\n    _getCurrentOptions: function() {\n      var currentOptions = _.map(\n        $(this.singleOptionSelector, this.$container),\n        function(element) {\n          var $element = $(element);\n          var type = $element.attr('type');\n          var currentOption = {};\n\n          if (type === 'radio' || type === 'checkbox') {\n            if ($element[0].checked) {\n              currentOption.value = $element.val();\n              currentOption.index = $element.data('index');\n\n              return currentOption;\n            } else {\n              return false;\n            }\n          } else {\n            currentOption.value = $element.val();\n            currentOption.index = $element.data('index');\n\n            return currentOption;\n          }\n        }\n      );\n\n      // remove any unchecked input values if using radio buttons or checkboxes\n      currentOptions = _.compact(currentOptions);\n\n      return currentOptions;\n    },\n\n    /**\n     * Find variant based on selected values.\n     *\n     * @param  {array} selectedValues - Values of variant inputs\n     * @return {object || undefined} found - Variant object from product.variants\n     */\n    _getVariantFromOptions: function() {\n      var selectedValues = this._getCurrentOptions();\n      var variants = this.product.variants;\n\n      for (var e = selectedValues, s = variants, found = _.find(s, function(variant) {\n        return e.every(function(values) {\n          return _.isEqual(variant[values.index], values.value)\n        })\n      }), r = 0; r < e.length; r++) {\n      var t = r + 1;\n      $(\".js-swatch-display--\" + t).text(e[r].value)\n    }\n      return found;\n    },\n\n    /**\n     * Event handler for when a variant input changes.\n     */\n    _onSelectChange: function() {\n      var variant = this._getVariantFromOptions();\n\n      this.$container.trigger({\n        type: 'variantChange',\n        variant: variant\n      });\n\n      if (!variant) {\n        return;\n      }\n\n      this._updateMasterSelect(variant);\n      this._updateImages(variant);\n      this._updatePrice(variant);\n      this._updateSKU(variant);\n      this.currentVariant = variant;\n\n      if (this.enableHistoryState) {\n        this._updateHistoryState(variant);\n      }\n    },\n\n    /**\n     * Trigger event when variant image changes\n     *\n     * @param  {object} variant - Currently selected variant\n     * @return {event}  variantImageChange\n     */\n    _updateImages: function(variant) {\n      var variantImage = variant.featured_image || {};\n      var currentVariantImage = this.currentVariant.featured_image || {};\n\n      if (\n        !variant.featured_image ||\n        variantImage.src === currentVariantImage.src\n      ) {\n        return;\n      }\n\n      this.$container.trigger({\n        type: 'variantImageChange',\n        variant: variant\n      });\n    },\n\n    /**\n     * Trigger event when variant price changes.\n     *\n     * @param  {object} variant - Currently selected variant\n     * @return {event} variantPriceChange\n     */\n    _updatePrice: function(variant) {\n      if (\n        variant.price === this.currentVariant.price &&\n        variant.compare_at_price === this.currentVariant.compare_at_price\n      ) {\n        return;\n      }\n\n      this.$container.trigger({\n        type: 'variantPriceChange',\n        variant: variant\n      });\n    },\n\n    /**\n     * Trigger event when variant sku changes.\n     *\n     * @param  {object} variant - Currently selected variant\n     * @return {event} variantSKUChange\n     */\n    _updateSKU: function(variant) {\n      if (variant.sku === this.currentVariant.sku) {\n        return;\n      }\n\n      this.$container.trigger({\n        type: 'variantSKUChange',\n        variant: variant\n      });\n    },\n    /**\n     * Update history state for product deeplinking\n     *\n     * @param  {variant} variant - Currently selected variant\n     * @return {k}         [description]\n     */\n    _updateHistoryState: function(variant) {\n      if (!history.replaceState || !variant) {\n        return;\n      }\n\n      var newurl =\n        window.location.protocol +\n        '//' +\n        window.location.host +\n        window.location.pathname +\n        '?variant=' +\n        variant.id;\n      window.history.replaceState({ path: newurl }, '', newurl);\n    },\n\n    /**\n     * Update hidden master select of variant change\n     *\n     * @param  {variant} variant - Currently selected variant\n     */\n    _updateMasterSelect: function(variant) {\n      $(this.originalSelectorId, this.$container).val(variant.id);\n    }\n  });\n\n  return Variants;\n})();\n\n\n/*================ MODULES ================*/\ntheme.Drawers = (function() {\n  var Drawer = function(id, position, options) {\n    var defaults = {\n      close: '.js-drawer-close',\n      open: '.js-drawer-open-' + position,\n      openClass: 'js-drawer-open',\n      dirOpenClass: 'js-drawer-open-' + position\n    };\n\n    this.nodes = {\n      $parent: $('body, html'),\n      $page: $('.page-element')\n    };\n\n    this.config = $.extend(defaults, options);\n    this.position = position;\n\n    this.$drawer = $('#' + id);\n    if (!this.$drawer.length) {\n      return false;\n    }\n\n    this.drawerIsOpen = false;\n    this.init();\n  };\n\n  Drawer.prototype.init = function() {\n    $(this.config.open).on('click', $.proxy(this.open, this));\n    this.$drawer.on('click', this.config.close, $.proxy(this.close, this));\n    \n  };\n\n  Drawer.prototype.open = function(evt) {\n    // Keep track if drawer was opened from a click, or called by another function\n    var externalCall = false;\n\n    // Prevent following href if link is clicked\n    if (evt) {\n      evt.preventDefault();\n    } else {\n      externalCall = true;\n    }\n\n    // Without this, the drawer opens, the click event bubbles up to $nodes.page\n    // which closes the drawer.\n    if (evt && evt.stopPropagation) {\n      evt.stopPropagation();\n      // save the source of the click, we'll focus to this on close\n      this.$activeSource = $(evt.currentTarget);\n    }\n\n    if (this.drawerIsOpen && !externalCall) {\n      return this.close();\n    }\n\n    // Add is-transitioning class to moved elements on open so drawer can have\n    // transition for close animation\n    this.$drawer.prepareTransition();\n\n    this.nodes.$parent.addClass(\n      this.config.openClass + ' ' + this.config.dirOpenClass\n      \n    );\n    this.drawerIsOpen = true;\n\n    // Set focus on drawer\n    this.trapFocus({\n      $container: this.$drawer,\n      $elementToFocus: this.$drawer.find('.drawer__close-button'),\n      namespace: 'drawer_focus'\n    });\n\n    // Run function when draw opens if set\n    if (\n      this.config.onDrawerOpen &&\n      typeof this.config.onDrawerOpen === 'function'\n    ) {\n      if (!externalCall) {\n        this.config.onDrawerOpen();\n      }\n    }\n\n    if (this.$activeSource && this.$activeSource.attr('aria-expanded')) {\n      this.$activeSource.attr('aria-expanded', 'true');\n    }\n\n    this.nodes.$parent.on(\n      'keyup.drawer',\n      $.proxy(function(evt) {\n        // close on 'esc' keypress\n        if (evt.keyCode !== 27) return;\n\n        this.close();\n      }, this)\n    );\n\n    // Lock scrolling on mobile\n    this.nodes.$page.on('touchmove.drawer', function() {\n      return false;\n    });\n\n    this.nodes.$page.on(\n      'click.drawer',\n      $.proxy(function() {\n        this.close();\n        return false;\n      }, this)\n    );\n  };\n\n  Drawer.prototype.close = function() {\n    if (!this.drawerIsOpen) return;\n\n    // deselect any focused form elements\n    $(document.activeElement).trigger('blur');\n\n    // Ensure closing transition is applied to moved elements, like the nav\n    this.$drawer.prepareTransition();\n\n    this.nodes.$parent.removeClass(\n      this.config.dirOpenClass + ' ' + this.config.openClass\n    );\n\n    this.drawerIsOpen = false;\n\n    // Remove focus on drawer\n    this.removeTrapFocus({\n      $container: this.$drawer,\n      namespace: 'drawer_focus'\n    });\n\n    this.nodes.$page.off('.drawer');\n    this.nodes.$parent.off('.drawer');\n  };\n\n  /**\n  * Traps the focus in a particular container\n  *\n  * @param {object} options - Options to be used\n  * @param {jQuery} options.$container - Container to trap focus within\n  * @param {jQuery} options.$elementToFocus - Element to be focused when focus leaves container\n  * @param {string} options.namespace - Namespace used for new focus event handler\n  */\n  Drawer.prototype.trapFocus = function(options) {\n    var eventName = options.namespace\n      ? 'focusin.' + options.namespace\n      : 'focusin';\n\n    if (!options.$elementToFocus) {\n      options.$elementToFocus = options.$container;\n    }\n\n    options.$container.attr('tabindex', '-1');\n    options.$elementToFocus.focus();\n\n    $(document).on(eventName, function(evt) {\n      if (\n        options.$container[0] !== evt.target &&\n        !options.$container.has(evt.target).length\n      ) {\n        options.$container.focus();\n      }\n    });\n  };\n\n  /**\n   * Removes the trap of focus in a particular container\n   *\n   * @param {object} options - Options to be used\n   * @param {jQuery} options.$container - Container to trap focus within\n   * @param {string} options.namespace - Namespace used for new focus event handler\n   */\n  Drawer.prototype.removeTrapFocus = function(options) {\n    var eventName = options.namespace\n      ? 'focusin.' + options.namespace\n      : 'focusin';\n\n    if (options.$container && options.$container.length) {\n      options.$container.removeAttr('tabindex');\n    }\n\n    $(document).off(eventName);\n  };\n\n  return Drawer;\n})();\n\nwindow.Modals = (function() {\n  var Modal = function(id, name, options) {\n    var defaults = {\n      close: '.js-modal-close',\n      open: '.js-modal-open-' + name,\n      openClass: 'modal--is-active'\n    };\n\n    this.$modal = $('#' + id);\n\n    if (!this.$modal.length) {\n      return false;\n    }\n\n    this.nodes = {\n      $body: $('body')\n    };\n\n    this.config = $.extend(defaults, options);\n\n    this.modalIsOpen = false;\n    this.$focusOnOpen = this.config.focusOnOpen\n      ? $(this.config.focusOnOpen)\n      : this.$modal;\n    this.init();\n  };\n\n  Modal.prototype.init = function() {\n    var $openBtn = $(this.config.open);\n\n    // Add aria controls\n    $openBtn.attr('aria-expanded', 'false');\n\n    $(this.config.open).on('click', $.proxy(this.open, this));\n    this.$modal.find(this.config.close).on('click', $.proxy(this.close, this));\n  };\n\n  Modal.prototype.open = function(evt) {\n    // Keep track if modal was opened from a click, or called by another function\n    var externalCall = false;\n\n    // don't open an opened modal\n    if (this.modalIsOpen) {\n      return;\n    }\n\n    // Prevent following href if link is clicked\n    if (evt) {\n      evt.preventDefault();\n    } else {\n      externalCall = true;\n    }\n\n    // Without this, the modal opens, the click event bubbles up to $nodes.page\n    // which closes the modal.\n    if (evt && evt.stopPropagation) {\n      evt.stopPropagation();\n      // save the source of the click, we'll focus to this on close\n      this.$activeSource = $(evt.currentTarget);\n    }\n\n    if (this.modalIsOpen && !externalCall) {\n      return this.close();\n    }\n\n    this.$modal.prepareTransition().addClass(this.config.openClass);\n    this.nodes.$body.addClass(this.config.openClass);\n\n    this.modalIsOpen = true;\n\n    // Set focus on modal\n    slate.a11y.trapFocus({\n      $container: this.$modal,\n      namespace: 'modal_focus',\n      $elementToFocus: this.$focusOnOpen\n    });\n\n    if (this.$activeSource && this.$activeSource.attr('aria-expanded')) {\n      this.$activeSource.attr('aria-expanded', 'true');\n    }\n\n    this.bindEvents();\n  };\n\n  Modal.prototype.close = function() {\n    // don't close a closed modal\n    if (!this.modalIsOpen) {\n      return;\n    }\n\n    // deselect any focused form elements\n    $(document.activeElement).trigger('blur');\n\n    this.$modal.prepareTransition().removeClass(this.config.openClass);\n    this.nodes.$body.removeClass(this.config.openClass);\n\n    this.modalIsOpen = false;\n\n    // Remove focus on modal\n    slate.a11y.removeTrapFocus({\n      $container: this.$modal,\n      namespace: 'modal_focus'\n    });\n\n    if (this.$activeSource && this.$activeSource.attr('aria-expanded')) {\n      this.$activeSource.attr('aria-expanded', 'false').focus();\n    }\n\n    this.unbindEvents();\n  };\n\n  Modal.prototype.bindEvents = function() {\n    // Pressing escape closes modal\n    this.nodes.$body.on(\n      'keyup.modal',\n      $.proxy(function(evt) {\n        if (evt.keyCode === 27) {\n          this.close();\n        }\n      }, this)\n    );\n  };\n\n  Modal.prototype.unbindEvents = function() {\n    this.nodes.$body.off('.modal');\n  };\n\n  return Modal;\n})();\n\nwindow.QtySelector = (function() {\n  var QtySelector = function($el) {\n    this.cache = {\n      $body: $('body'),\n      $subtotal: $('#CartSubtotal'),\n      $discountTotal: $('#cartDiscountTotal'),\n      $cartTable: $('.cart-table'),\n      $cartTemplate: $('#CartProducts')\n    };\n\n    this.settings = {\n      loadingClass: 'js-qty--is-loading',\n      isCartTemplate: this.cache.$body.hasClass('template-cart'),\n      // On the cart template, minimum is 0. Elsewhere min is 1\n      minQty: this.cache.$body.hasClass('template-cart') ? 0 : 1\n    };\n\n    this.$el = $el;\n    this.qtyUpdateTimeout;\n    this.createInputs();\n    this.bindEvents();\n  };\n\n  QtySelector.prototype.createInputs = function() {\n    var $el = this.$el;\n\n    var data = {\n      value: $el.val(),\n      key: $el.attr('id'),\n      name: $el.attr('name'),\n      line: $el.attr('data-line')\n    };\n    var source = $('#QuantityTemplate').html();\n    var template = Handlebars.compile(source);\n\n    this.$wrapper = $(template(data)).insertBefore($el);\n\n    // Remove original number input\n    $el.remove();\n  };\n\n  QtySelector.prototype.validateAvailability = function(line, quantity) {\n    var product = theme.cartObject.items[line - 1]; // 0-based index in API\n    var handle = product.handle; // needed for the ajax request\n    var id = product.id; // needed to find right variant from ajax results\n\n    var params = {\n      type: 'GET',\n      url: '/products/' + handle + '.js',\n      dataType: 'json',\n      success: $.proxy(function(cartProduct) {\n        this.validateAvailabilityCallback(line, quantity, id, cartProduct);\n      }, this)\n    };\n\n    $.ajax(params);\n  };\n\n  QtySelector.prototype.validateAvailabilityCallback = function(\n    line,\n    quantity,\n    id,\n    product\n  ) {\n    var quantityIsAvailable = true;\n\n    // This returns all variants of a product.\n    // Loop through them to get our desired one.\n    for (var i = 0; i < product.variants.length; i++) {\n      var variant = product.variants[i];\n      if (variant.id === id) {\n        break;\n      }\n    }\n\n    // If the variant tracks inventory and does not sell when sold out\n    // we can compare the requested with available quantity\n    if (\n      variant.inventory_management !== null &&\n      variant.inventory_policy === 'deny'\n    ) {\n      if (variant.inventory_quantity < quantity) {\n\n        // Set quantity to max amount available\n        this.$wrapper.find('.js-qty__input').val(variant.inventory_quantity);\n\n        quantityIsAvailable = false;\n        this.$wrapper.removeClass(this.settings.loadingClass);\n      }\n    }\n\n    if (quantityIsAvailable) {\n      this.updateItemQuantity(line, quantity);\n    }\n  };\n\n  QtySelector.prototype.validateQty = function(qty) {\n    if (parseFloat(qty) === parseInt(qty, 10) && !isNaN(qty)) {\n      // We have a valid number!\n    } else {\n      // Not a number. Default to 1.\n      qty = 1;\n    }\n    return parseInt(qty, 10);\n  };\n\n  QtySelector.prototype.adjustQty = function(evt) {\n    var $el = $(evt.currentTarget);\n    var $input = $el.siblings('.js-qty__input');\n    var qty = this.validateQty($input.val());\n    var line = $input.attr('data-line');\n\n    if ($el.hasClass('js-qty__adjust--minus')) {\n      qty -= 1;\n      if (qty <= this.settings.minQty) {\n        qty = this.settings.minQty;\n      }\n    } else {\n      qty += 1;\n    }\n\n    if (this.settings.isCartTemplate) {\n      $el.parent().addClass(this.settings.loadingClass);\n      this.updateCartItemPrice(line, qty);\n    } else {\n      $input.val(qty);\n    }\n  };\n\n  QtySelector.prototype.bindEvents = function() {\n    this.$wrapper\n      .find('.js-qty__adjust')\n      .on('click', $.proxy(this.adjustQty, this));\n\n    // Select input text on click\n    this.$wrapper.on('click', '.js-qty__input', function() {\n      this.setSelectionRange(0, this.value.length);\n    });\n\n    // If the quantity changes on the cart template, update the price\n    if (this.settings.isCartTemplate) {\n      this.$wrapper.on(\n        'change',\n        '.js-qty__input',\n        $.proxy(function(evt) {\n          var $input = $(evt.currentTarget);\n          var line = $input.attr('data-line');\n          var qty = this.validateQty($input.val());\n          $input.parent().addClass(this.settings.loadingClass);\n          this.updateCartItemPrice(line, qty);\n        }, this)\n      );\n    }\n  };\n\n  QtySelector.prototype.updateCartItemPrice = function(line, qty) {\n    // Update cart after short timeout so user doesn't create simultaneous ajax calls\n    clearTimeout(this.qtyUpdateTimeout);\n    this.qtyUpdateTimeout = setTimeout(\n      $.proxy(function() {\n        this.validateAvailability(line, qty);\n      }, this),\n      200\n    );\n  };\n\n  QtySelector.prototype.updateItemQuantity = function(line, quantity) {\n    var params = {\n      type: 'POST',\n      url: '/cart/change.js',\n      data: 'quantity=' + quantity + '&line=' + line,\n      dataType: 'json',\n      success: $.proxy(function(cart) {\n        this.updateCartItemCallback(cart);\n      }, this)\n    };\n\n    $.ajax(params);\n  };\n\n  QtySelector.prototype.updateCartItemCallback = function(cart) {\n    // Reload the page to show the empty cart if no items\n    if (cart.item_count === 0) {\n      location.reload();\n      return;\n    }\n\n    // Update cart object\n    theme.cartObject = cart;\n\n    // Handlebars.js cart layout\n    var data = {};\n    var items = [];\n    var item = {};\n    var source = $('#CartProductTemplate').html();\n    var template = Handlebars.compile(source);\n    var prodImg;\n\n    // Add each item to our handlebars.js data\n    $.each(cart.items, function(index, cartItem) {\n      /* Hack to get product image thumbnail\n       *   - If image is not null\n       *     - Remove file extension, add 240x240, and re-add extension\n       *     - Create server relative link\n       *   - A hard-coded url of no-image\n       */\n\n      if (cartItem.image === null) {\n        prodImg =\n          '//cdn.shopify.com/s/assets/admin/no-image-medium-cc9732cb976dd349a0df1d39816fbcc7.gif';\n      } else {\n        prodImg = cartItem.image\n          .replace(/(\\.[^.]*)$/, '_240x240$1')\n          .replace('http:', '');\n      }\n\n      if (cartItem.properties !== null) {\n        $.each(cartItem.properties, function(key, value) {\n          if (key.charAt(0) === '_' || !value) {\n            delete cartItem.properties[key];\n          }\n        });\n      }\n\n      // Create item's data object and add to 'items' array\n      item = {\n        key: cartItem.key,\n        line: index + 1, // Shopify uses a 1+ index in the API\n        url: cartItem.url,\n        img: prodImg,\n        name: cartItem.product_title,\n        variation: cartItem.variant_title,\n        properties: cartItem.properties,\n        itemQty: cartItem.quantity,\n        price: theme.Currency.formatMoney(cartItem.price, theme.moneyFormat),\n        vendor: cartItem.vendor,\n        linePrice: theme.Currency.formatMoney(\n          cartItem.line_price,\n          theme.moneyFormat\n        ),\n        originalLinePrice: theme.Currency.formatMoney(\n          cartItem.original_line_price,\n          theme.moneyFormat\n        ),\n        discounts: cartItem.discounts,\n        discountsApplied:\n          cartItem.line_price === cartItem.original_line_price ? false : true\n      };\n\n      items.push(item);\n      //theme.updateCurrencies();\n    });\n\n    // Gather all cart data and add to DOM\n    data = {\n      items: items\n    };\n    this.cache.$cartTemplate.empty().append(template(data));\n\n    // Create new quantity selectors\n    this.cache.$cartTable.find('input[type=\"number\"]').each(function(i, el) {\n      new QtySelector($(el));\n    });\n\n    // Update the cart subtotal\n    this.cache.$subtotal.html(\n      theme.Currency.formatMoney(cart.total_price, theme.moneyFormat)\n    );\n\n    // Update the cart total discounts\n    if (cart.total_discount > 0) {\n      this.cache.$discountTotal.html(\n        theme.strings.totalCartDiscount.replace(\n          '[savings]',\n          theme.Currency.formatMoney(cart.total_discount, theme.moneyFormat)\n        )\n      );\n    } else {\n      this.cache.$discountTotal.empty();\n    }\n    \n    theme.miniCart.updateElements();\n    //theme.updateCurrencies();\n    // Set focus on cart table\n    slate.a11y.pageLinkFocus(this.cache.$cartTable);\n  };\n\n  return QtySelector;\n})();\n\n/*\n  Allow product to be added to cart via ajax with\n  custom success and error responses.\n*/\nwindow.AjaxCart = (function() {\n  var styleCart = $('.js-mini-cart').attr(\"data-cartmini\");\n  var cart = function($form) {\n    this.cache = {\n      $cartIconIndicator: $('.site-header__cart-indicator')\n    };\n\n    this.$form = $form;\n    this.eventListeners();\n    \n    this.showNotice = false;\n    if (this.$form.length) {\n      this.showNotice  = this.$form.hasClass('js-form--notice')? true : false;\n    }\n  };\n\n  cart.prototype.eventListeners = function() {\n    if (this.$form.length) {\n      this.$form.on('submit', $.proxy(this.addItemFromForm, this));\n    }\n  };\n\n  cart.prototype.addItemFromForm = function(evt) {\n    evt.preventDefault();\n    var $form = this.$form;\n    var $submitButton = $form.find('button[type=\"submit\"]');\n    $submitButton.addClass('is-loading');\n    var params = {\n      type: 'POST',\n      url: '/cart/add.js',\n      data: this.$form.serialize(),\n      dataType: 'json',\n      success: $.proxy(function(lineItem) {\n        this.success(lineItem);\n      }, this),\n      error: $.proxy(function(XMLHttpRequest, textStatus) {\n        this.error(XMLHttpRequest, textStatus);\n      }, this),\n      complete: function() {\n        $submitButton.removeClass('is-loading');\n      }\n    };\n    $.ajax(params);\n  };\n  \n  cart.prototype.success = function(item) {\n    theme.miniCart.updateElements();\n    theme.miniCart.generateCart();\n    if(styleCart != 'true' ){\n      if (this.showNotice) {\n        var htmlVariant = item.variant_title !== null ? '<i>('+item.variant_title+')</i>' : '';\n        var htmlAlert = '<div class=\"media mt-2 alert--cart\"><a class=\"mr-3\" href=\"/cart\"><img class=\"lazyload\" data-src=\"'+item.image+'\"></a><div class=\"media-body align-self-center\"><p class=\"m-0 font-weight-bold\">'+item.product_title+' x '+ item.quantity +'</p>'+htmlVariant+'<div><div>';\n        theme.alert.new(theme.strings.addToCartSuccess,htmlAlert,3000,'notice');\n      }else{\n        theme.crosssell.showPopup(item);\n      }\n    }\n  };\n\n  // Error handling reference from Shopify.onError in api.jquery.js\n  cart.prototype.error = function(XMLHttpRequest) {\n    var data = JSON.parse(XMLHttpRequest.responseText);\n    \n    if (data.message) {\n      theme.alert.new('',data.description,3000,'warning');\n    }\n  };\n\n  return cart;\n})();\n\n/*================ TEMPLATES ================*/\ntheme.customerTemplates = (function() {\n  function initEventListeners() {\n    // Show reset password form\n    $('#RecoverPassword').on('click', function(evt) {\n      evt.preventDefault();\n      toggleRecoverPasswordForm();\n    });\n\n    // Hide reset password form\n    $('#HideRecoverPasswordLink').on('click', function(evt) {\n      evt.preventDefault();\n      toggleRecoverPasswordForm();\n    });\n  }\n\n  /**\n   *\n   *  Show/Hide recover password form\n   *\n   */\n  function toggleRecoverPasswordForm() {\n    $('#RecoverPasswordForm').toggleClass('hide');\n    $('#CustomerLoginForm').toggleClass('hide');\n  }\n\n  /**\n   *\n   *  Show reset password success message\n   *\n   */\n  function resetPasswordSuccess() {\n    // check if reset password form was successfully submited\n    if (!$('.reset-password-success').length) {\n      return;\n    }\n\n    // show success message\n    $('#ResetSuccess').removeClass('hide');\n  }\n\n  /**\n   *\n   *  Show/hide customer address forms\n   *\n   */\n  function customerAddressForm() {\n    var $newAddressForm = $('#AddressNewForm');\n\n    if (!$newAddressForm.length) {\n      return;\n    }\n\n    // Initialize observers on address selectors, defined in shopify_common.js\n    if (Shopify) {\n      // eslint-disable-next-line no-new\n      new Shopify.CountryProvinceSelector(\n        'AddressCountryNew',\n        'AddressProvinceNew',\n        {\n          hideElement: 'AddressProvinceContainerNew'\n        }\n      );\n    }\n\n    // Initialize each edit form's country/province selector\n    $('.address-country-option').each(function() {\n      var formId = $(this).data('form-id');\n      var countrySelector = 'AddressCountry_' + formId;\n      var provinceSelector = 'AddressProvince_' + formId;\n      var containerSelector = 'AddressProvinceContainer_' + formId;\n\n      // eslint-disable-next-line no-new\n      new Shopify.CountryProvinceSelector(countrySelector, provinceSelector, {\n        hideElement: containerSelector\n      });\n    });\n\n    // Toggle new/edit address forms\n    $('.address-new-toggle').on('click', function() {\n      $newAddressForm.toggleClass('hide');\n    });\n\n    $('.address-edit-toggle').on('click', function() {\n      var formId = $(this).data('form-id');\n      $('#EditAddress_' + formId).toggleClass('hide');\n    });\n\n    $('.address-delete').on('click', function() {\n      var $el = $(this);\n      var formId = $el.data('form-id');\n      var confirmMessage = $el.data('confirm-message');\n\n      // eslint-disable-next-line no-alert\n      if (\n        confirm(\n          confirmMessage || 'Are you sure you wish to delete this address?'\n        )\n      ) {\n        Shopify.postLink('/account/addresses/' + formId, {\n          parameters: { _method: 'delete' }\n        });\n      }\n    });\n  }\n\n  /**\n   *\n   *  Check URL for reset password hash\n   *\n   */\n  function checkUrlHash() {\n    var hash = window.location.hash;\n\n    // Allow deep linking to recover password form\n    if (hash === '#recover') {\n      toggleRecoverPasswordForm();\n    }\n  }\n\n  return {\n    init: function() {\n      checkUrlHash();\n      initEventListeners();\n      resetPasswordSuccess();\n      customerAddressForm();\n    }\n  };\n})();\n\n/*================ SECTIONS ================*/\ntheme.HeaderSection = (function() {\n  function HeaderSection(container) {\n    var $container = (this.$container = $(container));\n    var sectionId = $container.attr('data-section-id');\n    var stickyId = $container.attr('data-sticky');\n    theme.NavDrawer = new theme.Drawers('NavDrawer', 'left');\n    this.selectors = {\n      headerID : '.section-' + sectionId,\n      typeHeader : stickyId ,\n    }\n    this.init();\n    \n  }\n  HeaderSection.prototype = _.assignIn({}, HeaderSection.prototype, {\n    init: function() {\n      this.stickyHeader();\n      this.headerSearch();\n      this.headerHeight();\n      this.delayMenu();\n    },\n    headerHeight : function(){\n      var header = document.querySelector('.site-header');\n      var messageBar = document.querySelector('.store-messager-bar');\n      var rootElement = document.querySelector(':root');\n      rootElement.style.setProperty(\"--height-header\", header.offsetHeight + \"px\");\n      if(typeof messageBar !== 'undefined' && messageBar !== null){\n        rootElement.style.setProperty(\"--height-message-bar\", messageBar.offsetHeight + \"px\");\n      }\n      \n    },\n    headerSearch: function(){\n      let modalOpen =  document.querySelector(\".modal__toggle-open\"),\n          close = document.querySelector(\".search-modal__close-button\"),\n          searchMobile = document.querySelector(\".modal__toggle-search-mobile\");\n          input = document.getElementById(\"Search-In-Modal\"),\n          overlayOpen  = document.querySelector(\".modal-overlay\");\n\n      modalOpen.addEventListener(\"click\", toggleClassSearch);\n      overlayOpen.addEventListener(\"click\", toggleClassSearch);\n      close.addEventListener(\"click\", toggleClassSearch);\n      searchMobile.addEventListener(\"click\", toggleClassSearch);\n     \n      function toggleClassSearch(){\n        document.querySelector(\".detail-modal\").classList.toggle(\"active\");\n        overlayOpen.classList.toggle(\"active\");\n        if (window.matchMedia('(min-width: 992px)').matches) {\n          input.focus();\n        }\n      }\n      overlayOpen.addEventListener('click', function(){\n        input.value = '';\n        document.querySelector('.predictive-search').style.display = 'none';\n      });\n      close.addEventListener('click', function(){\n        input.value = '';\n        document.querySelector('.predictive-search').style.display = 'none';\n      });\n    },\n    // Stickyheader\n    stickyHeader: function() {\n      var stickHeaderClass = this.selectors.headerID ;\n      var stickyHeader =  this.selectors.typeHeader;\n      var offsetHeight = document.querySelector(stickHeaderClass).clientHeight.toString();\n      var prevScrollpos = window.pageYOffset;\n     if( stickyHeader === 'sticky' ){\n       window.onscroll = debounce(function() {\n        var currentScrollPos = window.pageYOffset;\n        if (currentScrollPos > 30) {\n            setTimeout(function() {\n                document.querySelector(stickHeaderClass).classList.add(\"active\");\n            }, 0); \n        } else {\n            setTimeout(function() {\n                document.querySelector(stickHeaderClass).classList.remove(\"active\");\n            }, 0); \n        }\n        prevScrollpos = currentScrollPos;\n    }, 100); \n      }\n      else if (stickyHeader === 'sticky-top' ){ \n        const mediaQuery = window.matchMedia('(min-width: 1000px)')\n        \n        window.onscroll = function() {\n          var currentScrollPos = window.pageYOffset;\n          if (prevScrollpos > currentScrollPos && prevScrollpos - currentScrollPos > offsetHeight) {\n            function responsiveHeader(){\n              if (mediaQuery.matches) {\n                document.querySelector(stickHeaderClass).style.top = \"0\";\n              }\n            }\n            responsiveHeader();\n            document.addEventListener(\"resize\", event => {responsiveHeader()});\n            if(currentScrollPos == 0){\n              document.querySelector(stickHeaderClass).classList.remove(\"active\");\n            }\n            else{\n              document.querySelector(stickHeaderClass).classList.add(\"active\");\n            }\n            \n          } else if (currentScrollPos - prevScrollpos > offsetHeight) {\n            function responsiveHeader2(){\n              if (mediaQuery.matches) {\n                document.querySelector(stickHeaderClass).style.top = `-${offsetHeight}px`;\n              }\n            }\n            responsiveHeader2();\n            document.addEventListener(\"resize\", event => {responsiveHeader2()});\n            document.querySelector(stickHeaderClass).classList.remove(\"active\");\n          }\n          prevScrollpos = currentScrollPos;\n        }\n        \n      }\n      else{\n        return null;\n      }\n      function debounce(func, wait) {\n          var timeout;\n          return function executedFunction() {\n              var context = this;\n              var args = arguments;\n              var later = function() {\n                  timeout = null;\n                  func.apply(context, args);\n              };\n              clearTimeout(timeout);\n              timeout = setTimeout(later, wait);\n          };\n      }\n    },\n    // hoverMenu\n    delayMenu: function(){\n      var megaMenu = $('.site-nav__item-mega');  \n      megaMenu.each(function( index ) {\n        var childLink = $(this).find('.d-col-link');\n        childLink.each(function( i ) {\n          $(this).css(\"animation-delay\", `${(i+1)/10 * 0.8}s`);\n        });\n      });\n    }\n  });\n\n  return HeaderSection;\n})();\n\ntheme.CartDraw = (function() {\n  theme.testDrawer = new theme.Drawers('testDrawer', 'left');\n  /*$('.drawer-crossell-product').slick({\n    slidesToShow: 1,\n    slidesToScroll: 1,\n    variableWidth: true,\n    dots: false,\n    arrows:true,\n    infinite:false,\n  });*/\n  /*$(document).ready(function() {\n    $('body').on('click', '[name=\"checkout\"], [name=\"goto_pp\"], [name=\"goto_gc\"]', function() {\n      if ($('#agree_checkout').is(':checked')) {\n        $(this).submit();\n      }\n      else {\n        alert(\"You must agree with the terms and conditions of sales to check out.\");\n        return false;\n      }\n    });\n  });*/\n})();\n\ntheme.Product = (function() {\n  var defaults = {\n    smallBreakpoint: 750,\n    productThumbIndex: 0,\n    productThumbMax: 0,\n    ajaxCart: false,\n    stockSetting: false\n  };\n\n  function Product(container) {\n    var $container = (this.$container = $(container));\n    var sectionId = $container.attr('data-section-id');\n    var sectionTem = $container.attr('data-id');\n\n    this.selectors = {\n      originalSelectorId: '#ProductSelect-' + sectionId,\n      modal: 'ProductModal',\n      productZoomImage: '#ProductZoomImg',\n      addToCart: '#AddToCart-' + sectionId,\n      productPrice: '#ProductPrice-' + sectionId,\n      comparePrice: '#ComparePrice-' + sectionId,\n      addToCartText: '#AddToCartText-' + sectionId,\n      SKU: '.js-variant-sku',\n      productImageMain: '.gallery-wrap'+ sectionId,\n      productImageContainers: '.product__photo-container-' + sectionId,\n      productImageWrappers: '.product__photo-wrapper-' + sectionId,\n      productThumbContainers: '.product-single__thumbnail-item-' + sectionId,\n      productThumbsWrapper: '.product-single__thumbnails-' + sectionId,\n      productThumbs: '.product-single__thumbnail-' + sectionId,\n      saleTag: '#ProductSaleTag-' + sectionId,\n      productStock: '#ProductStock-' + sectionId,\n      singleOptionSelector: '.single-option-selector-' + sectionId,\n      shopifyPaymentButton: '.shopify-payment-button',\n      availability: '.product-single__availability',\n      hurrify : '.js-hurrify',\n      txtHurrify : '.js-hurrify .js-txt-hurrify',\n      labelwrap_sale: '.product-tag-sale',\n      numbersale_change : '.product-tag-sale-number'\n\n    };\n    this.settings = $.extend({}, defaults, {\n      sectionId: sectionId,\n      sectionTem:sectionTem,\n      ajaxCart: $container.data('ajax'),\n      stockSetting: $container.data('stock'),\n      enableHistoryState: $container.data('enable-history-state') || false,\n      namespace: '.product-' + sectionId\n    });\n\n    // Stop parsing if we don't have the product json script tag\n    if (!$('#ProductJson-' + sectionId).html()) {\n      return;\n    }\n\n    this.productSingleObject = JSON.parse(\n      $('#ProductJson-' + sectionId).html()\n    );\n    this.addVariantInfo();\n\n    this.init();\n  }\n\n  Product.prototype = _.assignIn({}, Product.prototype, {\n    init: function() {\n      this._stringOverrides();\n      this._initVariants();\n      this._productZoomImage();\n      this._productThumbSwitch();\n      this._productThumbnailSlider();\n      this._initQtySelector();\n\n      if (this.settings.ajaxCart) {\n        theme.AjaxCart = new window.AjaxCart(\n          $('#AddToCartForm-' + this.settings.sectionId)\n        );\n      }\n    },\n\n    _stringOverrides: function() {\n      window.productStrings = window.productStrings || {};\n      $.extend(theme.strings, window.productStrings);\n    },\n\n    addVariantInfo: function() {\n      if (!this.productSingleObject || !this.settings.stockSetting) {\n        return;\n      }\n\n      var variantInfo = JSON.parse(\n        $('#VariantJson-' + this.settings.sectionId).html()\n      );\n\n      for (var i = 0; i < variantInfo.length; i++) {\n        $.extend(this.productSingleObject.variants[i], variantInfo[i]);\n      }\n    },\n\n    _initVariants: function() {\n      var options = {\n        $container: this.$container,\n        enableHistoryState: this.settings.enableHistoryState,\n        product: this.productSingleObject,\n        singleOptionSelector: this.selectors.singleOptionSelector,\n        originalSelectorId: this.selectors.originalSelectorId\n      };\n\n      // eslint-disable-next-line no-new\n      this.variants = new slate.Variants(options);\n      var variant = this.variants\n      if( variant.currentVariant.compare_at_price > variant.currentVariant.price){\n        var load_sale_minus = variant.currentVariant.compare_at_price - variant.currentVariant.price;\n        var load_sale_per = load_sale_minus*100 / variant.currentVariant.compare_at_price;\n        var load_roundNumber = parseInt(load_sale_per);\n        $(this.selectors.numbersale_change).text(`${load_roundNumber}%`);\n        $(this.selectors.labelwrap_sale).removeClass('hide');\n      }else{\n        $(this.selectors.labelwrap_sale).addClass('hide');\n      }\n      this.$container.on(\n        'variantChange' + this.settings.namespace,\n        this._updateAddToCartBtn.bind(this)\n      );\n      this.$container.on(\n        'variantChange' + this.settings.namespace,\n        this._updateStickyCart.bind(this)\n      );\n      this.$container.on(\n        'variantPriceChange' + this.settings.namespace,\n        this._updatePrice.bind(this)\n      );\n      this.$container.on(\n        'variantSKUChange' + this.settings.namespace,\n        this._updateSKU.bind(this)\n      );\n      this.$container.on(\n        'variantImageChange' + this.settings.namespace,\n        this._updateImages.bind(this)\n      );\n      this.$container.on(\n        'variantChange' + this.settings.namespace,\n        this._updateSwatchTitle.bind(this)\n      );\n    },\n\n    _updateStock: function(variant) {\n      if (!this.settings.stockSetting) return;\n\n      var $stock = $(this.selectors.productStock),\n          $hurrify = $(this.selectors.hurrify),\n          $txtHurrify  = $(this.selectors.txtHurrify);\n\n      // If we don't track variant inventory, hide stock\n      if (!variant || !variant.inventory_management) {\n        $stock.addClass('hide');\n        $hurrify.addClass('hide');\n        return;\n      }\n\n      if (variant.inventory_quantity < 10 && variant.inventory_quantity > 0) {\n        $stock\n          .html(\n            theme.strings.stockAvailable.replace(\n              '1',\n              variant.inventory_quantity\n            )\n          )\n          .removeClass('hide');\n        $hurrify.removeClass('hide').find('.progress-bar').css('width',variant.inventory_quantity*10+'%');\n        $txtHurrify.html(\n          theme.strings.stringHurrify.replace(\n            'number',\n            variant.inventory_quantity\n          )\n        );\n        console.log(variant.inventory_quantity);\n        return;\n      }\n\n      if (variant.inventory_quantity <= 0 && variant.incoming) {\n        $stock\n          .html(\n            theme.strings.willNotShipUntil.replace(\n              '[date]',\n              variant.next_incoming_date\n            )\n          )\n          .removeClass('hide');\n        $hurrify.addClass('hide');\n        return;\n      }\n\n      // If there's more than 10 available, hide stock\n      $stock.addClass('hide');\n      $hurrify.addClass('hide');\n    },\n\n    _updateIncomingInfo: function(variant) {\n      if (!this.settings.stockSetting) return;\n\n      var $stock = $(this.selectors.productStock);\n\n      if (variant.incoming) {\n        $stock\n          .html(\n            theme.strings.willBeInStockAfter.replace(\n              '[date]',\n              variant.next_incoming_date\n            )\n          )\n          .removeClass('hide');\n        return;\n      }\n\n      // If there is no stock incoming, hide stock\n      $stock.addClass('hide');\n    },\n\n    _updateAddToCartBtn: function(evt) {\n      var variant = evt.variant;\n\n\n      var cache = {\n        $addToCart: $(this.selectors.addToCart),\n        $addToCartText: $(this.selectors.addToCartText)\n      };\n\n      if (variant) {\n       \n        let optionName = this.productSingleObject.options;\n        \n        // Select a valid variant if available\n        //theme.noticeSoldout.init(variant);\n        if (variant.available) {\n          // We have a valid product variant, so enable the submit button\n          cache.$addToCart.removeClass('btn--sold-out').prop('disabled', false);\n          cache.$addToCartText.html(theme.strings.addToCart);\n          $(this.selectors.shopifyPaymentButton, this.$container).show();\n          // Show how many items are left, if below 10\n          this._updateStock(variant);\n          //update availability - available\n          $(this.selectors.availability).find('span').text(theme.strings.available);\n          $('.product__pickup-availabilities').show();\n          const a1 = optionName,\n                a2 = variant.options,\n                someFunction = (...values) => values.join(' '),\n                knownValue = \":\",\n                output = a1.map((value1, i) => someFunction(value1, knownValue, a2[i]));\n          $('.pickup-availability-variant').text(output.join(\", \"));\n          \n        } else {\n          // Variant is sold out, disable the submit button\n          cache.$addToCart.prop('disabled', true).addClass('btn--sold-out');\n          cache.$addToCartText.html(theme.strings.soldOut);\n          $(this.selectors.shopifyPaymentButton, this.$container).hide();\n          // Update when stock will be available\n          this._updateIncomingInfo(variant);\n          //update availability - soldout\n          $(this.selectors.availability).find('span').text(theme.strings.soldOut);\n          $('.product__pickup-availabilities').hide();\n        }\n      } else {\n        cache.$addToCart.prop('disabled', true).removeClass('btn--sold-out');\n        cache.$addToCartText.html(theme.strings.unavailable);\n        //update availability - unavailable\n        $(this.selectors.availability).find('span').text(theme.strings.unavailable);\n        $(this.selectors.shopifyPaymentButton, this.$container).hide();\n        // Hide stock display\n        this._updateStock();\n        $('.product__pickup-availabilities').hide();\n      }\n    },\n\n    _updatePrice: function(evt) {\n      var variant = evt.variant;\n\n      if (variant) {\n        $(this.selectors.productPrice).html(\n          theme.Currency.formatMoney(variant.price, theme.moneyFormat)\n        );\n\n        // Update and show the product's compare price if necessary\n        if (variant.compare_at_price > variant.price) {\n          var sale_minus = variant.compare_at_price - variant.price;\n          var sale_per = sale_minus*100/variant.compare_at_price\n          var roundNumber = parseInt(sale_per);\n          $(this.selectors.numbersale_change).text(`${roundNumber}%`);\n          $(this.selectors.labelwrap_sale).removeClass('hide');\n\n          $(this.selectors.comparePrice)\n            .html(\n              theme.Currency.formatMoney(\n                variant.compare_at_price,\n                theme.moneyFormat\n              )\n            )\n            .removeClass('hide');\n          $(this.selectors.saleTag).removeClass('hide');\n        } else {\n          $(this.selectors.comparePrice).addClass('hide');\n          $(this.selectors.saleTag).addClass('hide');\n          $(this.selectors.labelwrap_sale).addClass('hide');\n        }\n        \n        //theme.updateCurrencies();\n      } else {\n        \n        $(this.selectors.comparePrice).addClass('hide');\n      }\n    },\n\n    _updateSKU: function(evt) {\n      var variant = evt.variant;\n\n      if (variant) {\n        $(this.selectors.SKU).html(variant.sku);\n      }\n    },\n\n    _updateImages: function(evt) {\n      var variant = evt.variant;\n\n      if (variant && variant.featured_media) {\n        var imageId = variant.featured_media.id;\n        this.switchProductImage(imageId);\n        this.setActiveThumbnail(imageId);\n      }\n    },\n    _updateSwatchTitle: function(e) {\n      const {variant} = e; \n\t\t\tfor (var e = 1; e <= e.length; e++) {\n        var option = \"option\" + e;\n        $(\".js-swatch-display--\" + e).text(variant[option])\n      }\n\t\t},\n\n    _updateStickyCart: function (evt){\n      var variant = evt.variant,\n          $stickyPrice = $('#js-sticky-price'),\n          $stickyTitle = $('#js-sticky-title'),\n          $stickyImage = $('#js-sticky-img'),\n          $stickyButton = $('#js-sticky-btn');\n      if (variant) {\n        //update title\n        $stickyTitle.html(' - ' + variant.title);\n        //update price\n        $stickyPrice.html(theme.Currency.formatMoney(variant.price, theme.moneyFormat));\n        //update selectbox\n        for (var i = 1; i <= 3; i++) {\n          var option = 'option' + i,\n              $selecBox = '#js-sticky-option-' + i;\n          if (variant[option] !== null){\n            var valueOption = variant[option];\n            $($selecBox).val(valueOption);\n          }\n        }\n        //update button cart\n        if (variant.available) {\n          $stickyButton.prop('disabled', false).removeClass('btn--sold-out');\n          $stickyButton.html(theme.strings.addToCart);\n        } else {\n          $stickyButton.prop('disabled', true).addClass('btn--sold-out');\n          $stickyButton.html(theme.strings.soldOut);\n        }\n        //update image\n        if (variant.featured_image) {\n          $stickyImage.attr('src',theme.Images.getSizedImageUrl(variant.featured_image.src,'200x'));\n        }\n      } else {\n        //update title\n        $stickyTitle.html(' - ' + theme.strings.unavailable);\n        //update button cart\n        $stickyButton.prop('disabled', true).removeClass('btn--sold-out');\n        $stickyButton.html(theme.strings.unavailable);\n      }\n    },\n\n    switchProductImage: function(imageId) {\n      var $imageToShow = $(\n        this.selectors.productImageContainers +\n          \"[data-image-id='\" +\n          imageId +\n          \"']\",\n        this.$container\n      );\n      var $imagesToHide = $(\n        this.selectors.productImageContainers +\n          \":not([data-image-id='\" +\n          imageId +\n          \"'])\",\n        this.$container\n      );\n      //$imagesToHide.addClass('hide');\n      $imageToShow.removeClass('hide');\n      //Scroll to active\n      topMenuHeight = $('.site-header').outerHeight();\n      if(this.settings.sectionTem === 'media-list' || this.settings.sectionTem === 'media-grid' || this.settings.sectionTem === 'media-collage-1' || this.settings.sectionTem === 'media-collage-2'){\n        $([document.documentElement, document.body]).animate({\n          scrollTop: $imageToShow.offset().top-topMenuHeight\n        }, 600);\n      }\n    },\n\n    setActiveThumbnail: function(imageId) {\n      var $thumbnailToShow = $(\n        this.selectors.productThumbContainers +\n          \"[data-image-id='\" +\n          imageId +\n          \"']\",\n        this.$container\n      );\n      var $thumbnailsToHide = $(\n        this.selectors.productThumbContainers +\n          \":not([data-image-id='\" +\n          imageId +\n          \"'])\",\n        this.$container\n      );\n      $thumbnailsToHide.removeClass('is-active');\n      $thumbnailToShow.addClass('is-active');\n      $thumbnailToShow.trigger('click');\n      var $thumbnails = $(this.selectors.productThumbsWrapper, this.$container);\n      // If there is a slick carousel, get the slide index, and position it into view with animation.\n      if ($thumbnails.hasClass('slick-initialized')) {\n        // eslint-disable-next-line shopify/jquery-dollar-sign-reference\n        var currentActiveSlideIndex = $thumbnails.slick('slickCurrentSlide');\n        var newActiveSlideIndex = parseInt(\n          $thumbnailToShow.attr('data-slick-index')\n        );\n        if (currentActiveSlideIndex !== newActiveSlideIndex) {\n          $thumbnails.slick('slickGoTo', newActiveSlideIndex, false);\n        }\n      }\n      \n    },\n\n    _productZoomImage: function() {\n      // The zoom image is only used on the product template, so return early\n      // even if a featured product section is present.\n      if (\n        !$('.product-single ' + this.selectors.productImageContainers).length\n      ) {\n        return;\n      }\n\n      var self = this;\n\n      $(this.selectors.productImageWrappers).on(\n        'click' + this.settings.namespace,\n        function(evt) {\n          evt.preventDefault();\n          // Empty src before loadig new image to avoid awkward image swap\n          $(self.selectors.productZoomImage)\n            .attr('src', '')\n            .attr('src', $(this).attr('href'));\n        }\n      );\n\n      this.ProductModal = new window.Modals(\n        this.selectors.modal,\n        'product-modal'\n      );\n\n      // Close modal if clicked, but not if the image is clicked\n      this.ProductModal.$modal.on('click' + this.settings.namespace, function(\n        evt\n      ) {\n        if (evt.target.nodeName !== 'IMG') {\n          self.ProductModal.close();\n        }\n      });\n    },\n\n    _productThumbSwitch: function() {\n      if (!$(this.selectors.productThumbs).length) {\n        return;\n      }\n\n      var self = this;\n\n      $(this.selectors.productThumbs).on(\n        'click' + this.settings.namespace,\n        function(evt) {\n          evt.preventDefault();\n          var imageId = $(this)\n            .parent()\n            .data('image-id');\n          self.setActiveThumbnail(imageId);\n          self.switchProductImage(imageId);\n        }\n      );\n      //trigger hover thumb\n      // $(this.selectors.productThumbs).on('click',function(){\n      //   $(this).trigger('click');\n      // });\n    },\n    /*\n      Thumbnail slider\n     */\n    _productThumbnailSlider: function() {\n      var $productThumbsWrapper = $(this.selectors.productThumbsWrapper);\n      var $productMainWrapper = $(this.selectors.productImageMain);\n      var $productThumbs = $(this.selectors.productThumbs);\n      if (!$productThumbs.length) {\n        return;\n      }\n\n      if ($productThumbs.length > 1) {\n        $productThumbsWrapper.on(\n          'init' + this.settings.namespace,\n          this._productSwipeInit.bind(this)\n        );\n        if (this.settings.sectionTem === 'media-left' || this.settings.sectionTem === 'media-right'){\n          $productThumbsWrapper.slick({\n            accessibility: true,\n            arrows: true,\n            dots: false,\n            infinite: false,\n            autoplay: false,\n            slidesToShow: 5,\n            slidesToScroll: 1,\n            focusOnSelect: true,\n            asNavFor: $productMainWrapper,\n            vertical: true,\n            verticalSwiping: true,\n            responsive: [\n              {\n                breakpoint: 992,\n                settings: {\n                  vertical: false,\n                  verticalSwiping: false,\n                  slidesToShow: 4,\n                  slidesToScroll: 1,\n                }\n              }\n            ]\n          }).css('opacity','1');\n          slideMain();\n        }\n        else if (this.settings.sectionTem === 'media-nothumb'){\n          $productThumbsWrapper.slick({\n            accessibility: true,\n            arrows: true,\n            dots: false,\n            infinite: false,\n            autoplay: false,\n            slidesToShow: 6,\n            slidesToScroll: 1,\n            focusOnSelect: true,\n            asNavFor: $productMainWrapper,\n            responsive: [\n              {\n                breakpoint: 480,\n                settings: {\n                  slidesToShow: 4,\n                  slidesToScroll: 1\n                }\n              }\n            ]\n          }).css('opacity','1');\n          slideMain();\n        }\n        else if (this.settings.sectionTem === 'media-list' || this.settings.sectionTem === 'media-grid' || this.settings.sectionTem === 'media-collage-1' || this.settings.sectionTem === 'media-collage-2'){\n          $productThumbsWrapper.slick({\n            accessibility: true,\n            arrows: true,\n            dots: false,\n            infinite: false,\n            autoplay: false,\n            slidesToShow: 6,\n            slidesToScroll: 1,\n            focusOnSelect: true,\n            asNavFor: $productMainWrapper,\n            responsive: [\n              {\n                breakpoint: 9999,\n                settings: 'unslick'\n              },\n              {\n                breakpoint: 480,\n                settings: {\n                  slidesToShow: 4,\n                  slidesToScroll: 1\n                }\n              }\n            ]\n          }).css('opacity','1');\n          $productMainWrapper.slick({\n            arrows: true,\n            dots: false,\n            infinite: false,\n            autoplay: false,\n            slidesToShow: 1,\n            slidesToScroll: 1,\n            fade: true,\n            adaptiveHeight: true,\n            accessibility: true,\n            draggable: false,\n            asNavFor: $productThumbsWrapper,\n            responsive: [\n              {\n                breakpoint: 9999,\n                settings: 'unslick'\n              },\n              {\n                breakpoint: 480,\n                settings: {\n                  slidesToShow: 1,\n                  slidesToScroll: 1\n                }\n              }\n            ]\n          }).css('opacity','1');\n          $productThumbsWrapper.slick(\n            'slickGoTo',\n            $productThumbsWrapper.find('.is-active').attr('data-slick-index'),\n            true\n          );\n          $(window).on('resize', function() {\n            $productThumbsWrapper.slick('resize');\n            $productMainWrapper.slick('resize');\n          });\n        }\n        else{\n          $productThumbsWrapper.slick({\n            accessibility: true,\n            arrows: true,\n            dots: false,\n            infinite: false,\n            autoplay: false,\n            slidesToShow: 6,\n            slidesToScroll: 1,\n            focusOnSelect: true,\n            asNavFor: $productMainWrapper,\n            responsive: [\n              {\n                breakpoint: 480,\n                settings: {\n                  slidesToShow: 4,\n                  slidesToScroll: 1\n                }\n              }\n            ]\n          }).css('opacity','1');\n          slideMain();\n        }\n        function slideMain(){\n          $productMainWrapper.slick({\n            arrows: true,\n            dots: false,\n            infinite: false,\n            autoplay: false,\n            slidesToShow: 1,\n            slidesToScroll: 1,\n            fade: true,\n            adaptiveHeight: true,\n            accessibility: true,\n            draggable: false,\n            asNavFor: $productThumbsWrapper,\n          }).css('opacity','1');\n          }\n        }\n        // Show highlighted thumbnail by repositioning slider\n        if( this.settings.sectionTem === 'media-left' || this.settings.sectionTem === 'media-right' || this.settings.sectionTem === 'media-nothumb' || this.settings.sectionTem === 'media-bottom'){\n          $productThumbsWrapper.slick(\n            'slickGoTo',\n            $productThumbsWrapper.find('.is-active').attr('data-slick-index'),\n            true\n          );\n        }\n        \n        \n    },\n\n    _productSwipeInit: function(evt, obj) {\n      // Slider is initialized. Setup custom swipe events\n      this.settings.productThumbIndex = obj.currentSlide;\n      this.settings.productThumbMax = obj.slideCount - 1; // we need the 0-based index\n\n      var self = this;\n\n      $(this.selectors.productImageWrappers).on(\n        'swipeleft swiperight',\n        function(event) {\n          if (event.type === 'swipeleft') {\n            self._goToNextThumbnail();\n          }\n\n          if (event.type === 'swiperight') {\n            self._goToPrevThumbnail();\n          }\n\n          // Trigger click on newly requested thumbnail\n          $(\n            '.product-single__thumbnail-item[data-slick-index=\"' +\n              self.settings.productThumbIndex +\n              '\"]'\n          )\n            .find('.product-single__thumbnail')\n            .trigger('click');\n          \n        }\n      );\n    },\n    _goToNextThumbnail: function() {\n      this.settings.productThumbIndex++;\n\n      if (this.settings.productThumbIndex > this.settings.productThumbMax) {\n        this.settings.productThumbIndex = 0;\n      }\n\n      $(this.selectors.productThumbsWrapper).slick(\n        'slickGoTo',\n        this.settings.productThumbIndex,\n        true\n      );\n    },\n\n    _goToPrevThumbnail: function() {\n      this.settings.productThumbIndex--;\n\n      if (this.settings.productThumbIndex < 0) {\n        this.settings.productThumbIndex = this.settings.productThumbMax;\n      }\n\n      $(this.selectors.productThumbsWrapper).slick(\n        'slickGoTo',\n        this.settings.productThumbIndex,\n        true\n      );\n    },\n\n    _initQtySelector: function() {\n      this.$container.find('.product-form__quantity').each(function(i, el) {\n        // eslint-disable-next-line no-new\n        new QtySelector($(el));\n      });\n    },\n\n    onUnload: function() {\n      $(this.selectors.productImageWrappers).off(this.settings.namespace);\n      $(this.selectors.productThumbs).off(this.settings.namespace);\n      $(this.selectors.productThumbs).slick('unslick');\n      if (this.ProductModal) {\n        this.ProductModal.$modal.off(this.settings.namespace);\n      }\n    }\n  });\n\n  return Product;\n})();\n\ntheme.Slideshow = (function() {\n  this.$slideshow = null;\n  var classes = {\n    slideshow: 'slideshow',\n    slickActiveMobile: 'slick-active-mobile',\n    controlsHover: 'slideshow__controls--hover',\n    isPaused: 'is-paused'\n  };\n\n  var selectors = {\n    section: '.shopify-section',\n    wrapper: '#SlideshowWrapper-',\n    slides: '.slideshow__slide',\n    textWrapperMobile: '.slideshow__text-wrap--mobile',\n    textContentMobile: '.slideshow__text-content--mobile',\n    controls: '.slideshow__controls',\n    dots: '.slick-dots',\n    arrowLeft: '.slideshow__arrow-left',\n    arrowRight: '.slideshow__arrow-right'\n  };\n\n  function slideshow(el, sectionId) {\n    var $slideshow = (this.$slideshow = $(el));\n    this.adaptHeight = this.$slideshow.data('adapt-height');\n    this.$wrapper = this.$slideshow.closest(selectors.wrapper + sectionId);\n    this.$section = this.$wrapper.closest(selectors.section);\n    this.$controls = this.$wrapper.find(selectors.controls);\n    this.$textWrapperMobile = this.$section.find(selectors.textWrapperMobile);\n    this.autorotate = this.$slideshow.data('autorotate');\n    this.navArrow = this.$slideshow.data('arrow');\n    this.navDot = this.$slideshow.data('dot');\n    this.transit = this.$slideshow.data('transit');\n    var autoplaySpeed = this.$slideshow.data('speed');\n    var loadSlideA11yString = this.$slideshow.data('slide-nav-a11y');\n    this.settings = {\n      rtl:theme.rtl,\n      accessibility: false,\n      arrows: this.navArrow,\n      dots:  this.navDot,\n      fade:  (this.transit === 'slide' ? false : true),\n      draggable: true,\n      touchThreshold: 20,\n      autoplay: this.autorotate,\n      autoplaySpeed: autoplaySpeed,\n      pauseOnFocus: this.autorotate? false:true, \n      pauseOnHover: this.autorotate? false:true,\n      useTransform: true,\n      infinite: true,\n    };\n\n    this.$slideshow.on('beforeChange', beforeChange.bind(this));\n    this.$slideshow.on('init', slideshowA11ySetup.bind(this));\n\n    // Add class to style mobile dots & show the correct text content for the\n    // first slide on mobile when the slideshow initialises\n    this.$slideshow.on(\n      'init',\n      function() {\n        this.$mobileDots\n          .find('li:first-of-type')\n          .addClass(classes.slickActiveMobile);\n        this.showMobileText(0);\n      }.bind(this)\n    );\n\n    if (this.adaptHeight) {\n      this.setSlideshowHeight();\n      $(window).resize(debounce(this.setSlideshowHeight.bind(this),50));\n    }\n\n    this.$slideshow.slick(this.settings);\n    this.$slideshow.on('beforeChange', function(event, slick, currentSlide, nextSlide){\n        if ($(this).data('transit') === 'slide-fade' ) {\n          var $outGoing = $(slick.$slides.get(currentSlide));\n          $outGoing.addClass('slick-going');\n        }\n    });\n    this.$slideshow.on('afterChange', function(event, slick, currentSlide, nextSlide){\n      $(slick.$slides).filter('.slick-going').removeClass('slick-going');\n    });\n    // This can't be called when the slick 'init' event fires due to how slick\n    // adds a11y features.\n    slideshowPostInitA11ySetup.bind(this)();\n    \n  }\n\n  function slideshowA11ySetup(event, obj) {\n    var $slider = obj.$slider;\n    var $list = obj.$list;\n    this.$dots = this.$section.find(selectors.dots);\n    this.$mobileDots = this.$dots.eq(1);\n\n    // Remove default Slick aria-live attr until slider is focused\n    $list.removeAttr('aria-live');\n\n//     this.$wrapper.on('keyup', keyboardNavigation.bind(this));\n//     this.$controls.on('keyup', keyboardNavigation.bind(this));\n//     this.$textWrapperMobile.on('keyup', keyboardNavigation.bind(this));\n\n    // When an element in the slider is focused\n    // pause slideshow and set aria-live.\n    this.$wrapper\n      .on(\n        'focusin',\n        function(evt) {\n          if (!this.$wrapper.has(evt.target).length) {\n            return;\n          }\n\n          $list.attr('aria-live', 'polite');\n          if (this.autorotate) {\n            $slider.slick('slickPause');\n          }\n        }.bind(this)\n      )\n      .on(\n        'focusout',\n        function(evt) {\n          if (!this.$wrapper.has(evt.target).length) {\n            return;\n          }\n\n          $list.removeAttr('aria-live');\n        }.bind(this)\n      );\n\n    // Add arrow key support when focused\n    if (this.$dots) {\n      this.$dots\n        .find('a')\n        .each(function() {\n          var $dot = $(this);\n          $dot.on('click keyup', function(evt) {\n            if (\n              evt.type === 'keyup' &&\n              evt.which !== slate.utils.keyboardKeys.ENTER\n            )\n              return;\n\n            evt.preventDefault();\n\n            var slideNumber = $(evt.target).data('slide-number');\n\n            $slider.attr('tabindex', -1).slick('slickGoTo', slideNumber);\n\n            if (evt.type === 'keyup') {\n              $slider.focus();\n            }\n          });\n        })\n        .eq(0)\n        .attr('aria-current', 'true');\n    }\n\n    this.$controls\n      .on('focusin', highlightControls.bind(this))\n      .on('focusout', unhighlightControls.bind(this));\n  }\n\n  function slideshowPostInitA11ySetup() {\n    var $slides = this.$slideshow.find(selectors.slides);\n\n    $slides.removeAttr('role').removeAttr('aria-labelledby');\n    this.$dots\n      .removeAttr('role')\n      .find('li')\n      .removeAttr('role')\n      .removeAttr('aria-selected')\n      .each(function() {\n        var $dot = $(this);\n        var ariaControls = $dot.attr('aria-controls');\n        $dot\n          .removeAttr('aria-controls')\n          .find('a')\n          .attr('aria-controls', ariaControls);\n      });\n  }\n\n  function beforeChange(event, slick, currentSlide, nextSlide) {\n    var $dotLinks = this.$dots.find('a');\n    var $mobileDotLinks = this.$mobileDots.find('li');\n    $dotLinks\n      .removeAttr('aria-current')\n      .eq(nextSlide)\n      .attr('aria-current', 'true');\n\n    $mobileDotLinks\n      .removeClass(classes.slickActiveMobile)\n      .eq(nextSlide)\n      .addClass(classes.slickActiveMobile);\n    this.showMobileText(nextSlide);\n  }\n\n//   function keyboardNavigation() {\n//     if (event.keyCode === slate.utils.keyboardKeys.LEFTARROW) {\n//       this.$slideshow.slick('slickPrev');\n//     }\n//     if (event.keyCode === slate.utils.keyboardKeys.RIGHTARROW) {\n//       this.$slideshow.slick('slickNext');\n//     }\n//   }\n\n  function highlightControls() {\n    this.$controls.addClass(classes.controlsHover);\n  }\n\n  function unhighlightControls() {\n    this.$controls.removeClass(classes.controlsHover);\n  }\n\n  slideshow.prototype.setSlideshowHeight = function() {\n    var minAspectRatio = this.$slideshow.data('min-aspect-ratio');\n    this.$slideshow.height($(document).width() / minAspectRatio);\n  };\n\n  slideshow.prototype.showMobileText = function(slideIndex) {\n    var $allTextContent = this.$textWrapperMobile.find(\n      selectors.textContentMobile\n    );\n    var currentTextContentSelector =\n      selectors.textContentMobile + '-' + slideIndex;\n    var $currentTextContent = this.$textWrapperMobile.find(\n      currentTextContentSelector\n    );\n    if (\n      !$currentTextContent.length &&\n      this.$slideshow.find(selectors.slides).length === 1\n    ) {\n      this.$textWrapperMobile.hide();\n    } else {\n      this.$textWrapperMobile.show();\n    }\n    $allTextContent.hide();\n    $currentTextContent.show();\n  };\n\n  function getSlideshowId($el) {\n    return '#Slideshow-' + $el.data('id');\n  }\n\n  return slideshow;\n})();\n\ntheme.slideshows = {};\n\ntheme.SlideshowSection = (function() {\n  function SlideshowSection(container) {\n    var $container = (this.$container = $(container));\n    var sectionId = $container.attr('data-section-id');\n    var slideshow = (this.slideshow = '#Slideshow-' + sectionId);\n\n    theme.slideshows[slideshow] = new theme.Slideshow(slideshow, sectionId);\n  }\n\n  return SlideshowSection;\n})();\n\ntheme.SlideshowSection.prototype = _.assignIn(\n  {},\n  theme.SlideshowSection.prototype,\n  {\n    onUnload: function() {\n      delete theme.slideshows[this.slideshow];\n    },\n\n    onBlockSelect: function(evt) {\n      var $slideshow = $(this.slideshow);\n      var adaptHeight = $slideshow.data('adapt-height');\n\n      if (adaptHeight) {\n        theme.slideshows[this.slideshow].setSlideshowHeight();\n      }\n\n      // Ignore the cloned version\n      var $slide = $(\n        '.slideshow__slide--' + evt.detail.blockId + ':not(.slick-cloned)'\n      );\n      var slideIndex = $slide.data('slick-index');\n\n      // Go to selected slide, pause auto-rotate\n      $slideshow.slick('slickGoTo', slideIndex).slick('slickPause');\n    },\n\n    onBlockDeselect: function() {\n      // Resume auto-rotate\n      $(this.slideshow).slick('slickPlay');\n    }\n  }\n);\n\ntheme.slideshows = {};\n\ntheme.Cart = (function() {\n  var selectors = {\n    cartNote: '#CartSpecialInstructions',\n    cartQtyInput: '.cart__quantity',\n    cartNoCookiesClass: 'cart--no-cookies'\n  };\n\n  function Cart(container) {\n    var $container = (this.$container = $(container));\n    var sectionId = $container.attr('data-section-id');\n\n    theme.cartObject = JSON.parse($('#CartJson-' + sectionId).html());\n\n    this.init($container);\n  }\n\n  Cart.prototype = _.assignIn({}, Cart.prototype, {\n    init: function($container) {\n      this._initQtySelector();\n      this._initCartNote();\n\n      if (!this._cookiesEnabled()) {\n        $container.addClass(selectors.cartNoCookiesClass);\n      }\n    },\n\n    _initQtySelector: function() {\n      $(selectors.cartQtyInput).each(function(i, el) {\n        // eslint-disable-next-line no-new\n        new QtySelector($(el));\n      });\n    },\n\n    _initCartNote: function() {\n      if (!$(selectors.cartNote).length) {\n        return;\n      }\n\n      var $el = $(selectors.cartNote);\n      var noteText;\n      var params;\n      var noteOffset = $el[0].offsetHeight - $el[0].clientHeight;\n\n      // Auto grow the cart note if text fills it up\n      $el.on('keyup input', function() {\n        $(this)\n          .css('height', 'auto')\n          .css('height', $el[0].scrollHeight + noteOffset);\n          \n      });\n      // Save the cart note via ajax. A safeguard in case\n      // a user decides to leave the page before clicking 'Update Cart'\n      $el.on(\n        'change',\n        $.proxy(function() {\n          noteText = $el.val();\n          params = {\n            type: 'POST',\n            url: '/cart/update.js',\n            data: 'note=' + this._attributeToString(noteText),\n            dataType: 'json'\n          };\n          $.ajax(params);\n          \n        }, this)\n      );\n    },\n\n    _attributeToString: function(attr) {\n      if (typeof attr !== 'string') {\n        attr = String(attr);\n        if (attr === 'undefined') {\n          attr = '';\n        }\n      }\n      return $.trim(attr);\n    },\n\n    _cookiesEnabled: function() {\n      var cookieEnabled = navigator.cookieEnabled;\n\n      if (!cookieEnabled) {\n        document.cookie = 'testcookie';\n        cookieEnabled = document.cookie.indexOf('testcookie') !== -1;\n      }\n      return cookieEnabled;\n    }\n  });\n\n  return Cart;\n})();\n\ntheme.noteCart = (function() {\n  if($('.block-notecart') != undefined ){\n    var $el = $('#cart__note');\n    var $btnsubmit = $('.cart-notes-submit');\n    var $editNote = $('.edit-notecart');\n    var $closeNote = $('.cart-note-close');\n    var $drawCart = $('.mini-cart-content');\n    var noteText;\n    function noteUpdate(noteText){\n        params = {\n          type: 'POST',\n          url: '/cart/update.js',\n          data: 'note=' + theme.attributeToString(noteText)\n        };\n        $.ajax(params);\n    }\n    $btnsubmit.on( \"click\", function() {\n      noteText = $el.val();\n      noteUpdate(noteText);\n      $(this).closest('.js-note-cart').removeClass('active');\n    });\n    $editNote.on( \"click\", function() {\n      $(this).siblings().toggleClass('active');\n      $(this).closest($drawCart).toggleClass('overlay');\n    });\n    $closeNote.on( \"click\", function() {\n      $(this).closest('.js-note-cart').removeClass('active');\n      $(this).closest($drawCart).removeClass('overlay');\n    });\n  }\n  \n})();\ntheme.attributeToString = function(attribute) {\n\tif (typeof attribute !== 'string') {\n\t\tattribute += '';\n\t\tif (attribute === 'undefined') {\n\t\t\tattribute = '';\n\t\t}\n\t}\n\treturn jQuery.trim(attribute);\n}\n\n// Instagrams\ntheme.Instagrams = (function() {\n  function Instagrams(container) {\n    this.$container = $(container).on('init', this._a11y.bind(this));\n    //console.log(this.$container);\n    this.settings = {\n      style \t\t\t: this.$container.data('style'),\n      accesstoken \t\t: this.$container.data('accesstoken'),\n      userid\t\t\t: this.$container.data('userid'),\n      limit \t\t\t: this.$container.data('limit'),\n      resolution \t\t: this.$container.data('resolution'),\n      target \t\t\t: this.$container.attr('id'),\n      rows \t\t\t: this.$container.data('rows'),\n      \n      slidesToShow \t\t: this.$container.data('slidestoshow') || 1,\n      infinite \t\t\t: this.$container.data('infinite') || false,\n      arrows \t\t\t: this.$container.data('arrows') || false,\n      draggable \t\t: this.$container.data('draggable') || false,\n      dots \t\t\t\t: this.$container.data('dots') || false,\n    }\n    this.settings.slidesToShow1200 \t\t= (this.settings.slidesToShow - 1) > 1? (this.settings.slidesToShow - 1) : 1;\n    this.settings.slidesToShow992  \t\t= (this.settings.slidesToShow - 2) > 1? (this.settings.slidesToShow - 2) : 1;\n    this.settings.slidesToShow768  \t\t= (this.settings.slidesToShow - 3) > 1? (this.settings.slidesToShow - 3) : 1;\n    this.settings.slidesToShow480  \t\t= 2;\n    \n    var _self = this;\n    var $instagramSelector = $('#'+this.settings.target);\n    if (this.settings.style === 'grid'){\n      var afterInstagram = function(){} // blank function\n    }else if (this.settings.style === 'carousel'){\n      var afterInstagram = function(){\n        $instagramSelector.slick({\n          slidesToShow\t\t: _self.settings.slidesToShow,\n          slidesToScroll\t: _self.settings.slidesToShow,\n          arrows\t\t\t: _self.settings.arrows,\n          dots\t\t\t\t: _self.settings.dots,\n          draggable\t\t \t: _self.settings.draggable,\n          infinite\t\t \t: _self.settings.infinite,\n          rows : _self.settings.rows,\n          accessibility:false,\n          responsive: [\n            {\n              breakpoint: 1200,\n              settings: {\n                slidesToShow\t: _self.settings.slidesToShow1200,\n                slidesToScroll\t: _self.settings.slidesToShow1200,\n              }\n            },\n            {\n              breakpoint: 992,\n              settings: {\n                slidesToShow\t: _self.settings.slidesToShow992,\n                slidesToScroll\t: _self.settings.slidesToShow992,\n              }\n            },\n            {\n              breakpoint: 768,\n              settings: {\n                slidesToShow\t: _self.settings.slidesToShow768,\n                slidesToScroll\t: _self.settings.slidesToShow768,\n              }\n            },\n            {\n              breakpoint: 480,\n              settings: {\n                slidesToShow\t: _self.settings.slidesToShow480,\n                slidesToScroll\t: _self.settings.slidesToShow480,\n              }\n            }\n          ]\n        })\n      }\n    }\n\n    var feed = new Instafeed({\n      get\t\t\t: 'user',\n      target \t\t: this.settings.target,\n      userId\t\t: this.settings.userid,\n      accessToken\t: this.settings.accesstoken,\n      limit\t\t\t: this.settings.limit,\n      resolution\t: this.settings.resolution,\n      template\t\t: '<div class=\"col hv-image-brightness\"><a class=\"instagram-item\" href=\"{{link}}\" target=\"_blank\" id=\"{{id}}\"><img alt=\"instagram image\" class=\"transition lazyload\" data-src=\"{{image}}\" /></a></div>',\n      after\t\t\t: afterInstagram\n    });\n\n    feed.run();\n  }\n\n  Instagrams.prototype = _.assignIn({}, Instagrams.prototype, {\n    _a11y: function(event, obj) {\n      var $list = obj.$list;\n      var $wrapper = this.$container.parent();\n\n      // Remove default Slick aria-live attr until slider is focused\n      $list.removeAttr('aria-live');\n\n      // When an element in the slider is focused set aria-live\n      $wrapper.on('focusin', function(evt) {\n        if ($wrapper.has(evt.target).length) {\n          $list.attr('aria-live', 'polite');\n        }\n      });\n\n      // Remove aria-live\n      $wrapper.on('focusout', function(evt) {\n        if ($wrapper.has(evt.target).length) {\n          $list.removeAttr('aria-live');\n        }\n      });\n    }\n  });\n\n  return Instagrams;\n})();\n\n// Slick carousel\ntheme.slickCarousel = (function (){\n  function Carousels(container) {\n    this.$container = $(container).on('init', this._a11y.bind(this));\n    this.settings = {\n      rows \t\t\t\t: this.$container.data('rows') || 1,\n      slidesToShow \t\t: this.$container.data('slidestoshow') || 1,\n      slidesToScroll\t: this.$container.data('slidestoscroll') || 1,\n      infinite \t\t\t: this.$container.data('infinite') || false,\n      arrows \t\t\t: this.$container.data('arrows') || false,\n      dots \t\t\t\t: this.$container.data('dots') || false,\n      autoplay \t\t\t: this.$container.data('autoplay') || false,\n      draggable \t\t: this.$container.data('draggable') || false,\n      accessibility \t: this.$container.data('accessibility') || false,\n      slidesToShowMobile \t\t: this.$container.data('slidestoshow-mobile') || 1,\n    }\n    this.settings.slidesToShow1200 \t\t= (this.settings.slidesToShow - 1) > 1? (this.settings.slidesToShow - 1) : 1;\n    this.settings.slidesToShow992  \t\t= (this.settings.slidesToShow - 2) > 1? (this.settings.slidesToShow - 2) : 1;\n    this.settings.slidesToShow768  \t\t= (this.settings.slidesToShow - 3) > 1? (this.settings.slidesToShow - 3) : 1;\n    this.settings.slidesToShow480  \t\t= (this.settings.slidesToShow - 4) > 1? (this.settings.slidesToShow - 4) : 1;\n    this.settings.slidesToScroll1200 \t= (this.settings.slidesToScroll - 1) > 1? (this.settings.slidesToScroll - 1) : 1;\n    this.settings.slidesToScroll992  \t= (this.settings.slidesToScroll - 2) > 1? (this.settings.slidesToScroll - 2) : 1;\n    this.settings.slidesToScroll768  \t= (this.settings.slidesToScroll - 3) > 1? (this.settings.slidesToScroll - 3) : 1;\n    this.settings.slidesToScroll480  \t= (this.settings.slidesToScroll - 4) > 1? (this.settings.slidesToScroll - 4) : 1;\n    this.$container.slick({\n      rtl\t\t\t\t: theme.rtl,\n      rows \t\t\t\t: this.settings.rows,\n      slidesToShow\t\t: this.settings.slidesToShow,\n      slidesToScroll \t: this.settings.slidesToScroll,\n      arrows\t\t\t: this.settings.arrows,\n      dots\t\t\t\t: this.settings.dots,\n      autoplay\t\t\t: this.settings.autoplay,\n      accessibility\t\t: this.settings.accessibility,\n      draggable\t\t\t: this.settings.draggable,\n      infinite\t\t\t: this.settings.infinite,\n      adaptiveHeight: true,\n      responsive: [\n        {\n          breakpoint: 1200,\n          settings: {\n            slidesToShow: this.settings.slidesToShow1200,\n            slidesToScroll: this.settings.slidesToScroll1200\n          }\n        },\n        {\n          breakpoint: 992,\n          settings: {\n            slidesToShow: this.settings.slidesToShow992,\n            slidesToScroll: this.settings.slidesToScroll992\n          }\n        },\n        {\n          breakpoint: 768,\n          settings: {\n            slidesToShow: this.settings.slidesToShow768,\n            slidesToScroll: this.settings.slidesToScroll768\n          }\n        },\n        {\n          breakpoint: 480,\n          settings: {\n            slidesToShow: this.settings.slidesToShowMobile,\n            slidesToScroll: this.settings.slidesToShowMobile\n          }\n        }\n      ]\n    }).css('opacity','1');\n   \n    if($('.shopthelook').length){\n      var $container = (this.$container = $(container)),\n          sectionId = $container.attr('data-section-id'),\n          $dotID = $container.closest('.shopthelook').find(`#dot-${sectionId}`).find(\"li\");\n          $dotID.click(function(){\n            var pos = $(this).data('pos');\n            $dotID.removeClass('active');\n            $(this).addClass(\"active\");\n            $container.slick(\"slickGoTo\", pos);\n          });\n          $container.on('afterChange', function(event, slick, currentSlide, nextSlide){\n              var $dotPos = $container.closest('.shopthelook').find(`#dot-${sectionId}`).find(`li[data-pos=${currentSlide}]`);\n              $dotID.removeClass('active');\n              $dotPos.addClass('active');\n          });\n    }\n    \n  }\n\n  Carousels.prototype = _.assignIn({}, Carousels.prototype, {\n    _a11y: function(event, obj) {\n      var $list = obj.$list;\n      var $wrapper = this.$container.parent();\n\n      // Remove default Slick aria-live attr until slider is focused\n      $list.removeAttr('aria-live');\n\n      // When an element in the slider is focused set aria-live\n      $wrapper.on('focusin', function(evt) {\n        if ($wrapper.has(evt.target).length) {\n          $list.attr('aria-live', 'polite');\n        }\n      });\n\n      // Remove aria-live\n      $wrapper.on('focusout', function(evt) {\n        if ($wrapper.has(evt.target).length) {\n          $list.removeAttr('aria-live');\n        }\n      });\n    },\n    \n    _goToSlide: function(slideIndex) {\n      this.$container.slick('slickGoTo', slideIndex);\n    },\n\n    onUnload: function() {\n      delete this.$container;\n    },\n\n    onBlockSelect: function(evt) {\n      // Ignore the cloned version\n      var $slide = $(\n        '.carousel__slide-wrapper--' + evt.detail.blockId + ':not(.slick-cloned)'\n      );\n      var slideIndex = $slide.data('slick-index');\n\n      // Go to selected slide, pause autoplay\n      this._goToSlide(slideIndex);\n      \n    }\n  });\n\n  return Carousels;\n})()\n\n// Slick Press\ntheme.slickPress = (function (){\n  function slickPress(container) {\n\n    this.$container = $(container).on('init', this._a11y.bind(this));\n    var sectionId = this.$container.data('section-id');\n    var pressSub = '#sub-'+ sectionId;\n    \n    this.settings = {\n      arrows \t\t\t: this.$container.data('arrows') || false,\n      dots \t\t\t\t: this.$container.data('dots') || false,\n    }\n      this.$container.slick({\n      rtl\t\t\t\t: theme.rtl,\n      rows \t\t\t\t: 1,\n      slidesToShow\t\t: 1,\n      slidesToScroll \t: 1,\n      arrows\t\t\t: this.settings.arrows,\n      dots\t\t\t\t: this.settings.dots,\n      autoplay\t\t\t: false,\n      accessibility\t\t: true,\n      draggable\t\t\t: true,\n      infinite\t\t\t: true,\n      adaptiveHeight: true,\n      asNavFor: pressSub,\n      \n    }).css('opacity','1');\n\n    $(pressSub).slick({\n      slidesToShow\t\t: 3,\n      slidesToScroll \t: 1,\n      infinite\t\t\t: true,\n      arrows\t\t\t: false,\n      asNavFor: this.$container,\n      draggable\t\t\t: true,\n      accessibility\t\t: true,\n      focusOnSelect: true,\n      centerMode: true,\n      centerPadding: '0px',\n    });\n  }\n\n  slickPress.prototype = _.assignIn({}, slickPress.prototype, {\n    _a11y: function(event, obj) {\n      var $list = obj.$list;\n      var $wrapper = this.$container;\n      // Remove default Slick aria-live attr until slider is focused\n      $list.removeAttr('aria-live');\n\n      // When an element in the slider is focused set aria-live\n      $wrapper.on('focusin', function(evt) {\n        if ($wrapper.has(evt.target).length) {\n          $list.attr('aria-live', 'polite');\n        }\n      });\n\n      // Remove aria-live\n      $wrapper.on('focusout', function(evt) {\n        if ($wrapper.has(evt.target).length) {\n          $list.removeAttr('aria-live');\n        }\n      });\n    },\n    \n    _goToSlide: function(slideIndex) {\n      this.$container.slick('slickGoTo', slideIndex);\n    },\n\n    onUnload: function() {\n      delete  this.$container;\n    },\n\n    onBlockSelect: function(evt) {\n      // Ignore the cloned version\n      var $slide = $(\n        '.carousel__slide-wrapper--' + evt.detail.blockId + ':not(.slick-cloned)'\n      );\n      var slideIndex = $slide.data('slick-index');\n\n      // Go to selected slide, pause autoplay\n      console.log(this);\n      this._goToSlide(slideIndex);\n      \n    }\n  });\n\n  return slickPress;\n})()\n\n// Productlists\ntheme.Productlists = (function() {\n  function Productlists(container) {\n    this.$container = $(container).on('init', this._a11y.bind(this));\n    this.settings = {\n      slidesToShow \t\t: this.$container.data('slidestoshow') || 1,\n      rows \t\t\t\t: this.$container.data('rows') || 1,\n      arrows \t\t\t: this.$container.data('arrows') || false,\n      dots \t\t\t\t: this.$container.data('dots') || false,\n      draggable \t\t: this.$container.data('draggable') || false,\n      infinite \t\t\t: this.$container.data('infinite') || false,\n    }\n    this.settings.slidesToShow1200 = (this.settings.slidesToShow - 1) > 1? (this.settings.slidesToShow - 1) : 1;\n    this.settings.slidesToShow992  = (this.settings.slidesToShow - 2) > 1? (this.settings.slidesToShow - 2) : 1;\n    this.settings.slidesToShow768  = (this.settings.slidesToShow - 3) > 1? (this.settings.slidesToShow - 3) : 1;\n    this.settings.slidesToShow480  = 2;\n    this.$container.slick({\n      rtl\t\t\t\t: theme.rtl,\n      accessibility\t\t: false,\n      slidesToShow\t\t: this.settings.slidesToShow,\n      slidesToScroll\t: this.settings.slidesToShow,\n      rows\t\t\t\t: this.settings.rows,\n      arrows\t\t\t: this.settings.arrows,\n      dots\t\t\t\t: this.settings.dots,\n      infinite \t\t\t: this.settings.infinite,\n      draggable\t\t\t: this.settings.draggable,\n      responsive\t\t: [\n        {\n          breakpoint: 1200,\n          settings: {\n            slidesToShow\t: this.settings.slidesToShow1200,\n            slidesToScroll\t: this.settings.slidesToShow1200\n          }\n        },\n        {\n          breakpoint: 992,\n          settings: {\n            slidesToShow\t: this.settings.slidesToShow992,\n            slidesToScroll\t: this.settings.slidesToShow992\n          }\n        },\n        {\n          breakpoint: 768,\n          settings: {\n            slidesToShow\t: this.settings.slidesToShow768,\n            slidesToScroll\t: this.settings.slidesToShow768\n          }\n        },\n        {\n          breakpoint: 480,\n          settings: {\n            slidesToShow\t: this.settings.slidesToShow480,\n            slidesToScroll\t: this.settings.slidesToShow480\n          }\n        }\n      ]\n    }).css('opacity','1');\n  }\n\n  Productlists.prototype = _.assignIn({}, Productlists.prototype, {\n    _a11y: function(event, obj) {\n      var $list = obj.$list;\n      var $wrapper = this.$container.parent();\n\n      // Remove default Slick aria-live attr until slider is focused\n      $list.removeAttr('aria-live');\n\n      // When an element in the slider is focused set aria-live\n      $wrapper.on('focusin', function(evt) {\n        if ($wrapper.has(evt.target).length) {\n          $list.attr('aria-live', 'polite');\n        }\n      });\n\n      // Remove aria-live\n      $wrapper.on('focusout', function(evt) {\n        if ($wrapper.has(evt.target).length) {\n          $list.removeAttr('aria-live');\n        }\n      });\n    },\n\n    _goToSlide: function(slideIndex) {\n      this.$container.slick('slickGoTo', slideIndex);\n    },\n\n    onUnload: function() {\n      delete this.$container;\n    }\n  });\n\n  return Productlists;\n})();\n\n// Producttabs\ntheme.Producttabs = (function() {\n  function Producttabs(container) {\n    var _self = this; // avoid conflict\n    this.$container = $(container).on('init', this._a11y.bind(this));\n    this.slickWrap \t= '.prdtab-content';\n    this.settings \t= {\n      slidesToShow \t\t: this.$container.data('slidestoshow') || 1,\n      arrows \t\t\t: this.$container.data('arrows') || false,\n      rows \t\t\t\t: this.$container.data('rows') || 1,\n      dots \t\t\t\t: this.$container.data('dots') || false,\n      draggable\t\t\t: this.$container.data('draggable') || false,\n      infinite\t\t\t: this.$container.data('infinite') || false,\n    }\n    this.settings.slidesToShow1200 = (this.settings.slidesToShow - 1) > 1? (this.settings.slidesToShow - 1) : 1;\n    this.settings.slidesToShow992  = (this.settings.slidesToShow - 2) > 1? (this.settings.slidesToShow - 2) : 1;\n    this.settings.slidesToShow768  = (this.settings.slidesToShow - 3) > 1? (this.settings.slidesToShow - 3) : 1;\n    this.settings.slidesToShow480  = 2;\n\n    this._initSlick();\n    this.$container.find('a[data-toggle=\"tab\"]').on(\"shown.bs.tab\", function(e) {\n      _self._unSlick();\n      _self._initSlick();\n      theme.tooltip.load();\n    })\n  }\n\n  Producttabs.prototype = _.assignIn({}, Producttabs.prototype, {\n    _a11y: function(event, obj) {\n      var $list = obj.$list;\n      var $wrapper = this.$container.parent();\n\n      // Remove default Slick aria-live attr until slider is focused\n      $list.removeAttr('aria-live');\n\n      // When an element in the slider is focused set aria-live\n      $wrapper.on('focusin', function(evt) {\n        if ($wrapper.has(evt.target).length) {\n          $list.attr('aria-live', 'polite');\n        }\n      });\n\n      // Remove aria-live\n      $wrapper.on('focusout', function(evt) {\n        if ($wrapper.has(evt.target).length) {\n          $list.removeAttr('aria-live');\n        }\n      });\n    },\n\n    _getSliderSettings : function (){\n      return {\n        rtl\t\t\t\t: theme.rtl,\n        accessibility\t: true,\n        slidesToShow\t: this.settings.slidesToShow,\n        slidesToScroll\t: this.settings.slidesToShow,\n        arrows\t\t\t: this.settings.arrows,\n        rows\t\t\t: this.settings.rows,\n        dots\t\t\t: this.settings.dots,\n        infinite \t\t: this.settings.infinite,\n        draggable\t\t: this.settings.draggable,\n        responsive: [\n          {\n            breakpoint: 1200,\n            settings: {\n              slidesToShow: this.settings.slidesToShow1200,\n              slidesToScroll: this.settings.slidesToShow1200\n            }\n          },\n          {\n            breakpoint: 992,\n            settings: {\n              slidesToShow: this.settings.slidesToShow992,\n              slidesToScroll: this.settings.slidesToShow992\n            }\n          },\n          {\n            breakpoint: 768,\n            settings: {\n              slidesToShow: this.settings.slidesToShow768,\n              slidesToScroll: this.settings.slidesToShow768\n            }\n          },\n          {\n            breakpoint: 480,\n            settings: {\n              slidesToShow: this.settings.slidesToShow480,\n              slidesToScroll: this.settings.slidesToShow480\n            }\n          }\n        ]\n      }\n    },\n\n    _initSlick : function (){\n      this.$container.find(this.slickWrap).slick(this._getSliderSettings()).css('opacity','1');\n    },\n\n    _unSlick : function(){\n      this.$container.find(this.slickWrap).slick('unslick');\n    },\n\n    onUnload: function() {\n      delete this.$container;\n    },\n\n    onSelect: function() {\n      this._unSlick();\n      this._initSlick();\n    },\n\n    onBlockSelect: function(evt) {\n      var navItem = $('.nav-link-' + evt.detail.blockId);\n      navItem.tab('show');\n      this._unSlick();\n      this._initSlick();\n    }\n  });\n\n  return Producttabs;\n})();\n\ntheme.Video = (function() {\n  var promiseYoutubeAPI;\n  var promiseVimeoAPI;\n\n  var youtube = {\n    promiseAPI: function() {\n      if (!promiseYoutubeAPI) {\n        var tag = document.createElement('script');\n\n        tag.src = 'https://www.youtube.com/iframe_api';\n        var firstScriptTag = document.getElementsByTagName('script')[0];\n        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n\n        promiseYoutubeAPI = $.Deferred(function(defer) {\n          window.onYouTubeIframeAPIReady = defer.resolve;\n\n          setTimeout(function() {\n            defer.reject('Request for YouTube API timed out after 30 seconds.');\n          }, 30000);\n        });\n      }\n\n      return promiseYoutubeAPI;\n    },\n    promisePlayer: function(id, options) {\n      return this.promiseAPI().then(function() {\n        return $.Deferred(function(defer) {\n          if (typeof window.YT === 'undefined') {\n            defer.reject(\n              \"We're sorry, something went wrong. The YouTube API has not loaded correctly.\"\n            );\n          }\n\n          /* eslint-disable no-undef */\n          var player = new YT.Player(id, options); // global YT variable injected by YouTube API\n\n          player.addEventListener('onReady', function() {\n            defer.resolve(player);\n          });\n\n          setTimeout(function() {\n            defer.reject(\n              'Request for YouTube player has timed out after 30 seconds.'\n            );\n          }, 30000);\n        });\n      });\n    }\n  };\n\n  var vimeo = {\n    promiseAPI: function() {\n      if (!promiseVimeoAPI) {\n        promiseVimeoAPI = $.Deferred(function(defer) {\n          var tag = document.createElement('script');\n          tag.src = 'https://player.vimeo.com/api/player.js';\n          tag.onload = tag.onreadystatechange = function() {\n            if (!this.readyState || this.readyState === 'complete') {\n              defer.resolve();\n            }\n          };\n\n          var firstScriptTag = document.getElementsByTagName('script')[0];\n          firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n\n          setTimeout(function() {\n            defer.reject('Request for Vimeo API timed out after 30 seconds.');\n          }, 30000);\n        });\n      }\n\n      return promiseVimeoAPI;\n    },\n\n    promisePlayer: function(id, options) {\n      return this.promiseAPI().then(function() {\n        return $.Deferred(function(defer) {\n          if (typeof window.Vimeo === 'undefined') {\n            defer.reject(\n              \"We're sorry, something went wrong. The Vimeo API has not loaded correctly.\"\n            );\n          }\n\n          var player = new window.Vimeo.Player(id, options);\n\n          setTimeout(function() {\n            defer.reject(\n              'Request for Vimeo player has timed out after 30 seconds.'\n            );\n          }, 30000);\n\n          player.ready().then(function() {\n            defer.resolve(player);\n          });\n        });\n      });\n    }\n  };\n\n  var selectors = {\n    loadPlayerButton: '.video-section__load-player-button',\n    closePlayerButton: '.video-section__player-close',\n    playerContainer: '.video-section__player',\n    cover: '.video-section__cover',\n    errorMessage: '.video-section__error',\n    bodyOverlay: '.video-section__body-overlay',\n    body: 'body'\n  };\n  var classes = {\n    playerLoading: 'video-section--loading',\n    playerLoaded: 'video-section--loaded',\n    playerError: 'video-section--error',\n    videoPlaying: 'video-playing'\n  };\n\n  function Video(container) {\n    this.$container = $(container);\n    var sectionId = this.$container.attr('data-section-id');\n    this.namespace = '.' + sectionId;\n    this.onLoad();\n  }\n\n  Video.prototype = _.assignIn({}, Video.prototype, {\n    onLoad: function() {\n      this.$container\n        .on('click', selectors.loadPlayerButton, this._loadPlayer.bind(this))\n        .on('click', selectors.closePlayerButton, this._closePlayer.bind(this))\n        .on('click', selectors.bodyOverlay, this._closePlayer.bind(this));\n    },\n\n    _loadPlayer: function() {\n      var $container = this.$container;\n      var $playerContainer = $(selectors.playerContainer, $container);\n      var playerType = this.$container.attr('data-video-type');\n\n      var promiseVideoPlayer;\n\n      if (playerType === 'youtube') {\n        promiseVideoPlayer = this._loadYoutubePlayer($playerContainer[0]);\n      } else if (playerType === 'vimeo') {\n        promiseVideoPlayer = this._loadVimeoPlayer($playerContainer[0]);\n      }\n\n      return promiseVideoPlayer\n        .then(this._onPlayerLoadReady.bind(this))\n        .fail(this._onPlayerLoadError.bind(this));\n    },\n\n    _loadYoutubePlayer: function(container) {\n      return youtube\n        .promisePlayer(container, {\n          videoId: this.$container.attr('data-video-id'),\n          ratio: 16 / 9,\n          playerVars: {\n            modestbranding: 1,\n            autoplay: 1,\n            showinfo: 0,\n            rel: 0\n          }\n        })\n        .then(\n          function(player) {\n            this.player = player;\n          }.bind(this)\n        );\n    },\n\n    _loadVimeoPlayer: function(container) {\n      return vimeo\n        .promisePlayer(container, {\n          id: this.$container.attr('data-video-id')\n        })\n        .then(\n          function(player) {\n            this.player = player;\n            this.player.play();\n          }.bind(this)\n        );\n    },\n\n    _onPlayerLoadReady: function() {\n      $(selectors.closePlayerButton, this.$container)\n        .show()\n        .focus();\n      $(selectors.cover, this.$container).addClass(classes.playerLoaded);\n      this.$container.addClass(classes.playerLoaded);\n\n      this._setScrollPositionValues();\n\n      $(selectors.body).addClass(classes.videoPlaying);\n\n      $(document).on('keyup' + this.namespace, this._closeOnEscape.bind(this));\n      $(window).on(\n        'resize' + this.namespace,\n        this._setScrollPositionValues.bind(this)\n      );\n      slate.a11y.trapFocus({\n        $container: this.$container,\n        namespace: this.namespace\n      });\n    },\n\n    _onPlayerLoadError: function(err) {\n      this.$container.addClass(classes.playerError);\n      $(selectors.errorMessage, this.$container).text(err);\n    },\n\n    _closeOnEscape: function(evt) {\n      if (evt.keyCode !== 27) {\n        return;\n      }\n\n      this._closePlayer();\n      $(selectors.loadPlayerButton, this.$container).focus();\n    },\n\n    _onScroll: function() {\n      var scrollTop = $(window).scrollTop();\n\n      if (\n        scrollTop > this.videoTop + 0.25 * this.videoHeight ||\n        scrollTop + this.windowHeight <\n          this.videoBottom - 0.25 * this.videoHeight\n      ) {\n        // Debounce DOM edits to the next frame with requestAnimationFrame\n        requestAnimationFrame(this._closePlayer.bind(this));\n      }\n    },\n\n    _setScrollPositionValues: function() {\n      this.videoHeight = this.$container.outerHeight(true);\n      this.videoTop = this.$container.offset().top;\n      this.videoBottom = this.videoTop + this.videoHeight;\n      this.windowHeight = $(window).innerHeight();\n    },\n\n    _closePlayer: function() {\n      $(selectors.body).removeClass(classes.videoPlaying);\n      $(selectors.cover, this.$container).removeClass(classes.playerLoaded);\n      this.$container.removeClass(classes.playerLoaded);\n      $(selectors.closePlayerButton, this.$container).hide();\n\n      slate.a11y.removeTrapFocus({\n        $container: this.$container,\n        namespace: this.namespace\n      });\n\n      if (typeof this.player.destroy === 'function') {\n        this.player.destroy();\n      } else if (typeof this.player.unload === 'function') {\n        this.player.unload();\n      }\n\n      $(document).off(this.namespace);\n      $(window).off(this.namespace);\n    }\n  });\n\n  return Video;\n})();\n\n\n\ntheme.SwiperCustom = (function() {\n  function SwiperCustom(container) {\n    this.container = container;\n    this.sectionId = $(container).attr('data-section-id');\n    this.nav = '.swiper-wrapper-' + this.sectionId;\n    this.namespace = '.swipercol-' + this.sectionId;\n    var perviewDesktop= $(container).data('perview-desktop');\n    var perviewMobile= $(container).data('perview-mobile') || 2.2;\n    var spaceBetween= $(container).data('space-between');\n    var swiper = new Swiper(this.namespace, {\n      slidesPerView: \"auto\",\n      freeMode: false,\n      autoHeight: true,\n      calculateHeight:true,\n      freeModeSticky: true,\n      centeredSlides: false,\n      grabCursor: true,\n      watchSlidesVisibility: true,\n      watchSlidesProgress: true,\n      preloadImages: true,\n      updateOnImagesReady: true,\n      spaceBetween: spaceBetween,\n      observer: true,\n      observeParents: true,\n      parallax:true,\n      a11y: true,\n      keyboard: {\n        enabled: true,\n      },\n      breakpoints: {\n        320: {\n          slidesPerView: perviewMobile,\n          spaceBetween: 20\n        },\n        576: {\n          slidesPerView: 2,\n        },\n        768: {\n          slidesPerView: 3,\n        },\n        992: {\n          slidesPerView: perviewDesktop,\n        },\n      },\n      scrollbar: {\n        el: $(this.namespace).find(\".swiper-scrollbar\")[0],\n      },\n      navigation: {\n        nextEl: $(this.nav).find(\".swiper-button-next\")[0],\n        prevEl: $(this.nav).find(\".swiper-button-prev\")[0],\n      },\n    });\n   \n  }\n  return SwiperCustom;\n})();\n\n\ntheme.AnnouncementSwiper = (function() {\n  function AnnouncementSwiper(container) {\n    this.container = container;\n    this.sectionId = $(container).attr('data-section-id');\n    this.namespace = '.announswipercol-' + this.sectionId;\n    var rootElement = document.querySelector(':root');\n    var anNounBar = document.querySelector('.announcement-bar-carousel');\n    rootElement.style.setProperty(\"--height-announbar\", anNounBar.offsetHeight + \"px\");\n    var swiper = new Swiper(this.namespace, {\n      slidesPerView:1,\n      loop: $(this.namespace).find(\".slider .slide\").length == 1 ? true: false,\n      autoHeight: true,\n      calculateHeight:true,\n      observer: true,\n      a11y: true,\n      navigation: {\n        nextEl: $(this.namespace).find(\".swiper-button-next\")[0],\n        prevEl: $(this.namespace).find(\".swiper-button-prev\")[0],\n      }\n    });\n    document.addEventListener('shopify:block:select', function (event) {\n      var sectionId = event.detail.sectionId;\n      var blockId = event.detail.blockId;\n      var load = event.detail.load;\n      var index = $(`#${blockId}`).index();\n      swiper.slideTo(index);\n    });\n  }\n  return AnnouncementSwiper;\n})();\n\ntheme.init = function() {\n  theme.customerTemplates.init();\n  slate.rte.wrapTable();\n  slate.rte.iframeReset();\n\n  // Common a11y fixes\n  slate.a11y.pageLinkFocus($(window.location.hash));\n\n  $('.in-page-link').on('click', function(evt) {\n    slate.a11y.pageLinkFocus($(evt.currentTarget.hash));\n  });\n\n  $('a[href=\"#\"]').on('click', function(evt) {\n    evt.preventDefault();\n  });\n\n\n    //scroll animation\n    \n  AOS.init({\n    startEvent: 'DOMContentLoaded',\n    offset: 30, // offset (in px) from the original trigger point\n    delay: 0, // values from 0 to 3000, with step 50ms\n    duration: 700,\n    once: true\n  });\n  \n  window.addEventListener('load', function() {\n    AOS.refresh();\n  });\n  document.querySelectorAll('img')\n    .forEach((img) =>\n        img.addEventListener('load', () =>\n            AOS.refresh()\n        )\n    );\n  \n\n\n  // Sections\n  var sections = new theme.Sections();\n  sections.register('header', theme.HeaderSection);\n  sections.register('product', theme.Product);\n  sections.register('slideshow-section', theme.SlideshowSection);\n  sections.register('cart', theme.Cart);\n  sections.register('instagrams', theme.Instagrams);\n  sections.register('productlist', theme.Productlists);\n  sections.register('producttab', theme.Producttabs);\n  sections.register('slickCarousels', theme.slickCarousel);\n  sections.register('slickPress', theme.slickPress);\n  sections.register('video', theme.Video);\n  sections.register('swipercustom',theme.SwiperCustom);\n  sections.register('announcementswiper',theme.AnnouncementSwiper);\n  sections.register('cookie', theme.CookieSection);\n  sections.register('popupnewletter', theme.popupNewletter);\n  sections.register('beforeafter', theme.BeforeAfter);\n  sections.register('bundleproduct', theme.bundleProduct);\n  sections.register('footer', theme.FooterSection);\n  \n\n  // Standalone modules\n  $(window).on('load', theme.articleImages);\n  theme.passwordModalInit();\n};\n\ntheme.articleImages = function() {\n  var $indentedRteImages = $('.rte--indented-images');\n  if (!$indentedRteImages.length) {\n    return;\n  }\n\n  $indentedRteImages.find('img').each(function(i, el) {\n    var $el = $(el);\n    var attr = $el.attr('style');\n\n    // Check if undefined or float: none\n    if (!attr || attr === 'float: none;') {\n      // Add class to parent paragraph tag if image is wider than container\n      if ($el.width() >= $indentedRteImages.width()) {\n        $el.parent('p').addClass('rte__image-indent');\n      }\n    }\n  });\n};\n\ntheme.passwordModalInit = function() {\n  var $loginModal = $('#LoginModal');\n  if (!$loginModal.length) {\n    return;\n  }\n\n  // Initialize modal\n  theme.PasswordModal = new window.Modals('LoginModal', 'login-modal', {\n    focusOnOpen: '#Password'\n  });\n\n  // Open modal if errors exist\n  if ($loginModal.find('.errors').length) {\n    theme.PasswordModal.open();\n  }\n};\n\n\n// Quickview https://github.com/kellyvaughn/quickview-for-shopify/blob/master/quickview.js.liquid\ntheme.quickview = (function() {\n  var product_handle = '',\n      quickviewButtonClass = '.js-btn-quickview',\n      quickviewId = '#jsQuickview',\n      quickviewOption = '#jsQuickview select',\n      quickviewThumb = '#qv-product-images',\n      quickviewAddCartButton = '.qv-add-button',\n      quickviewPrice = '.qv-product-price',\n      quickviewComparePrice = '.qv-product-compare-price';\n      quickLoad = '#loading_qv';\n      quickQty = '.popup-quantity';\n  // 1. Show quickview\n  $(quickLoad).removeClass('activeload');\n  $(quickviewId).removeClass('loadqvpopup');\n\n  //quanity quickview\n  \n  $(\".qv-qtity\").on(\"click\", function () {\n    var $button = $(this);\n    var oldValue = $button.closest(quickQty).find(\"input.qv-quantity\").val();\n    if ($button.text() == \"+\") {\n        var newVal = parseFloat(oldValue) + 1;\n    } else {\n        // Don't allow decrementing below zero\n        if (oldValue > 1) {\n            var newVal = parseFloat(oldValue) - 1;\n        } else {\n            newVal = 1;\n        }\n    }\n    $button.closest(quickQty).find(\"input.qv-quantity\").val(newVal);\n  });\n  //click\n  $(document).on('click',quickviewButtonClass, function() {\n    $(quickQty).find(\"input.qv-quantity\").val(1);\n    //ResetQuickview\n    $(quickLoad).addClass('activeload');\n    var qv_color = $(quickviewId).data('color');\n    var quickviewAvaible = $(this).attr(\"data-pavailable\");\n    var jdmgReview = $(this).attr(\"data-viewjdmg\");\n    product_handle = $(this).data('handle');\n    $(quickviewThumb).removeClass().empty();\n    $('.qv-product-options').empty().removeClass('pb-3');\n    var desc = $(this).find('.txt-short').text();\n    \n    //Pushdata\n    $(quickviewId).addClass(product_handle).data('handle',product_handle);\n      $.getJSON({\n        url: '/products/' + product_handle + '.js?' + new Date().getTime(),\n        beforeSend: function() {\n          $(quickviewButtonClass+`[data-handle=${product_handle}]`).addClass('qv-loading');\n        },\n        \n      }).done(function(product) {\n        $(quickviewId).removeClass().addClass('modal fade show loadqvpopup');\n        var title = product.title;\n        var type = product.type;\n        var vendor = product.vendor;\n        var price = 0;\n        var compare_price = 0;\n        var images = product.images;\n        var variants = product.variants;\n        var options = product.options;\n        var url = '/products/' + product_handle;\n        \n        $('.qv-product-title').text(title);\n        function renderReview(){\n          if(window.SPR &&  theme.review ){\n            $('.qv-product-rv').html(`<span class=\"shopify-product-reviews-badge\" data-id=\"${product.id}\"></span>`);\n            return window.SPR.registerCallbacks(),\n            window.SPR.initRatingHandler(),\n            window.SPR.initDomEls(),\n            window.SPR.loadProducts(),\n            window.SPR.loadBadges()\n          }\n          if(theme.review && typeof jdgm !== 'undefined' ){\n            $('.qv-product-rv').html(`<div class='pt-1 small' >${jdmgReview}</div>`);\n            return jdgm.customizeBadges();\n          }\n        }\n        renderReview();\n        $('.qv-product-type').text(type);\n        $('.qv-product-description').html(desc);\n        $('.qv-view-product').attr('href', url);\n        $('.qv-view-product').click(function(){\n          window.location.href = url;\n        });\n        $('.qv-view-type').text(type);\n        $('.qv-view-vendor').text(vendor);\n        if ($('.qv-product-description').is(':empty')){\n          $('.qv-product-description').removeClass('mb-1');\n        }\n        else{\n          $('.qv-product-description').addClass('mb-1');\n        }\n        if(quickviewAvaible == 'true'){\n          $(quickviewAddCartButton).prop('disabled', false).html(theme.strings.addToCart);\n        }\n        else{\n          $(quickviewAddCartButton).prop('disabled', true).html(theme.strings.soldOut);\n        }\n        $(product.variants).each(function(i,variants) {\n          if(variants.sku != null){\n            $('.qv-sku').addClass(\"show\").removeClass(\"hide\");\n            $('.qv-view-sku').text(product.variants[0].sku);\n          }\n          else{\n            $('.qv-sku').addClass(\"hide\").removeClass(\"show\");\n          }\n          \n        });\n        var imageCount = $(images).length;\n        $(images).each(function(i, image) {\n          image_embed = '<div><img class=\"lazyload \" role=\"presentation\"  data-src=\"' + image+\"&width=800\" + '\" srcset=\"' + image+\"&width=800\" + '\" src=\"' + image+\"&width=800\" + '\" ></div>';\n          $(quickviewThumb).append(image_embed);\n        });\n        $(quickviewThumb).slick({\n          rtl:theme.rtl,\n          'dots': true,\n          'arrows': true,\n          'respondTo': 'min',\n          'useTransform': true\n        }).css('opacity', '1');\n  \n        if (product.variants[0].option1 !== \"Default Title\"){\n          $(options).each(function(i, option) {\n            var name = option.name;\n            var opt = name.replace(/ /g, '-').toLowerCase();\n            var selectClass = '.option.' + opt;\n            $('.qv-product-options').append(`\n              <div class=\"option-selection ${opt}\">\n                <span class=\"option text-body\">\n                  ${option.name} :\n                  <span class=\"pl-2 txt-body-70 js-option-label-${i}\">\n                    ${option.values[0]}\n                  </span>\n                </span>\n                <select class=\"option-${i} option_qv ${opt}\"></select>\n              </div>\n            `).addClass('pb-3');\n\n            $(option.values).each((i, value) => {\n              $(`.option_qv.${opt}`).append(`<option value=\"${value}\">${value}</option>`);\n            });\n            //list\n            if ($(\"#jsQuickview\").data('type') == 'list') {\n              var colorVariants = theme.strings.colorVariant.split(','); \n              var isColorVariant = colorVariants.some(function(variant) {\n                return option.name.includes(variant.trim()); \n              });\n              var str = '<div class=\"single-option-radio js-option-' + i + ' \">';\n              if (isColorVariant) {\n                var k = i + 1;\n              }\n              \n              //option.values = option.values.sort();\n              $(option.values).each(function(i, value) {\n                var cl=\"\";\n                if (i == 0){\n                  cl=\"active\";\n                }\n                if (isColorVariant) {\n                  var variant_img = '';\n                  for (cc = 0; cc < variants.length; cc++) { \n                    if (variants[cc]['option'+k] == value) {\n                      if (variants[cc]['featured_image'] && variants[cc]['featured_image']['src']) {\n                        variant_img = variants[cc]['featured_image']['src'];\n                      }\n                    }\n                  }\n                  \n                  if (variant_img == '') {\n                    str += '<label class=\"'+cl+'\" data-value=\"'+value+'\">'+value+'</label>';\n                  } else {\n                    if(qv_color){\n                      var file = variant_img;\n                      var nvl = value.replace(/&/g, 'amp').replace(/[^a-zA-Z0-9]+/g, '-').toLowerCase();\n                      const escapedValue = nvl;\n\n                      file = file.slice(0, file.lastIndexOf(\"/products\"));\n                      str += `<label class=\"have-background st-color-${escapedValue} ${cl}\" data-value=\"${value}\" style=\"background-color:${value};\"><span class=\"st-color-${escapedValue} st-color\"></span><span>${value}</span></label>`;\n\n                    }\n                    else{\n                      str += '<label class=\"have-background '+cl+'\" data-value=\"'+value+'\" style=\"background-image:url('+variant_img+')\">'+value+'</label>';\t\n                    }                  \n                     \n                  }\n                  \n                } else{\n                  str += '<label class=\"'+cl+'\" data-value=\"'+value+'\">'+value+'</label>';\n                }\n                \n              });\n              str += '</div>';\n              $(`.option-selection.${opt}`).append(str);\n            }\n          });\n          if ($(\"#jsQuickview\").data('type') == 'list') {\n            $(\"#jsQuickview .option-selection label\").click(function(){\n  \n              $(this).closest('.option-selection').find('select').val($(this).data('value'));\n              $(this).closest('.option-selection').find('label').removeClass('active');\n              $(this).addClass('active');\n              \n              var arr_option = [];\n              $(\"#jsQuickview\").find('select.option').each(function(){\n                arr_option.push($(this).val());\n              });\n              var status = true;\n              var variant = '';\n              for (i=0; i<variants.length; i++) {\n                var status = true;\n                for (j=0; j<arr_option.length; j++) {\n                  if (arr_option[j] != variants[i]['options'][j]) {\n                    status = false;\n                  }\n                }\n                if (variants[i]['available'] == false) {\n                    status = false;\n                }\n                if (status == true) {\n                  variant = variants[i];\n                }\n              }\n              //console.log(variant);\n              //console.log(variant['available']);\n              if (variant != '' || variant['available']) {\n                $(\".qv-add-button\").prop( \"disabled\", false );\n                \n              } else {\n                $(\".qv-add-button\").prop(\"disabled\", true).html(theme.strings.unavailable);\n              }\n              \n              \n              var selectedOptions = '';\n              $(quickviewOption).each(function(i) {\n                if (selectedOptions == '') {\n                  selectedOptions = $(this).val();\n                } else {\n                  selectedOptions = selectedOptions + ' / ' + $(this).val();\n                }\n              });\n              var targetVl = $(this).data(\"value\");\n              for (i=0; i<variants.length; i++) {\n                $(this).closest('.option-selection').find('.js-option-label-'+i+'').text(targetVl);\n              }\n              \n              jQuery.getJSON(`/products/${product_handle}.js`, function(product) {\n                $(product.variants).each(function(i, v) {\n                  if (v.title == selectedOptions) {\n                    if (v.featured_image !== null){\n                      var iSlick = v.featured_image.position - 1;\n                      $(quickviewThumb).slick('slickGoTo', iSlick);\n                    }\n                    var price = theme.Currency.formatMoney(v.price, theme.moneyFormat);\n                    var compare_price = theme.Currency.formatMoney(v.compare_at_price, theme.moneyFormat);\n                    $(quickviewPrice).html(price);\n                    $(quickviewComparePrice).html(compare_price);\n                    if (v.compare_at_price !== null) {\n                      $(quickviewComparePrice).html(compare_price).show();\n                    } else {\n                      $(quickviewComparePrice).hide();\n                    }\n                    //theme.updateCurrencies();\n                    \n                    if (v) {\n                      if (v.available == true) {\n                        $(quickviewAddCartButton).prop('disabled', false).html(theme.strings.addToCart);\n                      }\n                      else {\n                        $(quickviewAddCartButton).prop('disabled', true).html(theme.strings.soldOut);\n                      }\n                    }\n                    else {\n                      $(quickviewAddCartButton).prop('disabled', false).html(theme.strings.unavailable);\n                    }\n                  }\n  \n                });\n              });\n  \n            });\n          }\n        }\n        $(product.variants).each(function(i, v) {\n          price = theme.Currency.formatMoney(v.price, theme.moneyFormat);\n          compare_price = theme.Currency.formatMoney(v.compare_at_price, theme.moneyFormat);\n          $(quickviewPrice).html(price);\n          if (v.compare_at_price !== null) {\n            $(quickviewComparePrice).html(compare_price).show();\n          } else {\n            $(quickviewComparePrice).hide();\n          }\n          //theme.updateCurrencies();\n          //v.inventory_quantity == 0 && v.inventory_management == 'shopify'\n          if (v.inventory_quantity == 0 && v.inventory_management == 'shopify') {\n            $(quickviewAddCartButton).prop('disabled', true).val(theme.strings.soldOut);\n            return true\n          } else {\n            $('select.option-0').val(v.option1);\n            $('select.option-1').val(v.option2);\n            $('select.option-2').val(v.option3);\n            return false\n          }\n        });\n       \n      }).fail(function() {\n      console.log( \"error\" );\n    }).always(function() {\n        $(quickviewButtonClass+`[data-handle=${product_handle}]`).removeClass('qv-loading');\n        $(quickLoad).removeClass('activeload');\n    });\n    //addCartQuickview\n  });\n  $(quickviewId).on(\"hidden.bs.modal\", function () {\n    $(quickviewId).removeClass('loadqvpopup');\n    $(quickLoad).removeClass('activeload');\n  });\n  // 2. Add to cart\n  $(document).on('click',quickviewAddCartButton, function(){\n    product_handle = $(quickviewId).data('handle');\n    var spinner = '<div class=\"product-card__loading spinner-border d-block\" role=\"status\"></div>';\n    var qty = $('.qv-quantity').val(),\n        selectedOptions = '',\n        var_id = '';\n    function processCart() {\n      $.post({\n        url: '/cart/add.js',\n        data: {\n          quantity: qty,\n          id: var_id\n        },\n        dataType: 'json',\n        beforeSend: function() {\n          $(quickviewAddCartButton).html(spinner);\n        }\n      })\n      .done(function(item) {\n        var htmlVariant = item.variant_title !== null ? '<i>('+item.variant_title+')</i>' : '';\n        var styleCart = $('.js-mini-cart').attr(\"data-cartmini\");\n        \n        if(styleCart != 'true'){\n        var htmlAlert = '<div class=\"media mt-2 alert--cart\"><a class=\"mr-3\" href=\"/cart\"><img class=\"lazyload\" data-src=\"'+item.image+'\"></a><div class=\"media-body align-self-center\"><p class=\"m-0 font-weight-bold\">'+item.product_title+' x '+ item.quantity +'</p>'+htmlVariant+'<div><div>';\n        theme.alert.new(theme.strings.addToCartSuccess,htmlAlert,3000,'notice');\n        }\n        \n        theme.miniCart.updateElements();\n        theme.miniCart.generateCart();\n\n        if(theme.cartpage){\n          location.reload();\n          $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\n        }\n      })\n      .fail(function($xhr) {\n        var data = $xhr.responseJSON;\n        theme.alert.new('',data.description,3000,'warning');\n      }).always(function() {\n        $(quickviewAddCartButton).prop('disabled', false).html(theme.strings.addToCart);\n        $(quickviewId).modal('hide');\n      });\n    }\n    $(quickviewOption).each(function(i) {\n      if (selectedOptions == '') {\n        selectedOptions = $(this).val();\n      } else {\n        selectedOptions = selectedOptions + ' / ' + $(this).val();\n      }\n    });\n    jQuery.getJSON('/products/' + product_handle + '.js', function(product) {\n      if (product.variants.length === 1){\n        var_id = product.variants[0].id;\n      }else{\n        $(product.variants).each(function(i, v) {\n          if (v.title == selectedOptions) {\n            var_id = v.id;\n          }\n        });\n      }\n      processCart();\n    });\n  });\n  // 3. Select variants\n  $(document).on('change', quickviewOption, function() {\n    var selectedOptions = '';\n    $(quickviewOption).each(function(i) {\n      if (selectedOptions == '') {\n        selectedOptions = $(this).val();\n      } else {\n        selectedOptions = selectedOptions + ' / ' + $(this).val();\n      }\n    });\n    jQuery.getJSON('/products/' + product_handle + '.js', function(product) {\n      $(product.variants).each(function(i, v) {\n        \n        if (v.title == selectedOptions) {\n          if (v.featured_image !== null){\n            var iSlick = v.featured_image.position - 1;\n            $(quickviewThumb).slick('slickGoTo', iSlick);\n          }\n          var price = theme.Currency.formatMoney(v.price, theme.moneyFormat);\n          var compare_price = theme.Currency.formatMoney(v.compare_at_price, theme.moneyFormat);\n          $(quickviewPrice).html(price);\n          $(quickviewComparePrice).html(compare_price);\n          if(v.sku != null){\n            $('.qv-sku').addClass(\"show\").removeClass(\"hide\");\n            $('.qv-view-sku').text(v.sku);\n          }\n          else{\n            $('.qv-sku').addClass(\"hide\").removeClass(\"show\");\n          }\n          if (v.compare_at_price !== null) {\n            $(quickviewComparePrice).html(compare_price).show();\n          } else {\n            $(quickviewComparePrice).hide();\n          }\n          //theme.updateCurrencies();\n          if (v.inventory_management === null) {\n            $(quickviewAddCartButton).prop('disabled', false).val(theme.strings.addToCart);\n          } else {\n            if (v.inventory_quantity < 1) {\n              $(quickviewAddCartButton).prop('disabled', true).val(theme.strings.soldOut);\n            } else {\n              $(quickviewAddCartButton).prop('disabled', false).val(theme.strings.addToCart);\n            }\n          }\n        }\n      });\n    });\n  });\n})()\n\n// Button add to cart (in grid item)\ntheme.addCartButton = (function(){\n  var buttonClass = '.js-grid-cart';\n  $(document).on('click',buttonClass,function(){\n    var $this = $(this);\n    var id = $this.data('id');\n    $this.addClass('is-loading');\n    Shopify.addItem(id,1,function(item){\n      var htmlVariant = item.variant_title !== null ? '<i>('+item.variant_title+')</i>' : '';\n      var styleCart = $('.js-mini-cart').attr(\"data-cartmini\");\n        if(styleCart != 'true'){\n          var htmlAlert = '<div class=\"media mt-2 alert--cart\"><a class=\"mr-3\" href=\"/cart\"><img class=\"lazyload\" data-src=\"'+item.image+'\"></a><div class=\"media-body align-self-center\"><p class=\"m-0 font-weight-bold\">'+item.product_title+' x '+ item.quantity +'</p>'+htmlVariant+'<div><div>';\n        }\n        theme.miniCart.generateCart();\n        theme.miniCart.updateElements();\n        setTimeout(function() {\n          styleCart != 'true' ? theme.alert.new(theme.strings.addToCartSuccess,htmlAlert,3000,'notice'): '';\n        \n          $this.removeClass('is-loading');\n        }, 300);\n        if(theme.cartpage){\n          location.reload();\n          $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\n        }\n    });\n    \n  })\n})()\n\ntheme.GiftWrap = (function(){\n  var openBox = '.open-gift',\n      giftWrap = '.giftwrap'\n      addGift    = '.add-gift',\n      boxGift = '.boxgift',\n      closeBtn = '.close-gift__btn',\n      idGift = $(addGift).data('id'),\n      cartDraw = $('.mini-cart-content');\n  $(document).on('click',openBox,function(){\n    $(this).next().addClass('active');\n    $(this).closest(cartDraw).addClass('overlay');\n  });\n  $(document).on('click',closeBtn,function(){\n    $(this).closest(boxGift).removeClass('active');\n    $(this).closest(cartDraw).removeClass('overlay');\n  });\n  function addGiftInCart() {\n    \n    $(document).on('click',addGift,function(e){\n      e.preventDefault();\n      $(this).addClass('is-loading');\n      \n      Shopify.addItem(idGift,1,function(item){\n        //console.log(item);\n          theme.miniCart.generateCart();\n          theme.miniCart.updateElements();\n          setTimeout(function() {\n            $(this).removeClass('is-loading');\n          },300);\n          if(theme.cartpage){\n            location.reload();\n            $(\"html, body\").animate({ scrollTop: 0 }, \"normal\");\n          }\n      });\n      \n    })\n  }\n  addGiftInCart();\n  function hideGift(id){\n    if(id === idGift){\n      $(giftWrap).addClass('hide');\n      $(boxGift).removeClass('active');\n      $(addGift).removeClass('is-loading');\n      $(cartDraw).removeClass('overlay');\n    } \n  }\n  function checkGift(id){\n    if(id === idGift){\n      $(giftWrap).removeClass('hide');\n      $(boxGift).removeClass('active');\n      $(addGift).removeClass('is-loading');\n      $(cartDraw).removeClass('overlay');\n    } \n  }\n  return{\n    \n    hideGift:hideGift,\n    checkGift: checkGift,\n  }\n})()\n\ntheme.openAddon = (function(){\n  var openBlock = '.js-open-addon',\n      closeBlock = '.btn-close-addon',\n      addonBlock = '.block-addon__box--wrap'\n      cartDraw = $('.mini-cart-content');\n      $(document).on('click',openBlock,function(){\n        $(this).next().addClass('active');\n        $(this).closest(cartDraw).addClass('overlay');\n      });\n      $(document).on('click',closeBlock,function(){\n        $(this).closest(addonBlock).removeClass('active');\n        $(this).closest(cartDraw).removeClass('overlay');\n      });\n})()\n\n\n\n// MiniCart\ntheme.miniCart = (function(){\n  var miniCart = '.js-mini-cart',\n      styleCart = $(miniCart).attr(\"data-cartmini\"),\n      cartToggle = '.js-toggle-cart',\n      cartCount = '.js-cart-count',\n      cartContent = '.js-mini-cart-content',\n      cartTotal = '.js-cart-total',\n      $crosellcart = '.drawer-crossell',\n      $cartBottom = '.js-cart-bottom',\n      $btnCheckout = $('.js-cart-btn-checkout'),\n      numberDisplayed = 5,\n      buttonHtml = '<a class=\"btn btn-outline w-100 mt-5\" href='+theme.strings.cartCollection+'>'+theme.strings.cartEmptyButton+'</a>',\n      emptyCartHTML = '<div class=\"alert mini-cart-empty h-100 d-flex align-items-center flex-column justify-content-center\"><div class=\"\"><div class=\"iconcart-empty\">'+theme.strings.cartIcon+'</div><div class=\"txtcart-empty mt-4\">'+theme.strings.cartEmpty+'</div>'+buttonHtml+'</div></div>',\n      cartimgsize = $(cartContent).attr('data-sizeimg');\n\n\n  function updateElements(){\n    Shopify.getCart(function(cart){\n      if (cart.item_count === 0) {\n        $(cartContent).html(emptyCartHTML);\n        $(`${$cartBottom}, ${$crosellcart}`).hide(100);\n        if( styleCart === 'true'){\n          $(miniCart).removeClass('active');\n          $('body').removeClass('overflow-hidden');\n        }\n        \n      }else{\n        $(`${$cartBottom}, ${$crosellcart}`).show(100);\n        if( styleCart === 'true'){\n          $(miniCart).addClass('active')\n          $('body').addClass('overflow-hidden');\n        }\n      }\n      $(cartCount).text(cart.item_count);\n      $(cartTotal).html(theme.Currency.formatMoney(cart.total_price, theme.moneyFormat));\n         if (!cart?.items?.[0]?.product_id) {\n            return;\n        }\n        observeProductRecommendations(cart.items[0].product_id);\n      theme.freeShipping.load(cart);\n    })\n  }\n  function generateCart(){\n    \n    Shopify.getCart(function(cart){\n      var htmlCart = cart.item_count === 0? emptyCartHTML:'',\n          itemCount = cart.items.length,\n          forLoop = itemCount < numberDisplayed ? itemCount : numberDisplayed;\n          if (cart.item_count === 0) {\t\n            $(`${$cartBottom}, ${$crosellcart}`).hide(100);\n          }else{\t\n            $(`${$cartBottom}, ${$crosellcart}`).show(100);\n            \n          }\n          //styleCart === 'true' ? cart.items.length ? $(miniCart).addClass('active'): $(miniCart).removeClass('active') :null;\n\n      // add list items\n      let lastLine;\n      for (let i = 0; i < forLoop; i++) { \n        var line = i+1;\n        var product = cart.items[i],\n         productPrice = theme.Currency.formatMoney(product.price, theme.moneyFormat),\n        finalPrice =  theme.Currency.formatMoney(product.final_price, theme.moneyFormat);\n        if(product.final_price < product.price ){\n          var ItemPrice = `<s>${productPrice}</s>  ${finalPrice}`\n        }\n        else{\n           var ItemPrice = `${productPrice}`\n        }\n        let ProductName = product.title.split(\" - \")[0];\n\n        if (product.variant_title) {\n          ProductName += `<br><b>${product.variant_title}</b>`;\n        }\n        theme.GiftWrap.hideGift(product.id);\n        lastLine = line - 1;\n        htmlCart += `<div class=\"mini-cart-item\">`;\n        htmlCart += `\t<a class=\"mini-cart-image \" href=\"${product.url}\"> <span class=\"d-block mini-cart-img ${cartimgsize}\">`;\n        htmlCart += `\t\t<img src=\"${product.image}&width=160\"/>`;\n        htmlCart += `\t</span></a>`;\n        htmlCart += `\t<div class=\"mini-cart-meta\">`;\n        htmlCart += `\t\t<div class=\"mb-1\"><a href=\"${product.url}\">${ProductName}</a></div>`;\n        htmlCart += `\t\t<span>${ItemPrice}</span> x ${product.quantity}<div class=\"d-flex align-items-center mt-2 justify-content-between\"><div class=\"js-qty mt-1\"><input data-line=\"`+ line + `\" type=\"text\" min=\"0\" class=\"change-minicart js-qty__input\" pattern=\"[0-9]*\" value=\"${product.quantity}\"><button type=\"button\" class=\"js-qty__adjust js-qty__minus\" aria-label=\"Reduce item quantity by one\"><svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"icon icon-minus\" viewBox=\"0 0 22 3\"><path fill=\"#000\" d=\"M21.5.5v2H.5v-2z\" fill-rule=\"evenodd\"></path></svg><span class=\"icon__fallback-text\">\u2212</span></button><button type=\"button\" class=\"js-qty__adjust js-qty__plus\" aria-label=\"Increase item quantity by one\"><svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"icon icon-plus\" viewBox=\"0 0 22 21\"><path d=\"M12 11.5h9.5v-2H12V0h-2v9.5H.5v2H10V21h2v-9.5z\" fill=\"#000\" fill-rule=\"evenodd\"></path></svg><span class=\"icon__fallback-text\">+</span></button></div><button class=\"btn js-remove-mini-cart link pr-0\" data-id=\"${product.id}\">Remove</button></div>`;\n        htmlCart += `\t</div>`;\n        htmlCart += `</div>`;\n      }\n      //observeProductRecommendations(cart.items[0].product_id);\n\n      if (itemCount > numberDisplayed){\n        htmlCart += '<p><a class=\"js-btn-viewmore small\" href=\"/cart\">'+theme.strings.cartMore+' ('+(itemCount - numberDisplayed)+')</a></p>'\n      }\n      // add total price and cart button / checkout button\n      $(cartContent).html(htmlCart);\n      $(\".js-qty__plus\").unbind('click');\n      $(\".js-qty__minus\").click(function(){\n        if ($(this).parent().find('input').val() < 1) {\n          $(this).parent().find('input').val(0);\n        }else{\n          $(this).parent().find('input').val(parseInt($(this).parent().find('input').val()) - 1);\n        }\n        var qty = $(this).parent().find('input').val();\n        var line = $(this).parent().find('input').data('line');\n      \tjQuery.post('/cart/change.js', {\n          quantity: qty,\n          line: line\n        },null,\"json\").done(function(item) {\n          theme.miniCart.updateElements();\n          theme.miniCart.generateCart();\n        })\n      });\n      $(\".js-qty__plus\").unbind('click');\n      $(\".js-qty__plus\").click(function(){\n        $(this).parent().find('input').val(parseInt($(this).parent().find('input').val()) + 1);\n        \n        var qty = $(this).parent().find('input').val();\n        var line = $(this).parent().find('input').data('line');\n        jQuery.post('/cart/change.js', {\n          quantity: qty,\n          line: line\n        },null,\"json\").done(function(item) {\n          theme.miniCart.updateElements();\n          theme.miniCart.generateCart();\n        })\n        \n      });\n      \n      $(cartTotal).html(theme.Currency.formatMoney(cart.total_price, theme.moneyFormat));\n      //theme.updateCurrencies();\n    })\n  }\n  //observeProductRecommendations\n  function observeProductRecommendations(customID) {\n      if (!customID) return;\n  \n      const loadingIndicator = document.querySelector('.recommend-loading');\n      const productRecommendationsSection = document.querySelector('.product-recommendations-in');\n    \n      if (!productRecommendationsSection || !loadingIndicator || !productRecommendationsSection.dataset.url) {\n          return;\n      }\n  \n      const handleIntersection = (entries, observer) => {\n          if (!entries[0].isIntersecting) return;\n    \n          observer.unobserve(productRecommendationsSection);\n    \n          const url = `${productRecommendationsSection.dataset.url}&product_id=${customID}&limit=4&intent=related`;\n          \n          loadingIndicator.classList.add('loading');\n    \n          fetch(url)\n              .then(response => {\n                  if (!response.ok) {\n                      throw new Error();\n                  }\n                  return response.text();\n              })\n              .then(text => {\n                  const html = document.createElement('div');\n                  html.innerHTML = text;\n                  const recommendations = html.querySelector('.product-recommendations-in');\n    \n                  if (recommendations && recommendations.innerHTML.trim().length) {\n                      const newContent = recommendations.innerHTML;\n                      requestAnimationFrame(() => {\n                          productRecommendationsSection.innerHTML = newContent;\n                          loadingIndicator.classList.remove('loading');\n                      });\n                  } else {\n                      loadingIndicator.classList.remove('loading');\n                      productRecommendationsSection.style.display = 'none';\n                  }\n              })\n              .catch(() => {\n                  loadingIndicator.classList.remove('loading');\n                  productRecommendationsSection.style.display = 'none';\n              });\n      };\n    \n      const observer = new IntersectionObserver(handleIntersection, { \n          rootMargin: '0px 0px 200px 0px',\n          threshold: 0.1\n      });\n  \n      observer.observe(productRecommendationsSection);\n  }\n  \n  function renderRecommendations() {\n      if (typeof Shopify === 'undefined' || typeof Shopify.getCart !== 'function') {\n          return;\n      }\n  \n      Shopify.getCart(function(cart) {\n          // Early return if cart or items is not valid\n          if (!cart?.items?.[0]?.product_id) {\n              return;\n          }\n  \n          observeProductRecommendations(cart.items[0].product_id);\n      });\n  }\n  \n  \n  \n  // 2. Button remove items\n  $(document).on('click','.js-remove-mini-cart',function(){\n    const loadingIndicator = document.querySelector('.recommend-loading');\n    var itemId = $(this).data('id');\n    var isOuterMiniCart = $(this).closest(miniCart).length === 0? true : false;  // check element from mini cart or not\n    \n    // hide items\n    $(this).parents('.mini-cart-item').fadeOut(100);\n    if(loadingIndicator){\n      loadingIndicator.classList.add('loading');\n    }\n    theme.GiftWrap.checkGift(itemId);\n    //remove from cart\n    Shopify.changeItem(itemId,0,updateElements);\n    Shopify.getCart(function(cart){\n      if (cart.items.length > numberDisplayed || isOuterMiniCart) {\n        generateCart();\n      }\n    });\n  });\n\n  //Keep popup when click cart / UX\n  $(document).on('click',cartToggle,function(){\n    $(this).parent(miniCart).toggleClass('active');\n    $('body').toggleClass('overflow-hidden');\n  });\n  $(document).on('click','.overlaycart, .close',function(){\n    $(this).parents(miniCart).removeClass('active');\n    $('body').removeClass('overflow-hidden');\n  });\n\n  // renderRecommendations when load page\n  renderRecommendations();\n  // gen minicart when load page\n  generateCart();\n  return{\n    updateElements:updateElements,\n    generateCart: generateCart\n  }\n})()\n\n// Free shipping\ntheme.freeShipping = (function(){\n  var $freeShippingClass = $('.js-free-shipping'),\n      $freeShippingTextClass = $('.js-free-shipping-text'),\n      $free_fisrt = $freeShippingClass.attr('data-start'),\n      $free_end = $freeShippingClass.attr('data-end')\n      minOrderValue = parseInt($freeShippingClass.data('value')) || 0,\n      $percentClass = $('.js-free-shipping .progress-bar');\n\n  function generate(cart){\n    var priceCart = cart.total_price;\n    priceCart == 0 ? $freeShippingClass.hide() : $freeShippingClass.show();\n    if (priceCart >= minOrderValue){\n      $percentClass.css('width','100%').removeClass('progress-bar-striped bg-primary');\n      $freeShippingTextClass.text(theme.strings.freeShipping);\n      $freeShippingTextClass.prev('svg').removeClass('hide');\n    }else{\n      let percent = priceCart / minOrderValue * 100;\n      let left = Shopify.formatMoney((minOrderValue - priceCart),theme.moneyFormat);\n      $percentClass.css('width',percent+'%').addClass('progress-bar-striped primary');\n      $freeShippingTextClass.html($free_fisrt +' '+ left +' '+ $free_end);\n      $freeShippingTextClass.prev('svg').removeClass('hide');\n      //theme.updateCurrencies();\n    }\n  }\n\n  Shopify.getCart(function(cart){\n    generate(cart);\n  });\n\n  return {\n    load:generate\n  }\n})()\n\n// Shipping time - https://github.com/phstc/jquery-dateFormat\ntheme.shippingTime = (function(){\n  var $shippingTime = $('.js-shipping-time'),\n      shippingTime = $shippingTime.data('time') || '',\n      now = new Date(),\n      restHour = 23 - now.getHours(),\n      restMinute = 59 - now.getMinutes();\n  if (shippingTime !== ''){\n    var nextTime = new Date(now.getTime() + shippingTime * 86400000),\n        formatTime = $.format.date(nextTime, \"ddd, dd MMMM yyyy\"),\n        htmlShipping = 'Order in the next <b>'+restHour+'</b> hours <b>'+restMinute+'</b> minutes to get it by <b>'+formatTime+'</b>. ';\n    $shippingTime.html(htmlShipping);\n  }\n})()\n\n\n\n\n// Wishlist\ntheme.wishlist = (function () {\n  const btnWishlist = '.js-btn-wishlist',\n        btnRemoveWishlist = '.js-remove-wishlist',\n        $wishlistCount = $('.js-wishlist-count'),\n        $wishlistContainer = $('.js-wishlist-content'),\n        wishlist = JSON.parse(localStorage.getItem('localWishlist')) || [],\n        wishlistPageUrl = $('.js-wishlist-link').attr('href');\n\n  function showNoResult() {\n    $wishlistContainer.html(`\n      <div class=\"col text-center\">\n        <div class=\"alert alert-warning d-inline-block\">${theme.strings.wishlistNoResult}</div>\n      </div>\n    `);\n  }\n\n  function updateWishlist(self) {\n    const productHandle = $(self).data('handle');\n    const allSimilarProducts = $(`${btnWishlist}[data-handle=\"${productHandle}\"]`);\n    const isAdded = wishlist.includes(productHandle);\n\n    if (isAdded) {\n      window.location.href = wishlistPageUrl;\n    } else {\n      wishlist.push(productHandle);\n      allSimilarProducts.fadeOut('slow').fadeIn('fast').html(`${theme.strings.wishlistIconAdded}${theme.strings.wishlistTextAdded}`);\n      allSimilarProducts.attr('data-original-title', theme.strings.wishlistTextAdded);\n      $('.tooltip-inner').text(theme.strings.wishlistTextAdded);\n    }\n\n    localStorage.setItem('localWishlist', JSON.stringify(wishlist));\n    $wishlistCount.text(wishlist.length);\n  }\n\n  function loadWishlist() {\n    $wishlistContainer.empty();\n\n    if (wishlist.length > 0) {\n      wishlist.forEach((productHandle) => {\n        jQuery.getJSON(window.Shopify.routes.root + `products/${productHandle}.js`, function(product) {\n          const productPrice = product.price_varies\n            ? `from ${theme.Currency.formatMoney(product.price_min, theme.moneyFormat)}`\n            : theme.Currency.formatMoney(product.price, theme.moneyFormat);\n          const productComparePrice = product.compare_at_price_min !== 0\n            ? theme.Currency.formatMoney(product.compare_at_price_min, theme.moneyFormat)\n            : '';\n          const priceClass = productComparePrice ? 'wl-sale' : '';\n\n          const htmlProduct = `\n            <div class=\"js-wishlist-item col-md-4 col-sm-6 col-xs-6 col-12 mb-4 pb-3\">\n              <div class=\"js-wishlist-itembox\">\n                <div class=\"d-flex flex-row\">\n                  <a class=\"d-inline-block mr-4 wl-left\" href=\"${product.url}\">\n                    <img class=\"lazyload\" data-src=\"${product.featured_image}\"/>\n                  </a>\n                  <div>\n                    <a href=\"${product.url}\" class=\"title-product d-block product-card__name mb-1\">${product.title}</a>\n                    <span class=\"${priceClass}\">${productPrice}</span>\n                    <s>${productComparePrice}</s>\n                    <p><button class=\"btn js-remove-wishlist link px-0 small\" data-handle=\"${product.handle}\">${theme.strings.wishlistRemove}</button></p>\n                  </div>\n                </div>\n              </div>\n            </div>\n          `;\n\n          $wishlistContainer.append(htmlProduct);\n        });\n      });\n    } else {\n      showNoResult();\n    }\n\n    $wishlistCount.text(wishlist.length);\n\n    $(btnWishlist).each(function () {\n      const productHandle = $(this).data('handle');\n      const isProductAdded = wishlist.includes(productHandle);\n      const iconWishlist = isProductAdded ? theme.strings.wishlistIconAdded : theme.strings.wishlistIcon;\n      const textWishlist = isProductAdded ? theme.strings.wishlistTextAdded : theme.strings.wishlistText;\n\n      $(this).html(`${iconWishlist}${textWishlist}`).attr('title', textWishlist);\n    });\n  }\n\n  $(document).on('click', btnWishlist, function (event) {\n    event.preventDefault();\n    updateWishlist(this);\n  });\n\n  $(document).on('click', btnRemoveWishlist, function () {\n    const productHandle = $(this).data('handle');\n    const allSimilarProducts = $(`${btnWishlist}[data-handle=\"${productHandle}\"]`);\n\n    allSimilarProducts.html(`${theme.strings.wishlistIcon}${theme.strings.wishlistText}`);\n    allSimilarProducts.attr('data-original-title', theme.strings.wishlistText);\n\n    const productIndex = wishlist.indexOf(productHandle);\n    if (productIndex !== -1) {\n      wishlist.splice(productIndex, 1);\n      localStorage.setItem('localWishlist', JSON.stringify(wishlist));\n    }\n\n    $(this).closest('.js-wishlist-item').fadeOut(() => {\n      $(this).remove();\n      if (wishlist.length === 0) {\n        showNoResult();\n      }\n    });\n\n    $wishlistCount.text(wishlist.length);\n  });\n\n  loadWishlist();\n  $(document).on('shopify:section:load', loadWishlist);\n\n  return {\n    load: loadWishlist\n  };\n})();\n\n\n\n// Compare\ntheme.compare = (function (){\n  var compareButtonClass = '.js-btn-compare',\n      compareRemoveButtonClass = '.js-remove-compare',\n      $compareCount = $('.js-compare-count'),\n      $compareContainer = $('.js-compare-content'),\n      compareObject = JSON.parse(localStorage.getItem('localCompare')) || [],\n      alertClass='notice';\n  function updateCompare(self) {\n    var productHandle = $(self).data('handle'),\n        alertText = '';\n    var isAdded = $.inArray(productHandle,compareObject) !== -1 ? true:false;\n    if (isAdded) {\n      compareObject.splice(compareObject.indexOf(productHandle), 1);\n      alertText = theme.strings.compareNotifyRemoved;\n      alertClass = 'notice';\n    }else{\n      if (compareObject.length === 4){\n        alertText = theme.strings.compareNotifyMaximum;\n        alertClass = 'error';\n      }else{\n        alertClass = 'notice';\n        compareObject.push(productHandle);\n        alertText = theme.strings.compareNotifyAdded;\n      }\n    }\n    localStorage.setItem('localCompare', JSON.stringify(compareObject)); \n    theme.alert.new(theme.strings.compareText,alertText,2000,alertClass);\n    $compareCount.text(compareObject.length);\n  };\n  function loadCompare(){\n    var compareGrid;\n    $compareContainer.html('');\n    //popup compare\n    if (compareObject.length > 0){\n      compareGrid = compareObject.length === 1? 'col-md-12 col-sm-6' : 'col';\n      for (var i = 0; i < compareObject.length; i++) { \n        var productHandle = compareObject[i];\n        Shopify.getProduct(productHandle,function(product){\n          var htmlProduct = '',\n              productPrice = product.price_varies? 'from ' + theme.Currency.formatMoney(product.price_min, theme.moneyFormat) : theme.Currency.formatMoney(product.price, theme.moneyFormat),\n              productComparePrice = product.compare_at_price_min !== 0 ? theme.Currency.formatMoney(product.compare_at_price_min, theme.moneyFormat) : '',\n              productAvailable = product.available ? theme.strings.available : theme.strings.unavailable,\n              productAvailableClass = product.available ? 'alert-success' : 'alert-danger',\n              productTypeHTML = product.type !== \"\" ? '<a class=\"link\" href=\"/collections/types?q='+ product.type +'\">'+ product.type +'</a>' : '<span>'+ theme.strings.none +'</span>',\n              productVendorHTML = product.vendor !== \"\" ? '<a class=\"link\" href=\"/collections/vendors?q='+ product.vendor +'\">'+ product.vendor +'</a>' : '<span>'+ theme.strings.none +'</span>';\n          htmlProduct += '<div class=\"compare-item '+compareGrid+' col-xs-6 px-0\">';\n          htmlProduct += '  <p class=\"py-3\"><button class=\"js-remove-compare link \" data-handle=\"'+product.handle+'\">'+ theme.strings.compareTextRemove +'</button></p>';\n          htmlProduct += '\t<a class=\"d-block mb-4 px-4\" href=\"'+ product.url +'\">';\n          htmlProduct += '\t\t<img src=\"'+ Shopify.resizeImage(product.featured_image,'x230') +'\"/>';\n          htmlProduct += '\t</a>';\n          htmlProduct += '\t<hr /><h5 >'+ product.title +'</h5>';\n          htmlProduct += '\t<hr /><s class=\"small\">'+ productComparePrice +'</s>';\n          htmlProduct += '\t<span> '+ productPrice +'</span>';\n          htmlProduct += '\t<hr /><span class=\"px-2 py-1 rounded '+ productAvailableClass +'\"> '+ productAvailable +'</span>';\n          htmlProduct += '\t<hr />'+ productTypeHTML;\n          htmlProduct += '\t<hr /><div class=\"pb-3\">'+ productVendorHTML+'</div>';\n          htmlProduct += '</div>';\n          $compareContainer.append(htmlProduct);\n          //theme.updateCurrencies();\n        });\n      }\n    }else{\n      $compareContainer.html('<div class=\"alert alert-warning d-inline-block mb-0\">'+ theme.strings.compareNoResult + '</div>');\n    }\n    \n    //button text\n    $(compareButtonClass).each(function(){\n      var productHandle = $(this).data('handle');\n      var status = $.inArray(productHandle,compareObject) !== -1 ? 'added' : '';\n      $(this).removeClass('added').addClass(status);\n    });\n\n    //count items\n    $compareCount.text(compareObject.length);\n  }\n  $(document).on('click',compareButtonClass,function (event) {\n    event.preventDefault();\n    updateCompare(this);\n    loadCompare();\n  });\n  $(document).on('click',compareRemoveButtonClass,function(){\n    var productHandle = $(this).data('handle');\n    compareObject.splice(compareObject.indexOf(productHandle), 1);\n    localStorage.setItem('localCompare', JSON.stringify(compareObject)); \n    loadCompare();\n  });\n\n  loadCompare();\n  $(document).on('shopify:section:load', loadCompare);\n  return{\n    load:loadCompare\n  }\n})()\n\n// Popup newsletter\ntheme.popupNewletter = (function(){\n  function popupNewletter(container) {\n    var $container = (this.$container = $(container));\n    var sectionId = $container.attr('data-section-id');\n    this.selectors = {\n      popupSection : '.popupnew-' + sectionId,\n      formSection : '#jsPopupNewsletter' + sectionId\n    }\n    this.init();\n  }\n  popupNewletter.prototype = _.assignIn({}, popupNewletter.prototype, {\n    init: function() {\n      this.showPopup();\n    },\n    showPopup: function(){\n      var $popupNewsletter = $(this.selectors.formSection),\n          $newsletterForm = $(this.selectors.formSection).find(\"form\"),\n          date = new Date(),\n          minutes = theme.timePopupNewsletter;\n          minutesdelay = $popupNewsletter.attr('data-delay');\n      if ($popupNewsletter.length === 1){\n        date.setTime(date.getTime() + (minutes * 60 * 1000));\n        var setCookies = function (){\n          $.cookie('cookiesNewsletter', 'disabled', { expires: date, path: '/' } );\n        };\n        if ($.cookie('cookiesNewsletter') !== \"disabled\") {\n          $(window).on('load',function(){\n            setTimeout(function () {\n              $popupNewsletter.modal('show');\n            }, minutesdelay * 1000);\n          });\n          $popupNewsletter.on('hidden.bs.modal', setCookies);\n          $newsletterForm.submit(setCookies);     \n        }\n      }\n      if(Shopify.designMode){\n        document.addEventListener('shopify:section:select', function(event){\n          $(event.target).find($popupNewsletter).modal('show');\n        });\n        document.addEventListener('shopify:section:deselect', function(event){\n          $(event.target).find($popupNewsletter).modal('hide');\n        });\n      }\n    }\n  });\n  \n  return popupNewletter;\n})()\n\n\ntheme.BeforeAfter = (function(){\n  function BeforeAfter(container) {\n    var $container = (this.$container = $(container));\n    var sectionId = $container.attr('data-section-id');\n    this.selectors = {\n      bablockSection : '#beer-slider-' + sectionId\n    }\n    this.init();\n  }\n  BeforeAfter.prototype = _.assignIn({}, BeforeAfter.prototype, {\n    init: function() {\n      this.showBeforeAfter();\n    },\n    showBeforeAfter: function(){\n      var $baBlock = $(this.selectors.bablockSection);\n      $.fn.BeerSlider = function ( options ) {\n        options = options || {};\n        return this.each(function() {\n          new BeerSlider(this, options);\n        });\n      };\n      $($baBlock).BeerSlider({start: 50});\n    }\n  });\n  \n  return BeforeAfter;\n})()\n\n// Cookie policy\n\ntheme.CookieSection = (function() {\n  class CookieSection {\n    constructor(container) {\n      this.$container = $(container);\n      this.sectionId = this.$container.attr('data-section-id');\n      this.cookieSelector = '.cookie-' + this.sectionId;\n      this.closeButtonSelector = '.js-btn-ok';\n      this.declineButton = '.js-btn-decline';\n      this.init();\n    }\n\n    init() {\n      this.showCookie();\n    }\n\n    showCookie() {\n      const $cookiePolicy = $(this.cookieSelector);\n      const $closeButton = $(this.closeButtonSelector);\n      const $declineButton = $(this.declineButton);\n      const isAccepted = localStorage.getItem('localCookie') || '';\n\n      if (!isAccepted) {\n        $cookiePolicy.fadeIn('slow');\n      }\n\n      $closeButton.on('click', () => {\n        localStorage.setItem('localCookie', 'accept');\n        $cookiePolicy.fadeOut('slow');\n      });\n      $declineButton.on('click', () => {\n        $cookiePolicy.fadeOut('slow');\n      });\n\n      if (Shopify.designMode) {\n        document.addEventListener('shopify:section:load', () => {\n          $cookiePolicy.fadeOut('slow');\n        });\n\n        document.addEventListener('shopify:section:select', event => {\n          $(event.target).find($cookiePolicy).fadeIn('fast');\n        });\n\n        document.addEventListener('shopify:section:deselect', event => {\n          $(event.target).find($cookiePolicy).fadeOut('slow');\n        });\n      }\n    }\n  }\n\n  return CookieSection;\n})();\n\n\n\n// Popup newsletter\ntheme.FooterSection = (function(){\n  function FooterSection(container) {\n    var $container = (this.$container = $(container));\n    var sectionId = $container.attr('data-section-id');\n    var enableAcc = Boolean($container.attr('data-acc'));\n    this.selectors = {\n      footerSection : '.footer-' + sectionId,\n      enableAcc : enableAcc,\n    }\n    this.init();\n  }\n  FooterSection.prototype = _.assignIn({}, FooterSection.prototype, {\n    init: function() {\n      this.accordionResponsive();\n    },\n\n    accordionResponsive: function(){\n        //var mqr = window.matchMedia('screen and (max-width: 749px)');\n        if (this.selectors.enableAcc == true){\n          $('.site-footer__section-title').click(function() {\n            $(this).toggleClass('active');\n            $(this).next().slideToggle('fast');\n            return false;\n          });\n        }\n    }\n  });\n  \n  return FooterSection;\n})()\n\n\n// Open external link in new tab\ntheme.exLink = (function(){\n  var links = document.links;\n  for (let i = 0, linksLength = links.length ; i < linksLength ; i++) {\n    if (links[i].hostname !== window.location.hostname && $(links[i]).attr('href') !== 'javascript:void(0)') {\n      links[i].target = '_blank';\n    }\n  }\n})()\n\n\n// Collection view - Collection page\ntheme.collectionView =  (function (){\n  var btnView = '.js-btn-view',\n      btnViewActive = '.js-btn-view.active';\n\n  $(document).on('click',btnView,function(){\n    var value = $(this).data('col'),\n        $gridItemCol = $('.js-col');\n\n    $(btnView).removeClass('active');\n    $(this).addClass('active');\n\n    $gridItemCol.removeClass().addClass('js-col col-sm-6 col-6');\n    if (value === 3){\n      $gridItemCol.addClass('col-lg-4');\n    }else if(value === 4){\n      $gridItemCol.addClass('col-lg-3');\n    }else if(value === 5){\n      $gridItemCol.addClass('col-lg-2-4');\n    }else if(value === 6){\n      $gridItemCol.addClass('col-lg-2');\n    };\n  })\n\n  function triggerCollectionView(){\n    $(btnViewActive).trigger('click');\n  }\n\n  return {\n    triggerView:triggerCollectionView\n  }\n})()\n\n// Swath variant in card item\ntheme.swatchCard = (function() {\n  const $swatches = '.js-swatch-card-item';\n  const $image = '.product-card__image img';\n  const $cart = '.js-grid-cart';\n\n  function handleSwatchClick() {\n    const $swatch = $(this);\n    const newImage = $swatch.data('image');\n    const id = $swatch.data('id');\n    const $card = $swatch.closest('.js-product-card');\n\n    $card.find($swatches).removeClass('active');\n    $swatch.addClass('active');\n\n    $card.find($image).attr('srcset', newImage);\n    $card.find($cart).data('id', id);\n  }\n\n  $(document).on('click', $swatches, handleSwatchClick);\n})();\n\n\n\n\ntheme.swatchCard2 = (function(){\n  function initVariant(id){\n    var productJson = JSON.parse($('.customJson-' + id).html());\n    var $selectorForm = $('.customform-' + id);\n    var $button = $('.js-customform-addtocart-' + id);\n    var $buttontext = $button.find('span');\n    var $wrapObject = $selectorForm.closest('.js-product-card');\n    var options = {\n      $container: $selectorForm,\n      enableHistoryState: false,\n      product: productJson,\n      singleOptionSelector: '.single-option-selector-' + id,\n      originalSelectorId: '#ProductSelect-' + id\n    };\n    var variants = new slate.Variants(options);\n    var AjaxCart = new window.AjaxCart($selectorForm);\n    var _updateButton = function (evt){\n      var variant = evt.variant;\n      if (variant === undefined){\n        $button.prop('disabled', true).removeClass('btn--sold-out');\n        $buttontext.html(theme.strings.unavailable);\n      }else{\n        if (variant.available){\n          $button.removeClass('btn--sold-out').prop('disabled', false);\n          $buttontext.html(theme.strings.addToCart);\n        }else{\n          $button.prop('disabled', true).addClass('btn--sold-out');\n          $buttontext.html(theme.strings.soldOut);\n        }\n      }\n    }\n    var _updateImage = function (evt){\n      var variant = evt.variant;\n      var $mainImage = $wrapObject.find('.product-card__image').find('img');\n      if (variant !== undefined && variant.featured_image !== null){\n        var variantImage = variant.featured_image;\n        $mainImage.attr('srcset',variantImage.src);\n      }\n    }\n    var _updatePrice = function (evt){\n      var $price = $wrapObject.find('.product-card__price');\n      var variant = evt.variant;\n      if (variant !== undefined){\n        var htmlComparePrice = variant.compare_at_price !== null ? '<s class=\"product-card__regular-price\"><span class=\"money\">'+variant.compare_at_price+'</span></s>' : '';\n        var htmlPrice = '<span class=\"money\">'+variant.price+'</span>' + htmlComparePrice ;\n        $price.html(htmlPrice);\n        //theme.updateCurrencies();\n      }\n    }\n    variants.$container.on(\n      'variantChange' , _updateButton\n    );\n    variants.$container.on(\n      'variantChange' , _updateImage\n    );\n    variants.$container.on(\n      'variantChange' , _updatePrice\n    );\n  }\n  function initForm(){\n    $('.js-customform').each(function(){\n      var id = $(this).data('id');\n      initVariant(id);\n    })\n  }\n\n  initForm();\n  return{\n    load:initForm\n  }\n})()\n\n// Loading\ntheme.loading = (function(){\n  var $loading = $('#js-loading'),\n      hasLoading = $('#js-loading').length === 0? false : true;\n  if (hasLoading){\n    $(window).load(function () {\n      $loading.fadeOut();\n    });  \n  }\n})()\n\ntheme.effectLeavingPage = (function(){\n  window.onbeforeunload = function(){\n    $('body').css('opacity','0');\n  }\n})()\n\n\ntheme.bundleProduct = (function(){\n  function bundleProduct(container) {\n    var $container = (this.$container = $(container));\n    var sectionId = $container.attr('data-section-id');\n    this.selectors = {\n      bundleSection : '#bundle-' + sectionId\n    }\n    this.init();\n  }\n  bundleProduct.prototype = _.assignIn({}, bundleProduct.prototype, {\n    init: function() {\n      this.bundleList();\n    },\n    bundleList : function(){\n      let variantSelectClass = '.fbtproduct-form__variants',\n      parentClass = '.fbt-item',\n      totalPrice = '.fpt-total',\n      totalPriceCompare = '.fpt-totalcompare',\n      totalSave = '.fpt-save',\n      checkBox = '.fbt-checkbox';\n\n        updateTotal();\n        checkItem();\n        \n        // change update variant\n        $(document).on('change',variantSelectClass,function(){\n          var selectVariant = $(this).children(':selected'),\n              selectVariantId = selectVariant.data('id'),\n              newPrice = theme.Currency.formatMoney(selectVariant.data('price'), theme.moneyFormat);\n              newPriceCompare = theme.Currency.formatMoney(selectVariant.data('price-compare'), theme.moneyFormat);\n              \n          if (selectVariant.data('image') !== ''){\n            $(this).closest(parentClass).find('img').attr({\n              \"src\": selectVariant.data('image'),\n              \"data-srcset\" : selectVariant.data('image'),\n              \"srcset\" : selectVariant.data('image')\n            });\n          }\n          $(this).closest(parentClass).attr('data-item',selectVariantId);\n          $(this).closest(parentClass).find('.fbt-price').attr('data-fbtprice',selectVariant.data('price'));\n          $(this).closest(parentClass).find('.fbt-price').html(newPrice);\n          if (selectVariant.data('price-compare') !== undefined) {\n            $(this).closest(parentClass).find('.fbt-price-compare').html(newPriceCompare).removeClass('hide');    \n            $(this).closest(parentClass).find('.fbt-price-compare').attr('data-price-at',selectVariant.data('price-compare'));\n          } else {\n            $(this).closest(parentClass).find('.fbt-price-compare').attr('data-price-at','').addClass('hide');\n          }\n          updateTotal();\n        });\n        \n        // checkChecked\n        function checkItem(){\n          $(checkBox).change(function() {\n            if(this.checked) {\n              $(this).closest(parentClass).attr('data-checked',true);\n            }\n            else{\n              $(this).closest(parentClass).attr('data-checked',false);\n            }\n            updateTotal();\n          });\n        }\n        function updateTotal(){\n          let total = 0;\n          let totalCompare = 0;\n          $('.fbt-item-price').each(function() {\n            let isChecked = $(this).closest('.fbt-item').find('.fbt-checkbox').is(':checked');\n            let isPriceCompare = $(this).find('.fbt-price-compare').attr('data-price-at');\n            if (isChecked){\n              let value = parseFloat($(this).find('.fbt-price').attr('data-fbtprice'));\n              \n              total += value;\n              if( isPriceCompare !== undefined && isPriceCompare !== '' ){\n                let valueCompare = parseFloat(isPriceCompare);\n                totalCompare += valueCompare - value;\n              }\n            }\n          });\n          //console.log(totalCompare); \n          $(totalPrice).html(theme.Currency.formatMoney(total, theme.moneyFormat));\n            let totalSale  = totalCompare + total ;\n            if( totalSale > total){\n                $(totalPriceCompare).show();\n                $(totalSave).show().html(`${$(totalSave).attr('data-txtsave')} <span class=\"text-theme\">${theme.Currency.formatMoney(totalSale - total , theme.moneyFormat)}</span>` );\n            }\n            else{\n              $(totalPriceCompare).hide();\n              $(totalSave).hide().html();\n            }\n          $(totalPriceCompare).html(theme.Currency.formatMoney(totalCompare + total , theme.moneyFormat));\n        }\n        //click add product\n        $('#fbt-button').click(function(e) {\n          e.preventDefault();\n          function addMultipleItemsToCart(productsToAdd) {\n            var cartUrl = '/cart/add.js';\n            var cartData = {\n              items: productsToAdd\n            };\n          \n            $.ajax({\n              type: 'POST',\n              url: cartUrl,\n              data: cartData,\n              dataType: 'json',\n              beforeSend: function() {\n               \n                $('#fbt-button').addClass('is-loading');\n              },\n              success: function(data) {\n                $('#fbt-button').removeClass('is-loading');\n                theme.miniCart.updateElements();\n                theme.miniCart.generateCart();\n              },\n              error: function(XMLHttpRequest, textStatus,err) {\n                $('#fbt-button').removeClass('is-loading');\n                console.log(err);\n              }\n            });\n          }\n          var productsToAdd = $(parentClass).map(function() {\n            if($(this).attr('data-checked') === 'true' ){\n              return {\n                id: parseInt($(this).attr('data-item')),\n                quantity: 1,\n              };\n            }\n            \n          }).get();\n          addMultipleItemsToCart(productsToAdd);\n        });\n    }\n  });\n  return bundleProduct;\n})()\n\n\n\n\n// Upsell\ntheme.upsell = (function() {\n  const upsellPopupSelector = '#jsUpsell';\n  const $acceptButton = $('#jsUpsell .btn-accept');\n  const upsellProductId = $('#jsUpsell').data('id') || '';\n  const acceptButtonClass = 'js-btn-accept';\n  const delayTime = $('#jsUpsell').data('delay') || 3000;\n  const isUpsellActive = $(upsellPopupSelector).length === 1;\n\n  function showUpsellPopupWithDelay() {\n    setTimeout(() => {\n      $(upsellPopupSelector).modal('show');\n    }, delayTime);\n  }\n\n  function handleAcceptButtonClick() {\n    const isAcceptButton = $acceptButton.hasClass(acceptButtonClass);\n    \n    if (isAcceptButton) {\n      Shopify.addItem(upsellProductId, 1, item => {\n        theme.miniCart.updateElements();\n        theme.miniCart.generateCart();\n\n        const variantInfo = item.variant_title !== null ? `<i>(${item.variant_title})</i>` : '';\n        const alertContent = `<div class=\"media mt-2 alert--cart\"><a class=\"mr-3\" href=\"/cart\"><img class=\"lazyload\" data-src=\"${item.image}\"></a><div class=\"media-body align-self-center\"><p class=\"m-0 font-weight-bold\">${item.product_title} x ${item.quantity}</p>${variantInfo}<div><div>`;\n        \n        theme.alert.new(theme.strings.addToCartSuccess, alertContent, 3000, 'notice');\n      });\n    }\n    \n    $(upsellPopupSelector).modal('hide');\n  }\n\n  if (isUpsellActive) {\n    $(document).ready(showUpsellPopupWithDelay);\n    $acceptButton.on('click', handleAcceptButtonClick);\n  }\n})();\n\n\n\n\n// Overwrite Shopify.onError in Shopify API\nShopify.onError = function(t, r) {\n    var e = eval(\"(\" + t.responseText + \")\");\n    var mess = e.message ? e.message + \"(\" + e.status + \"): \" + e.description : \"Error : \" + Shopify.fullMessagesFromErrors(e).join(\"; \") + \".\"\n    theme.alert.new('Alert',mess,3000,'warning');\n}\n\n\n// Fake-viewers\ntheme.fakeViewer = (function() {\n  var $fakeViewClass = $('.js-fake-view'),\n      minValue = $fakeViewClass.data('min'),\n      maxValue = $fakeViewClass.data('max'),\n      duration = $fakeViewClass.data('duration');\n\n  function updateFakeViewCount() {\n    var value = Math.floor(Math.random() * (maxValue - minValue + 1)) + minValue;\n    $fakeViewClass.text(value);\n  }\n\n  function initFakeViewCount() {\n    updateFakeViewCount();\n\n    if (minValue !== undefined && maxValue !== undefined && duration) {\n      setInterval(updateFakeViewCount, duration);\n    }\n  }\n\n  initFakeViewCount();\n})();\n\n\n// Product-suggest\ntheme.productSuggest = (function() {\n  var $productNotification = $('.product-notification'),\n      $closeButton = $('.close-notifi'),\n      suggestionDuration = $productNotification.data('time') || 0,\n      suggestionCookie = 'productSuggestClosed';\n\n  function closeSuggestion() {\n    $productNotification.remove();\n    $.cookie(suggestionCookie, 'closed', { expires: 1, path: '/' });\n  }\n\n  function toggleSuggestion() {\n    if ($productNotification.hasClass('active')) {\n      $productNotification.removeClass('active');\n    } else {\n      var $productItems = $('.data-product'),\n          randomIndex = Math.floor(Math.random() * $productItems.length),\n          $selectedProduct = $($productItems[randomIndex]);\n\n      $productNotification.addClass('active');\n      var $productImage = $productNotification.find('.product-image img');\n      $productImage.attr({\n        'src': $selectedProduct.data('image'),\n        'width': $selectedProduct.data('wimage'),\n        'height': $selectedProduct.data('himage')\n      });\n      $productNotification.find('.product-image').attr({\n        'href': $selectedProduct.data('url'),\n        'title': $selectedProduct.data('title')\n      });\n      $productNotification.find('.product-name').text($selectedProduct.data('title')).attr('href', $selectedProduct.data('url'));\n      $productNotification.find('.time-ago').text($selectedProduct.data('time'));\n      $productNotification.find('.from-ago').text($selectedProduct.data('local'));\n    }\n  }\n\n  function handleSuggestionInterval() {\n    if (suggestionDuration !== 0) {\n      setInterval(toggleSuggestion, suggestionDuration);\n    }\n  }\n\n  function init() {\n    if ($.cookie(suggestionCookie) === 'closed') {\n      $productNotification.remove();\n    } else {\n      $closeButton.on('click', closeSuggestion);\n      handleSuggestionInterval();\n    }\n  }\n\n  init();\n})();\n\n\n\n\ntheme.activeAccordion = (function(){\n  $('.collapse').on('shown.bs.collapse', function () {\n       $(this).prev().addClass('active-acc');\n   });\n   $('.collapse').on('hidden.bs.collapse', function () {\n       $(this).prev().removeClass('active-acc');\n   });\n})()\n\n\n// Anchor scroll\ntheme.anchorScroll = (function() {\n  $(document).on('click', 'a[href^=\"#\"]', function(event) {\n    event.preventDefault();\n    \n    var $clickedLink = $(this);\n    var disableAnchor = $clickedLink.hasClass('disabled-anchor');\n    \n    if (!disableAnchor) {\n      var target = $clickedLink.attr('href');\n      var targetOffsetTop = $(target).offset().top;\n      \n      $('html, body').animate({\n        scrollTop: targetOffsetTop\n      }, 500);\n    }\n  });\n})();\n\n// Notice when soldout\ntheme.alert = (function(){\n  function createAlert(title,mess,time,type){\n    var aTitle = title || '',\n        aTime = time || 2000,\n        aMessage = mess || '',\n        aClass = type || 'default';\n    $.growl({ \n      title: aTitle,\n      message: aMessage,\n      duration: aTime,\n      style: aClass,\n      size: 'large'\n    });\n  }\n\n  return{\n    new:createAlert\n  }\n})()\n\n// Notice when soldout\ntheme.noticeSoldout = (function(){\n  var $soldoutWrapFormClass = $('.js-contact-soldout'),\n      $textClass = $('.js-notify-text'),\n      $soldoutValueId = $('#ContactProduct');\n  function noticeSoldout(variant){\n    $soldoutWrapFormClass.find('.form-success').remove()\n    if (variant.available){\n      $textClass.find('span').text('');\n      $soldoutWrapFormClass.addClass('hide');\n    }else{\n      $textClass.find('span').text(+ variant.name);\n      $soldoutWrapFormClass.removeClass('hide');\n      $soldoutValueId.val(variant.name).attr('value',variant.name);\n    }\n  }\n  return {\n    init : noticeSoldout\n  }\n})()\n\n// Sticky cart\ntheme.stickyCart = (function() {\n  var $anchor = $('#js-anchor-sticky-cart'),\n      $stickyCartWrapper = $('.sticky-cart-wr');\n\n  if ($anchor.length) {\n    function handleStickyCart() {\n      var anchorTop = $anchor.offset().top,\n          anchorHeight = $anchor.outerHeight(),\n          windowHeight = $(window).height(),\n          windowScroll = $(window).scrollTop();\n\n      $stickyCartWrapper.toggleClass('active', windowScroll > (anchorTop + anchorHeight - windowHeight));\n    }\n\n    $(window).on('scroll', handleStickyCart);\n    handleStickyCart();\n  }\n})();\n\n//Fix reload safari\nwindow.addEventListener(\"pageshow\", function(evt){\n  if(evt.persisted){\n  setTimeout(function(){\n      window.location.reload();\n  },10);\n}\n}, false);\n\n// Back to top\ntheme.backToTop = (function(){\n  $(document).ready(function(){\"use strict\";\n  var progressPath = document.querySelector('.progress-wrap path');\n  if ( progressPath != null ){\n  var pathLength = progressPath.getTotalLength();\n  progressPath.style.transition = progressPath.style.WebkitTransition = 'none';\n  progressPath.style.strokeDasharray = pathLength + ' ' + pathLength;\n  progressPath.style.strokeDashoffset = pathLength;\n  progressPath.getBoundingClientRect();\n  progressPath.style.transition = progressPath.style.WebkitTransition = 'stroke-dashoffset 10ms linear';    \n  var updateProgress = function () {\n    var scroll = $(window).scrollTop();\n    var height = $(document).height() - $(window).height();\n    var progress = pathLength - (scroll * pathLength / height);\n    progressPath.style.strokeDashoffset = progress;\n  }\n  updateProgress();\n  $(window).scroll(updateProgress); \n  var offset = 50;\n  var duration = 550;\n  jQuery(window).on('scroll', function() {\n    if (jQuery(this).scrollTop() > offset) {\n      jQuery('.progress-wrap').addClass('active-progress');\n    } else {\n      jQuery('.progress-wrap').removeClass('active-progress');\n    }\n  });       \n  jQuery('.progress-wrap').on('click', function(event) {\n    event.preventDefault();\n    jQuery('html, body').animate({scrollTop: 0}, duration);\n    return false;\n  })\n}\n\n});\n})()\n\ntheme.popOver = (function(){\n  $('body').on('click', function (e) {\n    $('[data-hotspot]').each(function () {\n        // hide any open popovers when the anywhere else in the body is clicked\n        if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {\n            $(this).next().removeClass('active');\n        }\n        else{\n          $(this).next().addClass('active');\n        }\n    });\n});\n  \n})()\n\n\n// Tooltip\ntheme.tooltip = (function(){\n  var selector = '[data-toggle=\"tooltip\"],[data-tooltip=\"true\"]';\n  function loadTooltip(){\n    $(selector).tooltip(); //Bootstrap 4\n  };\n  $(document).on('click',selector,function(){\n    $(this).tooltip('hide');\n  });\n  loadTooltip();\n  return{\n    load:loadTooltip\n  }\n})()\n\n\ntheme.hasInput = (function(){\n  var inPut= $('.form-group .form-control');\n\n  inPut.blur(function (){\n    if(!this.value){\n      $(this).removeClass('has-value');\n    }else{\n      $(this).addClass('has-value');\n    }\n  });\n\n  var inpuSearch = $('#Search-In-Template');\n  if (inpuSearch.length != 0 ) {\n    if(inpuSearch.val().length != 0 ){\n      inpuSearch.addClass('has-value');\n    }\n  }\n  else{\n    return;\n  }\n  \n})()\n\n\n$(theme.init);\n\nclass CountdownTimer extends HTMLElement {\n  connectedCallback() {\n    if (!this.countdownInitialized) {\n      this.countdownInitialized = true;\n\n      const second = 1000,\n        minute = second * 60,\n        hour = minute * 60,\n        day = hour * 24;\n\n      const countDownDate = new Date(this.getAttribute('data-time')).getTime();\n      const countdownContainer = document.createElement('div');\n\n      this.appendChild(countdownContainer);\n\n      function updateCountdown() {\n        const now = new Date().getTime();\n        const distance = countDownDate - now;\n\n        const days = Math.floor(distance / day);\n        const hours = Math.floor((distance % day) / hour);\n        const minutes = Math.floor((distance % hour) / minute);\n        const seconds = Math.floor((distance % minute) / second);\n\n        countdownContainer.innerHTML = `\n        <ul class=\"list--inline or-countdown\">\n          <li>\n          <span class=\"countdown-time\">${days}</span><span class=\"countdown-text\">Days</span> <span class=\"hide countdown-time-single\">D</span>\n          </li>\n          <li>\n          <span class=\"countdown-time\">${hours}</span> <span class=\"countdown-text\">Hours</span> <span class=\"hide countdown-time-single\">H</span>\n          </li>\n          <li>\n          <span class=\"countdown-time\">${minutes}</span> <span class=\"countdown-text\">Mins</span> <span class=\"hide countdown-time-single\">M</span>\n          </li>\n          <li>\n          <span class=\"countdown-time\">${seconds}</span> <span class=\"countdown-text\">Secs</span> <span class=\"hide countdown-time-single\">S</span>\n          </li>\n          </ul>\n        `;\n\n        if (distance > 0) {\n          setTimeout(updateCountdown, 1000);\n        } else {\n          countdownContainer.innerHTML = \"Countdown Finished!\";\n        }\n      }\n\n      updateCountdown();\n    }\n  }\n}\n\ncustomElements.define('countdown-timer', CountdownTimer);\n\n\nclass CheckoutButton extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener('click', this.handleClick.bind(this));\n  }\n\n  connectedCallback() {\n    this.checkAgreement();\n  }\n\n  handleClick(event) {\n    const agreeCheckbox = this.querySelector('.checkbox__input');\n    const checkoutButton = this.querySelector('a[name=\"checkout\"]');\n    \n    if (event.target === agreeCheckbox || event.target === this.querySelector('.checkbox__label')) {\n      if (agreeCheckbox.checked) {\n        checkoutButton.classList.remove('disabled');\n      } else {\n        checkoutButton.classList.add('disabled');\n      }\n    }\n  }\n  checkAgreement() {\n    const agreeCheckbox = this.querySelector('.checkbox__input');\n    return agreeCheckbox.checked;\n  }\n}\n\ncustomElements.define('checkout-button', CheckoutButton);\n\nif (window.location.pathname === \"/\") {\n    document.querySelectorAll(\"script[src]\").forEach(script => {\n        script.src = script.src + \"?v=\" + new Date().getTime();\n    });\n}"],
  "mappings": "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",
  "names": ["instance", "i", "e", "r", "t", "evt", "QtySelector", "params", "debounce", "responsiveHeader", "responsiveHeader2", "slideMain", "noteUpdate", "noteText", "variants", "product", "price", "compare_price", "line", "observer", "productHandle", "productsToAdd", "mess", "handleStickyCart", "updateCountdown"]
}
