{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/theme.js?kkk=84708"],
  "sourcesContent": ["window.theme = window.theme || {};\r\nwindow.slate = window.slate || {};\r\n\r\n/* ================ SLATE ================ */\r\ntheme.Sections = function Sections() {\r\n  this.constructors = {};\r\n  this.instances = [];\r\n\r\n  $(document)\r\n    .on('shopify:section:load', this._onSectionLoad.bind(this))\r\n    .on('shopify:section:unload', this._onSectionUnload.bind(this))\r\n    .on('shopify:section:select', this._onSelect.bind(this))\r\n    .on('shopify:section:deselect', this._onDeselect.bind(this))\r\n    .on('shopify:block:select', this._onBlockSelect.bind(this))\r\n    .on('shopify:block:deselect', this._onBlockDeselect.bind(this));\r\n};\r\n\r\ntheme.Sections.prototype = _.assignIn({}, theme.Sections.prototype, {\r\n  _createInstance: function(container, constructor) {\r\n    var $container = $(container);\r\n    var id = $container.attr('data-section-id');\r\n    var type = $container.attr('data-section-type');\r\n\r\n    constructor = constructor || this.constructors[type];\r\n\r\n    if (_.isUndefined(constructor)) {\r\n      return;\r\n    }\r\n\r\n    var instance = _.assignIn(new constructor(container), {\r\n      id: id,\r\n      type: type,\r\n      container: container\r\n    });\r\n\r\n    this.instances.push(instance);\r\n  },\r\n\r\n  _onSectionLoad: function(evt) {\r\n    var container = $('[data-section-id]', evt.target)[0];\r\n    if (container) {\r\n      this._createInstance(container);\r\n    }\r\n    if (AOS) {\r\n      AOS.refreshHard();\r\n    }\r\n  },\r\n  _loadSubSections: function() {\r\n    if (AOS) {\r\n      AOS.refreshHard();\r\n    }\r\n  },\r\n  _onSectionUnload: function(evt) {\r\n    this.instances = _.filter(this.instances, function(instance) {\r\n      var isEventInstance = instance.id === evt.detail.sectionId;\r\n\r\n      if (isEventInstance) {\r\n        if (_.isFunction(instance.onUnload)) {\r\n          instance.onUnload(evt);\r\n        }\r\n      }\r\n\r\n      return !isEventInstance;\r\n    });\r\n  },\r\n\r\n  _onSelect: function(evt) {\r\n    // eslint-disable-next-line no-shadow\r\n    var instance = _.find(this.instances, function(instance) {\r\n      return instance.id === evt.detail.sectionId;\r\n    });\r\n\r\n    if (!_.isUndefined(instance) && _.isFunction(instance.onSelect)) {\r\n      instance.onSelect(evt);\r\n    }\r\n  },\r\n\r\n  _onDeselect: function(evt) {\r\n    // eslint-disable-next-line no-shadow\r\n    var instance = _.find(this.instances, function(instance) {\r\n      return instance.id === evt.detail.sectionId;\r\n    });\r\n\r\n    if (!_.isUndefined(instance) && _.isFunction(instance.onDeselect)) {\r\n      instance.onDeselect(evt);\r\n    }\r\n  },\r\n\r\n  _onBlockSelect: function(evt) {\r\n    // eslint-disable-next-line no-shadow\r\n    var instance = _.find(this.instances, function(instance) {\r\n      return instance.id === evt.detail.sectionId;\r\n    });\r\n\r\n    if (!_.isUndefined(instance) && _.isFunction(instance.onBlockSelect)) {\r\n      instance.onBlockSelect(evt);\r\n    }\r\n  },\r\n\r\n  _onBlockDeselect: function(evt) {\r\n    // eslint-disable-next-line no-shadow\r\n    var instance = _.find(this.instances, function(instance) {\r\n      return instance.id === evt.detail.sectionId;\r\n    });\r\n\r\n    if (!_.isUndefined(instance) && _.isFunction(instance.onBlockDeselect)) {\r\n      instance.onBlockDeselect(evt);\r\n    }\r\n  },\r\n\r\n  register: function(type, constructor) {\r\n    this.constructors[type] = constructor;\r\n\r\n    $('[data-section-type=' + type + ']').each(\r\n      function(index, container) {\r\n        this._createInstance(container, constructor);\r\n      }.bind(this)\r\n    );\r\n  }\r\n});\r\n\r\nwindow.slate = window.slate || {};\r\n\r\n/**\r\n * iFrames\r\n * -----------------------------------------------------------------------------\r\n * Wrap videos in div to force responsive layout.\r\n *\r\n * @namespace iframes\r\n */\r\n\r\nslate.rte = {\r\n  wrapTable: function() {\r\n    $('.rte table').wrap('<div class=\"rte__table-wrapper\"></div>');\r\n  },\r\n\r\n  iframeReset: function() {\r\n    var $iframeVideo = $(\r\n      '.rte iframe[src*=\"youtube.com/embed\"], .rte iframe[src*=\"player.vimeo\"]'\r\n    );\r\n    var $iframeReset = $iframeVideo.add('.rte iframe#admin_bar_iframe');\r\n\r\n    $iframeVideo.each(function() {\r\n      // Add wrapper to make video responsive\r\n      $(this).wrap('<div class=\"video-wrapper\"></div>');\r\n    });\r\n\r\n    $iframeReset.each(function() {\r\n      // Re-set the src attribute on each iframe after page load\r\n      // for Chrome's \"incorrect iFrame content on 'back'\" bug.\r\n      // https://code.google.com/p/chromium/issues/detail?id=395791\r\n      // Need to specifically target video and admin bar\r\n      this.src = this.src;\r\n    });\r\n  }\r\n};\r\n\r\nwindow.slate = window.slate || {};\r\n\r\n/**\r\n * A11y Helpers\r\n * -----------------------------------------------------------------------------\r\n * A collection of useful functions that help make your theme more accessible\r\n * to users with visual impairments.\r\n *\r\n *\r\n * @namespace a11y\r\n */\r\n\r\nslate.a11y = {\r\n  /**\r\n   * For use when focus shifts to a container rather than a link\r\n   * eg for In-page links, after scroll, focus shifts to content area so that\r\n   * next `tab` is where user expects if focusing a link, just $link.focus();\r\n   *\r\n   * @param {JQuery} $element - The element to be acted upon\r\n   */\r\n  pageLinkFocus: function($element) {\r\n    var focusClass = 'js-focus-hidden';\r\n\r\n    $element\r\n      .first()\r\n      .attr('tabIndex', '-1')\r\n      .focus()\r\n      .addClass(focusClass)\r\n      .one('blur', callback);\r\n\r\n    function callback() {\r\n      $element\r\n        .first()\r\n        .removeClass(focusClass)\r\n        .removeAttr('tabindex');\r\n    }\r\n  },\r\n\r\n  /**\r\n   * If there's a hash in the url, focus the appropriate element\r\n   */\r\n  focusHash: function() {\r\n    var hash = window.location.hash;\r\n\r\n    // is there a hash in the url? is it an element on the page?\r\n    if (hash && document.getElementById(hash.slice(1))) {\r\n      this.pageLinkFocus($(hash));\r\n    }\r\n  },\r\n\r\n  /**\r\n   * When an in-page (url w/hash) link is clicked, focus the appropriate element\r\n   */\r\n  bindInPageLinks: function() {\r\n    $('a[href*=#]').on(\r\n      'click',\r\n      function(evt) {\r\n        this.pageLinkFocus($(evt.currentTarget.hash));\r\n      }.bind(this)\r\n    );\r\n  },\r\n\r\n  /**\r\n   * Traps the focus in a particular container\r\n   *\r\n   * @param {object} options - Options to be used\r\n   * @param {jQuery} options.$container - Container to trap focus within\r\n   * @param {jQuery} options.$elementToFocus - Element to be focused when focus leaves container\r\n   * @param {string} options.namespace - Namespace used for new focus event handler\r\n   */\r\n  trapFocus: function(options) {\r\n    var eventName = options.namespace\r\n      ? 'focusin.' + options.namespace\r\n      : 'focusin';\r\n\r\n    if (!options.$elementToFocus) {\r\n      options.$elementToFocus = options.$container;\r\n    }\r\n\r\n    options.$container.attr('tabindex', '-1');\r\n    options.$elementToFocus.focus();\r\n\r\n    $(document).on(eventName, function(evt) {\r\n      if (\r\n        options.$container[0] !== evt.target &&\r\n        !options.$container.has(evt.target).length\r\n      ) {\r\n        options.$container.focus();\r\n      }\r\n    });\r\n  },\r\n\r\n  /**\r\n   * Removes the trap of focus in a particular container\r\n   *\r\n   * @param {object} options - Options to be used\r\n   * @param {jQuery} options.$container - Container to trap focus within\r\n   * @param {string} options.namespace - Namespace used for new focus event handler\r\n   */\r\n  removeTrapFocus: function(options) {\r\n    var eventName = options.namespace\r\n      ? 'focusin.' + options.namespace\r\n      : 'focusin';\r\n\r\n    if (options.$container && options.$container.length) {\r\n      options.$container.removeAttr('tabindex');\r\n    }\r\n\r\n    $(document).off(eventName);\r\n  }\r\n};\r\n\r\n/**\r\n * Currency Helpers\r\n * -----------------------------------------------------------------------------\r\n * A collection of useful functions that help with currency formatting\r\n *\r\n * Current contents\r\n * - formatMoney - Takes an amount in cents and returns it as a formatted dollar value.\r\n *\r\n * Alternatives\r\n * - Accounting.js - http://openexchangerates.github.io/accounting.js/\r\n *\r\n */\r\n\r\ntheme.Currency = (function() {\r\n  var moneyFormat = '${{amount}}'; // eslint-disable-line camelcase\r\n\r\n  function formatMoney(cents, format) {\r\n    if (typeof cents === 'string') {\r\n      cents = cents.replace('.', '');\r\n    }\r\n    var value = '';\r\n    var placeholderRegex = /\\{\\{\\s*(\\w+)\\s*\\}\\}/;\r\n    var formatString = format || moneyFormat;\r\n\r\n    function formatWithDelimiters(number, precision, thousands, decimal) {\r\n      thousands = thousands || ',';\r\n      decimal = decimal || '.';\r\n\r\n      if (isNaN(number) || number === null) {\r\n        return 0;\r\n      }\r\n\r\n      number = (number / 100.0).toFixed(precision);\r\n\r\n      var parts = number.split('.');\r\n      var dollarsAmount = parts[0].replace(\r\n        /(\\d)(?=(\\d\\d\\d)+(?!\\d))/g,\r\n        '$1' + thousands\r\n      );\r\n      var centsAmount = parts[1] ? decimal + parts[1] : '';\r\n\r\n      return dollarsAmount + centsAmount;\r\n    }\r\n\r\n    switch (formatString.match(placeholderRegex)[1]) {\r\n      case 'amount':\r\n        value = formatWithDelimiters(cents, 2);\r\n        break;\r\n      case 'amount_no_decimals':\r\n        value = formatWithDelimiters(cents, 0);\r\n        break;\r\n      case 'amount_with_comma_separator':\r\n        value = formatWithDelimiters(cents, 2, '.', ',');\r\n        break;\r\n      case 'amount_no_decimals_with_comma_separator':\r\n        value = formatWithDelimiters(cents, 0, '.', ',');\r\n        break;\r\n      case 'amount_no_decimals_with_space_separator':\r\n        value = formatWithDelimiters(cents, 0, ' ');\r\n        break;\r\n      case 'amount_with_apostrophe_separator':\r\n        value = formatWithDelimiters(cents, 2, \"'\");\r\n        break;\r\n    }\r\n    return formatString.replace(placeholderRegex, value);\r\n  }\r\n\r\n  return {\r\n    formatMoney: formatMoney\r\n  };\r\n})();\r\n\r\n/**\r\n * Image Helper Functions\r\n * -----------------------------------------------------------------------------\r\n * A collection of functions that help with basic image operations.\r\n *\r\n */\r\n\r\ntheme.Images = (function() {\r\n  /**\r\n   * Preloads an image in memory and uses the browsers cache to store it until needed.\r\n   *\r\n   * @param {Array} images - A list of image urls\r\n   * @param {String} size - A shopify image size attribute\r\n   */\r\n\r\n  function preload(images, size) {\r\n    if (typeof images === 'string') {\r\n      images = [images];\r\n    }\r\n\r\n    for (var i = 0; i < images.length; i++) {\r\n      var image = images[i];\r\n      this.loadImage(this.getSizedImageUrl(image, size));\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Loads and caches an image in the browsers cache.\r\n   * @param {string} path - An image url\r\n   */\r\n  function loadImage(path) {\r\n    new Image().src = path;\r\n  }\r\n\r\n  /**\r\n   * Swaps the src of an image for another OR returns the imageURL to the callback function\r\n   * @param image\r\n   * @param element\r\n   * @param callback\r\n   */\r\n  function switchImage(image, element, callback) {\r\n    var size = this.imageSize(element.src);\r\n    var imageUrl = this.getSizedImageUrl(image.src, size);\r\n\r\n    if (callback) {\r\n      callback(imageUrl, image, element); // eslint-disable-line callback-return\r\n    } else {\r\n      element.src = imageUrl;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * +++ Useful\r\n   * Find the Shopify image attribute size\r\n   *\r\n   * @param {string} src\r\n   * @returns {null}\r\n   */\r\n  function imageSize(src) {\r\n    src = src || '';\r\n\r\n    var match = src.match(\r\n      /.+_((?:pico|icon|thumb|small|compact|medium|large|grande)|\\d{1,4}x\\d{0,4}|x\\d{1,4})[_\\\\.@]/\r\n    );\r\n\r\n    if (match === null) {\r\n      return null;\r\n    } else {\r\n      return match[1];\r\n    }\r\n  }\r\n\r\n  /**\r\n   * +++ Useful\r\n   * Adds a Shopify size attribute to a URL\r\n   *\r\n   * @param src\r\n   * @param size\r\n   * @returns {*}\r\n   */\r\n  function getSizedImageUrl(src, size) {\r\n    if (size === null) {\r\n      return src;\r\n    }\r\n\r\n    if (size === 'master') {\r\n      return this.removeProtocol(src);\r\n    }\r\n\r\n    var match = src.match(\r\n      /\\.(jpg|jpeg|gif|png|bmp|bitmap|tiff|tif)(\\?v=\\d+)?$/i\r\n    );\r\n\r\n    if (match !== null) {\r\n      var prefix = src.split(match[0]);\r\n      var suffix = match[0];\r\n\r\n      return this.removeProtocol(prefix[0] + '_' + size + suffix);\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function removeProtocol(path) {\r\n    return path.replace(/http(s)?:/, '');\r\n  }\r\n\r\n  return {\r\n    preload: preload,\r\n    loadImage: loadImage,\r\n    switchImage: switchImage,\r\n    imageSize: imageSize,\r\n    getSizedImageUrl: getSizedImageUrl,\r\n    removeProtocol: removeProtocol\r\n  };\r\n})();\r\n\r\n/**\r\n * Variant Selection scripts\r\n * ------------------------------------------------------------------------------\r\n *\r\n * Handles change events from the variant inputs in any `cart/add` forms that may\r\n * exist.  Also updates the master select and triggers updates when the variants\r\n * price or image changes.\r\n *\r\n * @namespace variants\r\n */\r\n\r\nslate.Variants = (function() {\r\n  /**\r\n   * Variant constructor\r\n   *\r\n   * @param {object} options - Settings from `product.js`\r\n   */\r\n  function Variants(options) {\r\n    this.$container = options.$container;\r\n    this.product = options.product;\r\n    this.singleOptionSelector = options.singleOptionSelector;\r\n    this.originalSelectorId = options.originalSelectorId;\r\n    this.enableHistoryState = options.enableHistoryState;\r\n    this.currentVariant = this._getVariantFromOptions();\r\n\r\n    $(this.singleOptionSelector, this.$container).on(\r\n      'change',\r\n      this._onSelectChange.bind(this)\r\n    );\r\n  }\r\n\r\n  Variants.prototype = _.assignIn({}, Variants.prototype, {\r\n    /**\r\n     * Get the currently selected options from add-to-cart form. Works with all\r\n     * form input elements.\r\n     *\r\n     * @return {array} options - Values of currently selected variants\r\n     */\r\n    _getCurrentOptions: function() {\r\n      var currentOptions = _.map(\r\n        $(this.singleOptionSelector, this.$container),\r\n        function(element) {\r\n          var $element = $(element);\r\n          var type = $element.attr('type');\r\n          var currentOption = {};\r\n\r\n          if (type === 'radio' || type === 'checkbox') {\r\n            if ($element[0].checked) {\r\n              currentOption.value = $element.val();\r\n              currentOption.index = $element.data('index');\r\n\r\n              return currentOption;\r\n            } else {\r\n              return false;\r\n            }\r\n          } else {\r\n            currentOption.value = $element.val();\r\n            currentOption.index = $element.data('index');\r\n\r\n            return currentOption;\r\n          }\r\n        }\r\n      );\r\n\r\n      // remove any unchecked input values if using radio buttons or checkboxes\r\n      currentOptions = _.compact(currentOptions);\r\n\r\n      return currentOptions;\r\n    },\r\n\r\n    /**\r\n     * Find variant based on selected values.\r\n     *\r\n     * @param  {array} selectedValues - Values of variant inputs\r\n     * @return {object || undefined} found - Variant object from product.variants\r\n     */\r\n    _getVariantFromOptions: function() {\r\n      var selectedValues = this._getCurrentOptions();\r\n      var variants = this.product.variants;\r\n\r\n      var found = _.find(variants, function(variant) {\r\n        return selectedValues.every(function(values) {\r\n          return _.isEqual(variant[values.index], values.value);\r\n        });\r\n      });\r\n\r\n      return found;\r\n    },\r\n\r\n    /**\r\n     * Event handler for when a variant input changes.\r\n     */\r\n    _onSelectChange: function() {\r\n      var variant = this._getVariantFromOptions();\r\n\r\n      this.$container.trigger({\r\n        type: 'variantChange',\r\n        variant: variant\r\n      });\r\n\r\n      if (!variant) {\r\n        return;\r\n      }\r\n\r\n      this._updateMasterSelect(variant);\r\n      this._updateImages(variant);\r\n      this._updatePrice(variant);\r\n      this._updateSKU(variant);\r\n      this.currentVariant = variant;\r\n\r\n      if (this.enableHistoryState) {\r\n        this._updateHistoryState(variant);\r\n      }\r\n    },\r\n\r\n    /**\r\n     * Trigger event when variant image changes\r\n     *\r\n     * @param  {object} variant - Currently selected variant\r\n     * @return {event}  variantImageChange\r\n     */\r\n    _updateImages: function(variant) {\r\n      var variantImage = variant.featured_image || {};\r\n      var currentVariantImage = this.currentVariant.featured_image || {};\r\n\r\n      if (\r\n        !variant.featured_image ||\r\n        variantImage.src === currentVariantImage.src\r\n      ) {\r\n        return;\r\n      }\r\n\r\n      this.$container.trigger({\r\n        type: 'variantImageChange',\r\n        variant: variant\r\n      });\r\n    },\r\n\r\n    /**\r\n     * Trigger event when variant price changes.\r\n     *\r\n     * @param  {object} variant - Currently selected variant\r\n     * @return {event} variantPriceChange\r\n     */\r\n    _updatePrice: function(variant) {\r\n      if (\r\n        variant.price === this.currentVariant.price &&\r\n        variant.compare_at_price === this.currentVariant.compare_at_price\r\n      ) {\r\n        return;\r\n      }\r\n\r\n      this.$container.trigger({\r\n        type: 'variantPriceChange',\r\n        variant: variant\r\n      });\r\n    },\r\n\r\n    /**\r\n     * Trigger event when variant sku changes.\r\n     *\r\n     * @param  {object} variant - Currently selected variant\r\n     * @return {event} variantSKUChange\r\n     */\r\n    _updateSKU: function(variant) {\r\n      if (variant.sku === this.currentVariant.sku) {\r\n        return;\r\n      }\r\n\r\n      this.$container.trigger({\r\n        type: 'variantSKUChange',\r\n        variant: variant\r\n      });\r\n    },\r\n\r\n    /**\r\n     * Update history state for product deeplinking\r\n     *\r\n     * @param  {variant} variant - Currently selected variant\r\n     * @return {k}         [description]\r\n     */\r\n    _updateHistoryState: function(variant) {\r\n      if (!history.replaceState || !variant) {\r\n        return;\r\n      }\r\n\r\n      var newurl =\r\n        window.location.protocol +\r\n        '//' +\r\n        window.location.host +\r\n        window.location.pathname +\r\n        '?variant=' +\r\n        variant.id;\r\n      window.history.replaceState({ path: newurl }, '', newurl);\r\n    },\r\n\r\n    /**\r\n     * Update hidden master select of variant change\r\n     *\r\n     * @param  {variant} variant - Currently selected variant\r\n     */\r\n    _updateMasterSelect: function(variant) {\r\n      $(this.originalSelectorId, this.$container).val(variant.id);\r\n    }\r\n  });\r\n\r\n  return Variants;\r\n})();\r\n\r\n\r\n/*================ MODULES ================*/\r\nwindow.Drawers = (function() {\r\n  var Drawer = function(id, position, options) {\r\n    var defaults = {\r\n      close: '.js-drawer-close',\r\n      open: '.js-drawer-open-' + position,\r\n      openClass: 'js-drawer-open',\r\n      dirOpenClass: 'js-drawer-open-' + position\r\n    };\r\n\r\n    this.nodes = {\r\n      $parent: $('body, html'),\r\n      $page: $('.page-element'),\r\n      $moved: $('.is-moved-by-drawer')\r\n    };\r\n\r\n    this.config = $.extend(defaults, options);\r\n    this.position = position;\r\n\r\n    this.$drawer = $('#' + id);\r\n    this.$open = $(this.config.open);\r\n\r\n    if (!this.$drawer.length) {\r\n      return false;\r\n    }\r\n\r\n    this.drawerIsOpen = false;\r\n    this.init();\r\n  };\r\n\r\n  Drawer.prototype.init = function() {\r\n    this.$open.attr('aria-expanded', 'false');\r\n    this.$open.on('click', $.proxy(this.open, this));\r\n    this.$drawer.find(this.config.close).on('click', $.proxy(this.close, this));\r\n  };\r\n\r\n  Drawer.prototype.open = function(evt) {\r\n    // Keep track if drawer was opened from a click, or called by another function\r\n    var externalCall = false;\r\n\r\n    // don't open an opened drawer\r\n    if (this.drawerIsOpen) {\r\n      return;\r\n    }\r\n\r\n    this.$open.addClass(this.config.openClass);\r\n\r\n    // Prevent following href if link is clicked\r\n    if (evt) {\r\n      evt.preventDefault();\r\n    } else {\r\n      externalCall = true;\r\n    }\r\n\r\n    // Without this, the drawer opens, the click event bubbles up to $nodes.page\r\n    // which closes the drawer.\r\n    if (evt && evt.stopPropagation) {\r\n      evt.stopPropagation();\r\n      // save the source of the click, we'll focus to this on close\r\n      this.$activeSource = $(evt.currentTarget);\r\n    }\r\n\r\n    if (this.drawerIsOpen && !externalCall) {\r\n      return this.close();\r\n    }\r\n\r\n    // Add is-transitioning class to moved elements on open so drawer can have\r\n    // transition for close animation\r\n    this.nodes.$moved.addClass('is-transitioning');\r\n    this.$drawer.prepareTransition();\r\n\r\n    this.nodes.$parent.addClass(\r\n      this.config.openClass + ' ' + this.config.dirOpenClass\r\n    );\r\n    this.drawerIsOpen = true;\r\n\r\n    // Set focus on drawer\r\n    slate.a11y.trapFocus({\r\n      $container: this.$drawer,\r\n      namespace: 'drawer_focus'\r\n    });\r\n\r\n    // Run function when draw opens if set\r\n    if (\r\n      this.config.onDrawerOpen &&\r\n      typeof this.config.onDrawerOpen === 'function'\r\n    ) {\r\n      if (!externalCall) {\r\n        this.config.onDrawerOpen();\r\n      }\r\n    }\r\n\r\n    if (this.$activeSource && this.$activeSource.attr('aria-expanded')) {\r\n      this.$activeSource.attr('aria-expanded', 'true');\r\n    }\r\n\r\n    this.bindEvents();\r\n  };\r\n\r\n  Drawer.prototype.close = function() {\r\n    // don't close a closed drawer\r\n    if (!this.drawerIsOpen) {\r\n      return;\r\n    }\r\n\r\n    this.$open.removeClass(this.config.openClass);\r\n\r\n    // deselect any focused form elements\r\n    $(document.activeElement).trigger('blur');\r\n\r\n    // Ensure closing transition is applied to moved elements, like the nav\r\n    this.nodes.$moved.prepareTransition({ disableExisting: true });\r\n    this.$drawer.prepareTransition({ disableExisting: true });\r\n\r\n    this.nodes.$parent.removeClass(\r\n      this.config.dirOpenClass + ' ' + this.config.openClass\r\n    );\r\n\r\n    this.drawerIsOpen = false;\r\n\r\n    // Remove focus on drawer\r\n    slate.a11y.removeTrapFocus({\r\n      $container: this.$drawer,\r\n      namespace: 'drawer_focus'\r\n    });\r\n\r\n    if (this.$activeSource && this.$activeSource.attr('aria-expanded')) {\r\n      this.$activeSource.attr('aria-expanded', 'false');\r\n    }\r\n\r\n    this.unbindEvents();\r\n  };\r\n\r\n  Drawer.prototype.bindEvents = function() {\r\n    // Lock scrolling on mobile\r\n    this.nodes.$page.on('touchmove.drawer', function() {\r\n      return false;\r\n    });\r\n\r\n    // Clicking out of drawer closes it\r\n    this.nodes.$page.on(\r\n      'click.drawer',\r\n      $.proxy(function() {\r\n        this.close();\r\n        return false;\r\n      }, this)\r\n    );\r\n\r\n    // Pressing escape closes drawer\r\n    this.nodes.$parent.on(\r\n      'keyup.drawer',\r\n      $.proxy(function(evt) {\r\n        if (evt.keyCode === 27) {\r\n          this.close();\r\n        }\r\n      }, this)\r\n    );\r\n  };\r\n\r\n  Drawer.prototype.unbindEvents = function() {\r\n    this.nodes.$page.off('.drawer');\r\n    this.nodes.$parent.off('.drawer');\r\n  };\r\n\r\n  return Drawer;\r\n})();\r\n\r\nwindow.Modals = (function() {\r\n  var Modal = function(id, name, options) {\r\n    var defaults = {\r\n      close: '.js-modal-close',\r\n      open: '.js-modal-open-' + name,\r\n      openClass: 'modal--is-active'\r\n    };\r\n\r\n    this.$modal = $('#' + id);\r\n\r\n    if (!this.$modal.length) {\r\n      return false;\r\n    }\r\n\r\n    this.nodes = {\r\n      $body: $('body')\r\n    };\r\n\r\n    this.config = $.extend(defaults, options);\r\n\r\n    this.modalIsOpen = false;\r\n    this.$focusOnOpen = this.config.focusOnOpen\r\n      ? $(this.config.focusOnOpen)\r\n      : this.$modal;\r\n    this.init();\r\n  };\r\n\r\n  Modal.prototype.init = function() {\r\n    var $openBtn = $(this.config.open);\r\n\r\n    // Add aria controls\r\n    $openBtn.attr('aria-expanded', 'false');\r\n\r\n    $(this.config.open).on('click', $.proxy(this.open, this));\r\n    this.$modal.find(this.config.close).on('click', $.proxy(this.close, this));\r\n  };\r\n\r\n  Modal.prototype.open = function(evt) {\r\n    // Keep track if modal was opened from a click, or called by another function\r\n    var externalCall = false;\r\n\r\n    // don't open an opened modal\r\n    if (this.modalIsOpen) {\r\n      return;\r\n    }\r\n\r\n    // Prevent following href if link is clicked\r\n    if (evt) {\r\n      evt.preventDefault();\r\n    } else {\r\n      externalCall = true;\r\n    }\r\n\r\n    // Without this, the modal opens, the click event bubbles up to $nodes.page\r\n    // which closes the modal.\r\n    if (evt && evt.stopPropagation) {\r\n      evt.stopPropagation();\r\n      // save the source of the click, we'll focus to this on close\r\n      this.$activeSource = $(evt.currentTarget);\r\n    }\r\n\r\n    if (this.modalIsOpen && !externalCall) {\r\n      return this.close();\r\n    }\r\n\r\n    this.$modal.prepareTransition().addClass(this.config.openClass);\r\n    this.nodes.$body.addClass(this.config.openClass);\r\n\r\n    this.modalIsOpen = true;\r\n\r\n    // Set focus on modal\r\n    slate.a11y.trapFocus({\r\n      $container: this.$modal,\r\n      namespace: 'modal_focus',\r\n      $elementToFocus: this.$focusOnOpen\r\n    });\r\n\r\n    if (this.$activeSource && this.$activeSource.attr('aria-expanded')) {\r\n      this.$activeSource.attr('aria-expanded', 'true');\r\n    }\r\n\r\n    this.bindEvents();\r\n  };\r\n\r\n  Modal.prototype.close = function() {\r\n    // don't close a closed modal\r\n    if (!this.modalIsOpen) {\r\n      return;\r\n    }\r\n\r\n    // deselect any focused form elements\r\n    $(document.activeElement).trigger('blur');\r\n\r\n    this.$modal.prepareTransition().removeClass(this.config.openClass);\r\n    this.nodes.$body.removeClass(this.config.openClass);\r\n\r\n    this.modalIsOpen = false;\r\n\r\n    // Remove focus on modal\r\n    slate.a11y.removeTrapFocus({\r\n      $container: this.$modal,\r\n      namespace: 'modal_focus'\r\n    });\r\n\r\n    if (this.$activeSource && this.$activeSource.attr('aria-expanded')) {\r\n      this.$activeSource.attr('aria-expanded', 'false').focus();\r\n    }\r\n\r\n    this.unbindEvents();\r\n  };\r\n\r\n  Modal.prototype.bindEvents = function() {\r\n    // Pressing escape closes modal\r\n    this.nodes.$body.on(\r\n      'keyup.modal',\r\n      $.proxy(function(evt) {\r\n        if (evt.keyCode === 27) {\r\n          this.close();\r\n        }\r\n      }, this)\r\n    );\r\n  };\r\n\r\n  Modal.prototype.unbindEvents = function() {\r\n    this.nodes.$body.off('.modal');\r\n  };\r\n\r\n  return Modal;\r\n})();\r\n\r\nwindow.QtySelector = (function() {\r\n  var QtySelector = function($el) {\r\n    this.cache = {\r\n      $body: $('body'),\r\n      $subtotal: $('#CartSubtotal'),\r\n      $discountTotal: $('#cartDiscountTotal'),\r\n      $cartTable: $('.cart-table'),\r\n      $cartTemplate: $('#CartProducts')\r\n    };\r\n\r\n    this.settings = {\r\n      loadingClass: 'js-qty--is-loading',\r\n      isCartTemplate: this.cache.$body.hasClass('template-cart'),\r\n      // On the cart template, minimum is 0. Elsewhere min is 1\r\n      minQty: this.cache.$body.hasClass('template-cart') ? 0 : 1\r\n    };\r\n\r\n    this.$el = $el;\r\n    this.qtyUpdateTimeout;\r\n    this.createInputs();\r\n    this.bindEvents();\r\n  };\r\n\r\n  QtySelector.prototype.createInputs = function() {\r\n    var $el = this.$el;\r\n\r\n    var data = {\r\n      value: $el.val(),\r\n      key: $el.attr('id'),\r\n      name: $el.attr('name'),\r\n      line: $el.attr('data-line')\r\n    };\r\n    var source = $('#QuantityTemplate').html();\r\n    var template = Handlebars.compile(source);\r\n\r\n    this.$wrapper = $(template(data)).insertBefore($el);\r\n\r\n    // Remove original number input\r\n    $el.remove();\r\n  };\r\n\r\n  QtySelector.prototype.validateAvailability = function(line, quantity) {\r\n    var product = theme.cartObject.items[line - 1]; // 0-based index in API\r\n    var handle = product.handle; // needed for the ajax request\r\n    var id = product.id; // needed to find right variant from ajax results\r\n\r\n    var params = {\r\n      type: 'GET',\r\n      url: '/products/' + handle + '.js',\r\n      dataType: 'json',\r\n      success: $.proxy(function(cartProduct) {\r\n        this.validateAvailabilityCallback(line, quantity, id, cartProduct);\r\n      }, this)\r\n    };\r\n\r\n    $.ajax(params);\r\n  };\r\n\r\n  QtySelector.prototype.validateAvailabilityCallback = function(\r\n    line,\r\n    quantity,\r\n    id,\r\n    product\r\n  ) {\r\n    var quantityIsAvailable = true;\r\n\r\n    // This returns all variants of a product.\r\n    // Loop through them to get our desired one.\r\n    for (var i = 0; i < product.variants.length; i++) {\r\n      var variant = product.variants[i];\r\n      if (variant.id === id) {\r\n        break;\r\n      }\r\n    }\r\n\r\n    // If the variant tracks inventory and does not sell when sold out\r\n    // we can compare the requested with available quantity\r\n    if (\r\n      variant.inventory_management !== null &&\r\n      variant.inventory_policy === 'deny'\r\n    ) {\r\n      if (variant.inventory_quantity < quantity) {\r\n\r\n        // Set quantity to max amount available\r\n        this.$wrapper.find('.js-qty__input').val(variant.inventory_quantity);\r\n\r\n        quantityIsAvailable = false;\r\n        this.$wrapper.removeClass(this.settings.loadingClass);\r\n      }\r\n    }\r\n\r\n    if (quantityIsAvailable) {\r\n      this.updateItemQuantity(line, quantity);\r\n    }\r\n  };\r\n\r\n  QtySelector.prototype.validateQty = function(qty) {\r\n    if (parseFloat(qty) === parseInt(qty, 10) && !isNaN(qty)) {\r\n      // We have a valid number!\r\n    } else {\r\n      // Not a number. Default to 1.\r\n      qty = 1;\r\n    }\r\n    return parseInt(qty, 10);\r\n  };\r\n\r\n  QtySelector.prototype.adjustQty = function(evt) {\r\n    var $el = $(evt.currentTarget);\r\n    var $input = $el.siblings('.js-qty__input');\r\n    var qty = this.validateQty($input.val());\r\n    var line = $input.attr('data-line');\r\n\r\n    if ($el.hasClass('js-qty__adjust--minus')) {\r\n      qty -= 1;\r\n      if (qty <= this.settings.minQty) {\r\n        qty = this.settings.minQty;\r\n      }\r\n    } else {\r\n      qty += 1;\r\n    }\r\n\r\n    if (this.settings.isCartTemplate) {\r\n      $el.parent().addClass(this.settings.loadingClass);\r\n      this.updateCartItemPrice(line, qty);\r\n    } else {\r\n      $input.val(qty);\r\n    }\r\n  };\r\n\r\n  QtySelector.prototype.bindEvents = function() {\r\n    this.$wrapper\r\n      .find('.js-qty__adjust')\r\n      .on('click', $.proxy(this.adjustQty, this));\r\n\r\n    // Select input text on click\r\n    this.$wrapper.on('click', '.js-qty__input', function() {\r\n      this.setSelectionRange(0, this.value.length);\r\n    });\r\n\r\n    // If the quantity changes on the cart template, update the price\r\n    if (this.settings.isCartTemplate) {\r\n      this.$wrapper.on(\r\n        'change',\r\n        '.js-qty__input',\r\n        $.proxy(function(evt) {\r\n          var $input = $(evt.currentTarget);\r\n          var line = $input.attr('data-line');\r\n          var qty = this.validateQty($input.val());\r\n          $input.parent().addClass(this.settings.loadingClass);\r\n          this.updateCartItemPrice(line, qty);\r\n        }, this)\r\n      );\r\n    }\r\n  };\r\n\r\n  QtySelector.prototype.updateCartItemPrice = function(line, qty) {\r\n    // Update cart after short timeout so user doesn't create simultaneous ajax calls\r\n    clearTimeout(this.qtyUpdateTimeout);\r\n    this.qtyUpdateTimeout = setTimeout(\r\n      $.proxy(function() {\r\n        this.validateAvailability(line, qty);\r\n      }, this),\r\n      200\r\n    );\r\n  };\r\n\r\n  QtySelector.prototype.updateItemQuantity = function(line, quantity) {\r\n    var params = {\r\n      type: 'POST',\r\n      url: '/cart/change.js',\r\n      data: 'quantity=' + quantity + '&line=' + line,\r\n      dataType: 'json',\r\n      success: $.proxy(function(cart) {\r\n        this.updateCartItemCallback(cart);\r\n      }, this)\r\n    };\r\n\r\n    $.ajax(params);\r\n  };\r\n\r\n  QtySelector.prototype.updateCartItemCallback = function(cart) {\r\n    // Reload the page to show the empty cart if no items\r\n    if (cart.item_count === 0) {\r\n      location.reload();\r\n      return;\r\n    }\r\n\r\n    // Update cart object\r\n    theme.cartObject = cart;\r\n\r\n    // Handlebars.js cart layout\r\n    var data = {};\r\n    var items = [];\r\n    var item = {};\r\n    var source = $('#CartProductTemplate').html();\r\n    var template = Handlebars.compile(source);\r\n    var prodImg;\r\n\r\n    // Add each item to our handlebars.js data\r\n    $.each(cart.items, function(index, cartItem) {\r\n      /* Hack to get product image thumbnail\r\n       *   - If image is not null\r\n       *     - Remove file extension, add 240x240, and re-add extension\r\n       *     - Create server relative link\r\n       *   - A hard-coded url of no-image\r\n       */\r\n\r\n      if (cartItem.image === null) {\r\n        prodImg =\r\n          '//cdn.shopify.com/s/assets/admin/no-image-medium-cc9732cb976dd349a0df1d39816fbcc7.gif';\r\n      } else {\r\n        prodImg = cartItem.image\r\n          .replace(/(\\.[^.]*)$/, '_240x240$1')\r\n          .replace('http:', '');\r\n      }\r\n\r\n      if (cartItem.properties !== null) {\r\n        $.each(cartItem.properties, function(key, value) {\r\n          if (key.charAt(0) === '_' || !value) {\r\n            delete cartItem.properties[key];\r\n          }\r\n        });\r\n      }\r\n\r\n      // Create item's data object and add to 'items' array\r\n      item = {\r\n        key: cartItem.key,\r\n        line: index + 1, // Shopify uses a 1+ index in the API\r\n        url: cartItem.url,\r\n        img: prodImg,\r\n        name: cartItem.product_title,\r\n        variation: cartItem.variant_title,\r\n        properties: cartItem.properties,\r\n        itemQty: cartItem.quantity,\r\n        price: theme.Currency.formatMoney(cartItem.price, theme.moneyFormat),\r\n        vendor: cartItem.vendor,\r\n        linePrice: theme.Currency.formatMoney(\r\n          cartItem.line_price,\r\n          theme.moneyFormat\r\n        ),\r\n        originalLinePrice: theme.Currency.formatMoney(\r\n          cartItem.original_line_price,\r\n          theme.moneyFormat\r\n        ),\r\n        discounts: cartItem.discounts,\r\n        discountsApplied:\r\n          cartItem.line_price === cartItem.original_line_price ? false : true\r\n      };\r\n\r\n      items.push(item);\r\n      theme.updateCurrencies();\r\n    });\r\n\r\n    // Gather all cart data and add to DOM\r\n    data = {\r\n      items: items\r\n    };\r\n    this.cache.$cartTemplate.empty().append(template(data));\r\n\r\n    // Create new quantity selectors\r\n    this.cache.$cartTable.find('input[type=\"number\"]').each(function(i, el) {\r\n      new QtySelector($(el));\r\n    });\r\n\r\n    // Update the cart subtotal\r\n    this.cache.$subtotal.html(\r\n      theme.Currency.formatMoney(cart.total_price, theme.moneyFormat)\r\n    );\r\n\r\n    // Update the cart total discounts\r\n    if (cart.total_discount > 0) {\r\n      this.cache.$discountTotal.html(\r\n        theme.strings.totalCartDiscount.replace(\r\n          '[savings]',\r\n          theme.Currency.formatMoney(cart.total_discount, theme.moneyFormat)\r\n        )\r\n      );\r\n    } else {\r\n      this.cache.$discountTotal.empty();\r\n    }\r\n    \r\n    theme.miniCart.updateElements();\r\n    theme.updateCurrencies();\r\n    // Set focus on cart table\r\n    slate.a11y.pageLinkFocus(this.cache.$cartTable);\r\n  };\r\n\r\n  return QtySelector;\r\n})();\r\n\r\n/*\r\n  Allow product to be added to cart via ajax with\r\n  custom success and error responses.\r\n*/\r\nwindow.AjaxCart = (function() {\r\n  var styleCart = $('.js-mini-cart').attr(\"data-cartmini\");\r\n  var cart = function($form) {\r\n    this.cache = {\r\n      $cartIconIndicator: $('.site-header__cart-indicator')\r\n    };\r\n\r\n    this.$form = $form;\r\n    this.eventListeners();\r\n    \r\n    this.showNotice = false;\r\n    if (this.$form.length) {\r\n      this.showNotice  = this.$form.hasClass('js-form--notice')? true : false;\r\n    }\r\n  };\r\n\r\n  cart.prototype.eventListeners = function() {\r\n    if (this.$form.length) {\r\n      this.$form.on('submit', $.proxy(this.addItemFromForm, this));\r\n    }\r\n  };\r\n\r\n  cart.prototype.addItemFromForm = function(evt) {\r\n    evt.preventDefault();\r\n\r\n    var params = {\r\n      type: 'POST',\r\n      url: '/cart/add.js',\r\n      data: this.$form.serialize(),\r\n      dataType: 'json',\r\n      success: $.proxy(function(lineItem) {\r\n        this.success(lineItem);\r\n      }, this),\r\n      error: $.proxy(function(XMLHttpRequest, textStatus) {\r\n        this.error(XMLHttpRequest, textStatus);\r\n      }, this)\r\n    };\r\n\r\n    $.ajax(params);\r\n  };\r\n  \r\n  cart.prototype.success = function(item) {\r\n    theme.miniCart.updateElements();\r\n    theme.miniCart.generateCart();\r\n    if(styleCart != 'true' ){\r\n      if (this.showNotice) {\r\n        var htmlVariant = item.variant_title !== null ? '<i>('+item.variant_title+')</i>' : '';\r\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>';\r\n        theme.alert.new(theme.strings.addToCartSuccess,htmlAlert,3000,'notice');\r\n      }else{\r\n        theme.crosssell.showPopup(item);\r\n      }\r\n    }\r\n  };\r\n\r\n  // Error handling reference from Shopify.onError in api.jquery.js\r\n  cart.prototype.error = function(XMLHttpRequest) {\r\n    var data = JSON.parse(XMLHttpRequest.responseText);\r\n    \r\n    if (data.message) {\r\n      theme.alert.new('',data.description,3000,'warning');\r\n    }\r\n  };\r\n\r\n  return cart;\r\n})();\r\n\r\n/*================ TEMPLATES ================*/\r\ntheme.customerTemplates = (function() {\r\n  function initEventListeners() {\r\n    // Show reset password form\r\n    $('#RecoverPassword').on('click', function(evt) {\r\n      evt.preventDefault();\r\n      toggleRecoverPasswordForm();\r\n    });\r\n\r\n    // Hide reset password form\r\n    $('#HideRecoverPasswordLink').on('click', function(evt) {\r\n      evt.preventDefault();\r\n      toggleRecoverPasswordForm();\r\n    });\r\n  }\r\n\r\n  /**\r\n   *\r\n   *  Show/Hide recover password form\r\n   *\r\n   */\r\n  function toggleRecoverPasswordForm() {\r\n    $('#RecoverPasswordForm').toggleClass('hide');\r\n    $('#CustomerLoginForm').toggleClass('hide');\r\n  }\r\n\r\n  /**\r\n   *\r\n   *  Show reset password success message\r\n   *\r\n   */\r\n  function resetPasswordSuccess() {\r\n    // check if reset password form was successfully submited\r\n    if (!$('.reset-password-success').length) {\r\n      return;\r\n    }\r\n\r\n    // show success message\r\n    $('#ResetSuccess').removeClass('hide');\r\n  }\r\n\r\n  /**\r\n   *\r\n   *  Show/hide customer address forms\r\n   *\r\n   */\r\n  function customerAddressForm() {\r\n    var $newAddressForm = $('#AddressNewForm');\r\n\r\n    if (!$newAddressForm.length) {\r\n      return;\r\n    }\r\n\r\n    // Initialize observers on address selectors, defined in shopify_common.js\r\n    if (Shopify) {\r\n      // eslint-disable-next-line no-new\r\n      new Shopify.CountryProvinceSelector(\r\n        'AddressCountryNew',\r\n        'AddressProvinceNew',\r\n        {\r\n          hideElement: 'AddressProvinceContainerNew'\r\n        }\r\n      );\r\n    }\r\n\r\n    // Initialize each edit form's country/province selector\r\n    $('.address-country-option').each(function() {\r\n      var formId = $(this).data('form-id');\r\n      var countrySelector = 'AddressCountry_' + formId;\r\n      var provinceSelector = 'AddressProvince_' + formId;\r\n      var containerSelector = 'AddressProvinceContainer_' + formId;\r\n\r\n      // eslint-disable-next-line no-new\r\n      new Shopify.CountryProvinceSelector(countrySelector, provinceSelector, {\r\n        hideElement: containerSelector\r\n      });\r\n    });\r\n\r\n    // Toggle new/edit address forms\r\n    $('.address-new-toggle').on('click', function() {\r\n      $newAddressForm.toggleClass('hide');\r\n    });\r\n\r\n    $('.address-edit-toggle').on('click', function() {\r\n      var formId = $(this).data('form-id');\r\n      $('#EditAddress_' + formId).toggleClass('hide');\r\n    });\r\n\r\n    $('.address-delete').on('click', function() {\r\n      var $el = $(this);\r\n      var formId = $el.data('form-id');\r\n      var confirmMessage = $el.data('confirm-message');\r\n\r\n      // eslint-disable-next-line no-alert\r\n      if (\r\n        confirm(\r\n          confirmMessage || 'Are you sure you wish to delete this address?'\r\n        )\r\n      ) {\r\n        Shopify.postLink('/account/addresses/' + formId, {\r\n          parameters: { _method: 'delete' }\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   *\r\n   *  Check URL for reset password hash\r\n   *\r\n   */\r\n  function checkUrlHash() {\r\n    var hash = window.location.hash;\r\n\r\n    // Allow deep linking to recover password form\r\n    if (hash === '#recover') {\r\n      toggleRecoverPasswordForm();\r\n    }\r\n  }\r\n\r\n  return {\r\n    init: function() {\r\n      checkUrlHash();\r\n      initEventListeners();\r\n      resetPasswordSuccess();\r\n      customerAddressForm();\r\n    }\r\n  };\r\n})();\r\n\r\n/*================ SECTIONS ================*/\r\ntheme.HeaderSection = (function() {\r\n  function Header() {\r\n    theme.NavDrawer = new window.Drawers('NavDrawer', 'left');\r\n  }\r\n\r\n  return Header;\r\n})();\r\n\r\ntheme.Product = (function() {\r\n  var defaults = {\r\n    smallBreakpoint: 750,\r\n    productThumbIndex: 0,\r\n    productThumbMax: 0,\r\n    ajaxCart: false,\r\n    stockSetting: false\r\n  };\r\n\r\n  function Product(container) {\r\n    var $container = (this.$container = $(container));\r\n    var sectionId = $container.attr('data-section-id');\r\n\r\n    this.selectors = {\r\n      originalSelectorId: '#ProductSelect-' + sectionId,\r\n      modal: 'ProductModal',\r\n      productZoomImage: '#ProductZoomImg',\r\n      addToCart: '#AddToCart-' + sectionId,\r\n      productPrice: '#ProductPrice-' + sectionId,\r\n      comparePrice: '#ComparePrice-' + sectionId,\r\n      addToCartText: '#AddToCartText-' + sectionId,\r\n      SKU: '.js-variant-sku',\r\n      productImageContainers: '.product__photo-container-' + sectionId,\r\n      productImageWrappers: '.product__photo-wrapper-' + sectionId,\r\n      productThumbContainers: '.product-single__thumbnail-item-' + sectionId,\r\n      productThumbsWrapper: '.product-single__thumbnails-' + sectionId,\r\n      productThumbs: '.product-single__thumbnail-' + sectionId,\r\n      saleTag: '#ProductSaleTag-' + sectionId,\r\n      productStock: '#ProductStock-' + sectionId,\r\n      singleOptionSelector: '.single-option-selector-' + sectionId,\r\n      shopifyPaymentButton: '.shopify-payment-button',\r\n      availability: '.product-single__availability',\r\n      hurrify : '.js-hurrify'\r\n    };\r\n\r\n    this.settings = $.extend({}, defaults, {\r\n      sectionId: sectionId,\r\n      ajaxCart: $container.data('ajax'),\r\n      stockSetting: $container.data('stock'),\r\n      enableHistoryState: $container.data('enable-history-state') || false,\r\n      namespace: '.product-' + sectionId\r\n    });\r\n\r\n    // Stop parsing if we don't have the product json script tag\r\n    if (!$('#ProductJson-' + sectionId).html()) {\r\n      return;\r\n    }\r\n\r\n    this.productSingleObject = JSON.parse(\r\n      $('#ProductJson-' + sectionId).html()\r\n    );\r\n    this.addVariantInfo();\r\n\r\n    this.init();\r\n  }\r\n\r\n  Product.prototype = _.assignIn({}, Product.prototype, {\r\n    init: function() {\r\n      this._stringOverrides();\r\n      this._initVariants();\r\n      this._productZoomImage();\r\n      this._productThumbSwitch();\r\n      this._productThumbnailSlider();\r\n      this._initQtySelector();\r\n\r\n      if (this.settings.ajaxCart) {\r\n        theme.AjaxCart = new window.AjaxCart(\r\n          $('#AddToCartForm-' + this.settings.sectionId)\r\n        );\r\n      }\r\n    },\r\n\r\n    _stringOverrides: function() {\r\n      window.productStrings = window.productStrings || {};\r\n      $.extend(theme.strings, window.productStrings);\r\n    },\r\n\r\n    addVariantInfo: function() {\r\n      if (!this.productSingleObject || !this.settings.stockSetting) {\r\n        return;\r\n      }\r\n\r\n      var variantInfo = JSON.parse(\r\n        $('#VariantJson-' + this.settings.sectionId).html()\r\n      );\r\n\r\n      for (var i = 0; i < variantInfo.length; i++) {\r\n        $.extend(this.productSingleObject.variants[i], variantInfo[i]);\r\n      }\r\n    },\r\n\r\n    _initVariants: function() {\r\n      var options = {\r\n        $container: this.$container,\r\n        enableHistoryState: this.settings.enableHistoryState,\r\n        product: this.productSingleObject,\r\n        singleOptionSelector: this.selectors.singleOptionSelector,\r\n        originalSelectorId: this.selectors.originalSelectorId\r\n      };\r\n\r\n      // eslint-disable-next-line no-new\r\n      this.variants = new slate.Variants(options);\r\n\r\n      this.$container.on(\r\n        'variantChange' + this.settings.namespace,\r\n        this._updateAddToCartBtn.bind(this)\r\n      );\r\n      this.$container.on(\r\n        'variantChange' + this.settings.namespace,\r\n        this._updateStickyCart.bind(this)\r\n      );\r\n      this.$container.on(\r\n        'variantPriceChange' + this.settings.namespace,\r\n        this._updatePrice.bind(this)\r\n      );\r\n      this.$container.on(\r\n        'variantSKUChange' + this.settings.namespace,\r\n        this._updateSKU.bind(this)\r\n      );\r\n      this.$container.on(\r\n        'variantImageChange' + this.settings.namespace,\r\n        this._updateImages.bind(this)\r\n      );\r\n    },\r\n\r\n    _updateStock: function(variant) {\r\n      if (!this.settings.stockSetting) return;\r\n\r\n      var $stock = $(this.selectors.productStock),\r\n          $hurrify = $(this.selectors.hurrify);\r\n\r\n      // If we don't track variant inventory, hide stock\r\n      if (!variant || !variant.inventory_management) {\r\n        $stock.addClass('hide');\r\n        $hurrify.addClass('hide');\r\n        return;\r\n      }\r\n\r\n      if (variant.inventory_quantity < 10 && variant.inventory_quantity > 0) {\r\n        $stock\r\n          .html(\r\n            theme.strings.stockAvailable.replace(\r\n              '1',\r\n              variant.inventory_quantity\r\n            )\r\n          )\r\n          .removeClass('hide');\r\n        $hurrify.removeClass('hide').find('.progress-bar').css('width',variant.inventory_quantity*10+'%');\r\n        return;\r\n      }\r\n\r\n      if (variant.inventory_quantity <= 0 && variant.incoming) {\r\n        $stock\r\n          .html(\r\n            theme.strings.willNotShipUntil.replace(\r\n              '[date]',\r\n              variant.next_incoming_date\r\n            )\r\n          )\r\n          .removeClass('hide');\r\n        $hurrify.addClass('hide');\r\n        return;\r\n      }\r\n\r\n      // If there's more than 10 available, hide stock\r\n      $stock.addClass('hide');\r\n      $hurrify.addClass('hide');\r\n    },\r\n\r\n    _updateIncomingInfo: function(variant) {\r\n      if (!this.settings.stockSetting) return;\r\n\r\n      var $stock = $(this.selectors.productStock);\r\n\r\n      if (variant.incoming) {\r\n        $stock\r\n          .html(\r\n            theme.strings.willBeInStockAfter.replace(\r\n              '[date]',\r\n              variant.next_incoming_date\r\n            )\r\n          )\r\n          .removeClass('hide');\r\n        return;\r\n      }\r\n\r\n      // If there is no stock incoming, hide stock\r\n      $stock.addClass('hide');\r\n    },\r\n\r\n    _updateAddToCartBtn: function(evt) {\r\n      var variant = evt.variant;\r\n\r\n      var cache = {\r\n        $addToCart: $(this.selectors.addToCart),\r\n        $addToCartText: $(this.selectors.addToCartText)\r\n      };\r\n\r\n      if (variant) {\r\n        // Select a valid variant if available\r\n        theme.noticeSoldout.init(variant);\r\n        if (variant.available) {\r\n          // We have a valid product variant, so enable the submit button\r\n          cache.$addToCart.removeClass('btn--sold-out').prop('disabled', false);\r\n          cache.$addToCartText.html(theme.strings.addToCart);\r\n          $(this.selectors.shopifyPaymentButton, this.$container).show();\r\n          // Show how many items are left, if below 10\r\n          this._updateStock(variant);\r\n          //update availability - available\r\n          $(this.selectors.availability).find('span').text(theme.strings.available);\r\n        } else {\r\n          // Variant is sold out, disable the submit button\r\n          cache.$addToCart.prop('disabled', true).addClass('btn--sold-out');\r\n          cache.$addToCartText.html(theme.strings.soldOut);\r\n          $(this.selectors.shopifyPaymentButton, this.$container).hide();\r\n          // Update when stock will be available\r\n          this._updateIncomingInfo(variant);\r\n          //update availability - soldout\r\n          $(this.selectors.availability).find('span').text(theme.strings.soldOut);\r\n        }\r\n      } else {\r\n        cache.$addToCart.prop('disabled', true).removeClass('btn--sold-out');\r\n        cache.$addToCartText.html(theme.strings.unavailable);\r\n        //update availability - unavailable\r\n        $(this.selectors.availability).find('span').text(theme.strings.unavailable);\r\n        $(this.selectors.shopifyPaymentButton, this.$container).hide();\r\n        // Hide stock display\r\n        this._updateStock();\r\n      }\r\n    },\r\n\r\n    _updatePrice: function(evt) {\r\n      var variant = evt.variant;\r\n\r\n      if (variant) {\r\n        $(this.selectors.productPrice).html(\r\n          theme.Currency.formatMoney(variant.price, theme.moneyFormat)\r\n        );\r\n\r\n        // Update and show the product's compare price if necessary\r\n        if (variant.compare_at_price > variant.price) {\r\n          $(this.selectors.comparePrice)\r\n            .html(\r\n              theme.Currency.formatMoney(\r\n                variant.compare_at_price,\r\n                theme.moneyFormat\r\n              )\r\n            )\r\n            .removeClass('hide');\r\n          $(this.selectors.saleTag).removeClass('hide');\r\n        } else {\r\n          $(this.selectors.comparePrice).addClass('hide');\r\n          $(this.selectors.saleTag).addClass('hide');\r\n        }\r\n        \r\n        theme.updateCurrencies();\r\n      } else {\r\n        $(this.selectors.comparePrice).addClass('hide');\r\n      }\r\n    },\r\n\r\n    _updateSKU: function(evt) {\r\n      var variant = evt.variant;\r\n\r\n      if (variant) {\r\n        $(this.selectors.SKU).html(variant.sku);\r\n      }\r\n    },\r\n\r\n    _updateImages: function(evt) {\r\n      var variant = evt.variant;\r\n\r\n      if (variant && variant.featured_image) {\r\n        var imageId = variant.featured_image.id;\r\n        this.switchProductImage(imageId);\r\n        this.setActiveThumbnail(imageId);\r\n      }\r\n    },\r\n    _updateStickyCart: function (evt){\r\n      var variant = evt.variant,\r\n          $stickyPrice = $('#js-sticky-price'),\r\n          $stickyTitle = $('#js-sticky-title'),\r\n          $stickyImage = $('#js-sticky-img'),\r\n          $stickyButton = $('#js-sticky-btn');\r\n      if (variant) {\r\n        //update title\r\n        $stickyTitle.html(' - ' + variant.title);\r\n        //update price\r\n        $stickyPrice.html(theme.Currency.formatMoney(variant.price, theme.moneyFormat));\r\n        //update selectbox\r\n        for (var i = 1; i <= 3; i++) {\r\n          var option = 'option' + i,\r\n              $selecBox = '#js-sticky-option-' + i;\r\n          if (variant[option] !== null){\r\n            var valueOption = variant[option];\r\n            $($selecBox).val(valueOption);\r\n          }\r\n        }\r\n        //update button cart\r\n        if (variant.available) {\r\n          $stickyButton.prop('disabled', false).removeClass('btn--sold-out');\r\n          $stickyButton.html(theme.strings.addToCart);\r\n        } else {\r\n          $stickyButton.prop('disabled', true).addClass('btn--sold-out');\r\n          $stickyButton.html(theme.strings.soldOut);\r\n        }\r\n        //update image\r\n        if (variant.featured_image) {\r\n          $stickyImage.attr('src',theme.Images.getSizedImageUrl(variant.featured_image.src,'200x'));\r\n        }\r\n      } else {\r\n        //update title\r\n        $stickyTitle.html(' - ' + theme.strings.unavailable);\r\n        //update button cart\r\n        $stickyButton.prop('disabled', true).removeClass('btn--sold-out');\r\n        $stickyButton.html(theme.strings.unavailable);\r\n      }\r\n    },\r\n\r\n    switchProductImage: function(imageId) {\r\n      var $imageToShow = $(\r\n        this.selectors.productImageContainers +\r\n          \"[data-image-id='\" +\r\n          imageId +\r\n          \"']\",\r\n        this.$container\r\n      );\r\n      var $imagesToHide = $(\r\n        this.selectors.productImageContainers +\r\n          \":not([data-image-id='\" +\r\n          imageId +\r\n          \"'])\",\r\n        this.$container\r\n      );\r\n      $imagesToHide.addClass('hide');\r\n      $imageToShow.removeClass('hide');\r\n      //Scroll to active\r\n      topMenuHeight = $('.site-header').outerHeight();\r\n      if(this.settings.sectionId === 'product-template-8'){\r\n        $([document.documentElement, document.body]).animate({\r\n          scrollTop: $imageToShow.offset().top-topMenuHeight\r\n        }, 500);\r\n      }\r\n    },\r\n\r\n    setActiveThumbnail: function(imageId) {\r\n      var $thumbnailToShow = $(\r\n        this.selectors.productThumbContainers +\r\n          \"[data-image-id='\" +\r\n          imageId +\r\n          \"']\",\r\n        this.$container\r\n      );\r\n      var $thumbnailsToHide = $(\r\n        this.selectors.productThumbContainers +\r\n          \":not([data-image-id='\" +\r\n          imageId +\r\n          \"'])\",\r\n        this.$container\r\n      );\r\n      $thumbnailsToHide.removeClass('is-active');\r\n      $thumbnailToShow.addClass('is-active');\r\n      $thumbnailToShow.trigger('click');\r\n      var $thumbnails = $(this.selectors.productThumbsWrapper, this.$container);\r\n\r\n      // If there is a slick carousel, get the slide index, and position it into view with animation.\r\n      if ($thumbnails.hasClass('slick-initialized')) {\r\n        // eslint-disable-next-line shopify/jquery-dollar-sign-reference\r\n        var currentActiveSlideIndex = $thumbnails.slick('slickCurrentSlide');\r\n        var newActiveSlideIndex = parseInt(\r\n          $thumbnailToShow.attr('data-slick-index')\r\n        );\r\n        if (currentActiveSlideIndex !== newActiveSlideIndex) {\r\n          $thumbnails.slick('slickGoTo', newActiveSlideIndex, false);\r\n         \r\n        }\r\n      }\r\n    },\r\n\r\n    _productZoomImage: function() {\r\n      // The zoom image is only used on the product template, so return early\r\n      // even if a featured product section is present.\r\n      if (\r\n        !$('.product-single ' + this.selectors.productImageContainers).length\r\n      ) {\r\n        return;\r\n      }\r\n\r\n      var self = this;\r\n\r\n      $(this.selectors.productImageWrappers).on(\r\n        'click' + this.settings.namespace,\r\n        function(evt) {\r\n          evt.preventDefault();\r\n          // Empty src before loadig new image to avoid awkward image swap\r\n          $(self.selectors.productZoomImage)\r\n            .attr('src', '')\r\n            .attr('src', $(this).attr('href'));\r\n        }\r\n      );\r\n\r\n      this.ProductModal = new window.Modals(\r\n        this.selectors.modal,\r\n        'product-modal'\r\n      );\r\n\r\n      // Close modal if clicked, but not if the image is clicked\r\n      this.ProductModal.$modal.on('click' + this.settings.namespace, function(\r\n        evt\r\n      ) {\r\n        if (evt.target.nodeName !== 'IMG') {\r\n          self.ProductModal.close();\r\n        }\r\n      });\r\n    },\r\n\r\n    _productThumbSwitch: function() {\r\n      if (!$(this.selectors.productThumbs).length) {\r\n        return;\r\n      }\r\n\r\n      var self = this;\r\n\r\n      $(this.selectors.productThumbs).on(\r\n        'click' + this.settings.namespace,\r\n        function(evt) {\r\n          evt.preventDefault();\r\n          var imageId = $(this)\r\n            .parent()\r\n            .data('image-id');\r\n          self.setActiveThumbnail(imageId);\r\n          self.switchProductImage(imageId);\r\n        }\r\n      );\r\n      //trigger hover thumb\r\n      // $(this.selectors.productThumbs).on('click',function(){\r\n      //   $(this).trigger('click');\r\n      // });\r\n    },\r\n\r\n    /*\r\n      Thumbnail slider\r\n     */\r\n    _productThumbnailSlider: function() {\r\n      var $productThumbsWrapper = $(this.selectors.productThumbsWrapper);\r\n      var $productThumbs = $(this.selectors.productThumbs);\r\n      if (!$productThumbs.length) {\r\n        return;\r\n      }\r\n\r\n      if ($productThumbs.length > 1) {\r\n        $productThumbsWrapper.on(\r\n          'init' + this.settings.namespace,\r\n          this._productSwipeInit.bind(this)\r\n        );\r\n        \r\n        if (this.settings.sectionId === 'product-template-3' || this.settings.sectionId === 'product-template-4'){\r\n          $productThumbsWrapper.slick({\r\n            accessibility: false,\r\n            arrows: true,\r\n            dots: false,\r\n            infinite: false,\r\n            autoplay: false,\r\n            slidesToShow: 5,\r\n            slidesToScroll: 5,\r\n            vertical: true,\r\n            verticalSwiping: true,\r\n            responsive: [\r\n              {\r\n                breakpoint: 992,\r\n                settings: {\r\n                  vertical: false,\r\n                  verticalSwiping: false,\r\n                  slidesToShow: 4,\r\n                  slidesToScroll: 4,\r\n                  dots: false,\r\n                }\r\n              }\r\n            ]\r\n          }).css('opacity','1');\r\n        }else if(this.settings.sectionId === 'product-template-5'){\r\n          $productThumbsWrapper.slick({\r\n            accessibility: false,\r\n            arrows: true,\r\n            dots: false,\r\n            infinite: true,\r\n            autoplay: false,\r\n            slidesToShow: 2,\r\n            slidesToScroll: 1,\r\n            responsive: [\r\n              {\r\n                breakpoint: 992,\r\n                settings: {\r\n                  slidesToShow: 4,\r\n                  slidesToScroll: 4,\r\n                  dots: false,\r\n                }\r\n              }\r\n            ]\r\n          }).css('opacity','1');\r\n        }\r\n        else if(this.settings.sectionId === 'product-template-7'){\r\n          $productThumbsWrapper.slick({\r\n            accessibility: false,\r\n            arrows: true,\r\n            dots: true,\r\n            infinite: true,\r\n            autoplay: false,\r\n            slidesToShow: 1,\r\n            slidesToScroll: 1,\r\n            responsive: [\r\n              {\r\n                breakpoint: 992,\r\n                settings: {\r\n                  slidesToShow: 1,\r\n                  slidesToScroll: 1,\r\n                  dots: false,\r\n                  arrows: true,\r\n                }\r\n              }\r\n            ]\r\n          }).css('opacity','1');\r\n        }\r\n        else if (this.settings.sectionId === 'product-template-8' ){\r\n          var lastId,\r\n              topMenu = $(\".product-single__thumbnails\"),\r\n              topMenuHeight = $('.site-header').outerHeight()+20,\r\n              // All list items\r\n              menuItems = topMenu.find(\".product-single__thumbnail\");\r\n             \r\n             \r\n          if ($(window).width() > 767) {\r\n              menuItems.click(function (e){\r\n              var findid =$(this).attr('href');\r\n              offsetTop = $(findid).offset().top-topMenuHeight + 1;\r\n              $('html, body').stop().animate({\r\n                  scrollTop: offsetTop\r\n              },200);\r\n              return false;\r\n            });\r\n              // Anchors corresponding to menu items\r\n              scrollItems = menuItems.map(function(){\r\n                var item = $($(this).attr('href'));\r\n                if (item.length) { return item; }\r\n              });\r\n              \r\n            $(window).scroll(function(){\r\n                // Get container scroll position\r\n                var fromTop = $(this).scrollTop()+topMenuHeight;\r\n                // Get id of current scroll item\r\n                var cur = scrollItems.map(function(){\r\n                  if ($(this).offset().top < fromTop)\r\n                    return this;\r\n                });\r\n                // Get the id of the current element\r\n                cur = cur[cur.length-1];\r\n                var id = cur && cur.length ? cur[0].id : \"\";\r\n                \r\n                if (lastId !== id) {\r\n                    lastId = id;\r\n                    // Set/remove active class\r\n                    menuItems\r\n                      .parent().removeClass(\"is-active\")\r\n                      .end().filter(\"[href='#\"+id+\"']\").parent().addClass(\"is-active\");\r\n                }                   \r\n            });\r\n          }\r\n          else{\r\n            menuItems.click(function (e){\r\n              var findid =$(this).attr('href');\r\n              offsetTop = $(findid).offset().top;\r\n              $('html, body').stop().animate({\r\n                  scrollTop: offsetTop\r\n              });\r\n              return false;\r\n            });\r\n          }\r\n          \r\n          $productThumbsWrapper.slick({\r\n            accessibility: false,\r\n            arrows: true,\r\n            dots: false,\r\n            infinite: false,\r\n            autoplay: false,\r\n            slidesToShow: 5,\r\n            slidesToScroll: 1,\r\n            vertical: true,\r\n            verticalSwiping: true,\r\n            responsive: [\r\n              {\r\n                breakpoint: 992,\r\n                settings: {\r\n                  vertical: false,\r\n                  verticalSwiping: false,\r\n                  slidesToShow: 4,\r\n                  slidesToScroll: 4,\r\n                  dots: true,\r\n                }\r\n              }\r\n            ]\r\n          }).css('opacity','1');\r\n        }\r\n        else{\r\n          $productThumbsWrapper.slick({\r\n            accessibility: false,\r\n            arrows: true,\r\n            dots: false,\r\n            infinite: false,\r\n            autoplay: false,\r\n            slidesToShow: 4,\r\n            slidesToScroll: 4\r\n          }).css('opacity','1');\r\n        }\r\n\r\n        // Show highlighted thumbnail by repositioning slider\r\n        $productThumbsWrapper.slick(\r\n          'slickGoTo',\r\n          $productThumbsWrapper.find('.is-active').attr('data-slick-index'),\r\n          true\r\n        );\r\n      }\r\n    },\r\n\r\n    _productSwipeInit: function(evt, obj) {\r\n      // Slider is initialized. Setup custom swipe events\r\n      this.settings.productThumbIndex = obj.currentSlide;\r\n      this.settings.productThumbMax = obj.slideCount - 1; // we need the 0-based index\r\n\r\n      var self = this;\r\n\r\n      $(this.selectors.productImageWrappers).on(\r\n        'swipeleft swiperight',\r\n        function(event) {\r\n          if (event.type === 'swipeleft') {\r\n            self._goToNextThumbnail();\r\n          }\r\n\r\n          if (event.type === 'swiperight') {\r\n            self._goToPrevThumbnail();\r\n          }\r\n\r\n          // Trigger click on newly requested thumbnail\r\n          $(\r\n            '.product-single__thumbnail-item[data-slick-index=\"' +\r\n              self.settings.productThumbIndex +\r\n              '\"]'\r\n          )\r\n            .find('.product-single__thumbnail')\r\n            .trigger('click');\r\n          \r\n        }\r\n      );\r\n    },\r\n    _goToNextThumbnail: function() {\r\n      this.settings.productThumbIndex++;\r\n\r\n      if (this.settings.productThumbIndex > this.settings.productThumbMax) {\r\n        this.settings.productThumbIndex = 0;\r\n      }\r\n\r\n      $(this.selectors.productThumbsWrapper).slick(\r\n        'slickGoTo',\r\n        this.settings.productThumbIndex,\r\n        true\r\n      );\r\n    },\r\n\r\n    _goToPrevThumbnail: function() {\r\n      this.settings.productThumbIndex--;\r\n\r\n      if (this.settings.productThumbIndex < 0) {\r\n        this.settings.productThumbIndex = this.settings.productThumbMax;\r\n      }\r\n\r\n      $(this.selectors.productThumbsWrapper).slick(\r\n        'slickGoTo',\r\n        this.settings.productThumbIndex,\r\n        true\r\n      );\r\n    },\r\n\r\n    _initQtySelector: function() {\r\n      this.$container.find('.product-form__quantity').each(function(i, el) {\r\n        // eslint-disable-next-line no-new\r\n        new QtySelector($(el));\r\n      });\r\n    },\r\n\r\n    onUnload: function() {\r\n      $(this.selectors.productImageWrappers).off(this.settings.namespace);\r\n      $(this.selectors.productThumbs).off(this.settings.namespace);\r\n      $(this.selectors.productThumbs).slick('unslick');\r\n      if (this.ProductModal) {\r\n        this.ProductModal.$modal.off(this.settings.namespace);\r\n      }\r\n    }\r\n  });\r\n\r\n  return Product;\r\n})();\r\n\r\ntheme.Slideshow = (function() {\r\n  this.$slideshow = null;\r\n  var classes = {\r\n    slideshow: 'slideshow',\r\n    slickActiveMobile: 'slick-active-mobile',\r\n    controlsHover: 'slideshow__controls--hover',\r\n    isPaused: 'is-paused'\r\n  };\r\n\r\n  var selectors = {\r\n    section: '.shopify-section',\r\n    wrapper: '#SlideshowWrapper-',\r\n    slides: '.slideshow__slide',\r\n    textWrapperMobile: '.slideshow__text-wrap--mobile',\r\n    textContentMobile: '.slideshow__text-content--mobile',\r\n    controls: '.slideshow__controls',\r\n    dots: '.slick-dots',\r\n    arrowLeft: '.slideshow__arrow-left',\r\n    arrowRight: '.slideshow__arrow-right'\r\n  };\r\n\r\n  function slideshow(el, sectionId) {\r\n    var $slideshow = (this.$slideshow = $(el));\r\n    this.adaptHeight = this.$slideshow.data('adapt-height');\r\n    this.$wrapper = this.$slideshow.closest(selectors.wrapper + sectionId);\r\n    this.$section = this.$wrapper.closest(selectors.section);\r\n    this.$controls = this.$wrapper.find(selectors.controls);\r\n    this.$textWrapperMobile = this.$section.find(selectors.textWrapperMobile);\r\n    this.autorotate = this.$slideshow.data('autorotate');\r\n    var autoplaySpeed = this.$slideshow.data('speed');\r\n    var loadSlideA11yString = this.$slideshow.data('slide-nav-a11y');\r\n\r\n    this.settings = {\r\n      rtl:theme.rtl,\r\n      accessibility: true,\r\n      arrows: true,\r\n      dots: true,\r\n      fade: (theme.rtl? false:true),\r\n      draggable: true,\r\n      touchThreshold: 20,\r\n      autoplay: this.autorotate,\r\n      autoplaySpeed: autoplaySpeed\r\n    };\r\n\r\n    this.$slideshow.on('beforeChange', beforeChange.bind(this));\r\n    this.$slideshow.on('init', slideshowA11ySetup.bind(this));\r\n\r\n    // Add class to style mobile dots & show the correct text content for the\r\n    // first slide on mobile when the slideshow initialises\r\n    this.$slideshow.on(\r\n      'init',\r\n      function() {\r\n        this.$mobileDots\r\n          .find('li:first-of-type')\r\n          .addClass(classes.slickActiveMobile);\r\n        this.showMobileText(0);\r\n      }.bind(this)\r\n    );\r\n\r\n    if (this.adaptHeight) {\r\n      this.setSlideshowHeight();\r\n      $(window).resize($.debounce(50, this.setSlideshowHeight.bind(this)));\r\n    }\r\n\r\n    this.$slideshow.slick(this.settings);\r\n\r\n    // This can't be called when the slick 'init' event fires due to how slick\r\n    // adds a11y features.\r\n    slideshowPostInitA11ySetup.bind(this)();\r\n  }\r\n\r\n  function slideshowA11ySetup(event, obj) {\r\n    var $slider = obj.$slider;\r\n    var $list = obj.$list;\r\n    this.$dots = this.$section.find(selectors.dots);\r\n    this.$mobileDots = this.$dots.eq(1);\r\n\r\n    // Remove default Slick aria-live attr until slider is focused\r\n    $list.removeAttr('aria-live');\r\n\r\n//     this.$wrapper.on('keyup', keyboardNavigation.bind(this));\r\n//     this.$controls.on('keyup', keyboardNavigation.bind(this));\r\n//     this.$textWrapperMobile.on('keyup', keyboardNavigation.bind(this));\r\n\r\n    // When an element in the slider is focused\r\n    // pause slideshow and set aria-live.\r\n    this.$wrapper\r\n      .on(\r\n        'focusin',\r\n        function(evt) {\r\n          if (!this.$wrapper.has(evt.target).length) {\r\n            return;\r\n          }\r\n\r\n          $list.attr('aria-live', 'polite');\r\n          if (this.autorotate) {\r\n            $slider.slick('slickPause');\r\n          }\r\n        }.bind(this)\r\n      )\r\n      .on(\r\n        'focusout',\r\n        function(evt) {\r\n          if (!this.$wrapper.has(evt.target).length) {\r\n            return;\r\n          }\r\n\r\n          $list.removeAttr('aria-live');\r\n        }.bind(this)\r\n      );\r\n\r\n    // Add arrow key support when focused\r\n    if (this.$dots) {\r\n      this.$dots\r\n        .find('a')\r\n        .each(function() {\r\n          var $dot = $(this);\r\n          $dot.on('click keyup', function(evt) {\r\n            if (\r\n              evt.type === 'keyup' &&\r\n              evt.which !== slate.utils.keyboardKeys.ENTER\r\n            )\r\n              return;\r\n\r\n            evt.preventDefault();\r\n\r\n            var slideNumber = $(evt.target).data('slide-number');\r\n\r\n            $slider.attr('tabindex', -1).slick('slickGoTo', slideNumber);\r\n\r\n            if (evt.type === 'keyup') {\r\n              $slider.focus();\r\n            }\r\n          });\r\n        })\r\n        .eq(0)\r\n        .attr('aria-current', 'true');\r\n    }\r\n\r\n    this.$controls\r\n      .on('focusin', highlightControls.bind(this))\r\n      .on('focusout', unhighlightControls.bind(this));\r\n  }\r\n\r\n  function slideshowPostInitA11ySetup() {\r\n    var $slides = this.$slideshow.find(selectors.slides);\r\n\r\n    $slides.removeAttr('role').removeAttr('aria-labelledby');\r\n    this.$dots\r\n      .removeAttr('role')\r\n      .find('li')\r\n      .removeAttr('role')\r\n      .removeAttr('aria-selected')\r\n      .each(function() {\r\n        var $dot = $(this);\r\n        var ariaControls = $dot.attr('aria-controls');\r\n        $dot\r\n          .removeAttr('aria-controls')\r\n          .find('a')\r\n          .attr('aria-controls', ariaControls);\r\n      });\r\n  }\r\n\r\n  function beforeChange(event, slick, currentSlide, nextSlide) {\r\n    var $dotLinks = this.$dots.find('a');\r\n    var $mobileDotLinks = this.$mobileDots.find('li');\r\n\r\n    $dotLinks\r\n      .removeAttr('aria-current')\r\n      .eq(nextSlide)\r\n      .attr('aria-current', 'true');\r\n\r\n    $mobileDotLinks\r\n      .removeClass(classes.slickActiveMobile)\r\n      .eq(nextSlide)\r\n      .addClass(classes.slickActiveMobile);\r\n    this.showMobileText(nextSlide);\r\n  }\r\n\r\n//   function keyboardNavigation() {\r\n//     if (event.keyCode === slate.utils.keyboardKeys.LEFTARROW) {\r\n//       this.$slideshow.slick('slickPrev');\r\n//     }\r\n//     if (event.keyCode === slate.utils.keyboardKeys.RIGHTARROW) {\r\n//       this.$slideshow.slick('slickNext');\r\n//     }\r\n//   }\r\n\r\n  function highlightControls() {\r\n    this.$controls.addClass(classes.controlsHover);\r\n  }\r\n\r\n  function unhighlightControls() {\r\n    this.$controls.removeClass(classes.controlsHover);\r\n  }\r\n\r\n  slideshow.prototype.setSlideshowHeight = function() {\r\n    var minAspectRatio = this.$slideshow.data('min-aspect-ratio');\r\n    this.$slideshow.height($(document).width() / minAspectRatio);\r\n  };\r\n\r\n  slideshow.prototype.showMobileText = function(slideIndex) {\r\n    var $allTextContent = this.$textWrapperMobile.find(\r\n      selectors.textContentMobile\r\n    );\r\n    var currentTextContentSelector =\r\n      selectors.textContentMobile + '-' + slideIndex;\r\n    var $currentTextContent = this.$textWrapperMobile.find(\r\n      currentTextContentSelector\r\n    );\r\n    if (\r\n      !$currentTextContent.length &&\r\n      this.$slideshow.find(selectors.slides).length === 1\r\n    ) {\r\n      this.$textWrapperMobile.hide();\r\n    } else {\r\n      this.$textWrapperMobile.show();\r\n    }\r\n    $allTextContent.hide();\r\n    $currentTextContent.show();\r\n  };\r\n\r\n  function getSlideshowId($el) {\r\n    return '#Slideshow-' + $el.data('id');\r\n  }\r\n\r\n  return slideshow;\r\n})();\r\n\r\ntheme.slideshows = {};\r\n\r\ntheme.SlideshowSection = (function() {\r\n  function SlideshowSection(container) {\r\n    var $container = (this.$container = $(container));\r\n    var sectionId = $container.attr('data-section-id');\r\n    var slideshow = (this.slideshow = '#Slideshow-' + sectionId);\r\n\r\n    theme.slideshows[slideshow] = new theme.Slideshow(slideshow, sectionId);\r\n  }\r\n\r\n  return SlideshowSection;\r\n})();\r\n\r\ntheme.SlideshowSection.prototype = _.assignIn(\r\n  {},\r\n  theme.SlideshowSection.prototype,\r\n  {\r\n    onUnload: function() {\r\n      delete theme.slideshows[this.slideshow];\r\n    },\r\n\r\n    onBlockSelect: function(evt) {\r\n      var $slideshow = $(this.slideshow);\r\n      var adaptHeight = $slideshow.data('adapt-height');\r\n\r\n      if (adaptHeight) {\r\n        theme.slideshows[this.slideshow].setSlideshowHeight();\r\n      }\r\n\r\n      // Ignore the cloned version\r\n      var $slide = $(\r\n        '.slideshow__slide--' + evt.detail.blockId + ':not(.slick-cloned)'\r\n      );\r\n      var slideIndex = $slide.data('slick-index');\r\n\r\n      // Go to selected slide, pause auto-rotate\r\n      $slideshow.slick('slickGoTo', slideIndex).slick('slickPause');\r\n    },\r\n\r\n    onBlockDeselect: function() {\r\n      // Resume auto-rotate\r\n      $(this.slideshow).slick('slickPlay');\r\n    }\r\n  }\r\n);\r\n\r\ntheme.slideshows = {};\r\n\r\ntheme.Cart = (function() {\r\n  var selectors = {\r\n    cartNote: '#CartSpecialInstructions',\r\n    cartQtyInput: '.cart__quantity',\r\n    cartNoCookiesClass: 'cart--no-cookies'\r\n  };\r\n\r\n  function Cart(container) {\r\n    var $container = (this.$container = $(container));\r\n    var sectionId = $container.attr('data-section-id');\r\n\r\n    theme.cartObject = JSON.parse($('#CartJson-' + sectionId).html());\r\n\r\n    this.init($container);\r\n  }\r\n\r\n  Cart.prototype = _.assignIn({}, Cart.prototype, {\r\n    init: function($container) {\r\n      this._initQtySelector();\r\n      this._initCartNote();\r\n\r\n      if (!this._cookiesEnabled()) {\r\n        $container.addClass(selectors.cartNoCookiesClass);\r\n      }\r\n    },\r\n\r\n    _initQtySelector: function() {\r\n      $(selectors.cartQtyInput).each(function(i, el) {\r\n        // eslint-disable-next-line no-new\r\n        new QtySelector($(el));\r\n      });\r\n    },\r\n\r\n    _initCartNote: function() {\r\n      if (!$(selectors.cartNote).length) {\r\n        return;\r\n      }\r\n\r\n      var $el = $(selectors.cartNote);\r\n      var noteText;\r\n      var params;\r\n      var noteOffset = $el[0].offsetHeight - $el[0].clientHeight;\r\n\r\n      // Auto grow the cart note if text fills it up\r\n      $el.on('keyup input', function() {\r\n        $(this)\r\n          .css('height', 'auto')\r\n          .css('height', $el[0].scrollHeight + noteOffset);\r\n      });\r\n\r\n      // Save the cart note via ajax. A safeguard in case\r\n      // a user decides to leave the page before clicking 'Update Cart'\r\n      $el.on(\r\n        'change',\r\n        $.proxy(function() {\r\n          noteText = $el.val();\r\n          params = {\r\n            type: 'POST',\r\n            url: '/cart/update.js',\r\n            data: 'note=' + this._attributeToString(noteText),\r\n            dataType: 'json'\r\n          };\r\n          $.ajax(params);\r\n        }, this)\r\n      );\r\n    },\r\n\r\n    _attributeToString: function(attr) {\r\n      if (typeof attr !== 'string') {\r\n        attr = String(attr);\r\n        if (attr === 'undefined') {\r\n          attr = '';\r\n        }\r\n      }\r\n      return $.trim(attr);\r\n    },\r\n\r\n    _cookiesEnabled: function() {\r\n      var cookieEnabled = navigator.cookieEnabled;\r\n\r\n      if (!cookieEnabled) {\r\n        document.cookie = 'testcookie';\r\n        cookieEnabled = document.cookie.indexOf('testcookie') !== -1;\r\n      }\r\n      return cookieEnabled;\r\n    }\r\n  });\r\n\r\n  return Cart;\r\n})();\r\n\r\n// Instagrams\r\ntheme.Instagrams = (function() {\r\n  function Instagrams(container) {\r\n    this.$container = $(container).on('init', this._a11y.bind(this));\r\n    //console.log(this.$container);\r\n    this.settings = {\r\n      style \t\t\t: this.$container.data('style'),\r\n      accesstoken \t\t: this.$container.data('accesstoken'),\r\n      userid\t\t\t: this.$container.data('userid'),\r\n      limit \t\t\t: this.$container.data('limit'),\r\n      resolution \t\t: this.$container.data('resolution'),\r\n      target \t\t\t: this.$container.attr('id'),\r\n      rows \t\t\t: this.$container.data('rows'),\r\n      \r\n      slidesToShow \t\t: this.$container.data('slidestoshow') || 1,\r\n      infinite \t\t\t: this.$container.data('infinite') || false,\r\n      arrows \t\t\t: this.$container.data('arrows') || false,\r\n      draggable \t\t: this.$container.data('draggable') || false,\r\n      dots \t\t\t\t: this.$container.data('dots') || false,\r\n    }\r\n    this.settings.slidesToShow1200 \t\t= (this.settings.slidesToShow - 1) > 1? (this.settings.slidesToShow - 1) : 1;\r\n    this.settings.slidesToShow992  \t\t= (this.settings.slidesToShow - 2) > 1? (this.settings.slidesToShow - 2) : 1;\r\n    this.settings.slidesToShow768  \t\t= (this.settings.slidesToShow - 3) > 1? (this.settings.slidesToShow - 3) : 1;\r\n    this.settings.slidesToShow480  \t\t= 2;\r\n    \r\n    var _self = this;\r\n    var $instagramSelector = $('#'+this.settings.target);\r\n    if (this.settings.style === 'grid'){\r\n      var afterInstagram = function(){} // blank function\r\n    }else if (this.settings.style === 'carousel'){\r\n      var afterInstagram = function(){\r\n        $instagramSelector.slick({\r\n          slidesToShow\t\t: _self.settings.slidesToShow,\r\n          slidesToScroll\t: _self.settings.slidesToShow,\r\n          arrows\t\t\t: _self.settings.arrows,\r\n          dots\t\t\t\t: _self.settings.dots,\r\n          draggable\t\t \t: _self.settings.draggable,\r\n          infinite\t\t \t: _self.settings.infinite,\r\n          rows : _self.settings.rows,\r\n          responsive: [\r\n            {\r\n              breakpoint: 1200,\r\n              settings: {\r\n                slidesToShow\t: _self.settings.slidesToShow1200,\r\n                slidesToScroll\t: _self.settings.slidesToShow1200,\r\n              }\r\n            },\r\n            {\r\n              breakpoint: 992,\r\n              settings: {\r\n                slidesToShow\t: _self.settings.slidesToShow992,\r\n                slidesToScroll\t: _self.settings.slidesToShow992,\r\n              }\r\n            },\r\n            {\r\n              breakpoint: 768,\r\n              settings: {\r\n                slidesToShow\t: _self.settings.slidesToShow768,\r\n                slidesToScroll\t: _self.settings.slidesToShow768,\r\n              }\r\n            },\r\n            {\r\n              breakpoint: 480,\r\n              settings: {\r\n                slidesToShow\t: _self.settings.slidesToShow480,\r\n                slidesToScroll\t: _self.settings.slidesToShow480,\r\n              }\r\n            }\r\n          ]\r\n        })\r\n      }\r\n    }\r\n\r\n    var feed = new Instafeed({\r\n      get\t\t\t: 'user',\r\n      target \t\t: this.settings.target,\r\n      userId\t\t: this.settings.userid,\r\n      accessToken\t: this.settings.accesstoken,\r\n      limit\t\t\t: this.settings.limit,\r\n      resolution\t: this.settings.resolution,\r\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>',\r\n      after\t\t\t: afterInstagram\r\n    });\r\n\r\n    feed.run();\r\n  }\r\n\r\n  Instagrams.prototype = _.assignIn({}, Instagrams.prototype, {\r\n    _a11y: function(event, obj) {\r\n      var $list = obj.$list;\r\n      var $wrapper = this.$container.parent();\r\n\r\n      // Remove default Slick aria-live attr until slider is focused\r\n      $list.removeAttr('aria-live');\r\n\r\n      // When an element in the slider is focused set aria-live\r\n      $wrapper.on('focusin', function(evt) {\r\n        if ($wrapper.has(evt.target).length) {\r\n          $list.attr('aria-live', 'polite');\r\n        }\r\n      });\r\n\r\n      // Remove aria-live\r\n      $wrapper.on('focusout', function(evt) {\r\n        if ($wrapper.has(evt.target).length) {\r\n          $list.removeAttr('aria-live');\r\n        }\r\n      });\r\n    }\r\n  });\r\n\r\n  return Instagrams;\r\n})();\r\n\r\n// Slick carousel\r\ntheme.slickCarousel = (function (){\r\n  function Carousels(container) {\r\n    this.$container = $(container).on('init', this._a11y.bind(this));\r\n    this.settings = {\r\n      rows \t\t\t\t: this.$container.data('rows') || 1,\r\n      slidesToShow \t\t: this.$container.data('slidestoshow') || 1,\r\n      slidesToScroll\t: this.$container.data('slidestoscroll') || 1,\r\n      infinite \t\t\t: this.$container.data('infinite') || false,\r\n      arrows \t\t\t: this.$container.data('arrows') || false,\r\n      dots \t\t\t\t: this.$container.data('dots') || false,\r\n      autoplay \t\t\t: this.$container.data('autoplay') || false,\r\n      draggable \t\t: this.$container.data('draggable') || false,\r\n      accessibility \t: this.$container.data('accessibility') || true,\r\n    }\r\n    this.settings.slidesToShow1200 \t\t= (this.settings.slidesToShow - 1) > 1? (this.settings.slidesToShow - 1) : 1;\r\n    this.settings.slidesToShow992  \t\t= (this.settings.slidesToShow - 2) > 1? (this.settings.slidesToShow - 2) : 1;\r\n    this.settings.slidesToShow768  \t\t= (this.settings.slidesToShow - 3) > 1? (this.settings.slidesToShow - 3) : 1;\r\n    this.settings.slidesToShow480  \t\t= (this.settings.slidesToShow - 4) > 1? (this.settings.slidesToShow - 4) : 1;\r\n    this.settings.slidesToScroll1200 \t= (this.settings.slidesToScroll - 1) > 1? (this.settings.slidesToScroll - 1) : 1;\r\n    this.settings.slidesToScroll992  \t= (this.settings.slidesToScroll - 2) > 1? (this.settings.slidesToScroll - 2) : 1;\r\n    this.settings.slidesToScroll768  \t= (this.settings.slidesToScroll - 3) > 1? (this.settings.slidesToScroll - 3) : 1;\r\n    this.settings.slidesToScroll480  \t= (this.settings.slidesToScroll - 4) > 1? (this.settings.slidesToScroll - 4) : 1;\r\n    this.$container.slick({\r\n      rtl\t\t\t\t: theme.rtl,\r\n      rows \t\t\t\t: this.settings.rows,\r\n      slidesToShow\t\t: this.settings.slidesToShow,\r\n      slidesToScroll \t: this.settings.slidesToScroll,\r\n      arrows\t\t\t: this.settings.arrows,\r\n      dots\t\t\t\t: this.settings.dots,\r\n      autoplay\t\t\t: this.settings.autoplay,\r\n      accessibility\t\t: this.settings.accessibility,\r\n      draggable\t\t\t: this.settings.draggable,\r\n      infinite\t\t\t: this.settings.infinite,\r\n      adaptiveHeight: true,\r\n      responsive: [\r\n        {\r\n          breakpoint: 1200,\r\n          settings: {\r\n            slidesToShow: this.settings.slidesToShow1200,\r\n            slidesToScroll: this.settings.slidesToScroll1200\r\n          }\r\n        },\r\n        {\r\n          breakpoint: 992,\r\n          settings: {\r\n            slidesToShow: this.settings.slidesToShow992,\r\n            slidesToScroll: this.settings.slidesToScroll992\r\n          }\r\n        },\r\n        {\r\n          breakpoint: 768,\r\n          settings: {\r\n            slidesToShow: this.settings.slidesToShow768,\r\n            slidesToScroll: this.settings.slidesToScroll768\r\n          }\r\n        },\r\n        {\r\n          breakpoint: 480,\r\n          settings: {\r\n            slidesToShow: 1,\r\n            slidesToScroll: this.settings.slidesToScroll480\r\n          }\r\n        }\r\n      ]\r\n    })\r\n  }\r\n\r\n  Carousels.prototype = _.assignIn({}, Carousels.prototype, {\r\n    _a11y: function(event, obj) {\r\n      var $list = obj.$list;\r\n      var $wrapper = this.$container.parent();\r\n\r\n      // Remove default Slick aria-live attr until slider is focused\r\n      $list.removeAttr('aria-live');\r\n\r\n      // When an element in the slider is focused set aria-live\r\n      $wrapper.on('focusin', function(evt) {\r\n        if ($wrapper.has(evt.target).length) {\r\n          $list.attr('aria-live', 'polite');\r\n        }\r\n      });\r\n\r\n      // Remove aria-live\r\n      $wrapper.on('focusout', function(evt) {\r\n        if ($wrapper.has(evt.target).length) {\r\n          $list.removeAttr('aria-live');\r\n        }\r\n      });\r\n    },\r\n    \r\n    _goToSlide: function(slideIndex) {\r\n      this.$container.slick('slickGoTo', slideIndex);\r\n    },\r\n\r\n    onUnload: function() {\r\n      delete this.$container;\r\n    },\r\n\r\n    onBlockSelect: function(evt) {\r\n      // Ignore the cloned version\r\n      var $slide = $(\r\n        '.carousel__slide-wrapper--' + evt.detail.blockId + ':not(.slick-cloned)'\r\n      );\r\n      var slideIndex = $slide.data('slick-index');\r\n\r\n      // Go to selected slide, pause autoplay\r\n      this._goToSlide(slideIndex);\r\n      \r\n    }\r\n  });\r\n\r\n  return Carousels;\r\n})()\r\n\r\n// Productlists\r\ntheme.Productlists = (function() {\r\n  function Productlists(container) {\r\n    this.$container = $(container).on('init', this._a11y.bind(this));\r\n    this.settings = {\r\n      slidesToShow \t\t: this.$container.data('slidestoshow') || 1,\r\n      rows \t\t\t\t: this.$container.data('rows') || 1,\r\n      arrows \t\t\t: this.$container.data('arrows') || false,\r\n      dots \t\t\t\t: this.$container.data('dots') || false,\r\n      draggable \t\t: this.$container.data('draggable') || false,\r\n      infinite \t\t\t: this.$container.data('infinite') || false,\r\n    }\r\n    this.settings.slidesToShow1200 = (this.settings.slidesToShow - 1) > 1? (this.settings.slidesToShow - 1) : 1;\r\n    this.settings.slidesToShow992  = (this.settings.slidesToShow - 2) > 1? (this.settings.slidesToShow - 2) : 1;\r\n    this.settings.slidesToShow768  = (this.settings.slidesToShow - 3) > 1? (this.settings.slidesToShow - 3) : 1;\r\n    this.settings.slidesToShow480  = 2;\r\n    this.$container.slick({\r\n      rtl\t\t\t\t: theme.rtl,\r\n      accessibility\t\t: true,\r\n      slidesToShow\t\t: this.settings.slidesToShow,\r\n      slidesToScroll\t: this.settings.slidesToShow,\r\n      rows\t\t\t\t: this.settings.rows,\r\n      arrows\t\t\t: this.settings.arrows,\r\n      dots\t\t\t\t: this.settings.dots,\r\n      infinite \t\t\t: this.settings.infinite,\r\n      draggable\t\t\t: this.settings.draggable,\r\n      responsive\t\t: [\r\n        {\r\n          breakpoint: 1200,\r\n          settings: {\r\n            slidesToShow\t: this.settings.slidesToShow1200,\r\n            slidesToScroll\t: this.settings.slidesToShow1200\r\n          }\r\n        },\r\n        {\r\n          breakpoint: 992,\r\n          settings: {\r\n            slidesToShow\t: this.settings.slidesToShow992,\r\n            slidesToScroll\t: this.settings.slidesToShow992\r\n          }\r\n        },\r\n        {\r\n          breakpoint: 768,\r\n          settings: {\r\n            slidesToShow\t: this.settings.slidesToShow768,\r\n            slidesToScroll\t: this.settings.slidesToShow768\r\n          }\r\n        },\r\n        {\r\n          breakpoint: 480,\r\n          settings: {\r\n            slidesToShow\t: this.settings.slidesToShow480,\r\n            slidesToScroll\t: this.settings.slidesToShow480\r\n          }\r\n        }\r\n      ]\r\n    }).css('opacity','1');\r\n  }\r\n\r\n  Productlists.prototype = _.assignIn({}, Productlists.prototype, {\r\n    _a11y: function(event, obj) {\r\n      var $list = obj.$list;\r\n      var $wrapper = this.$container.parent();\r\n\r\n      // Remove default Slick aria-live attr until slider is focused\r\n      $list.removeAttr('aria-live');\r\n\r\n      // When an element in the slider is focused set aria-live\r\n      $wrapper.on('focusin', function(evt) {\r\n        if ($wrapper.has(evt.target).length) {\r\n          $list.attr('aria-live', 'polite');\r\n        }\r\n      });\r\n\r\n      // Remove aria-live\r\n      $wrapper.on('focusout', function(evt) {\r\n        if ($wrapper.has(evt.target).length) {\r\n          $list.removeAttr('aria-live');\r\n        }\r\n      });\r\n    },\r\n\r\n    _goToSlide: function(slideIndex) {\r\n      this.$container.slick('slickGoTo', slideIndex);\r\n    },\r\n\r\n    onUnload: function() {\r\n      delete this.$container;\r\n    }\r\n  });\r\n\r\n  return Productlists;\r\n})();\r\n\r\n// Producttabs\r\ntheme.Producttabs = (function() {\r\n  function Producttabs(container) {\r\n    var _self = this; // avoid conflict\r\n    this.$container = $(container).on('init', this._a11y.bind(this));\r\n    this.slickWrap \t= '.prdtab-content';\r\n    this.settings \t= {\r\n      slidesToShow \t\t: this.$container.data('slidestoshow') || 1,\r\n      arrows \t\t\t: this.$container.data('arrows') || false,\r\n      rows \t\t\t\t: this.$container.data('rows') || 1,\r\n      dots \t\t\t\t: this.$container.data('dots') || false,\r\n      draggable\t\t\t: this.$container.data('draggable') || false,\r\n      infinite\t\t\t: this.$container.data('infinite') || false,\r\n    }\r\n    this.settings.slidesToShow1200 = (this.settings.slidesToShow - 1) > 1? (this.settings.slidesToShow - 1) : 1;\r\n    this.settings.slidesToShow992  = (this.settings.slidesToShow - 2) > 1? (this.settings.slidesToShow - 2) : 1;\r\n    this.settings.slidesToShow768  = (this.settings.slidesToShow - 3) > 1? (this.settings.slidesToShow - 3) : 1;\r\n    this.settings.slidesToShow480  = 2;\r\n\r\n    this._initSlick();\r\n    this.$container.find('a[data-toggle=\"tab\"]').on(\"shown.bs.tab\", function(e) {\r\n      _self._unSlick();\r\n      _self._initSlick();\r\n      theme.tooltip.load();\r\n    })\r\n  }\r\n\r\n  Producttabs.prototype = _.assignIn({}, Producttabs.prototype, {\r\n    _a11y: function(event, obj) {\r\n      var $list = obj.$list;\r\n      var $wrapper = this.$container.parent();\r\n\r\n      // Remove default Slick aria-live attr until slider is focused\r\n      $list.removeAttr('aria-live');\r\n\r\n      // When an element in the slider is focused set aria-live\r\n      $wrapper.on('focusin', function(evt) {\r\n        if ($wrapper.has(evt.target).length) {\r\n          $list.attr('aria-live', 'polite');\r\n        }\r\n      });\r\n\r\n      // Remove aria-live\r\n      $wrapper.on('focusout', function(evt) {\r\n        if ($wrapper.has(evt.target).length) {\r\n          $list.removeAttr('aria-live');\r\n        }\r\n      });\r\n    },\r\n\r\n    _getSliderSettings : function (){\r\n      return {\r\n        rtl\t\t\t\t: theme.rtl,\r\n        accessibility\t: true,\r\n        slidesToShow\t: this.settings.slidesToShow,\r\n        slidesToScroll\t: this.settings.slidesToShow,\r\n        arrows\t\t\t: this.settings.arrows,\r\n        rows\t\t\t: this.settings.rows,\r\n        dots\t\t\t: this.settings.dots,\r\n        infinite \t\t: this.settings.infinite,\r\n        draggable\t\t: this.settings.draggable,\r\n        responsive: [\r\n          {\r\n            breakpoint: 1200,\r\n            settings: {\r\n              slidesToShow: this.settings.slidesToShow1200,\r\n              slidesToScroll: this.settings.slidesToShow1200\r\n            }\r\n          },\r\n          {\r\n            breakpoint: 992,\r\n            settings: {\r\n              slidesToShow: this.settings.slidesToShow992,\r\n              slidesToScroll: this.settings.slidesToShow992\r\n            }\r\n          },\r\n          {\r\n            breakpoint: 768,\r\n            settings: {\r\n              slidesToShow: this.settings.slidesToShow768,\r\n              slidesToScroll: this.settings.slidesToShow768\r\n            }\r\n          },\r\n          {\r\n            breakpoint: 480,\r\n            settings: {\r\n              slidesToShow: this.settings.slidesToShow480,\r\n              slidesToScroll: this.settings.slidesToShow480\r\n            }\r\n          }\r\n        ]\r\n      }\r\n    },\r\n\r\n    _initSlick : function (){\r\n      this.$container.find(this.slickWrap).slick(this._getSliderSettings()).css('opacity','1');\r\n    },\r\n\r\n    _unSlick : function(){\r\n      this.$container.find(this.slickWrap).slick('unslick');\r\n    },\r\n\r\n    onUnload: function() {\r\n      delete this.$container;\r\n    },\r\n\r\n    onSelect: function() {\r\n      this._unSlick();\r\n      this._initSlick();\r\n    },\r\n\r\n    onBlockSelect: function(evt) {\r\n      var navItem = $('.nav-link-' + evt.detail.blockId);\r\n      navItem.tab('show');\r\n      this._unSlick();\r\n      this._initSlick();\r\n    }\r\n  });\r\n\r\n  return Producttabs;\r\n})();\r\n\r\ntheme.Video = (function() {\r\n  var promiseYoutubeAPI;\r\n  var promiseVimeoAPI;\r\n\r\n  var youtube = {\r\n    promiseAPI: function() {\r\n      if (!promiseYoutubeAPI) {\r\n        var tag = document.createElement('script');\r\n\r\n        tag.src = 'https://www.youtube.com/iframe_api';\r\n        var firstScriptTag = document.getElementsByTagName('script')[0];\r\n        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n\r\n        promiseYoutubeAPI = $.Deferred(function(defer) {\r\n          window.onYouTubeIframeAPIReady = defer.resolve;\r\n\r\n          setTimeout(function() {\r\n            defer.reject('Request for YouTube API timed out after 30 seconds.');\r\n          }, 30000);\r\n        });\r\n      }\r\n\r\n      return promiseYoutubeAPI;\r\n    },\r\n    promisePlayer: function(id, options) {\r\n      return this.promiseAPI().then(function() {\r\n        return $.Deferred(function(defer) {\r\n          if (typeof window.YT === 'undefined') {\r\n            defer.reject(\r\n              \"We're sorry, something went wrong. The YouTube API has not loaded correctly.\"\r\n            );\r\n          }\r\n\r\n          /* eslint-disable no-undef */\r\n          var player = new YT.Player(id, options); // global YT variable injected by YouTube API\r\n\r\n          player.addEventListener('onReady', function() {\r\n            defer.resolve(player);\r\n          });\r\n\r\n          setTimeout(function() {\r\n            defer.reject(\r\n              'Request for YouTube player has timed out after 30 seconds.'\r\n            );\r\n          }, 30000);\r\n        });\r\n      });\r\n    }\r\n  };\r\n\r\n  var vimeo = {\r\n    promiseAPI: function() {\r\n      if (!promiseVimeoAPI) {\r\n        promiseVimeoAPI = $.Deferred(function(defer) {\r\n          var tag = document.createElement('script');\r\n          tag.src = 'https://player.vimeo.com/api/player.js';\r\n          tag.onload = tag.onreadystatechange = function() {\r\n            if (!this.readyState || this.readyState === 'complete') {\r\n              defer.resolve();\r\n            }\r\n          };\r\n\r\n          var firstScriptTag = document.getElementsByTagName('script')[0];\r\n          firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n\r\n          setTimeout(function() {\r\n            defer.reject('Request for Vimeo API timed out after 30 seconds.');\r\n          }, 30000);\r\n        });\r\n      }\r\n\r\n      return promiseVimeoAPI;\r\n    },\r\n\r\n    promisePlayer: function(id, options) {\r\n      return this.promiseAPI().then(function() {\r\n        return $.Deferred(function(defer) {\r\n          if (typeof window.Vimeo === 'undefined') {\r\n            defer.reject(\r\n              \"We're sorry, something went wrong. The Vimeo API has not loaded correctly.\"\r\n            );\r\n          }\r\n\r\n          var player = new window.Vimeo.Player(id, options);\r\n\r\n          setTimeout(function() {\r\n            defer.reject(\r\n              'Request for Vimeo player has timed out after 30 seconds.'\r\n            );\r\n          }, 30000);\r\n\r\n          player.ready().then(function() {\r\n            defer.resolve(player);\r\n          });\r\n        });\r\n      });\r\n    }\r\n  };\r\n\r\n  var selectors = {\r\n    loadPlayerButton: '.video-section__load-player-button',\r\n    closePlayerButton: '.video-section__player-close',\r\n    playerContainer: '.video-section__player',\r\n    cover: '.video-section__cover',\r\n    errorMessage: '.video-section__error',\r\n    bodyOverlay: '.video-section__body-overlay',\r\n    body: 'body'\r\n  };\r\n  var classes = {\r\n    playerLoading: 'video-section--loading',\r\n    playerLoaded: 'video-section--loaded',\r\n    playerError: 'video-section--error',\r\n    videoPlaying: 'video-playing'\r\n  };\r\n\r\n  function Video(container) {\r\n    this.$container = $(container);\r\n    var sectionId = this.$container.attr('data-section-id');\r\n    this.namespace = '.' + sectionId;\r\n    this.onLoad();\r\n  }\r\n\r\n  Video.prototype = _.assignIn({}, Video.prototype, {\r\n    onLoad: function() {\r\n      this.$container\r\n        .on('click', selectors.loadPlayerButton, this._loadPlayer.bind(this))\r\n        .on('click', selectors.closePlayerButton, this._closePlayer.bind(this))\r\n        .on('click', selectors.bodyOverlay, this._closePlayer.bind(this));\r\n    },\r\n\r\n    _loadPlayer: function() {\r\n      var $container = this.$container;\r\n      var $playerContainer = $(selectors.playerContainer, $container);\r\n      var playerType = this.$container.attr('data-video-type');\r\n\r\n      var promiseVideoPlayer;\r\n\r\n      if (playerType === 'youtube') {\r\n        promiseVideoPlayer = this._loadYoutubePlayer($playerContainer[0]);\r\n      } else if (playerType === 'vimeo') {\r\n        promiseVideoPlayer = this._loadVimeoPlayer($playerContainer[0]);\r\n      }\r\n\r\n      return promiseVideoPlayer\r\n        .then(this._onPlayerLoadReady.bind(this))\r\n        .fail(this._onPlayerLoadError.bind(this));\r\n    },\r\n\r\n    _loadYoutubePlayer: function(container) {\r\n      return youtube\r\n        .promisePlayer(container, {\r\n          videoId: this.$container.attr('data-video-id'),\r\n          ratio: 16 / 9,\r\n          playerVars: {\r\n            modestbranding: 1,\r\n            autoplay: 1,\r\n            showinfo: 0,\r\n            rel: 0\r\n          }\r\n        })\r\n        .then(\r\n          function(player) {\r\n            this.player = player;\r\n          }.bind(this)\r\n        );\r\n    },\r\n\r\n    _loadVimeoPlayer: function(container) {\r\n      return vimeo\r\n        .promisePlayer(container, {\r\n          id: this.$container.attr('data-video-id')\r\n        })\r\n        .then(\r\n          function(player) {\r\n            this.player = player;\r\n            this.player.play();\r\n          }.bind(this)\r\n        );\r\n    },\r\n\r\n    _onPlayerLoadReady: function() {\r\n      $(selectors.closePlayerButton, this.$container)\r\n        .show()\r\n        .focus();\r\n      $(selectors.cover, this.$container).addClass(classes.playerLoaded);\r\n      this.$container.addClass(classes.playerLoaded);\r\n\r\n      this._setScrollPositionValues();\r\n\r\n      $(selectors.body).addClass(classes.videoPlaying);\r\n\r\n      $(document).on('keyup' + this.namespace, this._closeOnEscape.bind(this));\r\n      $(window).on(\r\n        'resize' + this.namespace,\r\n        this._setScrollPositionValues.bind(this)\r\n      );\r\n      slate.a11y.trapFocus({\r\n        $container: this.$container,\r\n        namespace: this.namespace\r\n      });\r\n    },\r\n\r\n    _onPlayerLoadError: function(err) {\r\n      this.$container.addClass(classes.playerError);\r\n      $(selectors.errorMessage, this.$container).text(err);\r\n    },\r\n\r\n    _closeOnEscape: function(evt) {\r\n      if (evt.keyCode !== 27) {\r\n        return;\r\n      }\r\n\r\n      this._closePlayer();\r\n      $(selectors.loadPlayerButton, this.$container).focus();\r\n    },\r\n\r\n    _onScroll: function() {\r\n      var scrollTop = $(window).scrollTop();\r\n\r\n      if (\r\n        scrollTop > this.videoTop + 0.25 * this.videoHeight ||\r\n        scrollTop + this.windowHeight <\r\n          this.videoBottom - 0.25 * this.videoHeight\r\n      ) {\r\n        // Debounce DOM edits to the next frame with requestAnimationFrame\r\n        requestAnimationFrame(this._closePlayer.bind(this));\r\n      }\r\n    },\r\n\r\n    _setScrollPositionValues: function() {\r\n      this.videoHeight = this.$container.outerHeight(true);\r\n      this.videoTop = this.$container.offset().top;\r\n      this.videoBottom = this.videoTop + this.videoHeight;\r\n      this.windowHeight = $(window).innerHeight();\r\n    },\r\n\r\n    _closePlayer: function() {\r\n      $(selectors.body).removeClass(classes.videoPlaying);\r\n      $(selectors.cover, this.$container).removeClass(classes.playerLoaded);\r\n      this.$container.removeClass(classes.playerLoaded);\r\n      $(selectors.closePlayerButton, this.$container).hide();\r\n\r\n      slate.a11y.removeTrapFocus({\r\n        $container: this.$container,\r\n        namespace: this.namespace\r\n      });\r\n\r\n      if (typeof this.player.destroy === 'function') {\r\n        this.player.destroy();\r\n      } else if (typeof this.player.unload === 'function') {\r\n        this.player.unload();\r\n      }\r\n\r\n      $(document).off(this.namespace);\r\n      $(window).off(this.namespace);\r\n    }\r\n  });\r\n\r\n  return Video;\r\n})();\r\n\r\ntheme.CollectionsList = (function() {\r\n  function CollectionsList(container) {\r\n    var $container = (this.$container = $(container));\r\n    var stretchImage = $container.is('[data-stretch-image]');\r\n\r\n    // Early return if 'secondary image layout' is enabled\r\n    if (stretchImage) return;\r\n\r\n    var namespace = (this.namespace = '.' + $container.attr('data-section-id'));\r\n    var self = this;\r\n\r\n    self._collectionListFix();\r\n    $(window).on(\r\n      'resize' + namespace,\r\n      $.debounce(250, function() {\r\n        self._collectionListFix();\r\n      })\r\n    );\r\n  }\r\n\r\n  CollectionsList.prototype = _.assignIn({}, CollectionsList.prototype, {\r\n    onUnload: function() {\r\n      $(window).off(this.namespace);\r\n    },\r\n\r\n    _collectionListFix: function() {\r\n      var numberRows = this.$container.find('.grid').data('number-rows');\r\n      var $featureCards = this.$container.find('.featured-card');\r\n\r\n      // We can exit if 'Use secondary image layout' is enabled\r\n      if ($featureCards.is('[data-stretch-image]')) return;\r\n\r\n      // Go through each of the rows\r\n      for (var i = 0; i < numberRows; i++) {\r\n        var maxWrapperHeight = 0;\r\n        var maxHeaderHeight = 0;\r\n        var $currentRow = $featureCards.filter(\r\n          \"[data-row-number='\" + (i + 1) + \"']\"\r\n        );\r\n        var $cardHeaders = $currentRow.find('.featured-card__header');\r\n\r\n        // Find the max heights for each row\r\n        $currentRow.each(function() {\r\n          var $cardTitle = $(this).find('.featured-card__title');\r\n          var $cardAction = $(this).find('.featured-card__action');\r\n          var $cardImageWrapper = $(this).find('.featured-card__image-wrapper');\r\n          var headerHeight =\r\n            $cardTitle.outerHeight() + $cardAction.outerHeight() + 65;\r\n          var wrapperHeight = $cardImageWrapper.outerHeight();\r\n          if (headerHeight > maxHeaderHeight) {\r\n            maxHeaderHeight = headerHeight;\r\n          }\r\n          if (wrapperHeight > maxWrapperHeight) {\r\n            maxWrapperHeight = wrapperHeight;\r\n          }\r\n        });\r\n\r\n        // Set the heights of the headers and cards for this row with padding\r\n        $cardHeaders.outerHeight(maxHeaderHeight);\r\n        $currentRow.height(maxWrapperHeight + maxHeaderHeight + 40);\r\n      }\r\n    }\r\n  });\r\n\r\n  return CollectionsList;\r\n})();\r\n\r\ntheme.ParrallaxImage = (function() {\r\n  function ParrallaxImage(container) {\r\n    this.container = container;\r\n      this.sectionId = $(container).attr('data-section-id');\r\n      this.namespace = 'parallax-' + this.sectionId;\r\n      var images =  document.getElementsByClassName('thumbnail'+ this.sectionId);\r\n      new simpleParallax(images,{\r\n        scale: 1.5,\r\n        delay: .6,\r\n      });\r\n  }\r\n\r\n  ParrallaxImage.prototype = $.extend({}, ParrallaxImage.prototype, {\r\n    onUnload: function(evt) {\r\n      var instance = new simpleParallax(images);\r\n      instance.destroy();\r\n      delete theme.ParrallaxImage[this.namespace];\r\n    }\r\n  });\r\n\r\n  return ParrallaxImage;\r\n})();\r\n\r\ntheme.init = function() {\r\n  theme.customerTemplates.init();\r\n  slate.rte.wrapTable();\r\n  slate.rte.iframeReset();\r\n\r\n  // Common a11y fixes\r\n  slate.a11y.pageLinkFocus($(window.location.hash));\r\n\r\n  $('.in-page-link').on('click', function(evt) {\r\n    slate.a11y.pageLinkFocus($(evt.currentTarget.hash));\r\n  });\r\n\r\n  $('a[href=\"#\"]').on('click', function(evt) {\r\n    evt.preventDefault();\r\n  });\r\n\r\n\r\n    //scroll animation\r\n  AOS.init({\r\n    startEvent: 'DOMContentLoaded',\r\n    offset: 30, // offset (in px) from the original trigger point\r\n    delay: 0, // values from 0 to 3000, with step 50ms\r\n    duration: 1000,\r\n    once: true\r\n  });\r\n  window.addEventListener('load', function() {\r\n    AOS.refresh();\r\n  });\r\n\r\n\r\n  // Sections\r\n  var sections = new theme.Sections();\r\n  sections.register('header', theme.HeaderSection);\r\n  sections.register('product', theme.Product);\r\n  sections.register('slideshow-section', theme.SlideshowSection);\r\n  sections.register('cart', theme.Cart);\r\n  sections.register('instagrams', theme.Instagrams);\r\n  sections.register('masonries', theme.Masonry);\r\n  sections.register('productlist', theme.Productlists);\r\n  sections.register('producttab', theme.Producttabs);\r\n  sections.register('slickCarousels', theme.slickCarousel);\r\n  sections.register('video', theme.Video);\r\n  sections.register('collections-list', theme.CollectionsList);\r\n  sections.register('parallax-image', theme.ParrallaxImage);\r\n  sections.register('bgcollection',theme.Bgcollection);\r\n\r\n  // Standalone modules\r\n  $(window).on('load', theme.articleImages);\r\n  theme.passwordModalInit();\r\n};\r\n\r\ntheme.articleImages = function() {\r\n  var $indentedRteImages = $('.rte--indented-images');\r\n  if (!$indentedRteImages.length) {\r\n    return;\r\n  }\r\n\r\n  $indentedRteImages.find('img').each(function(i, el) {\r\n    var $el = $(el);\r\n    var attr = $el.attr('style');\r\n\r\n    // Check if undefined or float: none\r\n    if (!attr || attr === 'float: none;') {\r\n      // Add class to parent paragraph tag if image is wider than container\r\n      if ($el.width() >= $indentedRteImages.width()) {\r\n        $el.parent('p').addClass('rte__image-indent');\r\n      }\r\n    }\r\n  });\r\n};\r\n\r\ntheme.passwordModalInit = function() {\r\n  var $loginModal = $('#LoginModal');\r\n  if (!$loginModal.length) {\r\n    return;\r\n  }\r\n\r\n  // Initialize modal\r\n  theme.PasswordModal = new window.Modals('LoginModal', 'login-modal', {\r\n    focusOnOpen: '#Password'\r\n  });\r\n\r\n  // Open modal if errors exist\r\n  if ($loginModal.find('.errors').length) {\r\n    theme.PasswordModal.open();\r\n  }\r\n};\r\n\r\n// CSS var ponyfill\r\ntheme.cssVar = (function() {\r\n  cssVars();\r\n})()\r\n\r\n// Ajax search https://gist.github.com/awojtczyk/53d74c8af5f893841f33979b0cdcd6fe\r\ntheme.ajaxSearch = (function() {\r\n  var $inputSearch = '.js-ajaxsearch',\r\n      $resultsList = '.search-results',\r\n      $input = $($inputSearch).find('input[name=\"q\"]'),\r\n      $currentAjaxRequest,\r\n      $displayProducts = 6;\r\n\r\n  $($inputSearch).css('position', 'relative').each(function() {\r\n    $input.attr('autocomplete', 'off').bind('keyup change', function() {\r\n      var term = $(this).val(),\r\n          form = $(this).closest('form'),\r\n          searchURL = '/search?type=product&q=*' + term + '*';\r\n      if (term.length > 2 && term !== $(this).attr('data-old-term')) {\r\n        $(this).attr('data-old-term', term);\r\n        if ($currentAjaxRequest !== undefined) $currentAjaxRequest.abort();\r\n        $currentAjaxRequest = $.getJSON(searchURL + '&view=json', function(data) {\r\n          $($resultsList).empty();\r\n\r\n          if (data.results_count === 0) {\r\n            $($resultsList).html('<p class=\"text-center\">'+ theme.strings.ajaxSearchNoResult +'</p>')\r\n          } else {\r\n            $.each(data.results, function(index, item) {\r\n              if (index < $displayProducts){\r\n                var itemPrice = theme.Currency.formatMoney(item.price, theme.moneyFormat);\r\n                var link = $('<a class=\"d-inline-flex '+index+'\"></a>')\r\n                .attr('href', item.url)\r\n                .append('<span class=\"image\"><img src=\"' + item.thumbnail + '\" /></span>')\r\n                .append('<div class=\"meta\"><p class=\"title\">' + item.title + '</p>'+itemPrice+'</div>')\r\n                .wrap('<div class=\"ajax-search-item\"></div>');\r\n                $($resultsList).append(link.parent());\r\n                theme.updateCurrencies();\r\n              }\r\n            });\r\n            if (data.results_count > $displayProducts) {\r\n              $($resultsList).append('<a class=\"btn btn--full\" href=\"' + searchURL + '\">'+ theme.strings.ajaxSearchViewAll +' (' + data.results_count + ')</a>');\r\n            }\r\n          }\r\n          $($resultsList).addClass('active').fadeIn(200);\r\n        });\r\n      }\r\n    });\r\n  });\r\n\r\n  //escape when click somethings\r\n  $(document).click(function(event) {\r\n    var target = event.target;\r\n    if (!$(target).is($inputSearch) && !$(target).parents().is($inputSearch)) {\r\n      $($resultsList).slideUp(300);\r\n    }\r\n  });\r\n})();\r\n\r\n// Quickview https://github.com/kellyvaughn/quickview-for-shopify/blob/master/quickview.js.liquid\r\ntheme.quickview = (function() {\r\n  var product_handle = '',\r\n      quickviewButtonClass = '.js-btn-quickview',\r\n      quickviewId = '#jsQuickview',\r\n      quickviewOption = '#jsQuickview select',\r\n      quickviewThumb = '#qv-product-images',\r\n      quickviewAddCartButton = '.qv-add-button',\r\n      quickviewPrice = '.qv-product-price',\r\n      quickviewComparePrice = '.qv-product-compare-price';\r\n\r\n  // 1. Show quickview\r\n  $(document).on('click',quickviewButtonClass, function() {\r\n    var quickviewAvaible = $(this).attr(\"data-pavailable\");\r\n    product_handle = $(this).data('handle');\r\n    //ResetQuickview\r\n    $(quickviewId).removeClass().addClass('modal fade');\r\n    $(quickviewThumb).removeClass().empty();\r\n    $('.qv-product-options').empty();\r\n    var desc = $(this).find('.txt-short').text();\r\n    $(\"#loading_qv\").removeClass('active');\r\n    //Pushdata\r\n    $(quickviewId).addClass(product_handle).data('handle',product_handle);\r\n    jQuery.getJSON('/products/' + product_handle + '.js', function(product) {\r\n      var title = product.title;\r\n      var type = product.type;\r\n      var vendor = product.vendor;\r\n      var price = 0;\r\n      var compare_price = 0;\r\n      var images = product.images;\r\n      var variants = product.variants;\r\n      var options = product.options;\r\n      var url = '/products/' + product_handle;\r\n      \r\n      $('.qv-product-title').text(title);\r\n      $('.qv-product-type').text(type);\r\n      $('.qv-product-description').html(desc);\r\n      $('.qv-view-product').attr('href', url);\r\n      $('.qv-view-type').text(type);\r\n      $('.qv-view-vendor').text(vendor);\r\n      if ($('.qv-product-description').is(':empty')){\r\n        $('.qv-product-description').removeClass('my-3');\r\n      }\r\n      else{\r\n        $('.qv-product-description').addClass('my-3');\r\n      }\r\n      if(quickviewAvaible == 'true'){\r\n        $(quickviewAddCartButton).prop('disabled', false).html(theme.strings.addToCart);\r\n      }\r\n      else{\r\n        $(quickviewAddCartButton).prop('disabled', true).html(theme.strings.soldOut);\r\n      }\r\n      $(product.variants).each(function(i,variants) {\r\n        if(variants.sku != null){\r\n          $('.qv-sku').addClass(\"show\").removeClass(\"hide\");\r\n          $('.qv-view-sku').text(product.variants[0].sku);\r\n        }\r\n        else{\r\n          $('.qv-sku').addClass(\"hide\").removeClass(\"show\");\r\n        }\r\n        \r\n      });\r\n      var imageCount = $(images).length;\r\n      $(images).each(function(i, image) {\r\n        image_embed = '<div><img class=\"lazyload\" data-src=\"' + image + '\"></div>';\r\n        image_embed = image_embed.replace('.jpg', '_600x.jpg').replace('.png', '_600x.png');\r\n        $(quickviewThumb).append(image_embed);\r\n      });\r\n      $(quickviewThumb).slick({\r\n        rtl:theme.rtl,\r\n        'dots': true,\r\n        'arrows': true,\r\n        'respondTo': 'min',\r\n        'useTransform': true\r\n      }).css('opacity', '1');\r\n\r\n      if (product.variants[0].option1 !== \"Default Title\"){\r\n        $(options).each(function(i, option) {\r\n          var name = option.name;\r\n          var opt = name.replace(/ /g, '-').toLowerCase();\r\n          var selectClass = '.option.' + opt;\r\n          $('.qv-product-options').append('<div class=\"option-selection ' + opt + '\"><span class=\"option text-uppercase font-weight-bold text-body\">' + option.name + '</span><select class=\"option-' + i + ' option ' + opt + '\"></select></div>');\r\n          $(option.values).each(function(i, value) {\r\n            $('.option.' + opt).append($('<option>', {\r\n              value: value,\r\n              text: value\r\n            }));\r\n          });\r\n        });\r\n      }\r\n      $(product.variants).each(function(i, v) {\r\n        if (v.inventory_quantity == 0) {\r\n          return true\r\n        } else {\r\n          price = theme.Currency.formatMoney(v.price, theme.moneyFormat);\r\n          compare_price = theme.Currency.formatMoney(v.compare_at_price, theme.moneyFormat);\r\n          $(quickviewPrice).html(price);\r\n          if (v.compare_at_price !== null) {\r\n            $(quickviewComparePrice).html(compare_price).show();\r\n          } else {\r\n            $(quickviewComparePrice).hide();\r\n          }\r\n          theme.updateCurrencies();\r\n          $('select.option-0').val(v.option1);\r\n          $('select.option-1').val(v.option2);\r\n          $('select.option-2').val(v.option3);\r\n          return false\r\n        }\r\n      });\r\n    }).fail(function() {\r\n      console.log( \"error\" );\r\n    })\r\n    .always(function() {\r\n      $(\"#loading_qv\").addClass('active');\r\n    });\r\n    //addCartQuickview\r\n  });\r\n  // 2. Add to cart\r\n  $(document).on('click',quickviewAddCartButton, function(){\r\n    product_handle = $(quickviewId).data('handle');\r\n    var qty = $('.qv-quantity').val(),\r\n        selectedOptions = '',\r\n        var_id = '';\r\n    function processCart() {\r\n      jQuery.post('/cart/add.js', {\r\n        quantity: qty,\r\n        id: var_id\r\n      },null,\"json\").done(function(item) {\r\n        var htmlVariant = item.variant_title !== null ? '<i>('+item.variant_title+')</i>' : '';\r\n        var styleCart = $('.js-mini-cart').attr(\"data-cartmini\");\r\n        if(styleCart != 'true'){\r\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>';\r\n        theme.alert.new(theme.strings.addToCartSuccess,htmlAlert,3000,'notice');\r\n        }\r\n        theme.miniCart.updateElements();\r\n        theme.miniCart.generateCart();\r\n      })\r\n      .fail(function($xhr) {\r\n        var data = $xhr.responseJSON;\r\n        theme.alert.new('',data.description,3000,'warning');\r\n      });\r\n    }\r\n    $(quickviewOption).each(function(i) {\r\n      if (selectedOptions == '') {\r\n        selectedOptions = $(this).val();\r\n      } else {\r\n        selectedOptions = selectedOptions + ' / ' + $(this).val();\r\n      }\r\n    });\r\n    jQuery.getJSON('/products/' + product_handle + '.js', function(product) {\r\n      if (product.variants.length === 1){\r\n        var_id = product.variants[0].id;\r\n      }else{\r\n        $(product.variants).each(function(i, v) {\r\n          if (v.title == selectedOptions) {\r\n            var_id = v.id;\r\n          }\r\n        });\r\n      }\r\n      processCart();\r\n    });\r\n  });\r\n  // 3. Select variants\r\n  $(document).on('change', quickviewOption, function() {\r\n    var selectedOptions = '';\r\n    $(quickviewOption).each(function(i) {\r\n      if (selectedOptions == '') {\r\n        selectedOptions = $(this).val();\r\n      } else {\r\n        selectedOptions = selectedOptions + ' / ' + $(this).val();\r\n      }\r\n    });\r\n    jQuery.getJSON('/products/' + product_handle + '.js', function(product) {\r\n      $(product.variants).each(function(i, v) {\r\n        if (v.title == selectedOptions) {\r\n          if (v.featured_image !== null){\r\n            var iSlick = v.featured_image.position - 1;\r\n            $(quickviewThumb).slick('slickGoTo', iSlick);\r\n          }\r\n          var price = theme.Currency.formatMoney(v.price, theme.moneyFormat);\r\n          var compare_price = theme.Currency.formatMoney(v.compare_at_price, theme.moneyFormat);\r\n          $(quickviewPrice).html(price);\r\n          $(quickviewComparePrice).html(compare_price);\r\n          if(v.sku != null){\r\n            $('.qv-sku').addClass(\"show\").removeClass(\"hide\");\r\n            $('.qv-view-sku').text(v.sku);\r\n          }\r\n          else{\r\n            $('.qv-sku').addClass(\"hide\").removeClass(\"show\");\r\n          }\r\n          if (v.compare_at_price !== null) {\r\n            $(quickviewComparePrice).html(compare_price).show();\r\n          } else {\r\n            $(quickviewComparePrice).hide();\r\n          }\r\n          theme.updateCurrencies();\r\n          if (v.inventory_management === null) {\r\n            $(quickviewAddCartButton).prop('disabled', false).val(theme.strings.addToCart);\r\n          } else {\r\n            if (v.inventory_quantity < 1) {\r\n              $(quickviewAddCartButton).prop('disabled', true).val(theme.strings.soldOut);\r\n            } else {\r\n              $(quickviewAddCartButton).prop('disabled', false).val(theme.strings.addToCart);\r\n            }\r\n          }\r\n        }\r\n      });\r\n    });\r\n  });\r\n})()\r\n\r\n// Button add to cart (in grid item)\r\ntheme.addCartButton = (function(){\r\n  var buttonClass = '.js-grid-cart';\r\n  $(document).on('click',buttonClass,function(){\r\n    var $this = $(this);\r\n    var id = $this.data('id');\r\n    $this.addClass('is-loading');\r\n    Shopify.addItem(id,1,function(item){\r\n      var htmlVariant = item.variant_title !== null ? '<i>('+item.variant_title+')</i>' : '';\r\n      var styleCart = $('.js-mini-cart').attr(\"data-cartmini\");\r\n        if(styleCart != 'true'){\r\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>';\r\n        }\r\n      theme.miniCart.updateElements();\r\n      theme.miniCart.generateCart();\r\n      setTimeout(function() {\r\n        styleCart != 'true' ? theme.alert.new(theme.strings.addToCartSuccess,htmlAlert,3000,'notice'): '';\r\n        $this.removeClass('is-loading');\r\n      }, 1000);\r\n    });\r\n  })\r\n})()\r\n\r\n// Multi currencies \r\nif (theme.enableCurrencies){\r\n  // Can be 'money_format' or 'money_with_currency_format'\r\n  Currency.format = 'money_format';\r\n  var shopCurrency = Shopify.currency.active;\r\n  var cookieCurrency = Currency.cookie.read();\r\n  // Fix for customer account pages \r\n  jQuery('span.money span.money').each(function() {\r\n    jQuery(this).parent('span.money').removeClass('money');\r\n  });\r\n  // Add precalculated shop currency to data attribute \r\n  jQuery('span.money').each(function() {\r\n    jQuery(this).attr('data-currency-' + Shopify.currency.active, jQuery(this).html());\r\n  });\r\n  // Select all your currencies buttons.\r\n  var buttons = jQuery('#currencies a'),\r\n      currentCurrencies = jQuery('.pre-currencies');\r\n  // When the page loads.\r\n  if (cookieCurrency == null || cookieCurrency == shopCurrency) {\r\n    Currency.currentCurrency = shopCurrency;\r\n  }\r\n  else {\r\n    Currency.currentCurrency = cookieCurrency;\r\n    Currency.convertAll(shopCurrency, cookieCurrency);\r\n    buttons.removeClass('selected');\r\n    jQuery('#currencies a[data-currency=' + cookieCurrency + ']').addClass('selected');\r\n    var htmlCurrently = jQuery('#currencies a[data-currency=' + cookieCurrency + ']').html();\r\n    currentCurrencies.html(htmlCurrently);\r\n  }\r\n  buttons.click(function() {\r\n    buttons.removeClass('selected');\r\n    jQuery(this).addClass('selected');\r\n    var newCurrency =  jQuery(this).attr('data-currency');\r\n    var htmlCurrently = jQuery(this).html();\r\n    currentCurrencies.html(htmlCurrently);\r\n    Currency.convertAll(Currency.currentCurrency, newCurrency);\r\n  });\r\n  // For product options.\r\n  var original_selectCallback = window.selectCallback;\r\n  var selectCallback = function(variant, selector) {\r\n    original_selectCallback(variant, selector);\r\n    Currency.convertAll(shopCurrency, jQuery('#currencies a.selected').attr('data-currency'));\r\n  };\r\n}\r\ntheme.updateCurrencies = function (){\r\n  Currency.convertAll(shopCurrency, jQuery('#currencies a.selected').attr('data-currency'));\r\n}\r\n\r\n// MiniCart\r\ntheme.miniCart = (function(){\r\n  var miniCart = '.js-mini-cart',\r\n      styleCart = $(miniCart).attr(\"data-cartmini\"),\r\n      cartToggle = '.js-toggle-cart',\r\n      cartCount = '.js-cart-count',\r\n      cartContent = '.js-mini-cart-content',\r\n      cartTotal = '.js-cart-total',\r\n      $btnCheckout = $('.js-cart-btn-checkout'),\r\n      numberDisplayed = 5,\r\n      emptyCartHTML = '<div class=\"alert\">'+theme.strings.cartEmpty+'</div>';\r\n\r\n  function updateElements(){\r\n    Shopify.getCart(function(cart){\r\n      \r\n      if (cart.item_count === 0) {\r\n        $(cartContent).html(emptyCartHTML);\r\n        $btnCheckout.addClass('disabled');\r\n        styleCart === 'true' ? $(miniCart).removeClass('active') : null;\r\n        \r\n      }else{\r\n        $btnCheckout.removeClass('disabled');\r\n        styleCart === 'true' ? $(miniCart).addClass('active') : null;\r\n      }\r\n      $(cartCount).text(cart.item_count);\r\n      $(cartTotal).html(theme.Currency.formatMoney(cart.total_price, theme.moneyFormat));\r\n      theme.freeShipping.load(cart);\r\n      theme.updateCurrencies();\r\n    })\r\n  }\r\n  function generateCart(){\r\n    \r\n    Shopify.getCart(function(cart){\r\n        \r\n      var htmlCart = cart.item_count === 0? emptyCartHTML:'',\r\n          itemCount = cart.items.length,\r\n          forLoop = itemCount < numberDisplayed ? itemCount : numberDisplayed;\r\n          //styleCart === 'true' ? cart.items.length ? $(miniCart).addClass('active'): $(miniCart).removeClass('active') :null;\r\n\r\n      // add list items\r\n      for (var i = 0; i < forLoop; i++) { \r\n        var product = cart.items[i],\r\n            productPrice = theme.Currency.formatMoney(product.price, theme.moneyFormat);\r\n        htmlCart += '<div class=\"mini-cart-item\">';\r\n        htmlCart += '\t<a class=\"mini-cart-image\" href=\"'+ product.url +'\">';\r\n        htmlCart += '\t\t<img src=\"'+ product.image +'\"/>';\r\n        htmlCart += '\t</a>';\r\n        htmlCart += '\t<div class=\"mini-cart-meta\">';\r\n        htmlCart += '\t\t<p ><a href=\"'+ product.url +'\">'+ product.title +'</a></p>';\r\n        htmlCart += '\t\t<span> '+ productPrice +'</span><b> x '+product.quantity+'</b>';\r\n        htmlCart += '\t</div>';\r\n        htmlCart += '\t<button class=\"btn js-remove-mini-cart\" data-id=\"'+product.id+'\">&times;</button>';\r\n        htmlCart += '</div>';\r\n      }\r\n      if (itemCount > numberDisplayed){\r\n        htmlCart += '<a class=\"js-btn-viewmore\" href=\"/cart\">'+theme.strings.cartMore+'('+(itemCount - numberDisplayed)+')</a>'\r\n      }\r\n      // add total price and cart button / checkout button\r\n      $(cartContent).html(htmlCart);\r\n      $(cartTotal).html(theme.Currency.formatMoney(cart.total_price, theme.moneyFormat));\r\n      theme.updateCurrencies();\r\n    })\r\n  }\r\n  // 2. Button remove items\r\n  $(document).on('click','.js-remove-mini-cart',function(){\r\n    var itemId = $(this).data('id');\r\n    var isOuterMiniCart = $(this).closest(miniCart).length === 0? true : false;  // check element from mini cart or not\r\n    \r\n    // hide items\r\n    $(this).parent().fadeOut();\r\n    \r\n    //remove from cart\r\n    Shopify.changeItem(itemId,0,updateElements);\r\n    Shopify.getCart(function(cart){\r\n      if (cart.items.length > numberDisplayed || isOuterMiniCart) {\r\n        generateCart();\r\n      }\r\n    });\r\n  });\r\n\r\n  //Keep popup when click cart / UX\r\n  $(document).on('click',cartToggle,function(){\r\n    $(this).parent(miniCart).toggleClass('active');\r\n  });\r\n  $(document).on('click','.overlaycart',function(){\r\n    $(this).parent(miniCart).removeClass('active');\r\n  });\r\n\r\n  // gen minicart when load page\r\n  generateCart();\r\n  return{\r\n    updateElements:updateElements,\r\n    generateCart: generateCart\r\n  }\r\n})()\r\n\r\n// Free shipping\r\ntheme.freeShipping = (function(){\r\n  var $freeShippingClass = $('.js-free-shipping'),\r\n      $freeShippingTextClass = $('.js-free-shipping-text'),\r\n      $free_fisrt = $freeShippingClass.attr('data-start'),\r\n      $free_end = $freeShippingClass.attr('data-end')\r\n      minOrderValue = parseInt($freeShippingClass.data('value')) || 0,\r\n      $percentClass = $('.js-free-shipping .progress-bar');\r\n\r\n  function generate(cart){\r\n    var priceCart = cart.total_price;\r\n    if (priceCart >= minOrderValue){\r\n      $percentClass.css('width','100%').removeClass('progress-bar-striped bg-primary');\r\n      $freeShippingTextClass.text(theme.strings.freeShipping)\r\n    }else{\r\n      let percent = priceCart / minOrderValue * 100;\r\n      let left = Shopify.formatMoney((minOrderValue - priceCart),theme.moneyFormat);\r\n      $percentClass.css('width',percent+'%').addClass('progress-bar-striped primary');\r\n      $freeShippingTextClass.html($free_fisrt +' '+ left +' '+ $free_end);\r\n      theme.updateCurrencies();\r\n    }\r\n  }\r\n\r\n  Shopify.getCart(function(cart){\r\n    generate(cart);\r\n  });\r\n\r\n  return {\r\n    load:generate\r\n  }\r\n})()\r\n\r\n// Shipping time - https://github.com/phstc/jquery-dateFormat\r\ntheme.shippingTime = (function(){\r\n  var $shippingTime = $('.js-shipping-time'),\r\n      shippingTime = $shippingTime.data('time') || '',\r\n      now = new Date(),\r\n      restHour = 23 - now.getHours(),\r\n      restMinute = 59 - now.getMinutes();\r\n  if (shippingTime !== ''){\r\n    var nextTime = new Date(now.getTime() + shippingTime * 86400000),\r\n        formatTime = $.format.date(nextTime, \"ddd, dd MMMM yyyy\"),\r\n        htmlShipping = 'Order in the next <b>'+restHour+'</b> hours <b>'+restMinute+'</b> minutes to get it by <b>'+formatTime+'</b>. ';\r\n    $shippingTime.html(htmlShipping);\r\n  }\r\n})()\r\n\r\n// Infinite scroll - https://github.com/Elkfox/Ajaxinate/blob/master/dist/ajaxinate.min.js\r\ntheme.infiniteScroll = (function (){\r\n  function initInfiniteScroll(){\r\n    if ($('.AjaxinateLoop').length === 0){\r\n      return;\r\n    }else{\r\n      var endlessScroll = new Ajaxinate({\r\n        loadingText:'<div class=\"text-center\"><div class=\"'+theme.loadingClass+'\" role=\"status\"></div></div>',\r\n        callback:function(){\r\n          theme.wishlist.load();\r\n          theme.compare.load();\r\n          theme.countdown.load();\r\n          theme.priceRange.load();\r\n          theme.tooltip.load();\r\n          theme.collectionView.triggerView();\r\n          theme.swatchCard2.load();\r\n        }\r\n      });\r\n    }\r\n  }\r\n  \r\n  // Infinite scroll in other page (blog, list-collection)\r\n  function initOtherPages(){\r\n    var otherPages = new Ajaxinate({\r\n      loadingText:'<div class=\"text-center\"><div class=\"'+theme.loadingClass+'\" role=\"status\"></div></div>',\r\n      container: '.js-pagination-content',\r\n      pagination: '.js-pagination'\r\n    });\r\n  }\r\n\r\n  document.addEventListener(\"DOMContentLoaded\", function(){\r\n    initInfiniteScroll();\r\n    initOtherPages();\r\n  });\r\n\r\n  return{\r\n    load:initInfiniteScroll\r\n  }\r\n})()\r\n\r\n// Scroll to fixed\r\ntheme.scrollToFixed = (function (){\r\n  var window_width = $( window ).width();\r\n\r\n    if (window_width < 768) {\r\n      $(\".js-stick-parent\").trigger(\"sticky_kit:detach\");\r\n    } else {\r\n      make_sticky();\r\n    }\r\n  \t$( window ).resize(function() {\r\n\r\n      window_width = $( window ).width();\r\n\r\n      if (window_width < 768) {\r\n        $(\".js-stick-parent\").trigger(\"sticky_kit:detach\");\r\n      } else {\r\n        make_sticky();\r\n      }\r\n    });\r\n  function make_sticky() {\r\n      $('.js-stick-parent').stick_in_parent();\r\n    }\r\n  \r\n})()\r\n\r\n//filter 2.0\r\ntheme.updatePriceFilter = function (){\r\n  if (typeof($(\"#slider-range\").html()) != 'undefined' && typeof($(\"#slider-range-mobile\").html()) != 'undefined'){\r\n    var max_price = parseInt(Currency.convert(parseInt($(\"#slider-range\").data('max')), shopCurrency, $('#currencies a.selected').attr('data-currency')));\r\n    var min_price = parseInt(Currency.convert(0, shopCurrency, $('#currencies a.selected').attr('data-currency')));\r\n\r\n    var current_min_price = min_price;\r\n    if ($(\"#Filter-Price-GTE\").val()) {\r\n      current_min_price = parseInt(Currency.convert(parseInt($(\"#Filter-Price-GTE\").val()), shopCurrency, $('#currencies a.selected').attr('data-currency')));\r\n    }\r\n    var current_max_price = max_price;\r\n    if ($(\"#Filter-Price-LTE\").val()) {\r\n      current_max_price = parseInt(Currency.convert(parseInt($(\"#Filter-Price-LTE\").val()), shopCurrency, $('#currencies a.selected').attr('data-currency')));\r\n    }\r\n\r\n    $(\"#slider-range\").attr('data-max', max_price);\r\n    $(\"#slider-range\").slider({\r\n      range: true,\r\n      min: min_price,\r\n      max: max_price,\r\n      values: [current_min_price, current_max_price],\r\n      slide: function( event, ui ) {\r\n        var p1 = parseInt(Currency.convert(ui.values[0], $('#currencies a.selected').attr('data-currency'), shopCurrency));\r\n        var p2 = parseInt(Currency.convert(ui.values[1], $('#currencies a.selected').attr('data-currency'), shopCurrency));\r\n\r\n        $(\"#Filter-Price-GTE\").val(p1);\r\n        $(\"#Filter-Price-LTE\").val(p2);\r\n\r\n\r\n        $('.slider-range-content .price-from').html(Shopify.formatMoney(p1 * 100, theme.moneyFormat));\r\n        $('.slider-range-content .price-to').html(Shopify.formatMoney(p2 * 100, theme.moneyFormat));\r\n\r\n        theme.updateCurrencies();\r\n      },\r\n      stop: function( event, ui ) {\r\n          var form = $(\"<form id='FacetFiltersForm'></form>\");\r\n          $('#FacetFiltersForm input').each(function(){\r\n            form.append($(this));\r\n          });\r\n\r\n          var p1 = parseInt(Currency.convert(ui.values[0], $('#currencies a.selected').attr('data-currency'), shopCurrency))\r\n          var p2 = parseInt(Currency.convert(ui.values[1], $('#currencies a.selected').attr('data-currency'), shopCurrency));\r\n\r\n          $('.slider-range-content .price-from').html(Shopify.formatMoney(p1 * 100, theme.moneyFormat));\r\n          $('.slider-range-content .price-to').html(Shopify.formatMoney(p2 * 100, theme.moneyFormat));\r\n\r\n          theme.updateCurrencies();\r\n          const formData = new FormData(form[0]);\r\n          const searchParams = new URLSearchParams(formData).toString();\r\n          document.querySelector('facet-filters-form').renderPage(searchParams, null, true);\r\n      }\r\n    });\r\n\r\n\r\n    $(\"#slider-range-mobile\").attr('data-max', max_price);\r\n    $(\"#slider-range-mobile\").slider({\r\n      range: true,\r\n      min: min_price,\r\n      max: max_price,\r\n      values: [current_min_price, current_max_price],\r\n      slide: function( event, ui ) {\r\n        var p1 = parseInt(Currency.convert(ui.values[0], $('#currencies a.selected').attr('data-currency'), shopCurrency));\r\n        var p2 = parseInt(Currency.convert(ui.values[1], $('#currencies a.selected').attr('data-currency'), shopCurrency));\r\n\r\n        $(\"#Filter-Price-GTE\").val(p1);\r\n        $(\"#Filter-Price-LTE\").val(p2);\r\n\r\n\r\n        $('.slider-range-content .price-from').html(Shopify.formatMoney(p1 * 100, theme.moneyFormat));\r\n        $('.slider-range-content .price-to').html(Shopify.formatMoney(p2 * 100, theme.moneyFormat));\r\n        theme.updateCurrencies();\r\n      },\r\n      stop: function( event, ui ) {\r\n          var form = $(\"<form id='FacetFiltersForm'></form>\");\r\n          $('#FacetFiltersForm input').each(function(){\r\n            form.append($(this));\r\n          });\r\n\r\n          var p1 = parseInt(Currency.convert(ui.values[0], $('#currencies a.selected').attr('data-currency'), shopCurrency))\r\n          var p2 = parseInt(Currency.convert(ui.values[1], $('#currencies a.selected').attr('data-currency'), shopCurrency));\r\n\r\n          $('.slider-range-content .price-from').html(Shopify.formatMoney(p1 * 100, theme.moneyFormat));\r\n          $('.slider-range-content .price-to').html(Shopify.formatMoney(p2 * 100, theme.moneyFormat));\r\n          theme.updateCurrencies();\r\n          const formData = new FormData(form[0]);\r\n          const searchParams = new URLSearchParams(formData).toString();\r\n          document.querySelector('facet-filters-form').renderPage(searchParams, null, true);\r\n      }\r\n    });\r\n  }\r\n}\r\n$( document ).ready(function() {\r\n  theme.updatePriceFilter();\r\n});\r\n\r\ntheme.headersidebar = (function(){\r\n  $('#dismiss, .overlaysidebar').on('click', function () {\r\n    // hide sidebar\r\n    $('#sidebar').removeClass('active');\r\n    // hide overlay\r\n    $('.overlaysidebar').removeClass('active');\r\n  });\r\n  \r\n  $('#sidebarCollapse').on('click', function () {\r\n    // open sidebar\r\n    $('#sidebar').addClass('active');\r\n    // fade in the overlay\r\n    $('.overlaysidebar').addClass('active');\r\n    $('.collapse.in').toggleClass('in');\r\n    $('a[aria-expanded=true]').attr('aria-expanded', 'false');\r\n  });\r\n})()\r\n\r\n// Wishlist\r\ntheme.wishlist = (function (){\r\n  var wishlistButtonClass = '.js-btn-wishlist',\r\n      wishlistRemoveButtonClass = '.js-remove-wishlist',\r\n      $wishlistCount = $('.js-wishlist-count'),\r\n      $wishlistContainer = $('.js-wishlist-content'),\r\n      wishlistObject = JSON.parse(localStorage.getItem('localWishlist')) || [],\r\n      wishlistPageUrl = $('.js-wishlist-link').attr('href'),\r\n      loadNoResult = function (){\r\n        $wishlistContainer.html('<div class=\"col text-center\"><div class=\"alert alert-warning d-inline-block\">'+ theme.strings.wishlistNoResult + '</div></div>');\r\n      };\r\n\r\n  function updateWishlist(self) {\r\n    var productHandle = $(self).data('handle'),\r\n        allSimilarProduct = $(wishlistButtonClass+'[data-handle=\"'+productHandle+'\"]');\r\n    var isAdded = $.inArray(productHandle,wishlistObject) !== -1 ? true:false;\r\n    if (isAdded) {\r\n      // go to wishlist page\r\n      window.location.href = wishlistPageUrl;\r\n    }else{\r\n      wishlistObject.push(productHandle);\r\n      allSimilarProduct.fadeOut('slow').fadeIn('fast').html(theme.strings.wishlistIconAdded + theme.strings.wishlistTextAdded);\r\n      //change tooltip\r\n      allSimilarProduct.attr('data-original-title',theme.strings.wishlistTextAdded); \r\n      $('.tooltip-inner').text(theme.strings.wishlistTextAdded);\r\n    }\r\n    localStorage.setItem('localWishlist', JSON.stringify(wishlistObject)); \r\n    $wishlistCount.text(wishlistObject.length);\r\n  };\r\n  function loadWishlist(){\r\n    $wishlistContainer.html('');\r\n    //page wishlist\r\n    if (wishlistObject.length > 0){\r\n      for (var i = 0; i < wishlistObject.length; i++) { \r\n        var productHandle = wishlistObject[i];\r\n        Shopify.getProduct(productHandle,function(product){\r\n          var htmlProduct = '';\r\n          var productPrice = product.price_varies? 'from ' + theme.Currency.formatMoney(product.price_min, theme.moneyFormat) : theme.Currency.formatMoney(product.price, theme.moneyFormat);\r\n          var productComparePrice = product.compare_at_price_min !== 0? theme.Currency.formatMoney(product.compare_at_price_min, theme.moneyFormat) : '';\r\n          htmlProduct += '<div class=\"js-wishlist-item col-md-4 col-sm-6 col-xs-6 col-12 mb-4\">';\r\n          htmlProduct += '<div class=\"js-wishlist-itembox\">';\r\n          htmlProduct += '<div class=\" d-flex flex-row p-4\">';\r\n          htmlProduct += '\t<a class=\"d-inline-block mr-4 \" href=\"'+ product.url +'\">';\r\n          htmlProduct += '\t\t<img src=\"'+ product.featured_image +'\"/>';\r\n          htmlProduct += '\t</a>';\r\n          htmlProduct += '\t<div><a href=\"'+ product.url +'\" class=\"title-prouct d-block h4 text-body\" >'+ product.title +'</a>';\r\n          htmlProduct += '\t<span> '+ productPrice +'</span>';\r\n          htmlProduct += '\t <s>'+ productComparePrice +'</s></div>';\r\n          htmlProduct += '<button class=\"btn js-remove-wishlist\" data-handle=\"'+product.handle+'\">'+ theme.strings.wishlistRemove +'</button>';\r\n          htmlProduct += '</div>';\r\n          htmlProduct += '</div>';\r\n          htmlProduct += '</div>';\r\n          $wishlistContainer.append(htmlProduct); \r\n          theme.updateCurrencies();\r\n        });\r\n      }\r\n    }else{\r\n      loadNoResult();\r\n    }\r\n\r\n    //count items\r\n    $wishlistCount.text(wishlistObject.length);\r\n\r\n    //button text\r\n    $(wishlistButtonClass).each(function(){\r\n      var productHandle = $(this).data('handle');\r\n      var iconWishlist = $.inArray(productHandle,wishlistObject) !== -1 ? theme.strings.wishlistIconAdded : theme.strings.wishlistIcon;\r\n      var textWishlist = $.inArray(productHandle,wishlistObject) !== -1 ? theme.strings.wishlistTextAdded : theme.strings.wishlistText;\r\n      $(this).html(iconWishlist+textWishlist).attr('title',textWishlist);\r\n    });\r\n  }\r\n  \r\n  $(document).on('click',wishlistButtonClass,function (event) {\r\n    event.preventDefault();\r\n    updateWishlist(this);\r\n  });\r\n  $(document).on('click',wishlistRemoveButtonClass,function(){\r\n    var productHandle = $(this).data('handle'),\r\n    allSimilarProduct = $(wishlistButtonClass+'[data-handle=\"'+productHandle+'\"]');\r\n    \r\n    //update button\r\n    allSimilarProduct.html(theme.strings.wishlistIcon + theme.strings.wishlistText);\r\n     //update tooltip\r\n    allSimilarProduct.attr('data-original-title',theme.strings.wishlistText);\r\n    $('.tooltip-inner').text(theme.strings.wishlistText);\r\n    //update Object\r\n    wishlistObject.splice(wishlistObject.indexOf(productHandle), 1);\r\n    localStorage.setItem('localWishlist', JSON.stringify(wishlistObject)); \r\n    // Remove element\r\n    $(this).closest('.js-wishlist-item').fadeOut(); // or .remove()\r\n    //count\r\n    $wishlistCount.text(wishlistObject.length);\r\n    if (wishlistObject.length === 0) {\r\n      loadNoResult();\r\n    }\r\n  });\r\n\r\n  loadWishlist();\r\n  $(document).on('shopify:section:load', loadWishlist);\r\n  return{\r\n    load:loadWishlist\r\n  }\r\n})()\r\n\r\n// Compare\r\ntheme.compare = (function (){\r\n  var compareButtonClass = '.js-btn-compare',\r\n      compareRemoveButtonClass = '.js-remove-compare',\r\n      $compareCount = $('.js-compare-count'),\r\n      $compareContainer = $('.js-compare-content'),\r\n      compareObject = JSON.parse(localStorage.getItem('localCompare')) || [],\r\n      alertClass='notice';\r\n  function updateCompare(self) {\r\n    var productHandle = $(self).data('handle'),\r\n        alertText = '';\r\n    var isAdded = $.inArray(productHandle,compareObject) !== -1 ? true:false;\r\n    if (isAdded) {\r\n      compareObject.splice(compareObject.indexOf(productHandle), 1);\r\n      alertText = theme.strings.compareNotifyRemoved;\r\n      alertClass = 'notice';\r\n    }else{\r\n      if (compareObject.length === 4){\r\n        alertText = theme.strings.compareNotifyMaximum;\r\n        alertClass = 'error';\r\n      }else{\r\n        alertClass = 'notice';\r\n        compareObject.push(productHandle);\r\n        alertText = theme.strings.compareNotifyAdded;\r\n      }\r\n    }\r\n    localStorage.setItem('localCompare', JSON.stringify(compareObject)); \r\n    theme.alert.new(theme.strings.compareText,alertText,2000,alertClass);\r\n    $compareCount.text(compareObject.length);\r\n  };\r\n  function loadCompare(){\r\n    var compareGrid;\r\n    $compareContainer.html('');\r\n    //popup compare\r\n    if (compareObject.length > 0){\r\n      compareGrid = compareObject.length === 1? 'col-md-6 col-sm-6' : 'col';\r\n      for (var i = 0; i < compareObject.length; i++) { \r\n        var productHandle = compareObject[i];\r\n        Shopify.getProduct(productHandle,function(product){\r\n          var htmlProduct = '',\r\n              productPrice = product.price_varies? 'from ' + theme.Currency.formatMoney(product.price_min, theme.moneyFormat) : theme.Currency.formatMoney(product.price, theme.moneyFormat),\r\n              productComparePrice = product.compare_at_price_min !== 0 ? theme.Currency.formatMoney(product.compare_at_price_min, theme.moneyFormat) : '',\r\n              productAvailable = product.available ? theme.strings.available : theme.strings.unavailable,\r\n              productAvailableClass = product.available ? 'alert-success' : 'alert-danger',\r\n              productTypeHTML = product.type !== \"\" ? '<a href=\"/collections/types?q='+ product.type +'\">'+ product.type +'</a>' : '<span>'+ theme.strings.none +'</span>',\r\n              productVendorHTML = product.vendor !== \"\" ? '<a href=\"/collections/vendors?q='+ product.vendor +'\">'+ product.vendor +'</a>' : '<span>'+ theme.strings.none +'</span>';\r\n          htmlProduct += '<div class=\"compare-item '+compareGrid+' col-xs-6\">';\r\n          htmlProduct += '\t<a href=\"'+ product.url +'\">';\r\n          htmlProduct += '\t\t<img src=\"'+ Shopify.resizeImage(product.featured_image,'x300') +'\"/>';\r\n          htmlProduct += '\t</a>';\r\n          htmlProduct += '\t<hr /><h5 >'+ product.title +'</h5>';\r\n          htmlProduct += '\t<hr /><s>'+ productComparePrice +'</s>';\r\n          htmlProduct += '\t<span> '+ productPrice +'</span>';\r\n          htmlProduct += '\t<hr /><span class='+ productAvailableClass +'> '+ productAvailable +'</span>';\r\n          htmlProduct += '\t<hr />'+ productTypeHTML;\r\n          htmlProduct += '\t<hr />'+ productVendorHTML;\r\n          htmlProduct += '  <hr /><button class=\"btn js-remove-compare btn-theme gradient-theme\" data-handle=\"'+product.handle+'\">'+ theme.strings.compareRemove +'</button>';\r\n          htmlProduct += '</div>';\r\n          $compareContainer.append(htmlProduct);\r\n          theme.updateCurrencies();\r\n        });\r\n      }\r\n    }else{\r\n      $compareContainer.html('<div class=\"alert alert-warning d-inline-block\">'+ theme.strings.compareNoResult + '</div>');\r\n    }\r\n    \r\n    //button text\r\n    $(compareButtonClass).each(function(){\r\n      var productHandle = $(this).data('handle');\r\n      var status = $.inArray(productHandle,compareObject) !== -1 ? 'added' : '';\r\n      $(this).removeClass('added').addClass(status);\r\n    });\r\n\r\n    //count items\r\n    $compareCount.text(compareObject.length);\r\n  }\r\n  $(document).on('click',compareButtonClass,function (event) {\r\n    event.preventDefault();\r\n    updateCompare(this);\r\n    loadCompare();\r\n  });\r\n  $(document).on('click',compareRemoveButtonClass,function(){\r\n    var productHandle = $(this).data('handle');\r\n    compareObject.splice(compareObject.indexOf(productHandle), 1);\r\n    localStorage.setItem('localCompare', JSON.stringify(compareObject)); \r\n    loadCompare();\r\n  });\r\n\r\n  loadCompare();\r\n  $(document).on('shopify:section:load', loadCompare);\r\n  return{\r\n    load:loadCompare\r\n  }\r\n})()\r\n\r\n// Popup newsletter\r\ntheme.popupNewletter = (function(){\r\n  var $popupNewsletter = $('#jsPopupNewsletter'),\r\n      $newsletterForm = $('#jsPopupNewsletter form'),\r\n      date = new Date(),\r\n      minutes = theme.timePopupNewsletter;\r\n      minutesdelay = $popupNewsletter.attr('data-delay');\r\n  if ($popupNewsletter.length === 1){\r\n    date.setTime(date.getTime() + (minutes * 60 * 1000));\r\n    var setCookies = function (){\r\n      $.cookie('cookiesNewsletter', 'disabled', { expires: date, path: '/' } );\r\n    };\r\n    if ($.cookie('cookiesNewsletter') !== \"disabled\") {\r\n      $(window).on('load',function(){\r\n        setTimeout(function () {\r\n          $popupNewsletter.modal('show');\r\n        }, minutesdelay * 1000);\r\n      });\r\n      $popupNewsletter.on('hidden.bs.modal', setCookies);\r\n      $newsletterForm.submit(setCookies);     \r\n    }\r\n  }\r\n})()\r\n\r\n// Cookie policy\r\ntheme.cookie = (function(){\r\n  var $policy = $('.js-cookie-policy'),\r\n      $closeButton = $('.js-btn-ok'),\r\n      isOk = localStorage.getItem('localCookie') || '';\r\n  if (isOk === ''){\r\n    $policy.fadeIn('slow');\r\n  }\r\n  $closeButton.on('click',function(){\r\n    localStorage.setItem('localCookie', 'accept');\r\n    $policy.fadeOut('slow');\r\n  })\r\n})()\r\n\r\n// Announcement Bar\r\ntheme.announcement = (function(){\r\n  var $bar = $('.js-announcement-bar'),\r\n      $closeButton = $('.js-ab-close'),\r\n      isClosed = localStorage.getItem('localAnnouncement') || '';\r\n  if (isClosed === ''){\r\n    $bar.fadeIn();\r\n    $bar.closest('.body-theme').addClass('body-announcement-bar');\r\n  }\r\n  $closeButton.on('click',function(){\r\n    localStorage.setItem('localAnnouncement', 'closed');\r\n    $bar.slideUp();\r\n    $bar.closest('.body-theme').removeClass('body-announcement-bar');\r\n  })\r\n})()\r\n\r\n// Open external link in new tab\r\ntheme.exLink = (function(){\r\n  var links = document.links;\r\n  for (let i = 0, linksLength = links.length ; i < linksLength ; i++) {\r\n    if (links[i].hostname !== window.location.hostname && $(links[i]).attr('href') !== 'javascript:void(0)') {\r\n      links[i].target = '_blank';\r\n    }\r\n  }\r\n})()\r\n\r\n// Deal- countdown\r\ntheme.countdown = (function(){\r\n  function initCountdown(){\r\n    $(\".js-countdown\").each(function() {\r\n      var endTime = $(this).data('time'),\r\n          htmlLayout = \"<ul class='list--inline'><li class='gradient-theme-vertical'><span class='countdown-time'>%%D%%</span><span class='countdown-text'>Days</span></li><li class='gradient-theme-vertical'><span class='countdown-time'>%%H%%</span><span class='countdown-text'>Hours</span></li><li class='gradient-theme-vertical'><span class='countdown-time'>%%M%%</span><span class='countdown-text'>Mins</span></li><li class='gradient-theme-vertical'><span class='countdown-time'>%%S%%</span><span class='countdown-text'>Secs</span></li></ul>\";\r\n      $(this).lofCountDown({\r\n        TargetDate:endTime,\r\n        DisplayFormat:htmlLayout,\r\n        FinishMessage: '<span class=\"alert alert-warning d-inline-block\">'+ theme.strings.countdownEndText +'</span>'\r\n      });\r\n    });\r\n  }\r\n  initCountdown();\r\n  return{\r\n    load:initCountdown\r\n  }\r\n})()\r\n\r\n// Price range - Collection page\r\ntheme.priceRange =  (function (){\r\n  function initPriceRange(){\r\n    var min=0,\r\n        max=0,\r\n        slideRange = '#js-slider-range',\r\n        productCard = '.js-product-card',\r\n        slideRangeWrap = '.slider-range-wr',\r\n        rangeMin = '.js-range-min',\r\n        rangeMax = '.js-range-max',\r\n        enablePriceRange = $('#js-slider-range').length === 1? true : false;\r\n\r\n    if (enablePriceRange){\r\n      $(productCard).each(function(){      \r\n        if(eval($(this).data('price'))>max) max = eval($(this).data('price'));\r\n        if(min==0) min = eval($(this).data('price')); else if(eval($(this).data('price'))<min) min =  eval($(this).data('price'));      \r\n      });\r\n\r\n      if (min === max){\r\n        $(slideRangeWrap).fadeOut();\r\n      }else{\r\n        $(slideRangeWrap).fadeIn();\r\n      }\r\n\r\n      $(slideRange).slider({\r\n        range: true,\r\n        min: min,\r\n        max: max,\r\n        values: [ min, max ],\r\n        slide: function(event,ui){\r\n          var price1 = (Shopify.formatMoney(ui.values[0], theme.moneyFormat));\r\n          var price2 = (Shopify.formatMoney(ui.values[1], theme.moneyFormat));\r\n          $(rangeMin).html(price1);\r\n          $(rangeMax).html(price2);\r\n          theme.updateCurrencies();\r\n\r\n          // Show/Hide product when dragging\r\n          $(productCard).each(function() {\r\n            if(eval($(this).data('price'))>= ui.values[0] && eval($(this).data('price'))<=ui.values[1]){\r\n              $(this).parent().fadeIn();\r\n            }else{\r\n              $(this).parent().fadeOut();\r\n            }\r\n          });\r\n        }\r\n      });\r\n\r\n      var price1 = (Shopify.formatMoney(min, theme.moneyFormat));\r\n      var price2 = (Shopify.formatMoney(max, theme.moneyFormat));\r\n      $(rangeMin).html(price1);\r\n      $(rangeMax).html(price2);\t  \r\n      theme.updateCurrencies();\r\n\r\n    }\r\n  }\r\n  initPriceRange();\r\n  return{\r\n    load:initPriceRange\r\n  }\r\n})()\r\n\r\n// Collection view - Collection page\r\ntheme.collectionView =  (function (){\r\n  var btnView = '.js-btn-view',\r\n      btnViewActive = '.js-btn-view.active';\r\n\r\n  $(document).on('click',btnView,function(){\r\n    var value = $(this).data('col'),\r\n        $gridItemCol = $('.js-col');\r\n\r\n    $(btnView).removeClass('active');\r\n    $(this).addClass('active');\r\n\r\n    $gridItemCol.removeClass().addClass('js-col col-sm-6 col-6');\r\n    if (value === 3){\r\n      $gridItemCol.addClass('col-lg-4');\r\n    }else if(value === 4){\r\n      $gridItemCol.addClass('col-lg-3');\r\n    }else if(value === 5){\r\n      $gridItemCol.addClass('col-lg-2-4');\r\n    }else if(value === 6){\r\n      $gridItemCol.addClass('col-lg-2');\r\n    };\r\n  })\r\n\r\n  function triggerCollectionView(){\r\n    $(btnViewActive).trigger('click');\r\n  }\r\n\r\n  return {\r\n    triggerView:triggerCollectionView\r\n  }\r\n})()\r\n\r\n// Swath variant in card item\r\ntheme.swatchCard = (function(){\r\n  $(document).on('click','.js-swatch-card-item',function(){//click or mouseover\r\n    $(\".js-swatch-card-item\").removeClass(\"active\");\r\n    $(this).addClass(\"active\");   \r\n    var newImage = $(this).data('image');\r\n    var id = $(this).data('id');\r\n    var gridItem = $(this).closest('.js-product-card');\r\n    gridItem.find('.product-card__image').find('img').attr('srcset',newImage);\r\n    gridItem.find('.js-grid-cart').data('id',id).attr('data-id',id);\r\n  });\r\n})()\r\n\r\ntheme.swatchCard2 = (function(){\r\n  function initVariant(id){\r\n    var productJson = JSON.parse($('.customJson-' + id).html());\r\n    var $selectorForm = $('.customform-' + id);\r\n    var $button = $('.js-customform-addtocart-' + id);\r\n    var $buttontext = $button.find('span');\r\n    var $wrapObject = $selectorForm.closest('.js-product-card');\r\n    var options = {\r\n      $container: $selectorForm,\r\n      enableHistoryState: false,\r\n      product: productJson,\r\n      singleOptionSelector: '.single-option-selector-' + id,\r\n      originalSelectorId: '#ProductSelect-' + id\r\n    };\r\n    var variants = new slate.Variants(options);\r\n    var AjaxCart = new window.AjaxCart($selectorForm);\r\n    var _updateButton = function (evt){\r\n      var variant = evt.variant;\r\n      if (variant === undefined){\r\n        $button.prop('disabled', true).removeClass('btn--sold-out');\r\n        $buttontext.html(theme.strings.unavailable);\r\n      }else{\r\n        if (variant.available){\r\n          $button.removeClass('btn--sold-out').prop('disabled', false);\r\n          $buttontext.html(theme.strings.addToCart);\r\n        }else{\r\n          $button.prop('disabled', true).addClass('btn--sold-out');\r\n          $buttontext.html(theme.strings.soldOut);\r\n        }\r\n      }\r\n    }\r\n    var _updateImage = function (evt){\r\n      var variant = evt.variant;\r\n      var $mainImage = $wrapObject.find('.product-card__image').find('img');\r\n      if (variant !== undefined && variant.featured_image !== null){\r\n        var variantImage = variant.featured_image;\r\n        $mainImage.attr('srcset',variantImage.src);\r\n      }\r\n    }\r\n    var _updatePrice = function (evt){\r\n      var $price = $wrapObject.find('.product-card__price');\r\n      var variant = evt.variant;\r\n      if (variant !== undefined){\r\n        // We use theme.Currency.formatMoney to turn 250 into $2.50\r\n        var formattedPrice = theme.Currency.formatMoney(variant.price, theme.moneyFormat);\r\n        var formattedCompare = variant.compare_at_price !== null ? theme.Currency.formatMoney(variant.compare_at_price, theme.moneyFormat) : '';\r\n\r\n        var htmlComparePrice = variant.compare_at_price !== null ? '<s class=\"product-card__regular-price\"><span class=\"money\">' + formattedCompare + '</span></s>' : '';\r\n        var htmlPrice = '<span class=\"money\">' + formattedPrice + '</span>' + htmlComparePrice ;\r\n        \r\n        $price.html(htmlPrice);\r\n        theme.updateCurrencies();\r\n      }\r\n    }\r\n    variants.$container.on(\r\n      'variantChange' , _updateButton\r\n    );\r\n    variants.$container.on(\r\n      'variantChange' , _updateImage\r\n    );\r\n    variants.$container.on(\r\n      'variantChange' , _updatePrice\r\n    );\r\n  }\r\n  function initForm(){\r\n    $('.js-customform').each(function(){\r\n      var id = $(this).data('id');\r\n      initVariant(id);\r\n    })\r\n  }\r\n\r\n  initForm();\r\n  return{\r\n    load:initForm\r\n  }\r\n})()\r\n\r\n// Loading\r\ntheme.loading = (function(){\r\n  var $loading = $('#js-loading'),\r\n      hasLoading = $('#js-loading').length === 0? false : true;\r\n  if (hasLoading){\r\n    $(window).load(function () {\r\n      $loading.fadeOut();\r\n    });  \r\n  }\r\n})()\r\n\r\ntheme.effectLeavingPage = (function(){\r\n  window.onbeforeunload = function(){\r\n    $('body').css('opacity','0');\r\n  }\r\n})()\r\n\r\n// Isotope\r\ntheme.isotope = (function(){\r\n  var enableIsotope = $('.enable-isotope').length === 1 ? true : false,\r\n      $grid = $('.js-grid'),\r\n      filter = '.js-filter-isotope';\r\n\r\n  function initIsotope(){\r\n    if (enableIsotope){\r\n      $grid.isotope({\r\n        itemSelector: '.grid-item',\r\n        percentPosition: true\r\n      })\r\n      $(document).on('click',filter,function(){\r\n        var filterValue = $(this).data('filter') === '*'? $(this).data('filter') : '.' + $(this).data('filter');\r\n        $(filter).removeClass('active');\r\n        $(this).addClass('active');\r\n        $grid.isotope({ \r\n          filter: filterValue \r\n        });\r\n      });\r\n      $(window).scroll(function() {\r\n        $grid.isotope('layout');\r\n      });\r\n      $(window).load(function () {\r\n        $grid.isotope('layout');\r\n        $(filter).first().trigger('click');\r\n      });\r\n    }\r\n  }\r\n  initIsotope();\r\n})()\r\n\r\n//aos\r\n\r\n\r\n\r\n// theme.Wow = (function(){\r\n//   new WOW().init();\r\n// })()\r\n\r\n\r\n\r\n\r\n// Masonry\r\ntheme.Masonry = (function(){\r\n  function Masonry(container) {\r\n    this.$container = $(container).on('init', this._a11y.bind(this));\r\n    var $masonry = this.$container;\r\n    $masonry.isotope({\r\n      itemSelector: '.grid-item',\r\n      percentPosition: true,\r\n      masonry: {\r\n        columnWidth: '.grid-sizer'\r\n      }\r\n    });\r\n    $(window).load(function () {\r\n      $masonry.isotope('layout').css('opacity','1');\r\n    });\r\n    $(window).scroll(function() {\r\n      $masonry.isotope('layout').css('opacity','1');\r\n    });\r\n  }\r\n\r\n  Masonry.prototype = _.assignIn({}, Masonry.prototype, {\r\n    _a11y: function(event, obj) {\r\n      var $list = obj.$list;\r\n      var $wrapper = this.$container.parent();\r\n\r\n      // Remove default Slick aria-live attr until slider is focused\r\n      $list.removeAttr('aria-live');\r\n\r\n      // When an element in the slider is focused set aria-live\r\n      $wrapper.on('focusin', function(evt) {\r\n        if ($wrapper.has(evt.target).length) {\r\n          $list.attr('aria-live', 'polite');\r\n        }\r\n      });\r\n\r\n      // Remove aria-live\r\n      $wrapper.on('focusout', function(evt) {\r\n        if ($wrapper.has(evt.target).length) {\r\n          $list.removeAttr('aria-live');\r\n        }\r\n      });\r\n    }\r\n  });\r\n\r\n  return Masonry;\r\n})();\r\n\r\n\r\n\r\n// Cross-selling\r\ntheme.crosssell = (function(){\r\n  var crosssellClass = '.js-crosssell',\r\n      handles = $(crosssellClass).data('handles') || '',\r\n      arrayHandle = handles.split(','),\r\n      $blockCrosssell = $('.block-cross-sell'),\r\n      variantSelectClass = '.js-cross-select',\r\n      crossImageClass = '.cross-item-image',\r\n      crossPriceClass = '.cross-item-money';  \r\n  function generateCrosssell(){\r\n    for (var i = 0; i < arrayHandle.length; i++) {\r\n      var productHandle = arrayHandle[i];\r\n      Shopify.getProduct(productHandle,function(product){\r\n        var htmlCross = '',\r\n            htmlOption = '',\r\n            firstAvailableVariant = '',\r\n            variantCount = product.variants.length;\r\n\r\n        // generate select box and check first avaiable variant\r\n        for (var j = 0; j < variantCount; j++){\r\n          var variant = product.variants[j],\r\n              variantImage = variant.featured_image === null? product.featured_image : variant.featured_image.src,\r\n              disabled = variant.available ? '' : 'disabled';\r\n          htmlOption += '<option '+disabled+' data-id=\"'+variant.id+'\" data-price=\"'+variant.price+'\" data-image=\"'+variantImage+'\">'+variant.title+'</option>';\r\n          if (firstAvailableVariant === '' && variant.available ){\r\n            firstAvailableVariant = variant\r\n          }\r\n        }\r\n        var productPrice = theme.Currency.formatMoney(firstAvailableVariant.price, theme.moneyFormat),\r\n            productImage = firstAvailableVariant.featured_image === null? product.featured_image:firstAvailableVariant.featured_image.src,\r\n            selectHide = variantCount === 1 ? 'hide' : '';\r\n\r\n        // generate HTML\r\n        htmlCross +='<div class=\"col cross-item '+product.handle+'\">';\r\n        htmlCross +='\t<a class=\"cross-item-image\" href=\"'+product.url+'\" title=\"'+product.title+'\"><img src=\"'+productImage+'\" />'+theme.strings.cartIcon+'</a>';\r\n        htmlCross +='\t<a target=\"_blank\" href=\"'+product.url+'\" title=\"'+product.title+'\" class=\"cross-item-title\">'+product.title+'</a>';\r\n        htmlCross +='\t<span class=\"cross-item-money\">'+productPrice+'</span>';\r\n        htmlCross +='\t<select class=\"js-cross-select '+selectHide+'\" data-image=\"'+productImage+'\" data-price=\"'+firstAvailableVariant.price+'\" data-item=\"'+firstAvailableVariant.id+'\">'+htmlOption+'</select>';\r\n        htmlCross +='</div>';\r\n        $(crosssellClass).append(htmlCross);\r\n        theme.updateCurrencies();\r\n      });\r\n    }\r\n  }\r\n  \r\n  function showPopupCrosssell(lineItem){\r\n    //generate lineitem;\r\n    var htmlLineItem = '';\r\n    htmlLineItem += '<span class=\"alert alert-success d-inline-block mb-2\">'+ theme.strings.addToCartSuccess +'</span>';\r\n    htmlLineItem += '<div><img src=\"'+lineItem.image+'\" alt=\"Added Product\"></div>';\r\n    htmlLineItem += '<h4 class=\"cross-item-title\">'+lineItem.title+'</h4>';\r\n    htmlLineItem += '<div class=\"mb-2\">'+theme.strings.cartQuantity+': '+lineItem.quantity+'</div>';\r\n    $('.js-cross-added').hide().html(htmlLineItem).fadeIn();\r\n\r\n    // show popup\r\n    var $popupCrosssell = $('#jsCrosssell');\r\n    $popupCrosssell.modal('show');\r\n  }\r\n\r\n  if (handles !== '') {\r\n    $(document).on('click',crossImageClass,function(event){\r\n      event.preventDefault();\r\n      var parent = $(this).closest('.cross-item'),\r\n          itemId = parent.find(variantSelectClass).attr('data-item');\r\n      Shopify.addItem(itemId,1,function(lineItem){\r\n        theme.miniCart.updateElements();\r\n        theme.miniCart.generateCart();\r\n        showPopupCrosssell(lineItem);\r\n      });\r\n    });\r\n    $(document).on('change',variantSelectClass,function(){\r\n      var selectVariant = $(this).children(':selected'),\r\n          selectVariantId = selectVariant.data('id'),\r\n          parent = $(this).parent(),\r\n          newPrice = theme.Currency.formatMoney(selectVariant.data('price'), theme.moneyFormat);\r\n\r\n      if (selectVariant.data('image') !== ''){\r\n        parent.find(crossImageClass).find('img').attr('src',selectVariant.data('image'));\r\n      }\r\n      $(this).attr('data-item',selectVariantId);\r\n      parent.find(crossPriceClass).html(newPrice);\r\n      theme.updateCurrencies();\r\n    });\r\n    $(document).on('shopify:section:load', generateCrosssell);\r\n    generateCrosssell();\r\n    $blockCrosssell.removeClass('hide');\r\n  }\r\n  return{\r\n    showPopup:showPopupCrosssell\r\n  }\r\n})()\r\n\r\n// Upsell\r\ntheme.upsell = (function(){\r\n  var popupUpsell = '#jsUpsell',\r\n      $button = $('#jsUpsell .btn'),\r\n      productUpsellId = $('#jsUpsell').data('id') || '',\r\n      buttonAcceptClass = 'js-btn-accept',\r\n      delayTime = $('#jsUpsell').data('delay') || 3000,\r\n      isUpsell = $(popupUpsell).length === 1? true:false;\r\n  if (isUpsell){\r\n    $(document).ready(function() {\r\n      setTimeout(function() {\r\n        $(popupUpsell).modal('show');\r\n      }, delayTime);\r\n    });\r\n    $button.on('click',function(){\r\n      if($(this).hasClass(buttonAcceptClass)){\r\n        Shopify.addItem(productUpsellId,1,function(item){\r\n          theme.miniCart.updateElements();\r\n          theme.miniCart.generateCart();\r\n          var htmlVariant = item.variant_title !== null ? '<i>('+item.variant_title+')</i>' : '';\r\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>';\r\n          theme.alert.new(theme.strings.addToCartSuccess,htmlAlert,3000,'notice');\r\n        })\r\n      }\r\n      $(popupUpsell).modal('hide');\r\n    })\r\n  }\r\n})()\r\n\r\n// Coupon\r\ntheme.coupon = (function(){\r\n  var popupCoupon = '#jsCoupon',\r\n      $button = $('#jsCoupon .js-btn-coupon'),\r\n      delayTime = $('#jsCoupon').data('delay') || 3000,\r\n      isCoupon = $(popupCoupon).length === 1? true:false,\r\n      isCopied = localStorage.getItem('localCoupon') || '';\r\n  if (isCoupon && isCopied === ''){\r\n    $(document).ready(function() {\r\n      setTimeout(function() {\r\n        $(popupCoupon).modal('show');\r\n      }, delayTime);\r\n    });\r\n    $button.on('click',function(){\r\n      var copyText = document.getElementById(\"coupon_code\");\r\n      copyText.select();\r\n      document.execCommand(\"Copy\");\r\n      $(popupCoupon).modal('hide');\r\n      theme.alert.new('Coupon code','Successfully copied, now you can paste code at checkout',4000);\r\n      localStorage.setItem('localCoupon', 'copied');\r\n    })\r\n  }\r\n})()\r\n\r\n// Overwrite Shopify.onError in Shopify API\r\nShopify.onError = function(t, r) {\r\n    var e = eval(\"(\" + t.responseText + \")\");\r\n    var mess = e.message ? e.message + \"(\" + e.status + \"): \" + e.description : \"Error : \" + Shopify.fullMessagesFromErrors(e).join(\"; \") + \".\"\r\n    theme.alert.new('Alert',mess,3000,'warning');\r\n}\r\n\r\n// Megamenu width\r\ntheme.fixWidthMegamenu = (function(){\r\n  var $megamenuClass = $('.site-nav__item-mega'),\r\n      megaDropdownClass = '.meganav';\r\n  $megamenuClass.each(function(){\r\n    var widthMenu = $(this).data('width') || 0;\r\n    if (widthMenu !== 0){\r\n      $(this).find(megaDropdownClass).css({'width':widthMenu+'px','margin-left':'-'+widthMenu/2+'px'});\r\n    }\r\n  });\r\n})()\r\n\r\n// Product video\r\ntheme.productVideo = (function(){\r\n  var playButtonClass = '.js-play-button';\r\n  $(document).on('click',playButtonClass,function(){\r\n    let videoSelector = $(this).next(),\r\n        videoObject = videoSelector.get(0);\r\n    $(this).toggleClass('active');\r\n    videoSelector.toggleClass('active');\r\n    videoObject.paused ? videoObject.play() : videoObject.pause();\r\n  })\r\n})()\r\n\r\n// Fake-viewers\r\ntheme.fakeViewer = (function(){\r\n  var $fakeViewClass = $('.js-fake-view'),\r\n      minValue = $fakeViewClass.data('min'),\r\n      maxValue = $fakeViewClass.data('max'),\r\n      duration = $fakeViewClass.data('duration');\r\n  function randomInRange(start,end){\r\n    var value = Math.floor(Math.random() * (end - start + 1) + start);\r\n    $fakeViewClass.text(value);\r\n  }\r\n\r\n  if (minValue !== undefined && maxValue !== undefined){\r\n    randomInRange(minValue,maxValue);\r\n    setInterval(function() {\r\n      randomInRange(minValue,maxValue);\r\n    },duration);\r\n  }\r\n\r\n})();\r\n\r\n// Product-suggest\r\ntheme.productSuggest = (function(){\r\n  var $productSuggestClass = $('.product-notification'),\r\n      $closeButtonClass = $('.close-notifi'),\r\n      duration = $productSuggestClass.data('time') || 0,\r\n      productSuggestCookie = 'cookieSuggest';\r\n\r\n  function SomeonePurchased() {\r\n    if ($.cookie(productSuggestCookie) == 'closed') {\r\n      $productSuggestClass.remove();\r\n    }\r\n    $closeButtonClass.on('click',function(){\r\n      $productSuggestClass.remove();\r\n      $.cookie(productSuggestCookie, 'closed', {expires:1, path:'/'});\r\n    });  \r\n    function toggleSomething() {\r\n      if($productSuggestClass.hasClass('active')){\r\n        $productSuggestClass.removeClass('active')\r\n      }\r\n      else{\r\n        var arrayProducts = $('.data-product'),\r\n            randomProduct = Math.floor(Math.random() * arrayProducts.length),\r\n            Object = $(arrayProducts[randomProduct]);\r\n\r\n        $productSuggestClass.addClass('active');\r\n        $productSuggestClass.find('.product-image').attr('href', Object.data('url')).find('img').attr('src', Object.data('image'));\r\n        $productSuggestClass.find('.product-name').text(Object.data('title')).attr('href', Object.data('url'));\r\n        $productSuggestClass.find('.time-ago').text(Object.data('time'));\r\n        $productSuggestClass.find('.from-ago').text(Object.data('local'));\r\n      }\r\n    }\r\n\r\n    if (duration !== 0){\r\n      setInterval(toggleSomething, duration);\r\n    }\r\n  }\r\n  SomeonePurchased();\r\n})()\r\n\r\n\r\n// Stickyheader\r\ntheme.stickyHeader = (function(){\r\n  var stickHeaderClass = '.site-header--sticky';\r\n  if ($(stickHeaderClass).length !== 0){\r\n    $(window).scroll(function() {\r\n      if (window.pageYOffset >= 20) {\r\n        $(stickHeaderClass).addClass('active');\r\n      } else {\r\n        $(stickHeaderClass).removeClass('active');\r\n      }\r\n    });\r\n  }\r\n})()\r\n\r\ntheme.PhotoSwipe = (function(){\r\n  var initPhotoSwipeFromDOM = function(gallerySelector) {\r\n\r\n    // parse slide data (url, title, size ...) from DOM elements \r\n    // (children of gallerySelector)\r\n    var parseThumbnailElements = function(el) {\r\n        var thumbElements = el.childNodes,\r\n            numNodes = thumbElements.length,\r\n            items = [],\r\n            figureEl,\r\n            linkEl,\r\n            size,\r\n            item;\r\n\r\n        for(var i = 0; i < numNodes; i++) {\r\n\r\n            figureEl = thumbElements[i]; // <figure> element\r\n\r\n            // include only element nodes \r\n            if(figureEl.nodeType !== 1) {\r\n                continue;\r\n            }\r\n\r\n            linkEl = figureEl.children[0]; // <a> element\r\n\r\n            size = linkEl.getAttribute('data-size').split('x');\r\n\r\n            // create slide object\r\n            item = {\r\n                src: linkEl.getAttribute('href'),\r\n                w: parseInt(size[0], 10),\r\n                h: parseInt(size[1], 10)\r\n            };\r\n\r\n\r\n\r\n            if(figureEl.children.length > 1) {\r\n                // <figcaption> content\r\n                item.title = figureEl.children[1].innerHTML; \r\n            }\r\n\r\n            if(linkEl.children.length > 0) {\r\n                // <img> thumbnail element, retrieving thumbnail url\r\n                item.msrc = linkEl.children[0].getAttribute('src');\r\n            } \r\n\r\n            item.el = figureEl; // save link to element for getThumbBoundsFn\r\n            items.push(item);\r\n        }\r\n\r\n        return items;\r\n    };\r\n\r\n    // find nearest parent element\r\n    var closest = function closest(el, fn) {\r\n        return el && ( fn(el) ? el : closest(el.parentNode, fn) );\r\n    };\r\n\r\n    // triggers when user clicks on thumbnail\r\n    var onThumbnailsClick = function(e) {\r\n        e = e || window.event;\r\n        e.preventDefault ? e.preventDefault() : e.returnValue = false;\r\n\r\n        var eTarget = e.target || e.srcElement;\r\n\r\n        // find root element of slide\r\n        var clickedListItem = closest(eTarget, function(el) {\r\n            return (el.tagName && el.tagName.toUpperCase() === 'FIGURE');\r\n        });\r\n\r\n        if(!clickedListItem) {\r\n            return;\r\n        }\r\n\r\n        // find index of clicked item by looping through all child nodes\r\n        // alternatively, you may define index via data- attribute\r\n        var clickedGallery = clickedListItem.parentNode,\r\n            childNodes = clickedListItem.parentNode.childNodes,\r\n            numChildNodes = childNodes.length,\r\n            nodeIndex = 0,\r\n            index;\r\n\r\n        for (var i = 0; i < numChildNodes; i++) {\r\n            if(childNodes[i].nodeType !== 1) { \r\n                continue; \r\n            }\r\n\r\n            if(childNodes[i] === clickedListItem) {\r\n                index = nodeIndex;\r\n                break;\r\n            }\r\n            nodeIndex++;\r\n        }\r\n\r\n\r\n\r\n        if(index >= 0) {\r\n            // open PhotoSwipe if valid index found\r\n            openPhotoSwipe( index, clickedGallery );\r\n        }\r\n        return false;\r\n    };\r\n\r\n    // parse picture index and gallery index from URL (#&pid=1&gid=2)\r\n    var photoswipeParseHash = function() {\r\n        var hash = window.location.hash.substring(1),\r\n        params = {};\r\n\r\n        if(hash.length < 5) {\r\n            return params;\r\n        }\r\n\r\n        var vars = hash.split('&');\r\n        for (var i = 0; i < vars.length; i++) {\r\n            if(!vars[i]) {\r\n                continue;\r\n            }\r\n            var pair = vars[i].split('=');  \r\n            if(pair.length < 2) {\r\n                continue;\r\n            }           \r\n            params[pair[0]] = pair[1];\r\n        }\r\n\r\n        if(params.gid) {\r\n            params.gid = parseInt(params.gid, 10);\r\n        }\r\n\r\n        return params;\r\n    };\r\n\r\n    var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) {\r\n        var pswpElement = document.querySelectorAll('.pswp')[0],\r\n            gallery,\r\n            options,\r\n            items;\r\n\r\n        items = parseThumbnailElements(galleryElement);\r\n\r\n        // define options (if needed)\r\n        options = {\r\n          maxSpreadZoom: 1,\r\n          bgOpacity: 0.7,\r\n          zoomEl: true,\r\n          history:false,\r\n          zoomEl: false,\r\n          pinchToClose: false,\r\n          closeOnScroll:false,\r\n            // define gallery index (for URL)\r\n            galleryUID: galleryElement.getAttribute('data-pswp-uid'),\r\n\r\n        };\r\n\r\n        // PhotoSwipe opened from URL\r\n        if(fromURL) {\r\n            if(options.galleryPIDs) {\r\n                // parse real index when custom PIDs are used \r\n                // http://photoswipe.com/documentation/faq.html#custom-pid-in-url\r\n                for(var j = 0; j < items.length; j++) {\r\n                    if(items[j].pid == index) {\r\n                        options.index = j;\r\n                        break;\r\n                    }\r\n                }\r\n            } else {\r\n                // in URL indexes start from 1\r\n                options.index = parseInt(index, 10) - 1;\r\n            }\r\n        } else {\r\n            options.index = parseInt(index, 10);\r\n        }\r\n\r\n        // exit if index not found\r\n        if( isNaN(options.index) ) {\r\n            return;\r\n        }\r\n\r\n        if(disableAnimation) {\r\n            options.showAnimationDuration = 0;\r\n        }\r\n\r\n        // Pass data to PhotoSwipe and initialize it\r\n        gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);\r\n        gallery.init();\r\n    };\r\n\r\n    // loop through all gallery elements and bind events\r\n    var galleryElements = document.querySelectorAll( gallerySelector );\r\n\r\n    for(var i = 0, l = galleryElements.length; i < l; i++) {\r\n        galleryElements[i].setAttribute('data-pswp-uid', i+1);\r\n        galleryElements[i].onclick = onThumbnailsClick;\r\n    }\r\n\r\n    // Parse URL and open gallery if it contains #&pid=3&gid=1\r\n    var hashData = photoswipeParseHash();\r\n    if(hashData.pid && hashData.gid) {\r\n        openPhotoSwipe( hashData.pid ,  galleryElements[ hashData.gid - 1 ], true, true );\r\n    }\r\n};\r\n\r\n// execute above function\r\ninitPhotoSwipeFromDOM('.my-gallery');\r\n})()\r\n\r\ntheme.ZoomImage = (function(){\r\n  $(window).resize(function() {\r\n    var width = $(window).width();\r\n    if (width > 767){\r\n      ZoomImage();\r\n    }\r\n  });\r\n  $(window).width(function() {\r\n    var width = $(window).width();\r\n    if (width > 767){\r\n      ZoomImage();\r\n    }\r\n  });\r\n  function ZoomImage(){\r\n    $(\".zoom_image\").each(function(arg, el){\r\n        var image = $(el).find(\"img\");\r\n        $(el).zoom({\r\n            on: 'mouseover',\r\n            url: image.attr(\"src\").replace(\"small\", \"big\")\r\n        });\r\n    });\r\n  }\r\n})()\r\n\r\ntheme.activeAccordion = (function(){\r\n  $('.collapse').on('shown.bs.collapse', function () {\r\n       $(this).prev().addClass('active-acc');\r\n   });\r\n   $('.collapse').on('hidden.bs.collapse', function () {\r\n       $(this).prev().removeClass('active-acc');\r\n   });\r\n})()\r\n\r\n\r\n// Anchor scroll\r\ntheme.anchorScroll = (function(){\r\n  $(document).on('click', 'a[href^=\"#\"]', function (event) {\r\n    event.preventDefault();\r\n    var disableAnchor = $(this).hasClass('disabled-anchor');\r\n    if (!disableAnchor){\r\n      $('html, body').animate({\r\n        scrollTop: $($.attr(this, 'href')).offset().top\r\n      }, 500);\r\n    }\r\n  });\r\n})()\r\n\r\n// Product-recently-viewed\r\ntheme.productRecentlyViewed = (function(){\r\n  var $viewedElement = $('.js-recently-view'),\r\n      $viewButton = $('.js-recently-view-button'),\r\n      $content = $('.js-recently-view-content'),\r\n      productHandle = $viewedElement.data('handle') || '',\r\n      limit = $viewButton.data('limit') || 0,\r\n      arrayProduct = JSON.parse(localStorage.getItem('localRecentlyViewed')) || [],\r\n      lastProduct = arrayProduct[arrayProduct.length - 1] || '',\r\n      isAdded = $.inArray(productHandle,arrayProduct) !== -1 ? true:false;\r\n\r\n  function processViewed(){\r\n    if (productHandle !== ''){\r\n      //process last product\r\n      if (lastProduct === productHandle && arrayProduct.length > 1){\r\n        lastProduct = arrayProduct[arrayProduct.length - 2]\r\n      }\r\n\r\n      //move current product to last of array\r\n      if (isAdded){\r\n        arrayProduct.splice(arrayProduct.indexOf(productHandle), 1);\r\n      }\r\n      arrayProduct.push(productHandle);\r\n      //remove first item if limit\r\n      if (arrayProduct.length > limit){\r\n        arrayProduct.shift()\r\n      }\r\n      localStorage.setItem('localRecentlyViewed', JSON.stringify(arrayProduct));\r\n    }\r\n  }\r\n\r\n  function generatorProduct(){\r\n    $content.html('');\r\n    if (arrayProduct.length > 0){\r\n      //array\r\n      for (var i = 0; i < arrayProduct.length; i++) {\r\n        var productHandle = arrayProduct[i];\r\n        Shopify.getProduct(productHandle,function(product){\r\n          var htmlProduct = '';\r\n          var productPrice = product.price_varies? 'from ' + theme.Currency.formatMoney(product.price_min, theme.moneyFormat) : theme.Currency.formatMoney(product.price, theme.moneyFormat);\r\n          var productComparePrice = product.compare_at_price_min !== 0? theme.Currency.formatMoney(product.compare_at_price_min, theme.moneyFormat) : '';\r\n          htmlProduct += '<div class=\"col-12 col-lg-4 js-viewed-item mb-4\">';\r\n          htmlProduct += '\t<div class=\"border p-3 rounded media d-flex \">';\r\n          htmlProduct += '\t<a class=\"mr-3 col-4 p-0\" href=\"'+ product.url +'\">';\r\n          htmlProduct += '\t\t<img src=\"'+ product.featured_image +'\"/>';\r\n          htmlProduct += '\t</a>';\r\n          htmlProduct += '\t<div class=\"media-body text-left\">';\r\n          htmlProduct += '\t\t<h4 class=\"mb-2 mt-2\"><a href=\"'+ product.url +'\">'+ product.title +'</a></h5>';\r\n          htmlProduct += '\t<span> '+ productPrice +'</span>';\r\n          htmlProduct += '\t<s>'+ productComparePrice +'</s>';\r\n          htmlProduct += '\t</div>';\r\n          htmlProduct += '\t</div>';\r\n          htmlProduct += '</div>';\r\n          $content.append(htmlProduct);\r\n          theme.updateCurrencies();\r\n        });\r\n      }\r\n\r\n      //last product\r\n      Shopify.getProduct(lastProduct,function(product){\r\n        $viewButton.css('background-image','url('+product.featured_image+')').addClass('active');\r\n      })\r\n    }\r\n  }\r\n\r\n  processViewed();\r\n  generatorProduct();\r\n\r\n})()\r\n\r\n// Notice when soldout\r\ntheme.alert = (function(){\r\n  function createAlert(title,mess,time,type){\r\n    var aTitle = title || '',\r\n        aTime = time || 2000,\r\n        aMessage = mess || '',\r\n        aClass = type || 'default';\r\n    $.growl({ \r\n      title: aTitle,\r\n      message: aMessage,\r\n      duration: aTime,\r\n      style: aClass,\r\n      size: 'large'\r\n    });\r\n  }\r\n\r\n  return{\r\n    new:createAlert\r\n  }\r\n})()\r\n\r\n// Notice when soldout\r\ntheme.noticeSoldout = (function(){\r\n  var $soldoutWrapFormClass = $('.js-contact-soldout'),\r\n      $textClass = $('.js-notify-text'),\r\n      $soldoutValueId = $('#ContactProduct');\r\n  function noticeSoldout(variant){\r\n    $soldoutWrapFormClass.find('.form-success').remove()\r\n    if (variant.available){\r\n      $textClass.find('span').text('');\r\n      $soldoutWrapFormClass.addClass('hide');\r\n    }else{\r\n      $textClass.find('span').text(': ' + variant.name);\r\n      $soldoutWrapFormClass.removeClass('hide');\r\n      $soldoutValueId.val(variant.name).attr('value',variant.name);\r\n    }\r\n  }\r\n  return {\r\n    init : noticeSoldout\r\n  }\r\n})()\r\n\r\n// Sticky cart\r\ntheme.stickyCart = (function(){\r\n  var $anchor = $('#js-anchor-sticky-cart'),\r\n      $stCart = $('.sticky-cart-wr'),\r\n      $close = $('#js-sticky-close'),\r\n      disableStCart = localStorage.getItem('localDisableStCart') || '';\r\n  if(disableStCart !== ''){\r\n    $stCart.addClass('disable');\r\n  }\r\n  $close.on('click',function(){\r\n    var isDisable = disableStCart !== '';\r\n    if(isDisable){\r\n      localStorage.setItem('localDisableStCart', '');\r\n    }else{\r\n      localStorage.setItem('localDisableStCart', 'true');\r\n    }\r\n    $stCart.toggleClass('disable');\r\n  })\r\n  if($anchor.length){\r\n    $(window).on('scroll',function() {\r\n      var hT = $anchor.offset().top,\r\n          hH = $anchor.outerHeight(),\r\n          wH = $(window).height(),\r\n          wS = $(this).scrollTop();\r\n      if (wS > (hT+hH-wH)){\r\n        $stCart.addClass('active');\r\n      }else{\r\n        $stCart.removeClass('active');\r\n      }\r\n    });\r\n  }\r\n  \r\n})()\r\n\r\n//Fix reload safari\r\nwindow.addEventListener(\"pageshow\", function(evt){\r\n  if(evt.persisted){\r\n  setTimeout(function(){\r\n      window.location.reload();\r\n  },10);\r\n}\r\n}, false);\r\n\r\n// Back to top\r\ntheme.backToTop = (function(){\r\n  var backtotopClass = $('.js-back-to-top');\r\n  $(window).scroll(function() {\r\n    if ($(this).scrollTop() > 300) {\r\n      backtotopClass.fadeIn('slow');\r\n    } else {\r\n      backtotopClass.fadeOut('slow');\r\n    }\r\n  });\r\n  backtotopClass.on('click',function(){\r\n    $('body,html').animate({scrollTop: 0}, 800);\r\n  });\r\n})()\r\n\r\n\r\n// Tooltip\r\ntheme.tooltip = (function(){\r\n  var selector = '[data-toggle=\"tooltip\"],[data-tooltip=\"true\"]';\r\n  function loadTooltip(){\r\n    $(selector).tooltip(); //Bootstrap 4\r\n  };\r\n  $(document).on('click',selector,function(){\r\n    $(this).tooltip('hide');\r\n  });\r\n  loadTooltip();\r\n  return{\r\n    load:loadTooltip\r\n  }\r\n})()\r\n\r\n//Collections style 2\r\ntheme.Bgcollection = (function(){\r\n  // init Isotope\r\n    function Bgcollection(container){\r\n     var $container = this.$container = $(container);\r\n     var sectionId = $container.attr('data-section-id');\r\n     var wrapper = this.wrapper = '.bgcollection-wrapper';\r\n     var slider = this.slider = '#Bgcollection-' + sectionId;\r\n     var $slider = $(slider, wrapper);\r\n     $(\".colgrid__bg--full[data-index='1']\").addClass('active');\r\n     $('.colgrid .colgrid__box').each(function(){\r\n           var index = $(this).attr(\"data-index\");\r\n           $(this).hover(\r\n           function() {\r\n              $(\".colgrid__bg--full[data-index='\"+index+\"']\").addClass('active');\r\n           }, \r\n           function() {\r\n                 $(\".colgrid__bg--full[data-index='\"+index+\"']\").removeClass('active');\r\n              }\r\n           );\r\n        });\r\n      }\r\n    \r\n    return Bgcollection;\r\n  })();\r\n  \r\n\r\n//Sidebar\r\ntheme.sidebar = (function(){\r\n  var togglebutton = '.js-toggle-filter',\r\n      $sidebar = $('.js-sidebar');\r\n  $(document).on('click',togglebutton,function(){\r\n    $sidebar.toggleClass('active');\r\n    $(this).toggleClass('active');\r\n  })\r\n})()\r\n\r\n// Ajax filter in collection page\r\ntheme.ajaxFilter = (function() {\r\n  var ajaxContent = '#js-product-ajax',\r\n      ajaxSortBy = '#js-sortby',\r\n      ajaxFillter = '#js-fillter',\r\n      ajaxCollectionTitle = '.js-collection-title',\r\n      pageTitle = $(document).find(\"title\").text(),\r\n      jsLoading = '#js-loading';\r\n\r\n  var apollo = {\r\n    init: function() {\r\n      this.initFilter(); \r\n    },\r\n    showLoading: function() {\r\n      $(jsLoading).show();\r\n    },\r\n    hideLoading: function() {\r\n      $('body,html').animate({\r\n        scrollTop: $('#MainContent').offset().top - 150\r\n      }, 600);\r\n      setTimeout(function(){\r\n        $(jsLoading).hide(); //delay 500ms for better UX\r\n      }, 500); \r\n     \r\n    },\r\n    initFilter: function() {\r\n      apollo.filterParams();\r\n      apollo.filterSortby();\r\n      apollo.sidebarMapTagEvents();\r\n      apollo.filterMapSorting();\r\n      apollo.filterMapPaging();\r\n    },\r\n    filterParams: function() {\r\n      Shopify.queryParams = {};\r\n      if (location.search.length) {\r\n        for (var aKeyValue, i = 0, aCouples = location.search.substr(1).split('&'); i < aCouples.length; i++) {\r\n          aKeyValue = aCouples[i].split('=');\r\n          if (aKeyValue.length > 1) {\r\n            Shopify.queryParams[decodeURIComponent(aKeyValue[0])] = decodeURIComponent(aKeyValue[1]);\r\n          }\r\n        }\r\n      }\r\n    },\r\n    filterSortby: function() {\r\n      if (Shopify.queryParams.sort_by) {\r\n        var sortby = Shopify.queryParams.sort_by;\r\n        $(ajaxSortBy).val(sortby);\r\n      }\r\n    },\r\n    filterCreateUrl: function(baseLink) {\r\n      var newQuery = $.param(Shopify.queryParams).replace(/%2B/g, '+');\r\n      if (baseLink) {\r\n        if (newQuery != \"\") {\r\n          return baseLink + \"?\" + newQuery;\r\n        } else {\r\n          return baseLink;\r\n        }\r\n      }\r\n      return location.pathname + \"?\" + newQuery;\r\n    },\r\n    filterMapData: function(data) {\r\n      // 1. update product grid\r\n      $(ajaxContent).html($(ajaxContent, data.responseText).html());\r\n      // 2. update left filter\r\n      $(ajaxFillter).html($(ajaxFillter, data.responseText).html());\r\n      // 3. update collection title\r\n      $(ajaxCollectionTitle).html($(ajaxCollectionTitle, data.responseText).html());\r\n    },\r\n    filterAjaxClick: function(baseLink) {\r\n      delete Shopify.queryParams.page;\r\n      var newurl = apollo.filterCreateUrl(baseLink);\r\n      History.pushState({\r\n        param: Shopify.queryParams\r\n      }, pageTitle, newurl);\r\n      apollo.filterGetContent(newurl);\r\n    },\r\n    filterGetContent: function(newurl) {\r\n      $.ajax({\r\n        type: 'GET',\r\n        url: newurl,\r\n        data: {},\r\n        beforeSend: function() {\r\n          apollo.showLoading();\r\n        },\r\n        complete: function(data) {\r\n          apollo.filterMapData(data);\r\n          theme.wishlist.load();\r\n          theme.compare.load();\r\n          theme.countdown.load();\r\n          theme.priceRange.load();\r\n          theme.tooltip.load();\r\n          theme.collectionView.triggerView();\r\n          theme.swatchCard2.load();\r\n          theme.infiniteScroll.load();\r\n          apollo.hideLoading();\r\n        },\r\n        error: function(xhr, text) {\r\n          apollo.hideLoading();\r\n          alert($.parseJSON(xhr.responseText).description);\r\n        }\r\n      });\r\n    },\r\n    sidebarMapTagEvents: function() {\r\n      $(document).on('click','.advanced-filter a',function(event){\r\n        event.preventDefault();\r\n        $('.tooltip').removeClass('show');\r\n        var currentTags = [];\r\n        if (Shopify.queryParams.constraint) {\r\n          currentTags = Shopify.queryParams.constraint.split('+');\r\n        }\r\n        if (!$(this).parent().hasClass(\"active-filter\")) {\r\n          var otherTag = $(this).parents('.catalog_filter_ul').find(\"li.active-filter\");\r\n          if (otherTag.length > 0) {\r\n            var tagName = otherTag.data(\"handle\");\r\n            if (tagName) {\r\n              var tagPos = currentTags.indexOf(tagName);\r\n              if (tagPos >= 0) {\r\n                currentTags.splice(tagPos, 1);\r\n              }\r\n            }\r\n          }\r\n        }\r\n        var dataHandle = $(this).parent().data(\"handle\");\r\n        if (dataHandle) {\r\n          var tagPos = currentTags.indexOf(dataHandle);\r\n          if (tagPos >= 0) {\r\n            currentTags.splice(tagPos, 1);\r\n          } else {\r\n            currentTags.push(dataHandle);\r\n          }\r\n        }\r\n        if (currentTags.length) {\r\n          Shopify.queryParams.constraint = currentTags.join('+');\r\n        } else {\r\n          delete Shopify.queryParams.constraint;\r\n        }\r\n        apollo.filterAjaxClick();\r\n      });\r\n      $(document).on('click','.advanced-filter .icon',function(){\r\n        $(this).parent('.advanced-filter').find('a').trigger( \"click\" );\r\n      });\r\n    },\r\n    filterMapSorting: function() {\r\n      $(document).on('change',ajaxSortBy,function(){\r\n        Shopify.queryParams.sort_by = $(this).val();\r\n        apollo.filterAjaxClick();\r\n      })\r\n    },\r\n    filterMapPaging: function() {\r\n      $(document).on('click','.js-pagination a',function(){\r\n        event.preventDefault();\r\n        var linkPage = $(this).attr(\"href\").match(/page=\\d+/g);\r\n        if (linkPage) {\r\n          Shopify.queryParams.page = parseInt(linkPage[0].match(/\\d+/g));\r\n          if (Shopify.queryParams.page) {\r\n            var newurl = apollo.filterCreateUrl();\r\n            History.pushState({\r\n              param: Shopify.queryParams\r\n            }, pageTitle, newurl);\r\n            apollo.filterGetContent(newurl);\r\n          }\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  if ($(\".template-collection\")) {\r\n    History.Adapter.bind(window, 'statechange', function() {\r\n      var State = History.getState();\r\n      apollo.filterParams();\r\n    });\r\n  }\r\n  apollo.init();\r\n  \r\n})();\r\n\r\n$(theme.init);"],
  "mappings": "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",
  "names": ["instance", "images", "QtySelector", "topMenuHeight", "e", "event", "variants", "i", "htmlCurrently", "ui", "productHandle", "closest", "mess"]
}
