{
  "version": 3,
  "sources": ["/cdn/shop/t/5/assets/theme.js?view=ajax_product_block"],
  "sourcesContent": ["(function ($) {\n    var $body = $('body'),\n        $doc = $(document),\n        $html = $('html'),\n        $win = $(window),\n        sliderNavHTML;\n\n    $doc.ready(() => {\n        $doc.ajaxStart(() => {\n            halo.isAjaxLoading = true;\n        });\n\n        $doc.ajaxStop(() => {\n            halo.isAjaxLoading = false;\n        });\n\n        halo.ready();\n    });\n\n    document.addEventListener(\"DOMContentLoaded\", function () {\n        halo.init();\n    });\n\n    var halo = {\n        haloTimeout: null,\n        isAjaxLoading: false,\n\n        ready: function (){\n            this.loaderScript();\n            this.loaderProductBlock();\n            \n            if (navigator.userAgent.match(/Mac OS X.*(?:Safari|Chrome)/) && ! navigator.userAgent.match(/Chrome/)) {\n                document.body.classList.add('safari')\n            } else {\n                document.body.classList.add('chrome')\n            }\n\n            if (typeof InstallTrigger !== 'undefined') document.body.classList.add('firefox');\n\n            const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n            if (isIOS) document.body.classList.add('iOS')\n\n            if($body.hasClass('template-product')) {\n                this.loaderRecommendationsBlock();\n            }\n\n            if($('[data-product-tab-block]').length) {\n                this.clickedActiveProductTabs();\n            }\n\n            if ($body.hasClass('product-card-layout-07') || $body.hasClass('product-card-layout-08') ) {\n                this.calculateTranslateYHeight()\n            }\n            \n            window.sharedFunctions = {\n                setLocalStorageProductForWishlist: this.setLocalStorageProductForWishlist,\n                checkNeedToConvertCurrency: this.checkNeedToConvertCurrency,\n                productBlockSilder: this.productBlockSilder,    \n                calculateTranslateYHeight: this.calculateTranslateYHeight,\n                productCountdownCard: halo.productCountdownCard,\n                swapHoverVideoProductCard: halo.swapHoverVideoProductCard,\n                updateSidebarCart: halo.updateSidebarCart,\n            }\n        },\n        \n        init: function () {\n            this.initMultiTab();\n            this.initMultiTabMobile();\n            this.productBlockInfiniteScroll();\n            this.initGlobalCheckbox();\n            this.initColorSwatch();\n            this.initAddToCart();\n            this.initQuickShop();\n            this.initQuickCart();\n            this.initNotifyInStock();\n            this.initCompareProduct();\n            this.initWishlist();\n            this.initAskAnExpert();\n            this.initHeader();\n            this.headerLanguageCurrency();\n            this.headerMasonry();\n            this.initLiveChat();\n            this.headerSidebarSearch();\n            this.headerStickySearchForm();\n            this.initCountdown();\n            this.collectionCountdown();\n            this.handleScrollDown();\n            this.initVideoPopup();\n            this.swapHoverVideoProductCard();\n            this.initDynamicBrowserTabTitle();\n            this.initWarningPopup();\n            this.clickIconScrollSection();\n            this.specialBanner();\n            this.formMessage();\n            this.typingAnimation();\n            this.spotlightproductSlider();\n            this.doBeforeMegaMenuProductBlock();\n\n            if ($('.lookbook-carousel').length) {\n                this.lookbookCarousel();\n            }\n\n            // Init Quick View \n            if (window.quick_view.show || window.quick_view.show_mb) {\n                this.initQuickView();\n            }\n\n            // Init Mobile Menu \n            if (window.innerWidth < 1025) {\n                this.menuSidebarMobile();\n                this.menuSidebarMobileToggle();\n            }\n\n            // Check Lazyload Done\n            const loadingImages = document.querySelectorAll('.media--loading-effect img')\n            const productGrid = document.getElementById('main-collection-product-grid')\n\n            if (loadingImages.length > 0 || productGrid) {\n                this.initLazyloadObserver(loadingImages, productGrid);\n            }\n\n            if($body.hasClass('show_effect_close')) {\n                this.backgroundOverlayHoverEffect();\n                this.backgroundOverlayHoverEffect1();\n            }\n\n            if($body.hasClass('template-cart')) {\n                this.updateGiftWrapper();\n                this.activeCheckboxStickyCartMobile();\n            }\n            \n            if($body.hasClass('template-product') || $('.product-details').hasClass('featured-product')) {\n                this.initProductView($('.halo-productView'));\n                this.initProductBundle();\n                this.articleGallery();\n                this.toggleSidebarMobile(); \n                this.initCollapseSidebarBlock();    \n                this.initCategoryActive();\n                this.productCustomInformation();\n                this.iconZoomClickMobile();\n                this.productBlockSilderSidebar();\n            }\n\n            if($body.hasClass('template-blog') || $body.hasClass('template-article')) {\n                this.initCollapseSidebarBlock();\n                this.initCategoryActive();\n                this.toggleSidebarMobile();\n                this.initBlogMasonry();\n                this.productBlockSilderSidebar();\n                this.productBlockSilderArticle();\n            }\n\n            if($body.hasClass('template-article')) {\n                this.articleGallery();\n            }\n\n            if($body.hasClass('template-collection') || $body.hasClass('template-search')) {\n                this.initCollapseSidebarBlock();\n                this.initCategoryActive();\n                this.toggleSidebarMobile();\n                this.productBlockSilderSidebar();\n                this.initInfiniteScrolling();\n                this.initQuickShopProductList();\n            }\n\n            if($body.hasClass('template-list-collections')) {\n                this.toggleSidebarMobile();\n                this.productBlockSilderSidebar();\n            }\n\n            if($body.hasClass('template-collection') && $('.collection-express-order').length) {\n                this.toggleVariantsForExpressOrder();\n                this.initExpressOrderAddToCart();\n            }\n\n            if($body.hasClass('product-card-layout-08')) {\n                halo.productCountdownCard();\n            }\n            \n            halo.checkScrollLayoutForRecenlyViewed();\n            \n\n            let checkMenuMobile;\n            window.innerWidth > 1024 ? checkMenuMobile = true : checkMenuMobile = false;\n\n            $win.on('resize', () => {\n                this.headerSidebarSearch();\n                this.specialBanner();\n                this.specialBannerSlider();\n                this.unsymmetricalSlider();\n                this.doBeforeMegaMenuProductBlock();\n                if (window.innerWidth > 1024) {\n                    document.body.classList.remove('menu_open')\n                } else if (checkMenuMobile) {\n                    checkMenuMobile = false;\n                    this.menuSidebarMobile()\n                    this.menuSidebarMobileToggle()\n                    this.initMultiTab()\n                    this.initMultiTabMobile()\n                }\n            });\n        },\n        \n        checkNeedToConvertCurrency: function () {\n            var currencyItem = $('.dropdown-item[data-currency]');\n            if (currencyItem.length) {\n                return (window.show_multiple_currencies && typeof Currency != 'undefined' && Currency.currentCurrency != shopCurrency) || window.show_auto_currency;\n            } else {\n                return;\n            }\n        },\n\n        loaderScript: function() {\n            var load = function(){\n                var script = $('[data-loader-script]');\n\n                if (script.length > 0) {\n                    script.each((index, element) => {\n                        var $this = $(element),\n                            link = $this.data('loader-script'),\n                            top = element.getBoundingClientRect().top;\n\n                        if (!$this.hasClass('is-load')){\n                            if (top < window.innerHeight + 100) {\n                                halo.buildScript(link);\n                                $('[data-loader-script=\"' + link + '\"]').addClass('is-load');\n                            }\n                        }\n                    })\n                }\n            }\n            \n            load();\n            window.addEventListener('scroll', load);\n        },\n\n        buildScript: function(name) {\n            var loadScript = document.createElement(\"script\");\n            loadScript.src = name;\n            document.body.appendChild(loadScript);\n        },\n\n        buildStyleSheet: function(name, $this) {\n            if (name == '') return;\n            const loadStyleSheet = document.createElement(\"link\");\n            loadStyleSheet.rel = 'stylesheet';\n            loadStyleSheet.type = 'text/css';\n            loadStyleSheet.href = name;\n            $this.parentNode.insertBefore(loadStyleSheet, $this);\n        },\n\n        loaderProductBlock: function() {\n            var isAjaxLoading = false;\n\n            $doc.ajaxStart(() => {\n                isAjaxLoading = true;\n            });\n\n            $doc.ajaxStop(() => {\n                isAjaxLoading = false;\n            });\n\n            const handler = (entries, observer) => {\n                entries.forEach(entry => {\n                    if (entry.isIntersecting) {\n                        const $block = $(entry.target);\n                        if ($block.hasClass('ajax-loaded')) return;\n\n                        var url = $block.data('collection'),\n                            layout = $block.data('layout'),\n                            limit = $block.data('limit'),\n                            image_ratio = $block.data('image-ratio'),\n                            swipe = $block.data('swipe'),\n                            sectionId = $block.attr('sectionId'),\n                            hasCountdown = $block.attr('hasCountdown');\n\n                        if(url != null && url != undefined) {\n                            $.ajax({\n                                type: 'get',\n                                url: window.routes.root + '/collections/' + url,\n                                cache: false,\n                                data: {\n                                    view: 'ajax_product_block',\n                                    constraint: 'limit=' + limit + '+layout=' + layout + '+sectionId=' + sectionId + '+imageRatio=' + image_ratio + '+swipe=' + swipe + '+hasCountdown=' + hasCountdown\n                                },\n                                beforeSend: function () {\n                                    $block.addClass('ajax-loaded');\n                                },\n                                success: function (data) {\n                                    if (url != '') {\n                                        const res = halo.handleResponse($(data), 0, limit);\n                                        if (layout == 'grid') {\n                                            $block.find('.products-grid').html(res);\n                                        } else if (layout == 'slider'){\n                                            $block.find('.products-carousel').html(res);\n                                        } else if (layout == 'scroll') {\n                                            $block.find('.products-flex').html(res);\n                                        }\n                                       \n                                        $block.find('.card .variants-popup-content .selector-wrapper .swatch-element').each(function() {\n                                            const $input = $(this).find('input');\n                                            const $label = $(this).find('label');\n\n                                            $input.attr({\n                                                id: ($input.attr('id') || '') + sectionId,\n                                                name: ($input.attr('name') || '') + sectionId\n                                            });\n                                            $label.attr('for', ($label.attr('for') || '') + sectionId);\n                                        });\n\n                                        $block.find('.card').each(function() {\n                                            const $qsForm = $(this).find('.variants-popup-content form');\n                                            const $acForm = $(this).find('.card-action form');\n                                            const $select = $(this).find('.variants-popup-content select');\n                                            const $acButton = $(this).find('.card-action form button');\n                                            const $qsButton = $(this).find('.variants-popup-content .product-card__button2 button');\n\n                                            $qsForm.attr('id', ($qsForm.attr('id') || '') + sectionId);\n                                            $acForm.attr('id', ($acForm.attr('id') || '') + sectionId);\n                                            $select.attr('id', ($select.attr('id') || '') + sectionId);\n                                            $acButton.attr('data-form-id', ($acButton.attr('data-form-id') || '') + sectionId);\n                                            $qsButton.attr('data-form-id', ($qsButton.attr('data-form-id') || '') + sectionId);\n                                        });\n\n                                    }\n                                },\n                                complete: function () {\n                                    if (layout == 'slider') {\n                                        halo.productBlockSilder($block);\n                                    }\n\n                                    if ($block.hasClass('special-banner__product') && layout == 'grid' && window.innerWidth < 1200) {\n                                        $block.find('.special-banner__products--grid').addClass('products-carousel');\n                                        halo.productBlockSilder($block);\n                                    }\n\n                                    if ($block.hasClass(\"halo-block-unsymmetrical\") && layout == 'grid' && window.innerWidth < 1200) {\n                                        halo.unsymmetricalSlider($block);\n                                    }\n                                    \n                                    if(window.compare.show){\n                                        var $compareLink = $('[data-compare-link]');\n\n                                        halo.setLocalStorageProductForCompare($compareLink);\n                                    }\n\n                                    halo.swapHoverVideoProductCard();\n\n                                    if(window.wishlist.show){\n                                        halo.setLocalStorageProductForWishlist();\n                                    }\n\n                                    if (halo.checkNeedToConvertCurrency()) {\n                                        Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                                    };\n\n                                    if ($('body').hasClass('cursor-fixed__show')){\n                                        window.sharedFunctionsAnimation.onEnterButton();\n                                        window.sharedFunctionsAnimation.onLeaveButton();\n                                    }\n\n                                    if($body.hasClass('product-card-layout-08')) {\n                                        halo.productCountdownCard();\n                                    }\n\n                                    if ($body.hasClass('product-card-layout-07') || $body.hasClass('product-card-layout-08')) {\n                                        halo.calculateTranslateYHeight()\n                                    }\n                                }\n                            });\n                        } else {\n                            $block.addClass('ajax-loaded');\n\n                            if (layout == 'slider') {\n                                halo.productBlockSilder($block);\n                            }\n\n                            if (halo.checkNeedToConvertCurrency()) {\n                                Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                            };\n                        }\n                    }\n                })\n            }\n\n            this.productBlock = document.querySelectorAll('[data-product-block]');\n\n            const config = {\n                rootMargin: '0px 0px 200px 0px',\n            }\n\n            this.observer = new IntersectionObserver(handler, config);\n            this.productBlock.forEach(block => {\n                this.observer.observe(block);\n            });\n        },\n\n        handleResponse($res, productToShow, limit) {\n            $res = $res.splice(productToShow, limit);\n            return $res\n        },\n\n        loaderRecommendationsBlock: function(){\n            halo.buildRecommendationBlock();\n        },\n\n        headerMasonry: function(){\n            $('.menu-dropdown__wrapper [data-masonry]').masonry({\n              columnWidth: '.grid-sizer',\n              itemSelector: '[data-gridItem]'\n            });\n        },\n\n        initLiveChat: function () {\n            var $item_globe = $('.live-wrapper-icon');\n            $item_globe.on('click', function (e) {\n                $(this).parent().toggleClass('live_help--active');          \n            });\n\n            $body.on('click', function (e) {\n                if(($('.live_help').hasClass('live_help--active')) && ($(event.target).closest('.live_help').length === 0)){\n                    e.preventDefault();\n                    $('.live_help').removeClass('live_help--active');\n                }\n            });\n        },\n\n        initHeader: function() {\n            const headerAll = document.querySelectorAll('[class*=\"section-header\"]')\n            if (headerAll) {\n                let index = headerAll.length + 20;\n                headerAll.forEach((element) => {\n                    if (element.classList.contains('section-header-mobile')) return;\n                    element.setAttribute('data-index', index);\n                    element.style.zIndex = index;\n                    index--\n                })\n\n                const headerBasicTransparent = document.querySelector('.header-basic--transparent')\n                if (headerBasicTransparent && document.body.classList.contains('template-index')) {\n                    const height = headerBasicTransparent.offsetHeight,\n                        navTransparent = document.querySelector('.header-navigation[class*=\"--transparent\"]')\n                    if (navTransparent) {\n                        navTransparent.style.top = `${height}px`\n                        navTransparent.classList.add('has-top')\n                    }\n                }\n            }\n        },\n\n        headerLanguageCurrency: function() {\n            if (!document.querySelector('.header-language_currency')) return;\n            const header = document.querySelectorAll('[class*=\"section-header-\"]')\n\n            document.addEventListener('click', (event) => {\n                const $target = event.target;\n                const $headerLanguageCurrency = $target.closest('.header-language_currency');\n                const languageCurrency = $headerLanguageCurrency?.querySelector('.top-language-currency');\n                const dropdownCurrency = $headerLanguageCurrency?.querySelector('.dropdown-currency');\n                const dropdownLanguage = $headerLanguageCurrency?.querySelector('.dropdown-language');\n\n                if ($target.matches('.header-language_currency') || $target.closest('.header-language_currency')) {\n                    if ($target.matches('.icon-languageCurrency') || $target.closest('.icon-languageCurrency')) {\n                        languageCurrency?.classList.toggle('show')\n                    }\n                    else if (($target.matches('.top-language-currency') || $target.closest('.top-language-currency')) && !document.querySelector('.icon-languageCurrency')) {\n                        languageCurrency?.classList.toggle('show')\n                    }\n\n                    if ($target.matches('.halo-top-currency') || $target.closest('.halo-top-currency')) {\n                        dropdownLanguage?.classList.remove('show')\n                        dropdownCurrency?.classList.toggle('show')\n                    }\n                    \n                    if ($target.matches('.halo-top-language') || $target.closest('.halo-top-language')) {\n                        dropdownCurrency?.classList.remove('show')\n                        dropdownLanguage?.classList.toggle('show')\n                    }\n\n                    if ($target.matches('.dropdown-menu .dropdown-item')) {\n                        dropdownCurrency?.classList.remove('show')\n                        dropdownLanguage?.classList.remove('show')\n                    }\n                }\n                else {\n                    header.forEach(element => {\n                        element.querySelector('.top-language-currency')?.classList.remove('show')\n                        element.querySelector('.dropdown-currency')?.classList.remove('show')\n                        element.querySelector('.dropdown-language')?.classList.remove('show')\n                    })\n                }\n            })\n        },\n\n        headerSidebarSearch: function() {\n            var headerSearchPC = $('.header-top .header__search .search_details'),\n                headerSearchMB = $('#search-form-mobile .halo-sidebar-wrapper .search_details'),\n                headerwraperSearchPC = $('.header-top .header__search'),\n                headerwraperSearchMB = $('#search-form-mobile .halo-sidebar-wrapper'),\n                searchDetails = $('.search_details'),\n                predictiveSearchPC =  $('.header-top .header__search predictive-search'),\n                predictiveSearchMB = $('#search-form-mobile .halo-sidebar-wrapper predictive-search');\n \n             if (predictiveSearchPC.length === 0) predictiveSearchPC =  $('.header-top .header__search .search_details');\n             if (predictiveSearchMB.length === 0) predictiveSearchMB =  $('#search-form-mobile .halo-sidebar-wrapper .search_details');\n            if (window.innerWidth < 1025) {\n                if($('.header').hasClass('header-01')){\n                    predictiveSearchPC.appendTo(headerwraperSearchMB);\n                }\n                searchDetails.attr('open','true');\n                $('[data-search-mobile]').on('click', (event) => {\n                    event.preventDefault();\n                    $('body').addClass('open_search_mobile');\n                });\n                $('[data-search-close-sidebar], .background-overlay').on('click', (event) => {\n                    event.preventDefault();\n                    $('body').removeClass('open_search_mobile');\n                });\n            }else{\n                if($('.header').hasClass('header-01')){\n                    predictiveSearchMB.appendTo(headerwraperSearchPC);\n                }\n                searchDetails.removeAttr('open');\n\n                $('.search-modal__close-button').on('click', (event) => {\n                    $('.search_details').removeAttr('open');\n                    $('body').removeClass('open_search_menu');\n                });\n\n                // Click Search Icon On Header Nav And Sticky Menu\n                $('[data-search-menu]').on('click', (event) => {\n                    event.preventDefault();\n                    $('body').addClass('open_search_menu');\n                });\n            }\n        },\n\n        headerStickySearchForm: function() {\n            var iconSearchSlt = '[data-search-sticky-form]';\n            var iconSearchMenu = '[data-search-menu-sticky-form] .icon-search';\n            var iconSearchMenuCustom = '[data-search-menu-sticky-form] .icon-search-custom';\n\n            if ($(window).width() > 1025) {\n                $(document).off('click.toggleSearch', iconSearchSlt).on('click.toggleSearch', iconSearchSlt, function(event) {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    $('body').addClass('sticky-search-open');\n                    $('.search_details').attr('open','true');\n                });\n\n                $(document).off('click.hideSearch').on('click.hideSearch', function(event) {\n                    var formSearch = $('.search-modal__form'),\n                        quickSearch = $('.quickSearchResultsWrap');\n                    if ($('body').hasClass('sticky-search-open') && !formSearch.has(event.target).length && !quickSearch.has(event.target).length && !$(event.target).hasClass('search-modal__content') && $(event.target).closest('.search-modal__content').length == 0) {\n                        $('body').removeClass('sticky-search-open');\n                        $('[class*=\"section-header-\"]').removeClass('sticky-search-menu-open');\n                        $('.search_details').removeAttr('open');\n                    }\n                });\n\n                // Click Search Icon On Header Nav And Sticky Menu\n                $(document).off('click.toggleSearch', iconSearchMenu).on('click.toggleSearch', iconSearchMenu, function(event) {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    $(event.target).closest('[class*=\"section-header-\"]').addClass('sticky-search-menu-open');\n                    $(event.target).closest('.section-header-navigation').css('z-index', '101');\n                    $('.search_details').attr('open','true');\n                });\n\n                // Click Search Icon On Header Hamburger - Search Dropdown Style Layout Custom\n                $(document).off('click.toggleSearch', iconSearchMenuCustom).on('click.toggleSearch', iconSearchMenuCustom, function(event) {\n                    $(event.target).closest('[class*=\"section-header-\"]').addClass('sticky-search-menu-custom-open');\n                });\n\n                $(document).off('click.hideSearchSticky').on('click.hideSearchSticky', function(event) {\n                    var formSearch = $('.header-navigation .search-modal__form'),\n                        quickSearch = $('.header-navigation .quickSearchResultsWrap');\n                    if ($('[class*=\"section-header-\"]').hasClass('sticky-search-menu-open') && !formSearch.has(event.target).length && !quickSearch.has(event.target).length && !$(event.target).hasClass('search-modal__content') && $(event.target).closest('.search-modal__content').length == 0) {\n                        const header = $(iconSearchMenu).closest('.section-header-navigation');\n                        const index = header.data('index');\n\n                        $('[class*=\"section-header-\"]').removeClass('sticky-search-menu-open');\n                        \n                        header.css('z-index', index);\n                        $('.header-navigation .search_details').removeAttr('open');\n                        if(quickSearch.hasClass('is-show')) {\n                            quickSearch.removeClass('is-show').addClass('hidden')\n                        }\n                    }\n                    if (($(event.target).closest('.search-modal__content').length === 0)){\n                        $('body').removeClass('open_search_menu');\n                        $('[class*=\"section-header-\"]').removeClass('sticky-search-menu-custom-open');\n                    }\n                });\n            }\n        },\n\n        menuSidebarMobile: function() {\n            var buttonIconOpen = $('.mobileMenu-toggle'),\n                buttonClose = $('.halo-sidebar-close, .background-overlay');\n\n            const menuSidebarMobileOpen = () => {\n                $body.addClass('menu_open');\n                $('.list-menu-loading').remove();\n                if(window.mobile_menu == 'default'){\n                    if(!$('#navigation-mobile .site-nav-mobile.nav .header__inline-menu').length){\n                        $('.header .header__inline-menu').appendTo('#navigation-mobile .site-nav-mobile.nav');\n                    }\n                }\n                if(!$('#navigation-mobile .site-nav-mobile.nav-account .free-shipping-text').length){\n                    $('.header-top--wrapper .header-top--right .free-shipping-text').appendTo('#navigation-mobile .site-nav-mobile.nav-account .wrapper-links');\n                }\n                if(!$('#navigation-mobile .site-nav-mobile.nav-account .customer-service-text').length){\n                    $('.header-top--wrapper .header-top--right .customer-service-text').appendTo('#navigation-mobile .site-nav-mobile.nav-account .wrapper-links');\n                }\n                if(!$('#navigation-mobile .site-nav-mobile.nav-account .header__location').length){\n                    $('.header-top--wrapper .header-top--right .header__location').appendTo('#navigation-mobile .site-nav-mobile.nav-account .wrapper-links');\n                }\n                if(!$('#navigation-mobile .top-language-currency').length){\n                    if($('.header').hasClass('header-03')){\n                        $('.header .header-bottom-right .top-language-currency').appendTo('#navigation-mobile .site-nav-mobile.nav-currency-language');\n                    }else if($('.header').hasClass('header-05')){\n                        $('.header .header-top--left .top-language-currency').appendTo('#navigation-mobile .site-nav-mobile.nav-currency-language');\n                    }else{\n                        $('.header .header-language_currency .top-language-currency').appendTo('#navigation-mobile .site-nav-mobile.nav-currency-language');\n                    }\n                }\n            }\n\n            if (document.body.matches('.menu_open')) {\n                menuSidebarMobileOpen();\n            }\n\n            buttonIconOpen.off('click.toggleCurrencyLanguage').on('click.toggleCurrencyLanguage', (event) =>{\n                event.preventDefault();\n                menuSidebarMobileOpen();\n            });\n\n            buttonClose.off('click.toggleCloseCurrencyLanguage').on('click.toggleCloseCurrencyLanguage', () =>{\n                $body.removeClass('menu_open');\n                $('#navigation-mobile').off('transitionend.toggleCloseMenu').on('transitionend.toggleCloseMenu', () => {\n                    if (!$body.hasClass('menu_open')) {\n\n                        if(!$('.header .header__inline-menu').length){\n                            if($('.header').hasClass('header-03') || $('.header').hasClass('header-04') || $('.header').hasClass('header-07') || $('.header').hasClass('header-08')){\n                                $('#navigation-mobile .site-nav-mobile.nav .header__inline-menu').appendTo('.header .header-bottom--wrapper .header-bottom-left');\n                            }else{\n                                $('#navigation-mobile .site-nav-mobile.nav .header__inline-menu').appendTo('.header .header-bottom--wrapper');\n                            }\n                        }\n                        if(!$('.header-top--wrapper .header-top--right .free-shipping-text').length){\n                            if(!$('.header-04').hasClass('style_2')){\n                                $('#navigation-mobile .site-nav-mobile.nav-account .free-shipping-text').insertBefore('.header-top--wrapper .header-top--right .header__group');\n                            }\n                        }\n                        if(!$('.header-top--wrapper .header-top--right .header__location').length){\n                            $('#navigation-mobile .site-nav-mobile.nav-account .header__location').insertBefore('.header-top--wrapper .header-top--right .header__group');\n                        }\n                        if(!$('.header-top--wrapper .header-top--right .customer-service-text').length){\n                            if($('.header').hasClass('header-03')){\n                                $('#navigation-mobile .site-nav-mobile.nav-account .customer-service-text').insertBefore('.header-top--wrapper .header-top--right .header__group .header__icon--wishlist');\n                            }else{\n                                $('#navigation-mobile .site-nav-mobile.nav-account .customer-service-text').insertBefore('.header-top--wrapper .header-top--right .top-language-currency');\n                            }\n                        }\n                        if(!$('.header-language_currency .top-language-currency').length){\n                            if($('.header').hasClass('header-03')){\n                                $('#navigation-mobile .site-nav-mobile .top-language-currency').appendTo('.header .header-bottom--wrapper .header-bottom-right .header-language_currency');\n                            }else if($('.header').hasClass('header-04')){\n                                $('#navigation-mobile .site-nav-mobile .top-language-currency').appendTo('.header .header-bottom--wrapper .header-bottom-right .header-language_currency');\n                            }else if($('.header').hasClass('header-05')){\n                                $('#navigation-mobile .site-nav-mobile .top-language-currency').appendTo('.header .header-top--wrapper .header-top--left .header-language_currency');\n                            }else{\n                                $('#navigation-mobile .site-nav-mobile .top-language-currency').insertBefore('.header .header-language_currency .header__search');\n                            }\n                        }\n                    }\n                })\n                    \n            });\n\n            $doc.on('click', '.halo-sidebar-close', function (e) {\n                e.preventDefault();\n                e.stopPropagation();\n                $body.removeClass('menu_open');\n            });\n        },\n\n        menuSidebarMobileToggle: function() {\n            $body.on('click', '.site-nav-mobile .list-menu .menu_mobile_link', function (e) {\n                if(!e.currentTarget.classList.contains('list-menu__item--end')){\n                    e.preventDefault();\n                    e.stopPropagation();\n                    var $target = $(this);\n                    var $parent = $target.parent();\n                    var $menuDislosure1 = $target.parent().find('ul.list-menu--disclosure-1');\n\n                    $parent.removeClass('is-hidden').addClass('is-open').removeClass('d-none');\n                    $menuDislosure1.off('transitionend.toggleMenuLink1').on('transitionend.toggleMenuLink1', () => {\n                        if ($parent.hasClass('is-open') && !$parent.hasClass('is-hidden') && !$parent.hasClass('d-none')) {\n                            // $parent.addClass('d-none')\n                            $parent.siblings().removeClass('is-open').addClass('is-hidden').removeClass('d-none');\n                        }\n                    })\n\n                    // $target.parent().siblings().removeClass('is-open').addClass('is-hidden');\n                    // $target.parent().removeClass('is-hidden').addClass('is-open');\n                }\n            });\n\n            $body.on('click', '.site-nav-mobile .list-menu .menu_mobile_link_2', function (e) {\n                e.preventDefault();\n                e.stopPropagation();\n                var $target = $(this);\n                var $target = $(this);\n                var $parent = $target.parent().parent();\n                var $menuDislosure2 = $target.parent().find('ul.list-menu--disclosure-2');\n                var $parentToScroll = $target.parent().parent().parent().parent().parent().parent();\n\n                $parent.removeClass('is-hidden').addClass('is-open').removeClass('d-none');\n                $menuDislosure2.off('transitionend.toggleMenuLink2').on('transitionend.toggleMenuLink2', () => {\n                    if ($parent.hasClass('is-open') && !$parent.hasClass('is-hidden') && !$parent.hasClass('d-none')) {\n                        $parent.addClass('d-none')\n                        $parent.siblings().removeClass('is-open').addClass('is-hidden').removeClass('d-none');\n                        $parentToScroll.animate({\n                            scrollTop: 0\n                        }, 0);\n                    }\n                })\n\n                // if($('.header').hasClass('header-04') || $('.header').hasClass('header-01') || $('.header').hasClass('header-02')){\n                    // $target.parent().parent().siblings().removeClass('is-open').addClass('is-hidden');\n                    // $target.parent().parent().removeClass('is-hidden').addClass('is-open');\n                    // $target.parent().parent().parent().parent().parent().parent().animate({\n                    //     scrollTop: 0\n                    // }, 0);\n                // } else{\n                //     $target.parents('.site-nav').siblings().removeClass('is-open').addClass('is-hidden');\n                //     $target.parents('.site-nav').removeClass('is-hidden').addClass('is-open');\n                //     $target.parents('.menu-dropdown__wrapper').animate({\n                //         scrollTop: 0\n                //     }, 0);\n                // }\n\n                if($('.menu-dropdown').hasClass('megamenu_style_5') || $('.menu-dropdown').hasClass('megamenu_style_4') || $('.menu-dropdown').hasClass('megamenu_style_3') || $('.menu-dropdown').hasClass('megamenu_style_2') || $('.menu-dropdown').hasClass('megamenu_style_1')){\n                    $target.parents('.menu-dropdown').animate({\n                        scrollTop: 0\n                    }, 0);\n                }\n\n                $target.parents('.menu-dropdown').addClass('is-overflow');\n            });\n\n            $body.on('click', '.nav-title-mobile', function (e) {\n                e.preventDefault();\n                e.stopPropagation();\n                var $target = $(this),\n                    $parentLv1 = $target.parent().parent().parent().parent('.is-open'),\n                    $parentLv2 = $target.parent().parent().parent('.is-open'),\n                    $parentLv3 = $target.parent().parent('.is-open');\n\n                $parentLv1.siblings().removeClass('is-hidden');\n                $parentLv1.removeClass('is-open').removeClass('d-none');\n                $parentLv2.siblings().removeClass('is-hidden');\n                $parentLv2.removeClass('is-open').removeClass('d-none');\n                $parentLv3.siblings().removeClass('is-hidden');\n                $parentLv3.removeClass('is-open').removeClass('d-none');\n                $('.menu-dropdown').removeClass('is-overflow');\n            });\n\n            if(window.mobile_menu != 'default'){\n                $doc.on('click', '[data-mobile-menu-tab]', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    var tabItem = event.currentTarget.closest('li'),\n                        tabTarget = event.currentTarget.dataset.target;\n\n                    if(!tabItem.classList.contains('is-active')){\n\n                        document.querySelector('[data-navigation-tab-mobile]').querySelectorAll('li').forEach((element) =>{\n                            if(element != tabItem){\n                                element.classList.remove('is-active');\n                            } else {\n                                element.classList.add('is-active');\n\n                                document.querySelectorAll('[id^=\"MenuMobileListSection-\"]').forEach((tab) =>{\n                                    if(tab.getAttribute('id') == tabTarget) {\n                                        tab.classList.remove('is-hidden');\n                                        tab.classList.add('is-visible');\n                                    } else {\n                                        tab.classList.remove('is-visible');\n                                        tab.classList.add('is-hidden');\n                                    }\n                                });\n                            }\n                        });\n                    }\n                });\n            };\n\n            $(document).on('click', '[data-navigation-mobile] .no-megamenu .menu-lv-1__action', (event) => {\n                const hash = $(event.currentTarget).attr('href').split('#')[1];\n\n                if (hash != undefined && hash != '' && $(`#${hash}`).length) {\n                    $('body').removeClass('menu_open');\n                    $('html, body').animate({\n                        scrollTop: $(`#${hash}`).offset().top\n                    }, 700);\n                }\n            })\n        },\n\n        setCookie(cname, cvalue, exdays){\n            const d = new Date();\n            d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\n            const expires = 'expires=' + d.toUTCString();\n            document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n        },\n\n        initMultiTab: function() {\n            let designMode, showMenu, check = true;\n            document.body.matches('.shopify-design-mode') ? designMode = true : designMode = false;\n            document.body.matches('.menu_open') ? showMenu = true : showMenu = false;\n                \n            const loadMenuDefault = () => {\n                if (check) {\n                    check = false;\n                    halo.initMobileMenuDefault(url)\n                }\n            }\n\n            const loadMenuTab = () => {\n                if (check) {\n                    check = false;\n                    halo.initMultiTabMobile()\n                }\n            }\n            \n            if($('[data-menu-tab]').length > 0){\n                \n                var active = $('[data-menu-tab] li.is-active').data('load-page'),\n                    url = window.routes.root + `/search?type=product&q=${active}&view=ajax_mega_menu`;\n              \n                if($body.hasClass('template-index')){\n                    if ($win.width() < 1025) {\n                        if(window.mobile_menu == 'default'){\n                            window.addEventListener('load', () => {\n                                if (designMode || showMenu) {\n                                    loadMenuDefault();\n                                }\n                                else {\n                                    document.body.addEventListener('click', () => {\n                                        loadMenuDefault();\n                                    }, false)\n                                }\n                            }, false)\n                        } else {\n                            window.addEventListener('load', () => {\n                                if (designMode || showMenu) {\n                                    loadMenuTab();\n                                }\n                                else {\n                                    document.body.addEventListener('click', () => {\n                                        loadMenuTab();\n                                    }, false)\n                                }\n                            }, false)\n                        }\n                    }\n                } else {\n                    if ($win.width() < 1025) {\n                        if(window.mobile_menu == 'default'){\n                            window.addEventListener('load', () => {\n                                if (designMode || showMenu) {\n                                    loadMenuDefault();\n                                }\n                                else {\n                                    document.body.addEventListener('click', () => {\n                                        loadMenuDefault();\n                                    }, false)\n                                }\n                             }, false)\n                        } else {\n                            window.addEventListener('load', () => {\n                                if (designMode || showMenu) {\n                                    loadMenuTab();\n                                }\n                                else {\n                                    document.body.addEventListener('click', () => {\n                                        loadMenuTab();\n                                    }, false)\n                                }\n                            }, false)\n                        }\n                    }\n                }\n            } else {\n                var url = window.routes.root + '/search?view=ajax_mega_menu';\n\n                if ($win.width() < 1025) {\n                    if (window.mobile_menu == \"default\") {\n                        if (designMode || showMenu) {\n                            loadMenuDefault();\n                        }\n                        else {\n                            document.body.addEventListener(\"click\",() => {\n                                loadMenuDefault();\n                            }, false)\n                        }\n                    } else {\n                        window.addEventListener(\"load\",() => {\n                            if (designMode || showMenu) {\n                                loadMenuTab();\n                            }\n                            else {\n                                document.body.addEventListener(\"click\",() => {\n                                    loadMenuTab();\n                                }, false)\n                            }\n                        }, false)\n                    }\n                }\n            }\n        },\n\n        initMobileMenuDefault: function(url) {\n            const menuMobile = $('[data-navigation-mobile]');\n            const nav = $('#HeaderNavigation [data-navigation]');\n            const style = nav.attr('style') != undefined ? nav.attr('style') : nav.closest('#HeaderNavigation').attr('style');\n            $('.list-menu-loading').remove();\n            menuMobile.append(`<nav class=\"header__inline-menu\" data-navigation role=\"navigation\" style=\"${style != undefined ? style : ''}\">${nav.html() != undefined ? nav.html() : ''}</nav>`);\n\n            const topLanCur = $('.top-language-currency');\n            const lanCurMobile = $('#navigation-mobile .nav-currency-language');\n            if (lanCurMobile.text().trim() == '' && topLanCur.length > 0) lanCurMobile.append(`<div class=\"top-language-currency\">${topLanCur.html()}</div>`)\n\n            // Menu Mobile Tab on Header Vertical\n            const menuVertical = document.querySelector('.header-nav-vertical-menu .vertical-menu .header__menu-vertical')\n            if(menuVertical){\n              document.querySelector('.halo-sidebar.halo-sidebar_menu').classList.add('has-menu-vertical')\n\n              const menuVerticalTitle = document.querySelector('.header-nav-vertical-menu .vertical-menu .categories-title__button .title').innerHTML\n              const navMobile =  document.querySelector('.site-nav-mobile.nav')\n              const navMobileTitle =  navMobile.querySelector('.menu-heading-mobile')\n              const span = document.createElement('span')\n              span.classList.add('title')\n              span.innerHTML = menuVerticalTitle;\n              navMobileTitle.appendChild(span);\n              navMobile.appendChild(menuVertical);\n            \n              const menuVerticalNav = document.querySelector('.site-nav-mobile.nav .header__menu-vertical')\n              menuVerticalNav.classList.add('header__inline-menu')\n            \n              const tabTitle = document.querySelectorAll('.site-nav-mobile.nav .menu-heading-mobile .title')\n              const mobileMenu = document.querySelectorAll('.site-nav-mobile.nav .header__inline-menu')\n              tabTitle[0].classList.add('is-active')\n              mobileMenu[0].classList.add('is-active')\n              \n              tabTitle.forEach((item,index) => {\n                item.addEventListener('click', ()=> {\n                  tabTitle.forEach(e => e.classList.remove('is-active'))\n                  item.classList.add('is-active')\n                  mobileMenu.forEach(e => e.classList.remove('is-active'))\n                  mobileMenu[index].classList.add('is-active')\n                })\n              })\n            }\n\n            if (window.innerWidth < 1025) {\n                var menuItemMega = $('.menu-lv-item.has-megamenu');\n\n                if (menuItemMega.length > 0) {\n                    menuItemMega.on('click', function (e) {\n                        var block = $(this).find('.menu-dropdown__block--content .products-carousel');\n                        var handle = block.data('product');\n                        var url = block.data('collection');\n                        var url_handle;\n\n                        if (block.hasClass('megamenu_1')) {\n                            if (handle) {\n                                url_handle = window.routes.root + '/products/' + handle;\n                            }\n                        } else if (block.hasClass('megamenu_5')) {\n                            if (url) {\n                                url_handle = window.routes.root + '/collections/' + url;\n                            }\n                        }\n\n                        if (url_handle) {\n                            halo.renderMegaMenuProductBlock(block, url_handle);\n                        }\n                    });\n                }\n            }\n        },\n\n        initMultiTabMobile: function() {\n            if ($win.width() < 1025) {\n                if(window.mobile_menu == 'custom'){\n                    var chk = true,\n                        menuElement = $('[data-section-type=\"menu\"]'),\n                        menuMobile = $('[data-navigation-mobile]'),\n                        menuTabMobile = $('[data-navigation-tab-mobile]');\n\n                    const loadMenu = () => {\n                        if (chk) {\n                            chk = false;\n                            const content = document.createElement('div');\n                            const tab = document.createElement('ul');\n                            \n                            Object.assign(tab, {\n                                className: 'menu-tab list-unstyled'\n                            });\n                            \n                            tab.setAttribute('role', 'menu');\n                            \n                            menuElement.each((index, element) => {\n                                var currentMenu = element.querySelector('template').content.firstElementChild.cloneNode(true);\n                                \n                                if(index == 0){\n                                    currentMenu.classList.add('is-visible'); \n                                } else {\n                                    currentMenu.classList.add('is-hidden');\n                                }\n                                \n                                content.appendChild(currentMenu);\n                            });\n\n                            content.querySelectorAll('[id^=\"MenuMobileListSection-\"]').forEach((element, index) => {\n                                var tabTitle = element.dataset.heading,\n                                    tabId = element.getAttribute('id'),\n                                    tabElement = document.createElement('li');\n\n                                Object.assign(tabElement, {\n                                    className: 'item'\n                                });\n\n                                tabElement.setAttribute('role', 'menuitem');\n\n                                if (index == 0) {\n                                    tabElement.classList.add('is-active');\n                                }\n\n                                tabElement.innerHTML = `<a role=\"link\" aria-disabled=\"true\" class=\"link\" data-mobile-menu-tab data-target=\"${tabId}\">${tabTitle}</a>`;\n\n                                tab.appendChild(tabElement);\n                            });\n\n                            $('.list-menu-loading').remove();\n                            menuTabMobile.html(tab);\n                            menuMobile.html(content.innerHTML);\n                        }\n\n                    }\n\n                    if ($('.header-nav-plain .header-language_currency').length > 0){\n                        const topLanCur = $('.top-language-currency');\n                        const lanCurMobile = $('#navigation-mobile .nav-currency-language');\n                        if (lanCurMobile.text().trim() == '' && topLanCur.length > 0) lanCurMobile.append(`<div class=\"top-language-currency\">${topLanCur.html()}</div>`)\n                    }\n\n                    if (document.body.matches('.menu_open')) {\n                        loadMenu();\n                    }\n\n                    document.body.addEventListener('click', () => {\n                        loadMenu();\n                    });                    \n                }\n            }\n\n            if (window.innerWidth < 1025) {\n                var menuItemMega = $('.menu-lv-item.has-megamenu');\n\n                if (menuItemMega.length > 0) {\n                    menuItemMega.on('click', function (e) {\n                        var block = $(this).find('.menu-dropdown__block--content .products-carousel');\n                        var handle = block.data('product');\n                        var url = block.data('collection');\n                        var url_handle;\n\n                        if (block.hasClass('megamenu_1')) {\n                            if (handle) {\n                                url_handle = window.routes.root + '/products/' + handle;\n                            }\n                        } else if (block.hasClass('megamenu_5')) {\n                            if (url) {\n                                url_handle = window.routes.root + '/collections/' + url;\n                            }\n                        }\n\n                        if (url_handle) {\n                            halo.renderMegaMenuProductBlock(block, url_handle);\n                        }\n                    });\n                }\n            }\n        },\n\n        initMenu: function(url) {\n            if(!$('.header').hasClass('header-04')){\n                fetch(url)\n                    .then(response => response.text())\n                    .then(text => {\n                        const html = document.createElement('div');\n                        html.innerHTML = text;\n                        const navigation = html.querySelector('#HeaderNavigation');\n                        if (navigation && navigation.innerHTML.trim().length) {\n                            document.querySelector('#HeaderNavigation').innerHTML = navigation.innerHTML;\n                        }\n                    })\n                    .catch(e => {\n                        console.error(e);\n                    });\n            }\n        },\n        \n        clickedActiveProductTabs: function() {\n            const handler = (entries, observer) => {\n                entries.forEach(entry => {\n                    if (entry.isIntersecting) {\n                        const $block = $(entry.target);\n                        if ($block.hasClass('ajax-loaded')) return;\n\n                        var listTabs = $block.find('ul.list-product-tabs'),\n                            tabLink = listTabs.find('[data-product-tabTop]'),\n                            tabContent = $block.find('[data-product-TabContent]'),\n                            limit = $block.data('limit');\n\n                        var linkActive = listTabs.find('.tab-links.active'),\n                            activeTab = $block.find('.product-tabs-content .tab-content.active');\n                            \n                        if (!$block.hasClass('ajax-loaded')) {\n                            halo.doAjaxProductTabs(\n                                linkActive.data('href'), \n                                activeTab.find('.loading'), \n                                activeTab.find('.products-load'), \n                                $block.find(\"button.tab-links.active\").attr('data-section-index'), \n                                limit,\n                                $block\n                            );\n                        }\n                        \n                        tabLink.off('click').on('click', function (e) {\n                            e.preventDefault();\n                            e.stopPropagation();\n\n                            if (!$(this).hasClass('active')) {\n\n                                $('.list-tabs-popup.show-dropdown')?.removeClass('show-dropdown');\n                                $(this).closest('.dropdown').find('.label-active .tab-links').text($(this).text());\n\n                                const curTab = $(this),\n                                    curTabContent = $(curTab.data('target'));\n\n                                tabLink.removeClass('active');\n                                tabContent.removeClass('active');\n\n                                if (!curTabContent.hasClass('loaded')) halo.doAjaxProductTabs(curTab.data('href'), curTabContent.find('.loading'), curTabContent.find('.products-load'), $block.find(\"button.tab-links.active\").attr('data-section-index'), limit);\n                                \n                                curTab.addClass('active');\n                                curTabContent.addClass('active');\n                                curTabContent.find('.slick-slider').slick('refresh');\n                            };\n                        });\n                        \n                        $('.product-tab-block .dropdown .label-active .list-product-tabs').off('click').on('click', function (e) {\n                            document.querySelector(\".list-tabs-popup\").classList.toggle(\"show-dropdown\");\n                        });\n                    }\n                })\n            }\n\n            this.productBlock = document.querySelectorAll('[data-product-tab-block]');\n\n            const config = {\n                threshold: 0.1,\n            }\n\n            this.observer = new IntersectionObserver(handler, config);\n            this.productBlock.forEach(block => {\n                this.observer.observe(block);\n            });\n        },\n\n        doAjaxProductTabs: function (handle, loadingElm, curTabContent, sectionId, limit, self) {\n            $.ajax({\n                type: \"get\",\n                url: handle,\n                data: {\n                    constraint: `sectionId=${handle}+limit=${limit}`\n                },\n\n                beforeSend: function () {\n                    if (self != undefined) self.addClass('ajax-loaded');\n                },\n\n                success: function (data) {\n                    curTabContent.parent().addClass('loaded');\n                    if (handle == '?view=ajax_product_block') return;\n                    \n                    if ($(data).text().trim() === '') {\n                        noProduct(curTabContent);\n                    }\n                    else {\n                        const res = halo.handleResponse($(data), 0, limit);\n                        curTabContent.html(res);\n\n                        if(window.wishlist.show){\n                            halo.setLocalStorageProductForWishlist();\n                        }\n\n                        if (halo.checkNeedToConvertCurrency()) {\n                            Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                        };\n                                       \n                        curTabContent.parent().find('.card .variants-popup-content .selector-wrapper .swatch-element').each(function() {\n                            const $input = $(this).find('input');\n                            const $label = $(this).find('label');\n\n                            $input.attr({\n                                id: ($input.attr('id') || '') + sectionId,\n                                name: ($input.attr('name') || '') + sectionId\n                            });\n                            $label.attr('for', ($label.attr('for') || '') + sectionId);\n                        });\n                    }\n\n                    halo.swapHoverVideoProductCard();\n                },\n                complete: function () {\n                    if (curTabContent.hasClass('products-carousel')) {\n                        halo.productBlockSilder(curTabContent.parent());\n                    }\n\n                    if ($('body').hasClass('cursor-fixed__show')){\n                        window.sharedFunctionsAnimation.onEnterButton();\n                        window.sharedFunctionsAnimation.onLeaveButton();\n                    }\n\n                    if ($body.hasClass('product-card-layout-07') || $body.hasClass('product-card-layout-08')) {\n                        halo.calculateTranslateYHeight()\n                    }\n\n                    if($body.hasClass('product-card-layout-08')) {\n                        halo.productCountdownCard();\n                    }\n                },\n                error: function (xhr, text) {\n                    noProduct(curTabContent);\n                }\n            });\n            \n            const noProduct = (curTabContent) => {\n                curTabContent.html(`<p class=\"loading center\">Sorry, there are no products in this collection</p>`);\n            }\n        },\n        lookbookCarousel: function() {\n            var lookbookCarousel = $('.lookbook-carousel'),\n                itemToShow = lookbookCarousel.data('item-to-show'),\n                itemDots = lookbookCarousel.data('item-dots'),\n                itemDotsMb = lookbookCarousel.data('item-dots-mb'),\n                itemArrows = lookbookCarousel.data('item-arrows'),\n                itemArrowsMb = lookbookCarousel.data('item-arrows-mb');\n\n            if(lookbookCarousel.length > 0) {\n                if(lookbookCarousel.not('.slick-initialized')) {\n                    lookbookCarousel.slick({\n                        mobileFirst: true,\n                        adaptiveHeight: true,\n                        vertical: false,\n                        infinite: true,\n                        slidesToShow: itemToShow,\n                        slidesToScroll: itemToShow,\n                        arrows: itemArrowsMb,\n                        dots: itemDotsMb,\n                        autoplay: false,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: \n                        [\n                            {\n                                breakpoint: 1024,\n                                settings: {\n                                    arrows: itemArrows,\n                                    dots: itemDots\n                                }\n                            }\n                        ]\n                    });\n                }\n            }\n\n            if (lookbookCarousel.hasClass('enable_counter_number')) {\n                var slickNext = lookbookCarousel.find('.slick-next');\n                lookbookCarousel.closest('.special-banner__item--lookbook_banner').find('.products-counter-number').appendTo(slickNext);\n                lookbookCarousel.on('afterChange', (event) => {\n                    var slickIndex = lookbookCarousel.find('.slick-current').data('slick-index');\n                    lookbookCarousel.find(\"#count-image\").text(slickIndex + 1);\n                });\n            }\n\n            if ($('body').hasClass('cursor-fixed__show')){\n                window.sharedFunctionsAnimation.onEnterButton();\n                window.sharedFunctionsAnimation.onLeaveButton();\n            }\n        },\n        productBlockSilder: function(wrapper) {\n            var productGrid = wrapper.find('.products-carousel'),\n                itemToShow = productGrid.data('item-to-show'),\n                itemDots = productGrid.data('item-dots'),\n                itemDotsMb = productGrid.data('item-dots-mb'),\n                itemArrows = productGrid.data('item-arrows'),\n                itemArrowsMb = productGrid.data('item-arrows-mb'),\n                itemInfinite = productGrid.data('infinite'),\n                itemAutoplay = productGrid.data('autoplay'),\n                swatchLabel = productGrid.find('.swatch .swatch-label'),\n                isProductCard06 = document.body.classList.contains('product-card-layout-06');\n\n            if(productGrid.length > 0) {\n                if(productGrid.hasClass('slick-initialized')) return;\n                if(productGrid.not('.slick-initialized')) {\n                    if (isProductCard06) {\n                        productGrid.on('init', () => {\n                            const selectOptionsHeight = productGrid.find('.product .card-action').eq(0).height();\n                            productGrid.find('.slick-list').css('padding-bottom', selectOptionsHeight + 'px');\n                            productGrid.attr('data-slider-padding-bottom', selectOptionsHeight)\n                        })\n                    }\n\n                    if (productGrid.hasClass('enable_progress_bar')) {\n                        var progressBar = wrapper.find('.scrollbar-thumb');\n                        productGrid.on('init', (event, slick) => {\n                            var percent = ((slick.currentSlide / (slick.slideCount - itemToShow)) * 100) + '%';\n                            progressBar.css('--percent', percent);\n                        });\n                    }\n                  \n                    productGrid.slick({\n                        mobileFirst: true,\n                        adaptiveHeight: true,\n                        vertical: false,\n                        infinite: itemInfinite,\n                        autoplay: itemAutoplay,\n                        speed: 1000,\n                        slidesToShow: 1,\n                        slidesToScroll: 1,\n                        arrows: itemArrowsMb,\n                        dots: itemDotsMb,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: \n                        [\n                            {\n                                breakpoint: 1599,\n                                settings: {\n                                    arrows: itemArrows,\n                                    dots: itemDots,\n                                    autoplay: false,\n                                    get slidesToShow() {\n                                        if(itemToShow !== undefined && itemToShow !== null && itemToShow !== ''){\n                                            return this.slidesToShow = itemToShow;\n                                        } else {\n                                            return this.slidesToShow = 1;\n                                        }\n                                    },\n                                    get slidesToScroll() {\n                                        if(itemToShow !== undefined && itemToShow !== null && itemToShow !== '' && itemToShow !== 2.5 && itemToShow !== 3.5 && itemToShow !== 4.5 && itemToShow !== 5.5){\n                                            return this.slidesToScroll = itemToShow;\n                                        } else {\n                                            return this.slidesToScroll = 1;\n                                        }\n                                    },\n                                    get initialSlide() {\n                                        if(itemToShow == 5.5) {\n                                            return this.initialSlide = 0.5;\n                                        } else {\n                                            return this.initialSlide = 0;\n                                        }\n                                    }\n                                }\n                            },\n                            {\n                                breakpoint: 1024,\n                                settings: {\n                                    arrows: itemArrows,\n                                    dots: itemDots,\n                                    autoplay: false,\n                                    get slidesToShow() {\n                                        if(itemToShow !== undefined && itemToShow !== null && itemToShow !== ''){\n                                            if(itemToShow == 5 || itemToShow == 6){\n                                                return this.slidesToShow = itemToShow - 1;\n                                            } else {\n                                                if (productGrid.parents('.collection-column-2').length){\n                                                    return this.slidesToShow = 2;\n                                                } else{\n                                                    return this.slidesToShow = itemToShow;\n                                                }\n                                               \n                                            }\n                                        } else {\n                                            return this.slidesToShow = 1;\n                                        }\n                                    },\n                                    get slidesToScroll() {\n                                        if(itemToShow !== undefined && itemToShow !== null && itemToShow !== '' && itemToShow !== 2.5 && itemToShow !== 3.5 && itemToShow !== 4.5 && itemToShow !== 5.5){\n                                            if(itemToShow == 5 || itemToShow == 6){\n                                                return this.slidesToScroll = itemToShow - 1;\n                                            } else {\n                                                if (productGrid.parents('.collection-column-2').length){\n                                                    return this.slidesToScroll = 2;\n                                                } else{\n                                                    return this.slidesToScroll = itemToShow;\n                                                }\n                                               \n                                            }\n                                        } else {\n                                            return this.slidesToScroll = 1;\n                                        }\n                                    },\n                                    get initialSlide() {\n                                        if(itemToShow == 5.5) {\n                                            return this.initialSlide = 0.5;\n                                        } else {\n                                            return this.initialSlide = 0;\n                                        }\n                                    }\n                                }\n                            },\n                            {\n                                breakpoint: 991,\n                                settings: {\n                                    arrows: itemArrowsMb,\n                                    dots: itemDotsMb,\n                                    autoplay: false,\n                                    get slidesToShow(){\n                                        if (productGrid.hasClass('has__banner_tab') || productGrid.parents('.product-block-has__banner').length){\n                                            if (productGrid.parents('.product-block-has__banner').length && productGrid.parents('.product-block-has__banner').data('width-banner') > 40) {\n                                                return this.slidesToShow = 2;\n                                            }\n                                            else {\n                                                if(itemToShow == 2.5) {\n                                                    return this.slidesToShow = 2;\n                                                } else {\n                                                    return this.slidesToShow = 3;\n                                                }\n                                            }\n                                        }\n                                        else{\n                                            if (productGrid.parents('.collection-column-2').length){\n                                                return this.slidesToShow = 2;\n                                            }\n                                            else if (itemToShow == 1) {\n                                                return this.slidesToShow = itemToShow;\n                                            }\n                                            else{\n                                                if(itemToShow == 3.5 || itemToShow == 4.5) {\n                                                    return this.slidesToShow = 3;\n                                                } else {\n                                                    return this.slidesToShow = 4;\n                                                }\n                                            }\n                                        }\n                                    },\n                                    get slidesToScroll(){\n                                        if (productGrid.hasClass('has__banner_tab') || productGrid.parents('.product-block-has__banner').length){\n                                            if (productGrid.parents('.product-block-has__banner').length && productGrid.parents('.product-block-has__banner').data('width-banner') > 40) {\n                                                return this.slidesToScroll = 2;\n                                            }\n                                            else {\n                                                if(itemToShow == 2.5) {\n                                                    return this.slidesToScroll = 2;\n                                                } else {\n                                                    return this.slidesToScroll = 3;\n                                                }\n                                            }\n                                        }\n                                        else{\n                                            if (productGrid.parents('.collection-column-2').length){\n                                                return this.slidesToScroll = 2;\n                                            }\n                                            else if (itemToShow == 1) {\n                                                return this.slidesToScroll = itemToShow;\n                                            }\n                                            else{\n                                                if(itemToShow == 3.5 || itemToShow == 4.5) {\n                                                    return this.slidesToScroll = 3;\n                                                } else {\n                                                    return this.slidesToScroll = 4;\n                                                }\n                                            }\n                                        }\n                                    },\n                                    get initialSlide() {\n                                        if(itemToShow == 5.5) {\n                                            return this.initialSlide = 0.5;\n                                        } else {\n                                            return this.initialSlide = 0;\n                                        }\n                                    }\n                                }\n                            },\n                            {\n                                breakpoint: 767,\n                                arrows: itemArrowsMb,\n                                dots: itemDotsMb,\n                                autoplay: false,\n                                settings: {\n                                    get slidesToShow(){\n                                        if (productGrid.hasClass('has__banner_tab') || productGrid.parents('.product-block-has__banner').length){\n                                            return this.slidesToShow = 2;\n                                        }\n                                        else if (itemToShow == 1) {\n                                            return this.slidesToShow = itemToShow;\n                                        }\n                                        else{\n                                            if(itemToShow == 3.5 || itemToShow == 4.5) {\n                                                return this.slidesToShow = 2;\n                                            } else {\n                                                return this.slidesToShow = 3;\n                                            }\n                                        }\n                                    },\n                                    get slidesToScroll(){\n                                        if (productGrid.hasClass('has__banner_tab') || productGrid.parents('.product-block-has__banner').length){\n                                            return this.slidesToScroll = 2;\n                                        }\n                                        else if (itemToShow == 1) {\n                                            return this.slidesToScroll = itemToShow;\n                                        }\n                                        else{\n                                            if(itemToShow == 3.5 || itemToShow == 4.5) {\n                                                return this.slidesToScroll = 2;\n                                            } else {\n                                                return this.slidesToScroll = 3;\n                                            }\n                                        }\n                                    },\n                                    get initialSlide() {\n                                        if(itemToShow == 5.5) {\n                                            return this.initialSlide = 0.5;\n                                        } else {\n                                            return this.initialSlide = 0;\n                                        }\n                                    }\n                                }\n                            },\n                            {\n                                breakpoint: 320,\n                                arrows: itemArrowsMb,\n                                dots: itemDotsMb,\n                                autoplay: itemAutoplay,\n                                settings: {\n                                    get slidesToShow(){\n                                        if (itemToShow == 1) {\n                                            if (productGrid.hasClass('special-banner__products--slider') || productGrid.hasClass('special-banner__products--grid')) {\n                                                return this.slidesToShow = 2;\n                                            } else {\n                                                return this.slidesToShow = itemToShow;\n                                            }\n                                        }\n                                        else {\n                                            if(itemToShow == 2.5 || itemToShow == 3.5 || itemToShow == 4.5) {\n                                                return this.slidesToShow = 1;\n                                            } else {\n                                                return this.slidesToShow = 2;\n                                            }\n                                        }\n\n                                    },\n                                    get slidesToScroll(){\n                                        if (itemToShow == 1) {\n                                            return this.slidesToScroll = itemToShow;\n                                        }\n                                        else {\n                                            if(itemToShow == 2.5 || itemToShow == 3.5 || itemToShow == 4.5) {\n                                                return this.slidesToScroll = 1;\n                                            } else {\n                                                return this.slidesToScroll = 2;\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    });\n\n                    if (productGrid.hasClass('enable_progress_bar')) {\n                        productGrid.on('afterChange', (event, slick, nextSlide) => {\n                            var percent = ((nextSlide / (slick.slideCount - itemToShow)) * 100) + '%';\n                            progressBar.css('--percent', percent);\n                        });\n                    }\n                    if (productGrid.hasClass('enable_counter_number')) {\n                        var slickNext = productGrid.find('.slick-next');\n                        productGrid.closest('.halo-block, .special-banner__product, .cust-prod-widget__product').find('.products-counter-number').appendTo(slickNext);\n                        productGrid.on('afterChange', (event) => {\n                            var slickIndex = productGrid.find('.slick-current').data('slick-index');\n                            var displayCount = slickIndex + itemToShow;\n                            var totalItems = wrapper.data('limit');\n\n                            if (displayCount > totalItems) {\n                                displayCount = totalItems;\n                            }\n                            productGrid.find(\"#count-image\").text(displayCount);\n                        });\n                    }\n\n                    if ($('body').hasClass('cursor-fixed__show')){\n                        window.sharedFunctionsAnimation.onEnterButton();\n                        window.sharedFunctionsAnimation.onLeaveButton();\n                    }\n                }\n            }\n\n            if (swatchLabel.length) {\n                function getMaxHeight() {\n                    var maxHeight = 0;\n\n                    productGrid.find('.slick-slide').each(function () {\n                        var slideHeight = $(this).outerHeight();\n                        if (slideHeight > maxHeight) {\n                            maxHeight = slideHeight;\n                        }\n                    });\n                    return maxHeight;\n                }\n\n                productGrid.on('click', '.swatch .swatch-label', function () {\n                    setTimeout(() => {\n                        var maxHeight = getMaxHeight();\n                        productGrid.find(\".slick-list\").css({ height: maxHeight + 'px', transition: \"500ms ease\", })\n                    }, 50);\n                });\n            }\n        },\n\n        productBlockInfiniteScroll: function() {\n            var productBlock = $('[data-product-block], [data-product-tab-block]');\n\n            productBlock.each((index, element) => {\n                var $block = $(element),\n                    showMore = $block.find('[data-product-infinite]');\n            \n                if (showMore.length > 0) {\n                    showMore.find('.button').on('click', (event) => {\n                        var showMoreButton = $(event.target);\n\n                        if (!showMoreButton.hasClass('view-all')) {\n                            event.preventDefault();\n                            event.stopPropagation();\n\n                            // var text = window.button_load_more.loading;\n\n                            showMoreButton.addClass('is-loading');\n                            // showMoreButton.text(text);\n\n                            var url = showMoreButton.attr('data-collection'),\n                                limit = showMoreButton.attr('data-limit'),\n                                swipe = showMoreButton.attr('data-swipe'),\n                                total = showMoreButton.attr('data-total'),\n                                image_ratio = showMoreButton.attr('data-image-ratio'),\n                                sectionId = showMoreButton.attr('sectionId'),\n                                page = parseInt(showMoreButton.attr('data-page'));\n\n                            halo.doProductBlockInfiniteScroll(url, total, limit, swipe, image_ratio, sectionId, page, showMoreButton, $block);\n                        } else {\n                            window.location = showMoreButton.data('href');\n                        }\n                    });\n                }\n            });\n        },\n\n        doProductBlockInfiniteScroll: function(url, total, limit, swipe, image_ratio, sectionId, page, showMoreButton, $block){\n            $.ajax({\n                type: 'get',\n                url: window.routes.root + '/collections/' + url,\n                cache: false,\n                data: {\n                    view: 'ajax_product_block',\n                    constraint: 'limit=' + limit + '+page=' + page + '+sectionId=' + sectionId + '+imageRatio=' + image_ratio + '+swipe=' + swipe\n                },\n                beforeSend: function () {\n                    // halo.showLoading();\n                },\n                success: function (data) {\n                    const $productGrid = showMoreButton.closest('.tab-content').length ? showMoreButton.closest('.tab-content').find('.products-grid') : showMoreButton.closest('.halo-block-content').find('.products-grid');\n                    let length = $productGrid.find('.product').length;\n                    const res = halo.handleResponse($(data), length, $productGrid.data('products-to-show'));\n                    $productGrid.append(res);\n\n                    if(length + res.length < $(data).length) {\n                        var text = window.button_load_more.default;\n\n                        showMoreButton.removeClass('is-loading');\n                        showMoreButton.attr('data-page', page + 1);\n                        showMoreButton.find('span').text(text);\n                    } else {\n                        if (Number(total) > $(data).length && $(data).length <= length + res.length) {\n                            var text = window.button_load_more.view_all;\n\n                            showMoreButton.find('span').text(text);\n                            showMoreButton.removeClass('is-loading');\n                            showMoreButton.attr('data-href', window.routes.root + '/collections/' + url).addClass('view-all');\n                        } else {\n                            var text = window.button_load_more.no_more;\n\n                            showMoreButton.find('span').text(text);\n                            showMoreButton.removeClass('is-loading');\n                            showMoreButton.attr('disabled', 'disabled');\n                        }\n                    }\n                },\n                complete: function () {\n                    // halo.hideLoading();\n                    if (halo.checkNeedToConvertCurrency()) {\n                        Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                    };\n                }\n            });\n        },\n\n        doBeforeMegaMenuProductBlock: function () {\n            var menuItemMega = $('.menu-lv-item.has-megamenu');\n\n            if (menuItemMega.length > 0 && window.innerWidth > 1025) {\n                menuItemMega.mouseenter(function () {\n                    var block = $(this).find('.menu-dropdown__block--content .products-carousel');\n                    var handle = block.data('product');\n                    var url = block.data('collection');\n                    var url_handle;\n\n                    if (block.hasClass('megamenu_1')) {\n                        if (handle) {\n                            url_handle = window.routes.root + '/products/' + handle;\n                        }\n                    } else if (block.hasClass('megamenu_5')) {\n                        if (url) {\n                            url_handle = window.routes.root + '/collections/' + url;\n                        }\n                    }\n\n                    if (url_handle) {\n                        halo.renderMegaMenuProductBlock(block, url_handle);\n                    }\n                });\n            }\n        },\n\n\n        renderMegaMenuProductBlock: function(wrapper, url_handle) {\n            var block = wrapper;\n\n            if (block.hasClass('ajax-loaded')) return;\n\n            var limit = block.data('row'),\n                sectionId = 'list-result-block';\n\n            $.ajax({\n                type: 'GET',\n                url: url_handle,\n                cache: false,\n                data: {\n                    view: 'ajax_product_card_mega_menu',\n                    constraint: `limit=${limit}+sectionId=${sectionId}`\n                },\n                beforeSend: () => {\n                    block.addClass('ajax-loaded');\n                },\n                success: (data) => {\n                    if (block.hasClass('megamenu_1')) {\n                        block.html(data);\n                    } else if (block.hasClass('megamenu_5')) {\n                        const dataRes = halo.handleResponse($(data), 0, limit);\n                        block.html(dataRes);\n                        halo.productMenuSlider(block);\n                    }\n\n                    if (halo.checkNeedToConvertCurrency()) {\n                        Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                    }\n                },\n                complete: () => {\n                    if (halo.checkNeedToConvertCurrency()) {\n                        Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                    }\n                }\n            });\n        },\n\n        productMenuSlider: function(wrapper){\n            var productGrid = wrapper,\n                _dataRows = productGrid.data('row');\n            if(productGrid.length > 0) {\n                if(productGrid.not('.slick-initialized')) {\n                    productGrid.slick({\n                        mobileFirst: true,\n                        adaptiveHeight: true,\n                        vertical: false,\n                        infinite: false,\n                        slidesToShow: 2,\n                        slidesToScroll: 1,\n                        arrows: false,\n                        dots: true,\n                        rtl: window.rtl_slick,\n                        responsive: \n                        [\n                            {\n                                breakpoint: 1024,\n                                settings: {\n                                    slidesToShow: 3,\n                                    slidesToScroll: 1,\n                                }\n                            },\n                            {\n                                breakpoint: 1500,\n                                settings: {\n                                    slidesToShow: _dataRows,\n                                    slidesToScroll: 1,\n                                    dots: false\n                                }\n                            }\n                        ]\n                    });\n                }\n            }\n        },\n\n        buildRecommendationBlock: function(){\n            if (document.querySelector('[data-recommendations-block]') == null) return;\n\n            var $this = document.querySelector('[data-recommendations-block]'),\n                layout = $this.dataset.layout;\n                swipe = $this.dataset.swipe;\n\n            const config = {\n                threshold: 0.25,\n            }\n\n            const handleIntersection = (entries, observer) => {\n                const recommendationsContainer = $this.querySelector('.wrapper-container');\n                if (!entries[0].isIntersecting) return;\n                if ($this.innerHTML.trim() != '' && !recommendationsContainer.classList.contains('product-recommendations-loading') && !recommendationsContainer.classList.contains('has-product')) return;\n                recommendationsContainer.classList.add('has-product');\n\n                fetch($this.dataset.url)\n                .then(response => response.text())\n                .then(text => {\n                    const html = document.createElement('div');\n                    html.innerHTML = text;\n                    const recommendations = html.querySelector('[data-recommendations-block]');\n                    if (recommendations && recommendations.innerHTML.trim().length) {\n                        $this.innerHTML = recommendations.innerHTML;\n\n                        var productItems = $($this).find('.product-item')\n                        var firstProductData = productItems.eq(0).data('json-product')\n                        if (!firstProductData) return $($this).remove();\n\n                        if (layout == 'slider') {\n                            halo.productBlockSilder($($this));\n                        }\n\n                        var productItems = $($this).find('.product-item')\n                        productItems.each(async (index, rawProduct) => {\n                            var product = $(rawProduct);\n                            var productId = product.data('product-id');\n                            var productJson = product.data('json-product');\n                            var handle = productJson.handle\n                            \n                            await  $.ajax({\n                                type: 'get',\n                                url: window.routes.root + '/products/' + handle + '?view=ajax_variant_quantity',\n                                beforeSend: function () {},\n                                success: function (data) {\n                                    const element = new DOMParser().parseFromString(data, 'text/html')\n                                    if (element.querySelector(`[data-quantity-product-id=\"${productId}\"]`)) {\n                                        const quantityInfo = JSON.parse(element.querySelector(`[data-quantity-product-id=\"${productId}\"]`).innerHTML)\n                                        window[`quick_view_inven_array_${productId}`] = quantityInfo\n                                    }\n                                },      \n                                error: function (xhr, text) {\n                                    halo.showWarning($.parseJSON(xhr.responseText).description);\n                                },\n                                complete: function () {}\n                            });\n                        }) \n\n                        const loadingImages = $this.querySelectorAll('.media--loading-effect img');\n                        this.observeImageLazyloaded(loadingImages);\n\n                        if(window.compare.show){\n                            var $compareLink = $('[data-compare-link]');\n\n                            halo.setLocalStorageProductForCompare($compareLink);\n                        }\n\n                        if(window.wishlist.show){\n                            halo.setLocalStorageProductForWishlist();\n                        }\n\n                        if ($('body').hasClass('cursor-fixed__show')){\n                            window.sharedFunctionsAnimation.onEnterButton();\n                            window.sharedFunctionsAnimation.onLeaveButton();\n                        }\n\n                        if($body.hasClass('product-card-layout-08')) {\n                            halo.productCountdownCard();\n                        }\n\n                        this.calculateTranslateYHeight()\n                    }\n                })\n                .catch(e => {\n                    console.error(e);\n                });\n            }\n\n            new IntersectionObserver(handleIntersection.bind($this), ({}, config)).observe($this);\n        },\n\n        initVideoPopup: function (){\n            if ($(\".video-open-popup\").length) {\n            } else {return}\n            $('.video-open-popup .video-button').off('click').on('click',function(){\n                let video_type = $(this).attr('data-type'),\n                    video_src = $(this).attr('data-src'),\n                    aspect_ratio = $(this).attr('aspect_ratio'),\n                    modal = $('[data-popup-video]');\n\n                const $content = `<div class=\"fluid-width-video-wrapper\" style=\"padding-top: ${aspect_ratio}\">\n                                    ${video_type == 'youtube' ? \n                                        `<iframe\n                                            id=\"player\"\n                                            type=\"text/html\"\n                                            width=\"100%\"\n                                            frameborder=\"0\"\n                                            webkitAllowFullScreen\n                                            mozallowfullscreen\n                                            allowFullScreen\n                                            src=\"https://www.youtube.com/embed/${video_src}?autoplay=1&mute=1\">\n                                        </iframe>`\n                                        :\n                                        `<iframe \n                                            src=\"https://player.vimeo.com/video/${video_src}?autoplay=1&mute=1\" \n                                            class=\"js-vimeo\" \n                                            allow=\"autoplay; \n                                            encrypted-media\" \n                                            webkitallowfullscreen \n                                            mozallowfullscreen \n                                            allowfullscreen\">\n                                        </iframe>`\n                                    }\n                                </div>`;\n                modal.find('.halo-popup-content').html($content);\n                $body.addClass('video-show');\n            });\n\n            $('[data-popup-video], [data-popup-video] .halo-popup-close, .background-overlay').on('click', function (e) {\n                // e.preventDefault();\n                // e.stopPropagation();\n                let modalContent = $('[data-popup-video] .halo-popup-content');\n                if (!modalContent.is(e.target) && !modalContent.has(e.target).length) {\n                    $body.removeClass('video-show');\n                    $('[data-popup-video] iframe').remove();\n                };\n            });\n        },\n\n        swapHoverVideoProductCard: function () {\n            if (window.innerWidth > 1200) {\n                $('.product-item .card:not(.has-first-video)').mouseenter(function () {\n                    var chil = $(this).find('video');\n                    var _chil = $(this).find('video').get(0);\n                    if (chil.length > 0) {\n                        _chil.play();\n                    }\n                });\n                $('.product-item .card:not(.has-first-video)').mouseleave(function () {\n                    var chil = $(this).find('video');\n                    var _chil = $(this).find('video').get(0);\n                    if (chil.length > 0) {\n                        _chil.pause();\n                    }\n                })\n            }\n\n            $.fn.isInViewport = function () {\n                let elementTop = $(this).offset().top,\n                    elementBottom = elementTop + $(this).outerHeight(),\n\n                    viewportTop = $(window).scrollTop(),\n                    viewportBottom = viewportTop + $(window).height();\n\n                return elementBottom > viewportTop && elementTop < viewportBottom;\n            };\n\n            $(\".product-item .card.has-first-video\").each(function () {\n                let chil = $(this).find('video');\n                let firstImg = $(this).find(\"img:first-child\");\n                let _chil = $(this).find('video').get(0);\n\n                const playVideoCard = () => {\n                    if (firstImg.length > 0) firstImg.css(\"opacity\", \"0\");\n\n                    if (chil.length > 0) {\n                        chil.css(\"opacity\", \"1\")\n                        _chil.play()\n                    };\n                }\n\n                const pauseVideoCard = () => {\n                    if (chil.length > 0) _chil.pause();\n                }\n\n                if ($(this).isInViewport()) {\n                    playVideoCard()\n                } else {\n                    pauseVideoCard()\n                }\n\n                window.addEventListener('scroll', () => {\n                    if ($(this).isInViewport()) {\n                        playVideoCard()\n                    } else {\n                        pauseVideoCard()\n                    }\n                });\n            });\n        },\n\n        initGlobalCheckbox: function() {\n            $doc.on('change', '.global-checkbox--input', (event) => {\n                var targetId = event.target.getAttribute('data-target');\n\n                if(event.target.checked){\n                    $(targetId).attr('disabled', false);\n                } else{\n                    $(targetId).attr('disabled', true);\n                }\n            });\n\n            $doc.on('click', '[data-term-condition]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n                $body.addClass('term-condition-show');\n            });\n\n            $doc.on('click', '[data-close-term-condition-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n                $body.removeClass('term-condition-show');\n            });\n\n            $doc.on('click', (event) => {\n                setTimeout(() => {\n                    if ($body.hasClass('cart-sidebar-show')) {\n                        if (($(event.target).closest('[data-term-condition-popup]').length === 0)){\n                            $body.removeClass('term-condition-show');\n                        }\n                    }\n                    if ($body.hasClass('term-condition-show')) {\n                        if ($(event.target).closest('[data-term-condition-popup]').length === 0){\n                            $body.removeClass('term-condition-show');\n                        }\n                    }\n                }, 10);\n            });\n        },\n        \n        initColorSwatch: function() {\n            $doc.ready(function() {\n                $('.card .swatch-label.is-active').trigger('click');\n            });\n            \n            $doc.on('click', '.card .swatch-label', (event) => {\n                var $target = $(event.currentTarget),\n                    title = $target.attr('title').replace(/^\\s+|\\s+$/g, ''),\n                    product = $target.closest('.product-item'),\n                    productJson = product.data('json-product'),\n                    productTitle = product.find('.card-title'),\n                    productAction = product.find('[data-btn-addtocart]'),\n                    productAction2 = product.find('.card-product [data-btn-addtocart]'),\n                    variantId = $target.data('variant-id'),\n                    productHref = product.find('a').attr('href'),\n                    oneOption = $target.data('with-one-option'),\n                    newImage = $target.data('variant-img'),\n                    mediaList = [];\n\n\n\n                const $iconAddtocart = '<svg class=\"icon icon-cart\" viewBox=\"0 0 286.74 356.73\">\\\n                  <g data-name=\"Layer 1\">\\\n                    <path d=\"m286.33,277.03l-.17-3.91c-.81-18.73-1.83-37.7-2.83-56.05l-.79-14.51c-.43-8.13-.9-16.26-1.37-24.4l-.24-4.18c-.84-14.79-1.71-30.08-2.35-45.1-.93-21.43-14.62-35.84-34.07-35.86h-20.65c-.42-20.33-5.78-38.81-15.94-54.94C189.14,8.27,157.22-5.8,126.6,2.23c-27.48,7.21-46.98,26.7-57.96,57.94-3.5,9.98-5.33,20.76-5.56,32.86h-9.52c-4.59,0-9.05-.01-12.39,0-16.64.12-30.01,12.35-31.79,29.06-1.42,13.39-2.1,27.29-2.7,39.55-.24,4.97-.5,9.95-.77,14.91-1.22,21.28-2.24,39.94-3.13,57.07-.29,5.45-.6,10.9-.92,16.36l-.02.3c-.82,13.9-1.67,28.28-1.82,42.5-.18,16.51,5.81,32.31,16.86,44.5,11.15,12.29,26.39,19.35,41.81,19.37,22.45.05,49.37.08,82.32.08s60.43-.02,87.24-.08c28.28-.04,53.63-23.49,57.72-53.39,1.19-8.74.78-17.61.37-26.23ZM63.13,130.98c.09,7.97,4.99,13.59,11.92,13.67h.12c6.97,0,11.9-5.57,11.99-13.53.04-3.2.04-6.33.04-9.63v-2.53s112.59,0,112.59,0v10.76c0,4.95,1.26,8.81,3.76,11.51,2.07,2.2,4.95,3.4,8.33,3.45h.11c5.72-.08,11.83-4.11,11.85-15.16v-10.77c.83-.01,1.68-.03,2.55-.04h.62c7.1-.1,15.15-.2,20.48.19,3.7.28,6.59,4.2,6.87,9.32.68,12.51,1.41,26.28,2.28,43.33l.1,2.01c.67,12.86,1.34,25.72,2.04,38.59.31,5.58.6,11.17.87,16.76.91,17.56,1.84,35.72,3.19,53.79,1.49,20.32-4.18,34.05-17.84,43.2-5.16,3.45-10.88,5.2-17.01,5.2h-15.06c-45.58.05-104.28.1-154.01-.02-9.16-.02-18.22-4.27-24.85-11.68-6.63-7.39-10.18-16.92-10-26.83.28-14.29,1.14-29.09,1.9-42.15.31-5.37.62-10.74.91-16.1.54-10.41,1.12-20.81,1.69-31.22l.07-1.28c.21-3.92.43-7.85.65-11.77.22-3.94.44-7.88.65-11.82.15-2.9.3-5.8.45-8.7.15-2.9.3-5.79.45-8.7.51-10.04,1.11-21.71,1.81-33.09.33-5.43,3.75-8.98,8.7-9.05,2.69-.04,6.15-.06,10-.06h11.79v3.83c0,1.68-.01,3.34,0,5h-.06l.04,3.54Zm24.05-38.1c.01-6.61,1.06-13.49,3.19-20.92,4.62-16.13,13.13-28.65,25.29-37.21,18.23-12.86,40.54-12.15,58.21,1.84,15.57,12.32,25.91,35.07,25.84,56.29h-112.53Z\"></path>\\\n                  </g>\\\n                </svg>';\n\n                $target.parents('.swatch').find('.swatch-label').removeClass('is-active');\n                $target.addClass('is-active');\n                \n                if(productTitle.hasClass('card-title-change')){\n                    if($body.hasClass('style_2_text_color_varriant')){\n                        productTitle.find('[data-change-title]').text(title);\n                    }else{\n                        productTitle.find('[data-change-title]').text(' - ' + title);\n                    }\n                } else {\n                    if($body.hasClass('style_2_text_color_varriant')){\n                        productTitle.addClass('card-title-change').append('<span data-change-title>' + title + '</span>');\n                    }else{\n                        productTitle.addClass('card-title-change').append('<span data-change-title> - ' + title + '</span>');\n                    }\n                }\n\n                const selectedVariant = productJson.variants.find(variant => variant.id === variantId)\n\n                if (selectedVariant.compare_at_price > selectedVariant.price) {\n                    product.find('.price').addClass('price--on-sale');\n                    product.find('.price__sale .price-item--regular').html(Shopify.formatMoney(selectedVariant.compare_at_price, window.money_format));\n                    product.find('.price__sale .price-item--sale').html(Shopify.formatMoney(selectedVariant.price, window.money_format));\n                    const labelSale = `(-${Math.round((selectedVariant.compare_at_price - selectedVariant.price) * 100 / selectedVariant.compare_at_price)}%)`;\n                    product.find('.price__label_sale .label_sale').html(labelSale);\n                } else {\n                    product.find('.price__regular .price-item').html(Shopify.formatMoney(selectedVariant.price, window.money_format));\n\n                    if (selectedVariant.compare_at_price == null) {\n                        product.find('.price').removeClass('price--on-sale');\n                        product.find('.price__sale .price-item--regular').html('');\n                    }\n                }\n  \n                product.find('a:not(.single-action):not(.number-showmore):not(.vendor-text)').attr('href', productHref.split('?variant=')[0]+'?variant='+ variantId);\n\n                if (oneOption != undefined) {\n                    var quantity = $target.data('quantity');\n\n                    product.find('[name=\"id\"]').val(oneOption);\n  \n                    if (quantity > 0) {\n                        if(window.notify_me.show){\n                            productAction\n                                .removeClass('is-notify-me')\n                                .addClass('is-visible');\n                        } else {\n                            productAction\n                                .removeClass('is-soldout')\n                                .addClass('is-visible');\n                        }\n                    } else {\n                       if(window.notify_me.show){\n                            productAction\n                                .removeClass('is-visible')\n                                .addClass('is-notify-me');\n                        } else {\n                            productAction\n                                .removeClass('is-visible')\n                                .addClass('is-soldout');\n                        }\n                    }\n\n                    if(productAction.hasClass('is-soldout') || productAction.hasClass('is-notify-me')){\n                        if(productAction.hasClass('is-notify-me')){\n                            if ($body.hasClass('product-card-layout-08')) {\n                                productAction2\n                                    .html($iconAddtocart)\n                                    .prop('disabled', false);\n                            } else {\n                                productAction.text(window.notify_me.button);\n                            }\n                        } else {\n                            if ($body.hasClass('product-card-layout-08')) {\n                                productAction2\n                                    .html($iconAddtocart)\n                                    .prop('disabled', true);\n                            } else {\n                                productAction\n                                    .text(window.variantStrings.soldOut)\n                                    .prop('disabled', true);\n                            }\n                        }\n                    } else {\n                        if ($body.hasClass('product-card-layout-08')) {\n                            productAction2\n                                .html($iconAddtocart)\n                                .prop('disabled', false);\n                        } else {\n                            productAction\n                                .text(window.variantStrings.addToCart)\n                                .prop('disabled', false);\n                        }\n                    }\n                } else {\n                    if (productJson != undefined) {\n                        if(window.quick_shop.show){\n                            halo.checkStatusSwatchQuickShop(product, productJson);\n                        }\n                    }\n\n                    product.find('.swatch-element[data-value=\"' + title + '\"]').find('.single-label').trigger('click');\n                }\n\n                if (productJson.media != undefined) {\n                    var mediaList = productJson.media.filter((index, element) => {\n                        return element.alt === title;\n                    });\n                }\n\n                if (mediaList.length > 0) {\n                    if (mediaList.length > 1) {\n                        var length = 2;\n                    } else {\n                        var length = mediaList.length;\n                    }\n                    \n                    for (var i = 0; i < length; i++) {\n                        product.find('.card-media img:eq('+ i +')').attr('srcset', mediaList[i].src);\n                    }\n                } else {\n                    if (newImage) {\n                        product.find('.card-media img:nth-child(1)')\n                        .attr('srcset', newImage)\n                        .attr('data-srcset', newImage);\n                    }\n                }\n  \n                // halo.checkPreOrderOfVariant(selectedVariant, productAction, productJson)\n                if (halo.checkNeedToConvertCurrency()) {\n                    Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                }\n            });\n              \n            $doc.on('click', '.item-swatch-more .number-showmore', (event) => {\n                if ($(event.target).closest('.swatch').hasClass('show--more')) {\n                    $(event.target).closest('.swatch').removeClass('show--more');\n                    $(event.target).find('span:eq(0)').text('+');\n                } else {\n                    $(event.target).closest('.swatch').addClass('show--more');\n                    $(event.target).find('span:eq(0)').text('-'); \n                }\n            })\n        },\n\n        checkPreOrderOfVariant: function(selectedVariant, productAction, productJson) {\n            // Check if variant is allowed to sale when out of stock\n            const variantId = selectedVariant.id\n            const updatePreOrderText = (productAction, selectedVariant, inventoryQuantity) => {\n                const product = productAction.parents('.product-item');\n                const hasQuickShopPanel = product.find('[data-quickshop-popup]').length > 0;\n\n                if (selectedVariant.inventory_management == null) {\n                    productAction\n                        .text(hasQuickShopPanel ? window.variantStrings.add : window.variantStrings.addToCart)\n                        .prop('disabled', false)\n                        .removeClass('is-notify-me')\n                        .addClass('button--pre-untrack')\n                }\n                else if (selectedVariant.available && inventoryQuantity <=0 ) {\n                    productAction\n                        .text(window.variantStrings.preOrder)\n                        .prop('disabled', false)\n                        .removeClass('is-notify-me')\n                        .addClass('button--pre-untrack')\n                } else {\n                    productAction.removeClass('button--pre-untrack');\n                    if (inventoryQuantity > 0) {\n                        if(window.notify_me.show){\n                            productAction\n                                .removeClass('is-notify-me')\n                                .addClass('is-visible')\n                        } else {\n                            productAction\n                                .removeClass('is-soldout')\n                                .addClass('is-visible')\n                        }\n                    } else {\n                      \n                       if(window.notify_me.show){\n                            productAction\n                                .removeClass('is-visible')\n                                .addClass('is-notify-me')\n                                .prop('disabled', false);\n                        } else {\n                            productAction\n                                .removeClass('is-visible')\n                                .addClass('is-soldout').prop('disabled', true);\n                        }\n                    }\n\n                    if(productAction.hasClass('is-soldout') || productAction.hasClass('is-notify-me')){\n                        if(productAction.hasClass('is-notify-me')){\n\n                            productAction.text(window.notify_me.button).prop('disabled', false).removeClass('btn-unavailable');;\n                        } else {\n                            productAction\n                                .text(window.variantStrings.soldOut)\n                                .prop('disabled', true);\n                        }\n                    } else {\n                        productAction\n                            .text(hasQuickShopPanel ? window.variantStrings.add : window.variantStrings.addToCart)\n                            .prop('disabled', false);\n                    }\n                }\n            }\n    \n            const variantsQuantityInvenText = `quick_view_inven_array_${productJson.id}`\n            var arrayInVarName = variantsQuantityInvenText,\n                inven_array = window[arrayInVarName]; \n            \n            if(inven_array != undefined) {\n                var inven_num = inven_array[variantId],\n                    inventoryQuantity = parseInt(inven_num);\n                    updatePreOrderText(productAction, selectedVariant, inventoryQuantity)\n            } else {\n                $.ajax({\n                    type: 'get',\n                    url: window.routes.root + '/products/' + productJson.handle + '?view=ajax_quick_shop_data',\n                    beforeSend: function () {},\n                    success: function (data) {\n                        window[variantsQuantityInvenText] = JSON.parse(data.split('=')[1])\n                        var inven_num = window[variantsQuantityInvenText][variantId],\n                            inventoryQuantity = parseInt(inven_num);\n                        updatePreOrderText(productAction, selectedVariant, inventoryQuantity)   \n                    },      \n                    error: function (xhr, text) {\n                        halo.showWarning($.parseJSON(xhr.responseText).description);\n                    },\n                    complete: function () {\n                        \n                    }\n                });\n            }\n        },\n\n        initQuickShop: function() {\n            if(window.quick_shop.show) {\n                $doc.on('click', '[data-quickshop-popup]', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    \n                    var $target = $(event.target),\n                        product = $target.parents('.product-item'),\n                        productJson = product.data('json-product'),\n                        variantPopup = product.find('.variants-popup');\n                        \n                    const $quickView = document.querySelector('.halo-quick-view-popup');\n                    if (!document.body.matches('.qv-loaded', '.qs3-loaded') && $quickView) {\n                        halo.buildStyleSheet($quickView.dataset.urlStyleProduct, $quickView);\n                        document.body.classList.add('qs3-loaded');\n                    }\n\n                    if ($body.hasClass('quick_shop_option_1')) {\n                        if (!$('.productListing').hasClass('productList')) {\n                            halo.appendProductQuickShopOption2(product);\n                        }\n                    }\n\n                    if(!product.hasClass('quickshop-popup-show')){\n                        $('.product-item').removeClass('quickshop-popup-show');\n\n                        if ($body.hasClass('quick_shop_option_2')) {\n                            var height = product.find('.card-media').outerHeight(true);\n                            var variantsArray = variantPopup.find('.variants')\n\n                            if ($body.hasClass('product-card-layout-02')){\n                                if ($win.width() > 1024) {\n                                    variantsArray.css('max-height', (height - 114) + 'px');\n                                    variantsArray.css('min-height', (height - 114) + 'px');\n                                } else {\n                                    variantsArray.css('max-height', (height - 70) + 'px');\n                                    variantsArray.css('min-height', (height - 70) + 'px');\n                                } \n                            } else if ($body.hasClass('product-card-layout-04')){\n                                if ($win.width() > 1024) {\n                                    variantsArray.css('max-height', (height - 116) + 'px');\n                                    variantsArray.css('min-height', (height - 116) + 'px');\n                                } else {\n                                    variantsArray.css('max-height', (height - 70) + 'px');\n                                    variantsArray.css('min-height', (height - 70) + 'px');\n                                } \n                            } else {\n                                if ($win.width() > 1024) {\n                                    variantsArray.css('max-height', (height - 74) + 'px');\n                                    variantsArray.css('min-height', (height - 74) + 'px');\n                                } else {\n                                    variantsArray.css('max-height', (height - 20) + 'px');\n                                    variantsArray.css('min-height', (height - 20) + 'px');\n                                } \n                            }\n\n                            if (variantsArray[0].scrollHeight > variantsArray[0].clientHeight) {\n                                variantsArray.addClass('scrollable')\n                            }\n\n                            if (!$('.productListing').hasClass('productList')){\n                                halo.appendProductQuickShopOption2(product);\n                            }\n                        } else if ($body.hasClass('quick_shop_option_3')) {\n                            const handle = $target.data('product-handle');\n                            if (!$('.productListing').hasClass('productList')){\n                                halo.updateContentQuickshopOption3(handle);\n                            }\n                            \n                            $doc.on('click', '[data-close-quick-shop-popup]', (event) => {\n                                event.preventDefault();\n                                event.stopPropagation();\n                \n                                $body.removeClass('quickshop-popup-show');\n                            });\n                            \n                            $doc.off('click.quickShopOverlay').on('click.quickShopOverlay', (event) => {\n                                if ($body.hasClass('quickshop-popup-show')) {\n                                    if (($(event.target).closest('[data-quickshop-popup-option-3]').length === 0)){\n                                        $body.removeClass('quickshop-popup-show');\n                                    }\n                                }\n                            })\n                        } else if ($body.hasClass('quick_shop_bulk')) {\n                            const handle = $target.data('product-handle');\n                            if (!$('.productListing').hasClass('productList')){\n                                halo.updateContentQuickBulk(handle, $target);\n                            }\n                            \n                            $doc.on('click', '[data-close-quick-shop-popup]', (event) => {\n                                event.preventDefault();\n                                event.stopPropagation();\n                                $body.removeClass('quickshop-popup-show');\n                            });\n                            \n                            $doc.off('click.quickShopOverlay').on('click.quickShopOverlay', (event) => {\n                                if ($body.hasClass('quickshop-popup-show')) {\n                                    if (($(event.target).closest('[data-halo-quick-bulk-popup]').length === 0)){\n                                        $body.removeClass('quickshop-popup-show');\n                                    }\n                                }\n                            })\n                        }\n                        \n                        if (!$body.hasClass('quick_shop_bulk')) {\n                            if (!$body.hasClass('quick_shop_option_3')) {\n                                if ($win.width() < 767) {\n                                    if ($('.productListing').hasClass('productList')) {\n                                        halo.appendToListViewModal(product)\n                                    } else {\n                                        product.addClass('quickshop-popup-show');\n                                    }\n                                } else {\n                                    product.addClass('quickshop-popup-show');\n                                }\n                            } else {\n                                if ($('.productListing').hasClass('productList')){\n                                    if ($win.width() < 767) {\n                                        halo.appendToListViewModal(product)\n                                    } else {\n                                        product.addClass('quickshop-popup-show');\n                                    }\n                                }\n                            }\n                        }\n                        \n                        product.find('.swatch-label.is-active').trigger('click');\n                        halo.checkStatusSwatchQuickShop(product, productJson);\n\n                        let checkQuickShop1ForMobile = false;\n                        if ($body.hasClass('quick_shop_option_1') && $win.width() < 767) checkQuickShop1ForMobile = true;\n                        \n                        if ($body.hasClass('quick_shop_option_2') || checkQuickShop1ForMobile || ($('productListing').hasClass('productList') && !$('.card-swatch').hasClass('quick_shop_type_3'))) {\n                            if ($win.width() < 767) {\n                                if (!$('.productListing').hasClass('productList')){\n                                    var quickshopVariantPopup = $('#halo-card-mobile-popup .variants-popup');\n                                    quickshopVariantPopup.find('.selector-wrapper').each((index, element) => {\n                                        $(element).find('.swatch-element:not(.soldout):not(.unavailable)').eq('0').find('.single-label').trigger('click');\n                                    });\n                                } else {\n                                    variantPopup.find('.selector-wrapper').each((index, element) => {\n                                        $(element).find('.swatch-element:not(.soldout):not(.unavailable)').eq('0').find('.single-label').trigger('click');\n                                    });\n                                }\n                            } else {\n                                variantPopup.find('.selector-wrapper').each((index, element) => {\n                                    $(element).find('.swatch-element:not(.soldout):not(.unavailable)').eq('0').find('.single-label').trigger('click');\n                                });\n                            }\n                            if (!$('.productListing').hasClass('productList')){\n                                $body.addClass('quick_shop_popup_mobile');\n                            }\n                        } else {\n                            variantPopup.find('.selector-wrapper:not(.option-color)').each((index, element) => {\n                                $(element).find('.swatch-element:not(.soldout):not(.unavailable)').eq('0').find('.single-label').trigger('click');\n                            });\n                        }\n                    } else {\n                        halo.initAddToCartQuickShop($target, variantPopup);\n                    }\n\n                    if (halo.checkNeedToConvertCurrency()) {\n                        Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                    }\n                });\n\n                $doc.on('click', '[data-cancel-quickshop-popup]', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    var $target = $(event.currentTarget),\n                        product = $target.parents('.product-item'),\n                        quickshopMobilePopup = $doc.find('#halo-card-mobile-popup');\n\n                    product.removeClass('quickshop-popup-show');\n                    var productQuickshopShown = $doc.find('.quickshop-popup-show')\n                    productQuickshopShown.removeClass('quickshop-popup-show');\n                    $body.removeClass('quickshop-list-view-show');\n                     \n                    if ($body.hasClass('quick_shop_option_1') || $body.hasClass('quick_shop_option_2')) {\n                        $body.removeClass('quick_shop_popup_mobile');\n                        quickshopMobilePopup.removeClass('show');\n                    }\n                });\n\n                $doc.on('click', (event) => {\n                    if ($(event.target).closest('[data-quickshop-popup]').length === 0 && $(event.target).closest('.variants-popup').length === 0 && $(event.target).closest('.card-swatch').length === 0 && $(event.target).closest('[data-warning-popup]').length === 0) {\n                        $('.product-item').removeClass('quickshop-popup-show');\n                        if($body.hasClass('quick_shop_option_2')){\n                            $body.removeClass('quick_shop_popup_mobile');\n                        }\n                    }\n                });\n\n                halo.changeSwatchQuickShop();\n            }\n        },\n  \n        appendToListViewModal: function(product)  {\n            const quickshopMobilePopup = $doc.find('#list-view-popup');\n            const quickshopForm = product.clone();\n            quickshopMobilePopup.find('.halo-popup-content').empty();\n            quickshopMobilePopup.find('.halo-popup-content').append(quickshopForm);\n\n            const form = quickshopMobilePopup.find('[data-quickshop] .card-information .variants-popup form').eq('0');\n            const mobilePopupId = form.attr('id') + '-mobile';\n            const optionInputs = form.find('.single-option');\n            const optionLabels = form.find('.single-label');\n            const cardInfoWrapper = quickshopMobilePopup.find('.card-product')\n            const variantsPopup = quickshopMobilePopup.find('.variants-popup')\n            const submitBtn = quickshopMobilePopup.find('[data-btn-addtocart]')\n            variantsPopup.removeClass(\"card-list__hidden\")\n            let clicked = {\n                selected1: false,\n                selected2: false,\n                selected3: false\n            } \n\n            form.attr('id', mobilePopupId);\n            submitBtn.attr('data-form-id', submitBtn.attr('data-form-id') + '-mobile')\n\n            optionInputs.each((index, optionInput) => {\n                $(optionInput).attr('id', $(optionInput).attr('id') + '-mobile');\n                $(optionInput).attr('name', $(optionInput).attr('name') + '-mobile');\n                if (optionInput.checked) $(optionInput).trigger('change');\n            })\n\n            optionLabels.each((index, optionLabel) => {\n                $(optionLabel).attr('for', $(optionLabel).attr('for') + '-mobile');\n\n                const swatchWrapper = $(optionLabel).closest('.selector-wrapper')\n                const swatchElement = $(optionLabel).closest('.swatch-element')\n                if (!swatchElement.hasClass('available')) return \n                \n                if (swatchWrapper.hasClass('selector-wrapper-1') && !clicked.selected1) {\n                    clicked.selected1 = true\n                    $(optionLabel).trigger('click')\n                } else if (swatchWrapper.hasClass('selector-wrapper-2') && !clicked.selected2) {\n                    clicked.selected2 = true \n                    $(optionLabel).trigger('click')\n                } else if (swatchWrapper.hasClass('selector-wrapper-3') && !clicked.selected3) {\n                    clicked.selected3 = true\n                    $(optionLabel).trigger('click')\n                }\n            })\n\n            $body.addClass('quickshop-list-view-show');\n\n            $('.background-overlay').off('click.closeListViewModal').on('click.closeListViewModal', () => {\n                $body.removeClass('quickshop-list-view-show');\n            })\n        },\n\n        changeSwatchQuickShop: function () {\n            $doc.on('change', '[data-quickshop] .single-option', (event) => {\n                \n                var $target = $(event.target),\n                    product = $target.parents('.product-item'),\n                    productJson = product.data('json-product'),\n                    productAction = product.find('[data-btn-addtocart]'),\n                    variantList,\n                    optionColor = product.find('.option-color').data('option-position'),\n                    optionIndex = $target.closest('[data-option-index]').data('option-index'),\n                    swatch = product.find('.swatch-element'),\n                    thisVal = $target.val(),\n                    selectedVariant,\n                    productInput = product.find('[name=id]');\n\n                if ($('.productListing').hasClass('productList')) {\n                    var selectedOption1 = product.find('.card-information .selector-wrapper-1').find('input:checked').val(),\n                        selectedOption2 = product.find('.card-information .selector-wrapper-2').find('input:checked').val(),\n                        selectedOption3 = product.find('.card-information .selector-wrapper-3').find('input:checked').val();\n                }\n                else {\n                    var selectedOption1 = product.find('.selector-wrapper-1').find('input:checked').val(),\n                        selectedOption2 = product.find('.selector-wrapper-2').find('input:checked').val(),\n                        selectedOption3 = product.find('.selector-wrapper-3').find('input:checked').val();\n                }\n\n                if ($body.hasClass('quick_shop_option_2') && $('.productListing').hasClass('productList')) {\n                    selectedOption1 = product.find('.selector-wrapper-1').eq('1').find('input:checked').val();\n                } else {\n                    if ($('.productListing').hasClass('productList') && $win.width() < 767) {\n                        selectedOption1 = product.find('.selector-wrapper-1').eq('1').find('input:checked').val();\n                        selectedOption2 = product.find('[data-option-index=\"1\"]').eq('1').find('input:checked').val();\n                    } else {\n                        selectedOption1 = product.find('.selector-wrapper-1').eq('0').find('input:checked').val();\n                    }\n                }\n\n                if (productJson != undefined) {\n                    variantList = productJson.variants;\n                }\n\n                swatch.removeClass('soldout');\n                swatch.find('input[type=\"radio\"]').prop('disabled', false);\n\n                switch (optionIndex) {\n                    case 0:\n                        var availableVariants = variantList.find((variant) => {\n                            if (optionColor == 1) {\n                                if (selectedOption3 != undefined) {\n                                    return variant.option2 == thisVal && variant.option1 == selectedOption2 && variant.option3 == selectedOption3;\n                                }\n                                else {\n                                    return variant.option2 == thisVal && variant.option1 == selectedOption2;\n                                }\n                            } else {\n                                if (optionColor == 2) {\n                                    return variant.option3 == thisVal && variant.option1 == selectedOption2;\n                                } else {\n                                    return variant.option1 == thisVal && variant.option2 == selectedOption2;\n                                }\n                            }\n                        });\n\n                        if(availableVariants != undefined){\n                            selectedVariant =  availableVariants;\n                        } else{\n                            var altAvailableVariants = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == thisVal;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == thisVal;\n                                    } else {\n                                        return variant.option1 == thisVal;\n                                    }\n                                }\n                            });\n\n                            selectedVariant =  altAvailableVariants;\n                        }\n\n                        break;\n                    case 1:\n                        var availableVariants = variantList.find((variant) => {\n                            if (optionColor == 1) {\n                                return variant.option2 == selectedOption1 && variant.option1 == thisVal && variant.option3 == selectedOption2;\n                            } else {\n                                if (optionColor == 2) {\n                                    return variant.option3 == selectedOption1 && variant.option1 == thisVal && variant.option2 == selectedOption2;\n                                } else {\n                                    return variant.option1 == selectedOption1 && variant.option2 == thisVal && variant.option3 == selectedOption2;\n                                }\n                            }\n                        });\n\n                        if(availableVariants != undefined){\n                            selectedVariant =  availableVariants;\n                        } else {\n                            var altAvailableVariants = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == selectedOption1 && variant.option1 == thisVal;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == selectedOption1 && variant.option1 == thisVal;\n                                    } else {\n                                        return variant.option1 == selectedOption1 && variant.option2 == thisVal;\n                                    }\n                                }\n                            });\n\n                            selectedVariant =  altAvailableVariants;\n                        }\n\n                        break;\n                    case 2:\n                        var availableVariants = variantList.find((variant) => {\n                            if (optionColor == 1) {\n                                return variant.option2 == selectedOption1 && variant.option1 == selectedOption2 && variant.option3 == thisVal;\n                            } else {\n                                if (optionColor == 2) {\n                                    return variant.option3 == selectedOption1 && variant.option1 == selectedOption2 && variant.option2 == thisVal;\n                                } else {\n                                    return variant.option1 == selectedOption1 && variant.option2 == selectedOption2 && variant.option3 == thisVal;\n                                }\n                            }\n                        });\n\n                        if(availableVariants != undefined){\n                            selectedVariant =  availableVariants;\n                        }\n\n                        break;\n                }\n                            \n                if (selectedVariant == undefined) {\n                    return;\n                }\n                \n                productInput.val(selectedVariant.id);\n                var value = $target.val();\n               \n\n                \n                $target.parents('.selector-wrapper').find('.form-label span').text(value);\n                if (selectedVariant.available) {\n                    product.find('[data-btn-addtocart]').removeClass('btn-unavailable');\n                    product.find('[data-quickshop] quickshop-update-quantity').removeClass('disabled');\n                    product.find('[data-btn-addtocart]').attr('data-available', 'true')\n                      \n                } else {\n                    product.find('[data-btn-addtocart]').addClass('btn-unavailable');\n                    product.find('[data-quickshop] quickshop-update-quantity').addClass('disabled');\n                    product.find('[data-btn-addtocart]').attr('data-available', 'false')\n                }\n\n                if (halo.checkNeedToConvertCurrency()) {\n                    Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                };\n\n                if (!$body.hasClass('quick_shop_option_2') && !$body.hasClass('quick_shop_option_3') && $win.width() < 767) {\n                    \n                } \n\n                if ($body.hasClass('quick_shop_option_2') && $win.width() < 767) {\n                    if ($('.halo-popup-wrapper .card-product__wrapper [data-option-index=\"0\"] .swatch-element').length == 1){\n                        $('.halo-popup-wrapper .card-product__wrapper [data-option-index=\"0\"] .swatch-element').eq('0').find('.single-label').trigger('click');\n                    }\n                    if ($('.halo-product-list-view-popup .product-options-wrapper .product-item .card-information [data-option-index=\"0\"] .swatch-element').length == 1) {\n                        $('.halo-product-list-view-popup .product-options-wrapper .product-item .card-information [data-option-index=\"0\"] .swatch-element').eq('0').find('.single-label').trigger('click');\n                    }\n                } \n\n                halo.checkStatusSwatchQuickShop(product, productJson);\n                halo.checkPreOrderOfVariant(selectedVariant, productAction, productJson);\n            });\n        },\n\n        checkStatusSwatchQuickShop: function(product, productJson){\n            var variantPopup = product.find('.card-variant'),\n                variantList,\n                productOption = product.find('[data-option-index]'),\n                optionColor = product.find('.option-color').data('option-position'),\n                selectedOption1 = product.find('[data-option-index=\"0\"]').find('input:checked').val(),\n                selectedOption2 = product.find('[data-option-index=\"1\"]').find('input:checked').val(),\n                selectedOption3 = product.find('[data-option-index=\"2\"]').find('input:checked').val(),\n                productId = product.data('product-id');\n\n            \n            if ($body.hasClass('quick_shop_option_2')) {\n                var height = product.find('.card-media').outerHeight(true);\n                if (selectedOption3 != undefined) {\n                    if ($body.hasClass('product-card-layout-01')) {\n                        if (height < 310) {\n                            $('[data-quickshop]').addClass('active_option_3');\n                        } else {\n                            $('[data-quickshop]').removeClass('active_option_3');\n                        }  \n                    } else {\n                        if (height < 370) {\n                            $('[data-quickshop]').addClass('active_option_3');\n                        } else {\n                            $('[data-quickshop]').removeClass('active_option_3');\n                        } \n                    }\n                } else {\n                    if ($win.width() > 1024) {\n                        if ($body.hasClass('product-card-layout-05')) {\n                            if (height < 350 && selectedOption2 != undefined) {\n                                $('[data-quickshop]').addClass('active_option_3');\n                            } else {\n                                $('[data-quickshop]').removeClass('active_option_3');\n                            }    \n                        } else if ($body.hasClass('product-card-layout-01')) {\n                            if (height < 310 && selectedOption2 != undefined) {\n                                $('[data-quickshop]').addClass('active_option_3');\n                            } else {\n                                $('[data-quickshop]').removeClass('active_option_3');\n                            }  \n                        }else {\n                            if (height < 370 && selectedOption2 != undefined) {\n                                $('[data-quickshop]').addClass('active_option_3');\n                            } else {\n                                $('[data-quickshop]').removeClass('active_option_3');\n                            }   \n                        }\n                    } else {\n                        if ($body.hasClass('product-card-layout-01')) {\n                            if (height < 310) {\n                                if (selectedOption1 != undefined || selectedOption2 != undefined) {\n                                    $('[data-quickshop]').removeClass('active_option_3');\n                                } else {\n                                    $('[data-quickshop]').addClass('active_option_3');\n                                }\n                            } else {\n                                $('[data-quickshop]').removeClass('active_option_3');\n                            }   \n                        } else {\n                            if (height < 370) {\n                                if (selectedOption1 != undefined || selectedOption2 != undefined) {\n                                    $('[data-quickshop]').removeClass('active_option_3');\n                                } else {\n                                    $('[data-quickshop]').addClass('active_option_3');\n                                }\n                            } else {\n                                $('[data-quickshop]').removeClass('active_option_3');\n                            }   \n                        }\n                    }\n                }\n            }\n\n            if ($body.hasClass('quick_shop_option_2') && $('.productListing').hasClass('productList')) {\n                selectedOption1 = product.find('[data-option-index=\"0\"]').eq('1').find('input:checked').val();\n            } else {\n                if ($('.productListing').hasClass('productList') && $win.width() < 767) {\n                    selectedOption1 = product.find('[data-option-index=\"0\"]').eq('1').find('input:checked').val();\n                    selectedOption2 = product.find('[data-option-index=\"1\"]').eq('1').find('input:checked').val();\n                } else {\n                    selectedOption1 = product.find('[data-option-index=\"0\"]').eq('0').find('input:checked').val();\n                }\n            }\n            \n            if (productJson != undefined) {\n                variantList = productJson.variants;\n            }\n\n            productOption.each((index, element) => {\n                var optionIndex = $(element).data('option-index'),\n                    swatch = $(element).find('.swatch-element');\n\n                switch (optionIndex) {\n                    case 0: \n                        swatch.each((idx, elt) => {\n                            var item = $(elt),\n                                swatchVal = item.data('value');\n\n                            var optionSoldout = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == swatchVal && variant.available;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == swatchVal && variant.available;\n                                    } else {\n                                        return variant.option1 == swatchVal && variant.available;\n                                    }\n                                }\n                            });\n\n                            var optionUnavailable = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == swatchVal;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == swatchVal;\n                                    } else {\n                                        return variant.option1 == swatchVal;\n                                    }\n                                }\n                            });\n\n                            if(optionSoldout == undefined){\n                                if (optionUnavailable == undefined) {\n                                    item.removeClass('soldout available').addClass('unavailable');\n                                    item.find('input[type=\"radio\"]').prop('checked', false);\n                                } else {\n                                    item\n                                        .removeClass('unavailable available')\n                                        .addClass('soldout')\n                                        .find('.single-action')\n                                        .attr('data-variant-id', optionUnavailable.title);\n                                    item.find('input[type=\"radio\"]').prop('disabled', false);\n                                }\n                            } else {\n                                item.removeClass('soldout unavailable').addClass('available');\n                                item.find('input[type=\"radio\"]').prop('disabled', false);\n                            }\n                        });\n\n                        break;\n                    case 1:\n                        swatch.each((idx, elt) => {\n                            var item = $(elt),\n                                swatchVal = item.data('value');\n\n                            var optionSoldout = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == selectedOption1 && variant.option1 == swatchVal && variant.available;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == selectedOption1 && variant.option1 == swatchVal && variant.available;\n                                    } else {\n                                        return variant.option1 == selectedOption1 && variant.option2 == swatchVal && variant.available;\n                                    }\n                                }\n                            });\n\n                            var optionUnavailable = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == selectedOption1 && variant.option1 == swatchVal;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == selectedOption1 && variant.option1 == swatchVal;\n                                    } else {\n                                        // CHECK: find the error and value of selectedOption1 \n                                        return variant.option1 == selectedOption1 && variant.option2 == swatchVal;\n                                    }\n                                }\n                            });\n\n                            if(optionSoldout == undefined){\n                                if (optionUnavailable == undefined) {\n                                    item.removeClass('soldout available').addClass('unavailable');\n                                    item.find('input[type=\"radio\"]').prop('checked', false);\n                                } else {\n                                    item\n                                        .removeClass('unavailable available')\n                                        .addClass('soldout')\n                                        .find('.single-action-selector')\n                                        .attr('data-variant-id', optionUnavailable.title);\n                                    item.find('input[type=\"radio\"]').prop('disabled', false);\n                                }\n                            } else {\n                                item.removeClass('soldout unavailable').addClass('available');\n                                item.find('input[type=\"radio\"]').prop('disabled', false);\n                            }\n                            \n                        });\n                        break;\n                    case 2:\n                        swatch.each((idx, elt) => {\n                            var item = $(elt),\n                                swatchVal = item.data('value');\n\n                            var optionSoldout = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == selectedOption1 && variant.option1 == selectedOption2 && variant.option3 == swatchVal && variant.available;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == selectedOption1 && variant.option1 == selectedOption2 && variant.option2 == swatchVal && variant.available;\n                                    } else {\n                                        return variant.option1 == selectedOption1 && variant.option2 == selectedOption2 && variant.option3 == swatchVal && variant.available;\n                                    }\n                                }\n                            });\n\n                            var optionUnavailable = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == selectedOption1 && variant.option1 == selectedOption2 && variant.option3 == swatchVal;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == selectedOption1 && variant.option1 == selectedOption2 && variant.option2 == swatchVal;\n                                    } else {\n                                        return variant.option1 == selectedOption1 && variant.option2 == selectedOption2 && variant.option3 == swatchVal;\n                                    }\n                                }\n                            });\n\n                            if(optionSoldout == undefined){\n                                if (optionUnavailable == undefined) {\n                                    item.removeClass('soldout available').addClass('unavailable');\n                                    item.find('input[type=\"radio\"]').prop('checked', false);\n                                } else {\n                                    item\n                                        .removeClass('unavailable available')\n                                        .addClass('soldout')\n                                        .find('.single-action-selector')\n                                        .attr('data-variant-id', optionUnavailable.title);\n                                    item.find('input[type=\"radio\"]').prop('disabled', false);\n                                }\n                            } else {\n                                item.removeClass('unavailable soldout').addClass('available');\n                                item.find('input[type=\"radio\"]').prop('disabled', false);\n                            }\n                        });\n\n                        break;  \n                }\n            });\n\n            variantPopup.find('.selector-wrapper:not(.option-color)').each((index, element) => {\n                var item = $(element);\n\n                if (item.find('.swatch-element').find('input:checked').length < 1) {\n                    if (item.find('.swatch-element.available').length > 0) {\n                        item.find('.swatch-element.available').eq('0').find('.single-label').trigger('click');\n                    } else {\n                        item.find('.swatch-element.soldout').eq('0').find('.single-label').trigger('click');\n                    }\n                }\n            });\n\n  \n            if ($body.hasClass('quick_shop_option_2')) {\n                var variantId = product.find('[data-quickshop]').eq(1).find('[name=\"id\"]').val();\n                var arrayInVarName = `quick_view_inven_array_${productId}`,\n                    inven_array = window[arrayInVarName]; \n                  \n                if(inven_array != undefined) {\n                    var inven_num = inven_array[variantId],\n                        inventoryQuantity = parseInt(inven_num),\n                        quantityInput = product.find('input[name=\"quantity\"]').eq(0);\n                    \n                    quantityInput.attr('data-inventory-quantity', inventoryQuantity);\n                    if (quantityInput.val() > inventoryQuantity) {\n                        if (inventoryQuantity > 0) {\n                            quantityInput.val(inventoryQuantity)\n                        } else {\n                            quantityInput.val(1)\n                        }\n                    }\n                }\n            }\n        },\n        \n        initAddToCartQuickShop: function($target, popup){\n            var variantId = popup.find('[name=\"id\"]').val(),\n                qty = 1;\n\n            halo.actionAddToCart($target, variantId, qty);\n            \n        },\n\n        initAddToCart: function() {\n            $doc.off('click.addToCart').on('click.addToCart', '[data-btn-addtocart]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.target),\n                    product = $target.parents('.product-item'),\n                    MobilePopup_Option_2 = $doc.find('#halo-card-mobile-popup'),\n                    ProductQuickShopShown_Option_2 = $doc.find('.quickshop-popup-show');\n\n                if($target.closest('product-form').length > 0){\n                    var productForm = $target.closest('form');\n                    \n                    halo.actionAddToCart2($target, productForm);\n                } else {\n                    if(!$target.hasClass('is-notify-me') && !$target.hasClass('is-soldout')){\n                        var form = $target.parents('form'),\n                            variantId = form.find('[name=\"id\"]').val(),\n                            qty = form.find('[name=\"quantity\"]').val(),\n                            input = form.find('[name=\"quantity\"]').eq(0);\n                        if(qty == undefined){\n                            qty = 1;\n                        }\n\n                        if ($('.recipient-form').length > 0) {\n                            $('#product-add-to-cart').trigger(\"click\");\n                        } else {\n                            halo.actionAddToCart($target, variantId, qty, input);\n                        }\n                    \n                    } else if($target.hasClass('is-notify-me')){\n                        halo.notifyInStockPopup($target);\n                    }\n                }\n            });\n            \n            $doc.on('click', '[data-close-add-to-cart-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('add-to-cart-show');\n            });\n\n\n            $doc.on('click', (event) => {\n                if($body.hasClass('add-to-cart-show')){\n                    if (($(event.target).closest('[data-add-to-cart-popup]').length === 0)) {\n                        $body.removeClass('add-to-cart-show');\n                    }\n                }\n            });\n        },\n\n        actionAddToCart: function($target, variantId, qty, input){\n            var originalMessage = window.variantStrings.submit,\n                waitMessage = window.variantStrings.addingToCart,\n                successMessage = window.variantStrings.addedToCart;\n\n            if($target.hasClass('button-text-change')){\n                originalMessage = $target.text();\n            }\n\n            $target.addClass('is-loading');\n\n            if($body.hasClass('quick-view-show')){\n                Shopify.addItem(variantId, qty, $target, () => {\n                    switch (window.after_add_to_cart.type) {\n                        case 'cart':\n                            halo.redirectTo(window.routes.cart);\n\n                            break;\n                        case 'quick_cart':\n                            if(window.quick_cart.show){\n                                Shopify.getCart((cart) => {\n                                    if( window.quick_cart.type == 'popup'){\n                                    } else {\n                                        $body.addClass('cart-sidebar-show');\n                                        halo.updateSidebarCart(cart);\n                                    }\n                                    if (cart.item_count >= 100){\n                                        $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                                    }\n\n                                    $target.removeClass('is-loading');\n                                    $('.background-overlay').removeClass('hold');\n                                });\n                            } else {\n                                halo.showWarning(window.after_add_to_cart.message_2);\n                                $target.removeClass('is-loading');\n                                halo.showWarning(window.after_add_to_cart.message_2);\n                                Shopify.getCart((cart) => {\n                                    $body.find('[data-cart-count]').text(cart.item_count);\n                                    if (cart.item_count >= 100){\n                                        $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                                    }\n                                    if (cart.item_count == 1){\n                                        $body.find('[data-cart-text]').text(window.cartStrings.item);\n                                    } else {\n                                        $body.find('[data-cart-text]').text(window.cartStrings.items);\n                                    }\n                                });\n                            }\n\n                            break;\n                        case 'popup_cart_1':\n                            Shopify.getCart((cart) => {\n                                halo.updatePopupCart(cart, 1, variantId);\n                                //halo.updateSidebarCart(cart);\n                                $body.addClass('add-to-cart-show');\n                                $body.removeClass('quick-view-show');\n                                $target.removeClass('is-loading');\n                                if (cart.item_count >= 100){\n                                    $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                                }\n                                $('.background-overlay').removeClass('hold');\n                            });\n\n                            break;\n                    }\n                }, input);\n            } else if($body.hasClass('template-cart')) {\n                Shopify.addItem(variantId, qty, $target, () => {\n                    // $target.text(successMessage);\n                    halo.redirectTo(window.routes.cart);\n                }, input);\n            } else {\n                Shopify.addItem(variantId, qty, $target, () => {\n                    // $target.text(successMessage);\n                    $target.removeClass('is-loading');\n                    if ($body.hasClass('quickshop-popup-show') && $body.hasClass('quick_shop_option_3')) {\n                        $body.removeClass('quickshop-popup-show');\n                        \n                        $('.quickshop-popup-show').removeClass('quickshop-popup-show');\n                    }\n\n                    if ($body.hasClass('quickshop-list-view-show')) {\n                        $body.removeClass('quickshop-list-view-show')\n                    }\n\n                    if ($body.hasClass('show-mobile-options')) {\n                        $body.removeClass('show-mobile-options');\n                        $('.background-overlay').addClass('hold');\n                    }\n\n                    if ($body.hasClass('quick_shop_popup_mobile') && $body.hasClass('quick_shop_option_1') || $body.hasClass('quick_shop_option_2')) {\n                        // setTimeout(() => {\n                            $body.removeClass('quick_shop_popup_mobile');\n                            $doc.find('#halo-card-mobile-popup').removeClass('show');\n                            $doc.find('.quickshop-popup-show').each((index, popup) => {\n                                $(popup).removeClass('quickshop-popup-show');\n                            })\n                        // }, 200);\n                    }\n\n                    switch (window.after_add_to_cart.type) {\n                        case 'cart':\n                            halo.redirectTo(window.routes.cart);\n\n                            break;\n                        case 'quick_cart':\n                            if(window.quick_cart.show){\n                                Shopify.getCart((cart) => {\n                                    if( window.quick_cart.type == 'popup'){\n                                    } else {\n                                        $body.addClass('cart-sidebar-show');\n                                        halo.updateSidebarCart(cart);\n                                    }\n                                    $target.removeClass('is-loading');\n                                    $('.background-overlay').removeClass('hold');\n                                    if (cart.item_count >= 100){\n                                        $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                                    }\n                                });\n\n                            } else {\n                                halo.showWarning(window.after_add_to_cart.message_2);\n                                Shopify.getCart((cart) => {\n                                    $body.find('[data-cart-count]').text(cart.item_count);\n                                    if (cart.item_count >= 100){\n                                        $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                                    }\n                                    if (cart.item_count == 1){\n                                        $body.find('[data-cart-text]').text(window.cartStrings.item);\n                                    } else {\n                                        $body.find('[data-cart-text]').text(window.cartStrings.items);\n                                    }\n                                });\n                            }\n\n                            break;\n                        case 'popup_cart_1':\n                            Shopify.getCart((cart) => {\n                                halo.updatePopupCart(cart, 1, variantId);\n                                $body.addClass('add-to-cart-show');\n                                $target.removeClass('is-loading');\n                                $('.background-overlay').removeClass('hold');\n                                if (cart.item_count >= 100){\n                                    $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                                }\n                            });\n\n                            break;\n                    }\n                }, input);\n            }\n        },\n\n        actionAddToCart2: function($target, productForm) {\n            const config = fetchConfig('javascript');\n            config.headers['X-Requested-With'] = 'XMLHttpRequest';\n            delete config.headers['Content-Type'];\n            var originalMessage = window.variantStrings.submit,\n                waitMessage = window.variantStrings.addingToCart,\n                successMessage = window.variantStrings.addedToCart;\n            \n            if($target.hasClass('button-text-change')){\n                originalMessage = $target.text();\n            }\n\n            $target.addClass('is-loading');\n\n            let addToCartForm = document.querySelector('[data-type=\"add-to-cart-form\"]');\n            let formData = new FormData(addToCartForm);\n\n            const properties = document.querySelectorAll('.line-item-property__field [name^=\"properties\"]')\n\n            properties.forEach(property => {\n              if (property.value == null) return;\n                if (property.type == 'file') {\n                  formData.append(property.name, property.files[0])\n                } else {\n                  formData.append(property.name, property.value)\n                }\n            })\n\n            const enoughInStock = halo.checkSufficientStock(productForm);\n            if (!enoughInStock && $body.hasClass('quickshop-popup-show')) {\n                alert(window.cartStrings.addProductOutQuantity);\n                $target.removeClass('is-loading');\n                return \n            }\n\n            const addItemToCart = (variantId) => {\n                fetch(window.Shopify.routes.root + 'cart/add.js', {...config, ...{\n                        method: 'POST',\n                        body: formData\n                    }\n                })\n                .then(response => {\n                    return response.json();\n                })\n                .catch((error) => {\n                    console.error('Error:', error);\n                })\n                .finally(() => {\n                    if ($body.hasClass('quickshop-popup-show')) {\n                        $body.removeClass('quickshop-popup-show');\n                    }\n    \n                    if($body.hasClass('quick-view-show')){\n                        if (window.after_add_to_cart.type == 'cart') {\n                            halo.redirectTo(window.routes.cart);\n                        } else {\n                            Shopify.getCart((cartTotal) => {\n                                $body.find('[data-cart-count]').text(cartTotal.item_count);\n                                $target.removeClass('is-loading');\n                                if (cart.item_count >= 100){\n                                    $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                                }\n                            });\n                        }\n                    } else {\n                        switch (window.after_add_to_cart.type) {\n                            case 'cart':\n                                halo.redirectTo(window.routes.cart);\n                            \n                                break;\n                            case 'quick_cart':\n                                if(window.quick_cart.show){\n                                    Shopify.getCart((cart) => {\n                                        if( window.quick_cart.type == 'popup'){\n                                            // $body.addClass('cart-modal-show');\n                                            // halo.updateDropdownCart(cart);\n                                        } else {\n                                            $body.addClass('cart-sidebar-show');\n                                            halo.updateSidebarCart(cart);\n                                        }\n                                        if (cart.item_count >= 100){\n                                            $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                                        }\n                                        $target.removeClass('is-loading');\n                                    });\n                                } else {\n                                    halo.redirectTo(window.routes.cart);\n                                }\n                                \n                                break;\n                            case 'popup_cart_1':\n                                Shopify.getCart((cart) => {\n                                    halo.updatePopupCart(cart, 1, variantId);\n                                    halo.updateSidebarCart(cart);\n                                    $body.addClass('add-to-cart-show');\n                                    $target.removeClass('is-loading');\n                                    if (cart.item_count >= 100){\n                                        $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                                    }\n                                });\n    \n                                break;\n                        }\n                    }\n                });\n            }\n\n            fetch(window.Shopify.routes.root + 'cart.js', {\n                method: 'GET',\n            })\n            .then(response => {\n                return response.json();\n            }).then(response => { \n                const variantId = parseInt($(addToCartForm).serialize().split('id=')[1])\n                const item = response.items.find(item => item.variant_id == variantId)\n                const currentQuantity = item?.quantity \n                const currentProductId = item?.product_id\n                const moreQuantity = parseInt(productForm.find('[data-inventory-quantity]').val()) \n                const maxQuantity = parseInt(productForm.find('[data-inventory-quantity]').data('inventory-quantity'))\n                const saleOutStock = document.getElementById('product-add-to-cart').dataset.available === 'true' | false\n\n                if (!currentQuantity || !maxQuantity || saleOutStock) return addItemToCart(variantId)\n                var arrayInVarName = `selling_array_${currentProductId}`,\n                itemInArray = window[arrayInVarName],\n                itemStatus = itemInArray[variantId];\n                if(itemStatus == 'deny') {\n                    if (currentQuantity + moreQuantity > maxQuantity)  {\n                        if(maxQuantity < 0){\n                            addItemToCart(variantId);\n                        } else {\n                            const remainingQuantity = maxQuantity - currentQuantity \n                            throw new Error(`You ${remainingQuantity > 0 ? `can only add ${remainingQuantity}` : 'cannot add'} more of the items into the cart`)\n                        }\n                    } else {\n                        addItemToCart(variantId);\n                    }\n                } else {\n                  addItemToCart(variantId);\n                }\n            }).catch(err => {\n                this.showWarning(err)\n            }).finally(() => {\n                $target.removeClass('is-loading');\n            })\n        },\n\n        checkSufficientStock: function(productForm) {\n            const maxValidQuantity = productForm.find('[data-inventory-quantity]').data('inventory-quantity')\n            const inputQuantity = parseInt(productForm.find('[data-inventory-quantity]').val())\n            \n            return maxValidQuantity >= inputQuantity\n        },  \n\n        updateContentQuickshopOption3: function(handle){\n            var quickShopPopup = $('#halo-quickshop-popup-option-3'),\n                quickShopPopupContent = quickShopPopup.find('.halo-popup-content');\n\n            $.ajax({\n                type: 'get',\n                url: window.routes.root + '/products/' + handle + '?view=ajax_quick_shop',\n                beforeSend: function () {\n                    $('[data-quick-view-popup] .halo-popup-content').empty()\n                },\n                success: function (data) {\n                    quickShopPopupContent.html(data);       \n                },\n                error: function (xhr, text) {\n                    // alert($.parseJSON(xhr.responseText).description);\n                    halo.showWarning($.parseJSON(xhr.responseText).description);\n                },\n                complete: function () {\n                    var $scope = quickShopPopup.find('.quickshop');\n                    \n                    halo.productImageGallery($scope);\n                    setTimeout(() => {\n                        $body.addClass('quickshop-popup-show');\n                    }, 150)\n                }\n            });\n        },\n\n        updateContentQuickBulk: function(handle, $target){\n            const quickBulkPopup = $('#halo-quick-bulk-popup'),\n                quickBulkPopupContent = quickBulkPopup.find('.halo-popup-content');\n\n            $.ajax({\n                type: 'get',\n                url: window.routes.root + '/products/' + handle + '?view=ajax_quick_bulk',\n                beforeSend: function () {\n                    $target.addClass('is-loading');\n                    $('[data-quick-view-popup] .halo-popup-content').empty();\n                },\n                success: function (data) {\n                    quickBulkPopupContent.html(data);       \n                },\n                error: function (xhr, text) {\n                    halo.showWarning($.parseJSON(xhr.responseText).description);\n                },\n                complete: function () {\n                    var $scope = quickBulkPopup.find('.quickshop');\n                    halo.productImageGallery($scope);\n                    setTimeout(() => {$target.removeClass('is-loading')}, 100);\n                }\n            });\n        },\n        \n        appendProductQuickShopOption2: function(product) {\n            //  Append Product Popup Quick Shop 2 Show Mobile\n            if (window.innerWidth <= 767) {\n                var quickshopMobilePopup = $doc.find('#halo-card-mobile-popup');\n                var quickshopForm = product.clone();\n                quickshopMobilePopup.find('.halo-popup-content').empty();\n                quickshopForm.find('.card-product__group').remove();\n                quickshopMobilePopup.find('.halo-popup-content').append(quickshopForm);\n\n                var form = quickshopMobilePopup.find('[data-quickshop] form').eq('0');\n                var mobilePopupId = form.attr('id') + 'mobile';\n                form.attr('id', mobilePopupId);\n                var optionInputs = form.find('.single-option');\n                var optionLabels = form.find('.single-label');\n\n                optionInputs.each((index, optionInput) => {\n                    $(optionInput).attr('id', $(optionInput).attr('id') + '-mobile');\n                })\n                \n                optionLabels.each((index, optionLabel) => {\n                    $(optionLabel).attr('for', $(optionLabel).attr('for') + '-mobile');\n                })\n\n                quickshopMobilePopup.addClass('show');\n\n                $body.addClass(\"quick_shop_popup_mobile\");\n\n                $doc.on('click', (e) => {\n                    var $target = $(e.target)\n                    if ($target.hasClass('background-overlay')) {\n                        quickshopMobilePopup.removeClass('show');\n                        $body.removeClass('quick_shop_popup_mobile');\n                        product.removeClass('quickshop-popup-show');\n                    }\n                })\n            } \n        },\n\n        isRunningInIframe: function() {\n            try {\n                return window.self !== window.top;\n            } catch (e) {\n                return true;\n            }\n        },\n\n        redirectTo: function(url){\n            if (halo.isRunningInIframe() && !window.iframeSdk) {\n                window.top.location = url;\n            } else {\n                window.location = url;\n            }\n        },\n\n        initQuickCart: function() {\n            if(window.quick_cart.show){\n                if(window.quick_cart.type == 'popup'){\n                    // halo.initDropdownCart();\n                } else {\n                    halo.initSidebarCart();\n                }\n            }\n\n            halo.initEventQuickCart();\n        },\n\n        initEventQuickCart: function(){\n            halo.removeItemQuickCart();\n            halo.updateQuantityItemQuickCart();\n            halo.editQuickCart();\n        },\n\n        productCollectionCartSlider: function(){\n            var productCart = $('[data-product-collection-cart]');\n\n            productCart.each((index, element) => {\n                var self = $(element),\n                    productGrid = self.find('.products-carousel'),\n                    itemDots = productGrid.data('item-dots'),\n                    itemArrows = productGrid.data('item-arrows');\n\n                if(productGrid.length > 0){\n                    if(!productGrid.hasClass('slick-initialized')){\n                        productGrid.slick({\n                            mobileFirst: true,\n                            adaptiveHeight: false,\n                            infinite: false,\n                            vertical: false,\n                            slidesToShow: 1,\n                            slidesToScroll: 1,\n                            dots: true,\n                            arrows: false,\n                            nextArrow: window.arrows.icon_next,\n                            prevArrow: window.arrows.icon_prev,\n                            rtl: window.rtl_slick,\n                            responsive: [\n                            {\n                                breakpoint: 1025,\n                                settings: {\n                                    dots: itemDots,\n                                    arrows: itemArrows\n                                }\n                            }]\n                        });\n                    }\n                }\n            });\n        },\n\n        updatePopupCart: function(cart, layout, variantId) {\n            var item = cart.items.filter(item => item.id == variantId)[0],\n                popup = $('[data-add-to-cart-popup]'),\n                product = popup.find('.product-added'),\n                productTitle = product.find('.product-title'),\n                productImage = product.find('.product-image'),\n                title = item.title || item.product_title,\n                image = item.featured_image,\n                img = '<img src=\"'+ image.url +'\" alt=\"'+ image.alt +'\" title=\"'+ image.alt +'\"/>';\n\n            productImage.attr('href', item.url).html(img);\n\n            productTitle\n                .find('.title')\n                .attr('href', item.url)\n                .empty()\n                .append(title);\n\n            Shopify.getCart((cartTotal) => {\n                $body.find('[data-cart-count]').text(cartTotal.item_count);\n            });\n        },\n\n        initSidebarCart: function() {\n            var cartIcon = $('[data-cart-sidebar]');\n            let checkInitSideBarCart = true;\n            cartIcon.on('click', () => {\n                if (!checkInitSideBarCart) return\n                checkInitSideBarCart = false\n                Shopify.getCart((cart) => {\n                    halo.updateSidebarCart(cart);\n                })\n                if ($('body').hasClass('cursor-fixed__show')){\n                    window.sharedFunctionsAnimation.onEnterButton();\n                    window.sharedFunctionsAnimation.onLeaveButton();\n                }\n            })\n            if ($body.hasClass('template-cart')) {\n                cartIcon.on('click', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    $('html, body').animate({\n                        scrollTop: 0\n                    }, 700);\n                });\n                if (halo.checkNeedToConvertCurrency()) {\n                  Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                };\n            } else {\n                cartIcon.on('click', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    \n                    $body.addClass('cart-sidebar-show');\n                });\n            }\n\n            $doc.on('click', '[data-close-cart-sidebar]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                if ($body.hasClass('cart-sidebar-show')) {\n                    $body.removeClass('cart-sidebar-show');\n                }\n            });\n\n            $body.on('click', '.background-overlay', (event) => {\n                if ($body.hasClass('cart-sidebar-show') && !$body.hasClass('quickshop-popup-show') && !$body.hasClass('quick_shop_popup_mobile') && !$body.hasClass('edit-cart-show') && !$body.hasClass('term-condition-show') && !$body.hasClass('has-warning')) {\n                    if (($(event.target).closest('#halo-cart-sidebar').length === 0) && \n                        ($(event.target).closest('[data-cart-sidebar]').length === 0) && \n                        ($(event.target).closest('[data-edit-cart-popup]').length === 0) && \n                        ($(event.target).closest('[data-warning-popup]').length === 0) && \n                        ($(event.target).closest('[data-term-condition-popup]').length === 0)){\n                        $body.removeClass('cart-sidebar-show');\n                    }\n                }\n            })\n        },\n\n        updateSidebarCart: function(cart) {\n            if(!$.isEmptyObject(cart)){\n                const $cartDropdown = $('#halo-cart-sidebar .halo-sidebar-wrapper .previewCart-wrapper');\n                const $cartLoading = '<div class=\"loading-overlay loading-overlay--custom\">\\\n                        <div class=\"loading-overlay__spinner\">\\\n                            <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"spinner\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\\\n                                <circle class=\"path\" fill=\"none\" stroke-width=\"6\" cx=\"33\" cy=\"33\" r=\"30\"></circle>\\\n                            </svg>\\\n                        </div>\\\n                    </div>';\n                const loadingClass = 'is-loading';\n\n                $cartDropdown\n                    .addClass(loadingClass)\n                    .prepend($cartLoading);\n\n                $.ajax({\n                    type: 'GET',\n                    url: window.routes.root + '/cart?view=ajax_side_cart',\n                    cache: false,\n                    success: function (data) {\n                        var response = $(data);\n\n                        $cartDropdown\n                            .removeClass(loadingClass)\n                            .html(response);\n\n                        halo.dispatchChangeForShippingMessage();\n                    },\n                    error: function (xhr, text) {\n                        halo.showWarning($.parseJSON(xhr.responseText).description);\n                    },\n                    complete: function () {\n                        $body.find('[data-cart-count]').text(cart.item_count);\n                        if (cart.item_count >= 100){\n                            $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                        }\n                        if (cart.item_count == 1){\n                            $body.find('[data-cart-text]').text(window.cartStrings.item);\n                        } else {\n                            $body.find('[data-cart-text]').text(window.cartStrings.items);\n                        }\n                        halo.productCollectionCartSlider();\n                        halo.updateGiftWrapper();\n                        if (halo.checkNeedToConvertCurrency()) {\n                          Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                        };\n                        document.dispatchEvent(new CustomEvent('cart-update', { detail: cart }));\n                        if ($('body').hasClass('cursor-fixed__show')){\n                            window.sharedFunctionsAnimation.onEnterButton();\n                            window.sharedFunctionsAnimation.onLeaveButton();\n                        }\n                    }\n                });\n            }\n        },\n\n        dispatchChangeForShippingMessage: function() {\n            document.querySelectorAll('[data-free-shipping-wrapper]').forEach(freeShippingWrapper => {\n                const changeEvent = new Event('change', { bubbles: true })\n                freeShippingWrapper.dispatchEvent(changeEvent);\n            })\n        },\n\n        updateGiftWrapper: function() {\n            let debounce \n            $('#gift-wrapping').off('click').on('click', (event) => {\n                event.stopPropagation()\n                event.preventDefault()\n                const $target = $(event.currentTarget);\n                clearTimeout(debounce)\n                debounce = setTimeout(() => {\n                    const variantId = event.target.dataset.giftId;\n                    Shopify.addItem(variantId, 1, $target, () => {\n                        Shopify.getCart((cart) => {\n                            halo.updateSidebarCart(cart);\n                        });\n                    }); \n                }, 250)\n            });\n\n            $('#cart-gift-wrapping').off('click').on('click', (event) => {\n                event.stopPropagation()\n                event.preventDefault()\n\n                var $target = $(event.currentTarget),\n                    text = $target.attr('data-adding-text');\n                $target.text(text);\n\n                clearTimeout(debounce)\n                debounce = setTimeout(() => {\n                    const variantId = event.target.dataset.giftId;\n                    Shopify.addItem(variantId, 1, $target, () => {\n                        Shopify.getCart((cart) => {\n                            halo.updateCart(cart)\n                        });\n                    }); \n                }, 250)\n            });\n        },\n\n        removeItemQuickCart: function () {\n            $doc.on('click', '[data-cart-remove]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.currentTarget),\n                    productId = $target.attr('data-cart-remove-id'),\n                    text = $('#cart-gift-wrapping').attr('data-add-text'),\n                    productLine = $target.data('line'),\n                    index = $target.data('index');\n\n                $('#cart-gift-wrapping').text(text);\n\n                Shopify.removeItem(productLine, index, (cart) => {\n                    if($body.hasClass('template-cart')){\n                        halo.updateCart(cart);\n                    } else if($body.hasClass('cart-modal-show')){\n                        // halo.updateDropdownCart(cart);\n                    } else if($body.hasClass('cart-sidebar-show')) {\n                        halo.updateSidebarCart(cart);\n                    }\n                });\n            });\n        },\n\n        updateCart: function(cart){\n            if(!$.isEmptyObject(cart)){\n                const $sectionId = $('#main-cart-items').data('id');\n                const $cart = $('[data-cart]')\n                const $cartContent = $cart.find('[data-cart-content]');\n                const $cartTotals = $cart.find('[data-cart-total]');\n                const $cartLoading = '<div class=\"loading-overlay loading-overlay--custom\">\\\n                        <div class=\"loading-overlay__spinner\">\\\n                            <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"spinner\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\\\n                                <circle class=\"path\" fill=\"none\" stroke-width=\"6\" cx=\"33\" cy=\"33\" r=\"30\"></circle>\\\n                            </svg>\\\n                        </div>\\\n                    </div>';\n                const loadingClass = 'is-loading';\n\n                $cart\n                    .addClass(loadingClass)\n                    .prepend($cartLoading);\n\n                $.ajax({\n                    type: 'GET',\n                    url: `/cart?section_id=${$sectionId}`,\n                    cache: false,\n                    success: function (data) {\n                        var jsPreventedData = data.replaceAll('cart-coupon-discount', 'div');\n                        var response = $(jsPreventedData);\n\n                        $cart.removeClass(loadingClass);\n                        $cart.find('.loading-overlay').remove();\n\n                        if(cart.item_count > 0){\n                            var contentCart =  response.find('[data-cart-content] .cart').html(),\n                                subTotal = response.find('[data-cart-total] .cart-total-subtotal').html(),\n                                grandTotal = response.find('[data-cart-total] .cart-total-grandtotal').html(),\n                                savings = response.find('[data-cart-total] .cart-total-savings').html();\n\n                            $cartContent.find('.cart').html(contentCart);\n                            $cartTotals.find('.cart-total-subtotal').html(subTotal);\n                            $cartTotals.find('.cart-total-grandtotal').html(grandTotal);\n                            $cartTotals.find('.cart-total-savings').html(savings);\n\n                            if(response.find('.haloCalculatorShipping').length > 0){\n                                var calculatorShipping = response.find('.haloCalculatorShipping');\n\n                                $cart.find('.haloCalculatorShipping').replaceWith(calculatorShipping);\n                            }\n                        } else {\n                            var contentCart =  response.find('#main-cart-items').html(),\n                                headerCart =  response.find('.page-header').html();\n                                cartCountdownText1 = response.find('.cart-countdown').data('coundown-text-empty-1');\n                                cartCountdownText2 = response.find('.cart-countdown').data('coundown-text-empty-2');\n                                cartCountdownProductUrl = response.find('.cart-countdown').data('coundown-prd-empty-url');\n                                cartCountdownProductTitle = response.find('.cart-countdown').data('coundown-prd-empty-title');\n                            var cartCountdownHtml = cartCountdownText1 + ' <a href=\"'+ cartCountdownProductUrl +'\" class=\"cart-countdown-product link-effect p-relative\"><span class=\"text\">'+ cartCountdownProductTitle +'</span></a> ' + cartCountdownText2;\n\n                            $('#main-cart-items').html(contentCart);\n                            $('.page-header').html(headerCart);\n                            $('.cart-countdown .text-wrap').html(cartCountdownHtml);\n                        }\n                    },\n                    error: function (xhr, text) {\n                        halo.showWarning($.parseJSON(xhr.responseText).description);\n                    },\n                    complete: function () {\n                        $body.find('[data-cart-count]').text(cart.item_count);\n                        halo.dispatchChangeForShippingMessage();\n                        if (halo.checkNeedToConvertCurrency()) {\n                            Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                        }\n                        if ($body.hasClass('template-cart')) {\n                            const giftWrapping = document.getElementById('cart-gift-wrapping')\n                            const isChecked = giftWrapping?.dataset.isChecked\n                            const variantId = giftWrapping?.dataset.giftId\n                            if (isChecked === 'true') {\n                                $('#is-a-gift').hide()\n                                const giftCardRemoveButton = document.querySelector(`[data-cart-remove-id=\"${variantId}\"]`)\n                                const giftCardQuantityInput = document.querySelector(`[data-cart-quantity-id=\"${variantId}\"]`)\n\n                                giftCardRemoveButton?.addEventListener('click', () => {\n                                    giftWrapping.dataset.isChecked = 'false'\n                                })\n\n                                giftCardQuantityInput?.addEventListener('change', (e) => {\n                                    const value = Number(e.target.value)\n                                    if (value  <= 0) {\n                                        giftWrapping.dataset.isChecked = 'false'\n                                    }\n                                })\n                            } else {\n                                $('#is-a-gift').show()\n                            }\n                            if (cart.item_count >= 100){\n                                $body.find('.cart-count-bubble [data-cart-count]').text(window.cartStrings.item_99);\n                            }\n                        }\n                        \n                        document.dispatchEvent(new CustomEvent('cart-update', { detail: cart }));\n                    }\n                });\n            }\n        },\n\n        updateQuantityItemQuickCart: function(){\n            $doc.on('change', '[data-cart-quantity]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.currentTarget),\n                    productId = $target.attr('data-cart-quantity-id'),\n                    productLine = $target.data('line'),\n                    quantity = parseInt($target.val()),\n                    stock = parseInt($target.data('inventory-quantity')),\n                    index = $target.data('index');\n                let enoughInStock = true;\n\n                if ($target.parents('.quick-order-list__contents').length) return;\n               \n                if (stock < quantity && stock > 0) {\n                  var arrayInVarName = `cart_selling_array_${event.currentTarget.closest('cart-update-quantity').dataset.product}`,\n                    itemInArray = window[arrayInVarName],\n                    itemStatus = itemInArray[event.currentTarget.closest('cart-update-quantity').dataset.variant];\n                  if(itemStatus == 'deny') {\n                    quantity = stock;\n                    enoughInStock = false;\n                  }\n                }\n\n                Shopify.changeItem(productLine, quantity, index, (cart) => {\n                    if($body.hasClass('template-cart')){\n                        halo.updateCart(cart);\n                    } else if($body.hasClass('cart-modal-show')){\n                        // halo.updateDropdownCart(cart);\n                    } else if($body.hasClass('cart-sidebar-show')) {\n                        halo.updateSidebarCart(cart);\n                    }\n                    if (!enoughInStock) halo.showWarning(`${ window.cartStrings.addProductOutQuantity.replace('[maxQuantity]', quantity) }`)\n                });\n            });\n        },\n\n        editQuickCart: function() {\n            let checkLoadEC = true; \n\n            $doc.on('click', '[data-open-edit-cart]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.currentTarget),\n                    url = $target.data('edit-cart-url'),\n                    itemId = $target.data('edit-cart-id'),\n                    itemLine = $target.data('line'),\n                    itemIndex = $target.data('index'),\n                    quantity = $target.data('edit-cart-quantity'),\n                    option = $target.parents('.previewCartItem').find('previewCartItem-variant').text();\n\n                const modal = $('[data-edit-cart-popup]'),\n                    modalContent = modal.find('.halo-popup-content');\n\n                if (checkLoadEC) {\n                    checkLoadEC = false;\n                    const $editCart = document.querySelector('.halo-edit-cart-popup');\n                    const urlStyleEC = $editCart.dataset.urlStyleEditCart;\n                    const urlScriptEC = $editCart.dataset.urlScriptEditCart;\n    \n                    halo.buildStyleSheet(urlStyleEC, $editCart);\n                    halo.buildScript(urlScriptEC);\n                }\n\n                $.ajax({\n                    type: 'get',\n                    url: url,\n                    cache: false,\n                    dataType: 'html',\n                    beforeSend: function() {\n                        if($body.hasClass('template-cart')){\n                            // halo.showLoading();\n                        }\n                    },\n                    success: function(data) {\n                        modalContent.html(data);\n                        modalContent\n                            .find('[data-template-cart-edit]')\n                            .attr({\n                                'data-cart-update-id': itemId,\n                                'data-line': itemLine,\n                                'data-index': itemIndex\n                            });\n\n                        var productItem = modalContent.find('.product-edit-item');\n                        productItem.find('input[name=\"quantity\"]').val(quantity);\n                    },\n                    error: function(xhr, text) {\n                        // alert($.parseJSON(xhr.responseText).description);\n                        halo.showWarning($.parseJSON(xhr.responseText).description);\n                        if($body.hasClass('template-cart')){\n                            // halo.hideLoading();\n                        }\n                    },\n                    complete: function () {\n                        $body.addClass('edit-cart-show');\n\n                        if($body.hasClass('template-cart')){\n                            // halo.hideLoading();\n                        }\n\n                        if (halo.checkNeedToConvertCurrency()) {\n                            Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                        };\n\n                        if ($('body').hasClass('cursor-fixed__show')){\n                            window.sharedFunctionsAnimation.onEnterButton();\n                            window.sharedFunctionsAnimation.onLeaveButton();\n                        }\n                    }\n                });\n            });\n\n            $doc.on('click', '[data-close-edit-cart]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('edit-cart-show');\n            });\n\n            $doc.on('click', (event) => {\n                if ($body.hasClass('edit-cart-show')) {\n                    if (($(event.target).closest('[data-edit-cart-popup]').length === 0) && ($(event.target).closest('[data-open-edit-cart]').length === 0)){\n                        $body.removeClass('edit-cart-show');\n                    }\n                }\n            });\n\n            halo.addMoreItemEditCart();\n            halo.addAllItemCartEdit();\n        },\n\n        addMoreItemEditCart: function(){\n            $doc.on('click', '[data-edit-cart-add-more]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var itemWrapper = $('[data-template-cart-edit]'),\n                    currentItem = $(event.target).parents('.product-edit-item'),\n                    count = parseInt(itemWrapper.attr('data-count')),\n                    cloneProduct = currentItem.clone().removeClass('product-edit-itemFirst');\n                    cloneProductId = cloneProduct.attr('id') + count;\n\n                cloneProduct.attr('id', cloneProductId);\n\n                halo.updateClonedProductAttributes(cloneProduct, count);\n\n                cloneProduct.insertAfter(currentItem);\n\n                count = count + 1;\n                itemWrapper.attr('data-count', count);\n\n                if ($('body').hasClass('cursor-fixed__show')){\n                    window.sharedFunctionsAnimation.onEnterButton();\n                    window.sharedFunctionsAnimation.onLeaveButton();\n                }\n            });\n\n            $doc.on('click', '[data-edit-cart-remove]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var currentItem = $(event.target).parents('.product-edit-item');\n\n                currentItem.remove();\n            });\n        },\n\n        updateClonedProductAttributes: function(product, count){\n            var form = $('.shopify-product-form', product),\n                formId = form.attr('id'),\n                newFormId = formId + count;\n\n            form.attr('id', newFormId);\n\n            $('.product-form__radio', product).each((index, element) => {\n                var formInput = $(element),\n                    formLabel = formInput.next(),\n                    id = formLabel.attr('for'),\n                    newId = id + count,\n                    formInputName = formInput.attr('name');\n\n                formLabel.attr('for', newId);\n\n                formInput.attr({\n                    id: newId,\n                    name: formInputName + count\n                });\n            });\n        },\n\n        addAllItemCartEdit: function() {\n            $doc.on('click', '#add-all-to-cart', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.currentTarget),\n                    cartEdit = $('[data-template-cart-edit]'),\n                    product = cartEdit.find('.product-edit-item.isChecked'),\n                    productId = cartEdit.attr('data-cart-update-id'),\n                    productLine = cartEdit.data('line'),\n                    index = cartEdit.data('index');\n\n                if(product.length > 0){\n                    $target.addClass('is-loading');\n\n                    Shopify.removeItem(productLine, index, (cart) => {\n                        if(!$.isEmptyObject(cart)) {\n                            var productHandleQueue = [];\n\n                            var ajax_caller = function(data) {\n                                return $.ajax(data);\n                            }\n\n                            product.each((index, element) => {\n                                var item = $(element),\n                                    variantId = item.find('input[name=\"id\"]').val(),\n                                    qty = parseInt(item.find('input[name=\"quantity\"]').val());\n\n                                productHandleQueue.push(ajax_caller({\n                                    type: 'post',\n                                    url: window.routes.root + '/cart/add.js',\n                                    data: 'quantity=' + qty + '&id=' + variantId,\n                                    dataType: 'json',\n                                    async: false\n                                }));\n                            });\n\n                            if(productHandleQueue.length > 0) {\n                                $.when.apply($, productHandleQueue).done((event) => {\n                                    setTimeout(function(){ \n                                        $target.removeClass('is-loading');\n                                    }, 1000);\n\n                                    Shopify.getCart((cart) => {\n                                        $body.removeClass('edit-cart-show');\n\n                                        if($body.hasClass('template-cart')){\n                                            halo.updateCart(cart);\n                                        } else if($body.hasClass('cart-modal-show')){\n                                            // halo.updateDropdownCart(cart);\n                                        } else if($body.hasClass('cart-sidebar-show')) {\n                                            halo.updateSidebarCart(cart);\n                                        }\n                                    });\n                                });\n                            }\n                        }\n                    });\n                } else {\n                    alert(window.variantStrings.addToCart_message);\n                }\n            });\n        },\n\n        initNotifyInStock: function() {\n            $doc.on('click', '[data-open-notify-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.currentTarget);\n\n                halo.notifyInStockPopup($target);\n            });\n\n            $doc.on('click', '[data-close-notify-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('notify-me-show');\n                setTimeout(() => {\n                    $('.halo-notify-popup .form-field').removeClass('hidden')\n                    $('.halo-notify-popup .form-message').addClass('hidden')\n                }, 700)\n            });\n\n            $doc.on('click', (event) => {\n                if($body.hasClass('notify-me-show')){\n                    if (($(event.target).closest('[data-open-notify-popup]').length === 0) && ($(event.target).closest('[data-notify-popup]').length === 0)){\n                        $body.removeClass('notify-me-show');\n                        setTimeout(() => {\n                            $('.halo-notify-popup .form-field').removeClass('hidden')\n                            $('.halo-notify-popup .form-message').addClass('hidden')\n                        }, 700)\n                    }\n                }\n            });\n        },\n\n        notifyInStockPopup: function($target){\n            var variant,\n                product = $target.parents('.product-item'),\n                title = product.find('.card-title').data('product-title'),\n                link = window.location.host + product.find('.card-title').data('product-url'),\n                popup = $('[data-notify-popup]');\n\n            if($target.hasClass('is-notify-me')){\n                variant = product.find('.card-swatch .swatch-label.is-active').attr('title');\n            } else {\n                variant = $target.data('variant-id');\n            }\n\n            popup.find('.halo-notify-product-title').val($.trim(title));\n            popup.find('.halo-notify-product-link').val(link);\n\n            if(variant){\n                popup.find('.halo-notify-product-variant').val(variant);\n            }\n            $body.addClass('notify-me-show');\n        },\n\n        initAskAnExpert: function(){\n            $doc.on('click', '[data-open-ask-an-expert]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var askAnExpert = $('[data-ask-an-expert-popup]'),\n                    modalContent = askAnExpert.find('.halo-popup-content'),\n                    url;\n\n                if($body.hasClass('template-product')){\n                    var handle = $('.productView').data('product-handle');\n\n                    url = window.routes.root + '/products/' + handle + '?view=ajax_ask_an_expert';\n                } else if($body.hasClass('quick-view-show')){\n                    var handle = $('.halo-quickView').data('product-quickview-handle');\n\n                    url = window.routes.root + '/products/' + handle + '?view=ajax_ask_an_expert';\n                } else {\n                    url = window.routes.root + '/search?view=ajax_ask_an_expert';\n                }\n\n                $.ajax({\n                    type: 'get',\n                    url: url,\n                    beforeSend: function () {\n                        modalContent.empty();\n                    },\n                    success: function (data) {\n                        modalContent.html(data);\n                    },\n                    error: function (xhr, text) {\n                        alert($.parseJSON(xhr.responseText).description);\n                    },\n                    complete: function () {\n                        $body.addClass('ask-an-expert-show');\n                    }\n                });\n            });\n\n            $doc.on('click', '[data-close-ask-an-expert]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('ask-an-expert-show');\n                if($body.hasClass('recently-popup-mb-show')){\n                    $body.removeClass('recently-popup-mb-show');\n                }\n            });\n\n            $doc.on('click', (event) => {\n                if($body.hasClass('ask-an-expert-show')){\n                    if (($(event.target).closest('[data-open-ask-an-expert]').length === 0) && ($(event.target).closest('#halo-ask-an-expert-popup').length === 0)){\n                        $body.removeClass('ask-an-expert-show');\n                    }\n                }\n            });\n        },\n\n        resetForm: function(form){\n            $('.form-field', form).removeClass('form-field--success form-field--error');\n            $('input[type=email], input[type=text], textarea', form).val('');\n        },\n\n        formMessage: function() {\n            const error = window.location.href.indexOf('form_type=contact') > -1;\n\n            if (window.location.href.indexOf('contact_posted=true') > -1 || error) {\n                const formMessage = $(`[data-form-message=\"${$.cookie('contact_form')}\"]`);\n                let delay = 400;\n                \n                if ($body.hasClass('template-product')) delay = 1600;\n    \n                switch(formMessage.data('form-message')) {\n                    case 'ask':\n                        setTimeout(() => {$body.addClass('ask-an-expert-show')}, delay)\n                        this.changeStateforContactForm(formMessage, error)\n                        $('.halo-notify-popup .form-message').addClass('hidden')\n                        break;\n                    case 'contact':\n                        formMessage.removeClass('hidden')\n                        this.changeStateforContactForm(formMessage, error)\n                        $('.halo-notify-popup .form-message').addClass('hidden')\n                        break;\n                    case 'notifyMe':\n                        $('.halo-notify-popup .form-field').addClass('hidden')\n                        setTimeout(() => {$body.addClass('notify-me-show')}, delay)\n                        this.changeStateforContactForm(formMessage, error)\n                        break;\n                }\n            }\n\n            $(document).on('click', '[data-button-message]', (event) => {\n                $.cookie('contact_form', $(event.target).data('button-message'), {\n                    expires: 1,\n                    path: '/',\n                });\n            })\n        },\n\n        changeStateforContactForm(formMessage, error) {\n            window.history.pushState('object', document.title, location.href.split('?')[0])\n            if (error) {$('.newsletter-form__message--error').addClass('hidden'); $('html, body').animate({scrollTop: formMessage.offset().top - window.innerHeight/2}, 700)}\n        },\n\n        initCompareProduct: function() {\n            var $compareLink = $('[data-compare-link]');\n\n            if(window.compare.show){\n                halo.setLocalStorageProductForCompare($compareLink);\n                halo.setAddorRemoveProductForCompare($compareLink);\n                halo.setProductForCompare();\n\n                $doc.on('click', '[data-close-compare-product-popup]', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    $body.removeClass('compare-product-show');\n                });\n\n                $doc.on('click', (event) => {\n                    if($body.hasClass('compare-product-show')){\n                        if (($(event.target).closest('[data-compare-link]').length === 0) && ($(event.target).closest('[data-compare-product-popup]').length === 0)){\n                            $body.removeClass('compare-product-show');\n                        }\n                    }\n                });\n            }\n        },\n\n        setLocalStorageProductForCompare: function($link) {\n            var count = JSON.parse(localStorage.getItem('compareItem')),\n                items = $('[data-product-compare-handle]');\n\n            if(count !== null){ \n                if(items.length > 0) {\n                    items.each((index, element) => {\n                        var item = $(element),\n                            handle = item.data('product-compare-handle');\n\n                        if(count.indexOf(handle) >= 0) {\n                            item.find('.compare-icon').addClass('is-checked');\n                            item.find('.text').text(window.compare.added);\n                            item.find('input').prop('checked', true);\n                        } else {\n                            item.find('.compare-icon').removeClass('is-checked');\n                            item.find('.text').text(window.compare.add);\n                            item.find('input').prop('checked', false);\n                        }\n                    });\n\n                    halo.updateCounterCompare($link);\n                }\n            }\n        },\n\n        setAddorRemoveProductForCompare: function($link) {\n            $doc.on('change', '[data-product-compare] input', (event) => {\n                var $this = $(event.currentTarget),\n                    item = $this.parents('.card-compare'),\n                    handle = $this.val(),\n                    count = JSON.parse(localStorage.getItem('compareItem'));\n\n                count = halo.uniqueArray(count);\n\n                if(event.currentTarget.checked) {\n                    item.find('.compare-icon').addClass('is-checked');\n                    item.find('.text').text(window.compare.added);\n                    item.find('input').prop('checked', true);\n                    halo.incrementCounterCompare(count, handle, $link);\n                } else {\n                    item.find('.compare-icon').removeClass('is-checked');\n                    item.find('.text').text(window.compare.add);\n                    item.find('input').prop('checked', false);\n                    halo.decrementCounterCompare(count, handle, $link);\n                }\n            });\n        },\n\n        setProductForCompare: function() {\n            $doc.on('click', '[data-compare-link]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var list = JSON.parse(localStorage.getItem('compareItem'));\n\n                if (list.length <= 1) {\n                    alert(window.compare.message);\n\n                    return false;\n                } else {\n                    halo.updateContentCompareProduct(list, 0);\n                }\n            });\n\n            $doc.on('click', '[data-compare-remove]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var id = $(event.currentTarget).data('compare-item'),\n                    compareTable = $('[data-compare-product-popup] .compareTable'),\n                    item = compareTable.find('.compareTable-row[data-product-compare-id=\"'+ id +'\"]'),\n                    handle = item.data('compare-product-handle');\n\n                if(compareTable.find('tbody .compareTable-row').length == 1){\n                    // alert(window.compare.message);\n                    item.remove();\n                    var count = JSON.parse(localStorage.getItem('compareItem')),\n                        index = count.indexOf(handle),\n                        $compareLink = $('[data-compare-link]');\n\n                    if (index > -1) {\n                        count.splice(index, 1);\n                        count = halo.uniqueArray(count);\n                        localStorage.setItem('compareItem', JSON.stringify(count));\n\n                        halo.setLocalStorageProductForCompare($compareLink);\n                        halo.updateCounterCompare($compareLink);\n                    }\n\n                    $body.removeClass('compare-product-show');\n                } else {\n                    item.remove();\n                    \n                    var count = JSON.parse(localStorage.getItem('compareItem')),\n                        index = count.indexOf(handle),\n                        $compareLink = $('[data-compare-link]');\n\n                    if (index > -1) {\n                        count.splice(index, 1);\n                        count = halo.uniqueArray(count);\n                        localStorage.setItem('compareItem', JSON.stringify(count));\n\n                        halo.setLocalStorageProductForCompare($compareLink);\n                        halo.updateCounterCompare($compareLink);\n                    }\n                }\n            });\n        },\n\n        updateCounterCompare: function($link) {\n            var count = JSON.parse(localStorage.getItem('compareItem'));\n\n            if (count.length > 1) {\n                $link.parent().addClass('is-show');\n                $link.find('span.countPill').html(count.length);\n            } else {\n                $link.parent().removeClass('is-show');\n            }\n        },\n\n        uniqueArray: function(list) {\n            var result = [];\n\n            $.each(list, function(index, element) {\n                if ($.inArray(element, result) == -1) {\n                    result.push(element);\n                }\n            });\n\n            return result;\n        },\n\n        incrementCounterCompare: function(count, item, $link){\n            const index = count.indexOf(item);\n\n            count.push(item);\n            count = halo.uniqueArray(count);\n\n            localStorage.setItem('compareItem', JSON.stringify(count));\n\n            halo.updateCounterCompare($link);\n        },\n\n        decrementCounterCompare: function(count, item, $link){\n            const index = count.indexOf(item);\n\n            if (index > -1) {\n                count.splice(index, 1);\n                count = halo.uniqueArray(count);\n                localStorage.setItem('compareItem', JSON.stringify(count));\n\n                halo.updateCounterCompare($link);\n            }\n        },\n\n        updateContentCompareProduct: function(list, count){\n            const compareTable = $('[data-compare-product-popup] .compareTable'),\n                url = window.routes.root + '/products/' + list[count] + '?view=ajax_product_card_compare';\n\n            if (count == 0) compareTable.find('tbody').empty();\n\n            if (list.length > count) {\n                $.ajax({\n                    type: 'get',\n                    url: url,\n                    cache: false,\n                    success: function (data) {\n                        compareTable.find('tbody').append(data);\n                        count++;\n                        halo.updateContentCompareProduct(list, count);\n                    }\n                });\n            } else {\n                $body.addClass('compare-product-show');\n            }\n\n            if ($('body').hasClass('cursor-fixed__show')){\n                window.sharedFunctionsAnimation.onEnterButton();\n                window.sharedFunctionsAnimation.onLeaveButton();\n            }\n        },\n\n        initProductView: function($scope){\n            halo.productImageGallery($scope);\n            halo.productLastSoldOut($scope);\n            halo.productCustomerViewing($scope);\n            halo.productCountdown($scope);\n            halo.productSizeChart($scope);\n            halo.productCustomCursor($scope);\n            halo.productVideoGallery($scope);\n            halo.initVariantImageGroup($scope, window.variant_image_group);\n        },\n\n        initQuickView: function(){\n            let checkLoadQV = true;\n\n            $doc.on('click', '[data-open-quick-view-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                if (checkLoadQV) {\n                    checkLoadQV = false;\n                    const $quickView = document.querySelector('.halo-quick-view-popup');\n                    const urlStyleProduct = $quickView.dataset.urlStyleProduct;\n                    const urlStyleQV = $quickView.dataset.urlStyleQuickView;\n                    const urlVariantsQV = $quickView.dataset.urlVariantsQuickView;\n                    const urlSortable = 'https://cdn.jsdelivr.net/npm/sortablejs@latest/Sortable.min.js';\n\n                    if (!document.body.matches('.qs3-loaded')) halo.buildStyleSheet(urlStyleProduct, $quickView);\n                    halo.buildStyleSheet(urlStyleQV, $quickView);\n                    halo.buildScript(urlVariantsQV);\n                    document.body.classList.add('qv-loaded');\n                    if (!document.body.matches('.sortable-loader')) {\n                        document.body.classList.add('sortable-loader');\n                        halo.buildScript(urlSortable);\n                    }\n                }\n\n                var handle = $(event.currentTarget).data('product-handle');\n\n                halo.updateContentQuickView(handle);\n            });\n\n            $doc.on('click', '[data-close-quick-view-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('quick-view-show');\n            });\n            \n            $('.background-overlay').off('click.closeQuickView').on('click.closeQuickView', e => {\n                if ($body.hasClass('quick-view-show') &&\n                       !$body.hasClass('cart-sidebar-show') && \n                       !$body.hasClass('ask-an-expert-show') && \n                       !$body.hasClass('size-chart-show') && \n                       !$body.hasClass('compare-color-show') && \n                       !$body.hasClass('term-condition-show')\n                   ) {\n                    $body.removeClass('quick-view-show');\n                }\n            });\n        },\n\n        updateContentQuickView: function(handle){\n            var popup = $('[data-quick-view-popup]'),\n                popupContent = popup.find('.halo-popup-content');\n\n            $.ajax({\n                type: 'get',\n                url: window.routes.root + '/products/' + handle + '?view=ajax_quick_view',\n                beforeSend: function () {\n                    popupContent.empty();\n                    $('#halo-quickshop-popup-option-3').find('.halo-popup-content').empty()\n                },\n                success: function (data) {\n                    popupContent.html(data);\n                },\n                error: function (xhr, text) {\n                    alert($.parseJSON(xhr.responseText).description);\n                },\n                complete: function () {\n                    var $scope = popup.find('.quickView');\n                    const items = $('.halo-popup-content .halo-compare-color-popup li.item'),\n                        tableList = $('.halo-popup-content .halo-compare-color-popup #sortTableList'),\n                        compareColorPopup = $('.halo-popup-content .halo-compare-color-popup'),\n                        sizeChartPopup = $('.halo-popup-content .halo-size-chart-popup');\n                    \n                    halo.productImageGallery($scope);\n                    halo.productLastSoldOut($scope);\n                    halo.productCustomerViewing($scope);\n                    halo.productCountdown($scope);\n                    halo.productSizeChart($scope);\n                    halo.setProductForWishlist(handle);\n                    halo.initVariantImageGroup($scope, window.variant_image_group_quick_view);\n\n                    $body.addClass('quick-view-show');\n\n                    if (window.Shopify && Shopify.PaymentButton) {\n                        Shopify.PaymentButton.init();\n                    }\n\n                    tableList.attr('id', 'quickViewSortTableList');\n\n                    items.each((index, element) => {\n                        const itemInput = $(element).find('.swatch-compare-color-option'),\n                            itemLabel = $(element).find('.swatch-compare-color-label'),\n                            itemId = itemInput.attr('id');\n\n                        itemInput\n                            .attr('id', `quickView-${itemId}`)\n                            .attr('name', `quickView-${itemId}`);\n                        itemLabel.attr('for', `quickView-${itemId}`);\n                    });\n\n                    compareColorPopup.attr('id', 'quickView-halo-compare-color-popup');\n                    sizeChartPopup.attr('id', 'quickView-halo-size-chart-popup');\n\n                    if ($('.halo-productView .addthis_inline_share_toolbox').length) {\n                        var html = $('.halo-productView .addthis_inline_share_toolbox').html();\n\n                        $('.halo-popup-content .share-button__button').click(function(){\n                            $('.halo-popup-content .addthis_inline_share_toolbox').append(html);\n                        });\n                    }\n\n                    const thisSortTable = document.getElementById('quickViewSortTableList');\n                    const thisImageList = $('.halo-popup-content .halo-compareColors-image');\n\n                    if (window.innerWidth >= 1025 && thisSortTable) {\n                        new Sortable(thisSortTable, {\n                            animation: 150\n                        });\n                    } else {\n                        onRemoveHandlerQuickView();\n                    }\n\n                    function onRemoveHandlerQuickView(){\n                        thisImageList.on('click', '.item', (event) => {\n                            event.preventDefault();\n\n                            var $target = event.currentTarget,\n                                itemId = $target.classList[1].replace('item-', ''),\n                                optionId = `swatch-compare-color-${itemId}`,\n                                item = $(document.getElementById(optionId));\n\n                            item.trigger('click');\n                        });\n                    }\n\n                    if ($('body').hasClass('cursor-fixed__show')){\n                        window.sharedFunctionsAnimation.onEnterButton();\n                        window.sharedFunctionsAnimation.onLeaveButton();\n                    }\n                }\n            });\n        },\n\n        productImageGallery: function($scope) {\n            var sliderNav = $scope.find('.productView-nav'),\n                sliderFor = $scope.find('.productView-for:not(\".mobile\")'),\n                sliderForMobile = $scope.find('.productView-for.mobile');\n\n            if(!sliderFor.hasClass('slick-initialized') && !sliderNav.hasClass('slick-initialized')) {\n                const navArrowsDesk = sliderNav.data('arrows-desk'),\n                    navArrowsMobi = sliderNav.data('arrows-mobi'),\n                    navCounterMobi = sliderNav.data('counter-mobi'),\n                    navMediaCount = sliderNav.data('media-count'),\n                    thumbnailToShow = parseInt(sliderFor.data('max-thumbnail-to-show'));\n                \n                let checkNav, checkFor, navSlideCount;\n\n                var appendTimeout;\n\n                sliderNavHTML = sliderNav.html();\n\n                sliderNav.hasClass('productView-nav-gallery') ? navSlideCount = Math.round(navMediaCount / 2) : navSlideCount = navMediaCount;\n                sliderNav.hasClass('productView-horizontal-tabs') && navMediaCount == 2 ? navSlideCount = 1 : navSlideCount = navMediaCount;\n                let slickCounter = `<div class=\"slick-counter\">\n                    <span class=\"slick-counter--current\">1</span>\n                    <span aria-hidden=\"true\">/</span>\n                    <span class=\"slick-counter--total\">`+ navSlideCount + `</span>\n                </div>`;\n\n                const getSlickCounter = () => {\n                    setTimeout(() => {\n                        let countSlide = $('.productView-nav .slick-slide').length;\n                        if (sliderNav.hasClass('productView-nav-gallery')) countSlide = Math.round(countSlide / 2);\n                        slickCounter = `<div class=\"slick-counter\">\n                            <span class=\"slick-counter--current\">1</span>\n                            <span aria-hidden=\"true\">/</span>\n                            <span class=\"slick-counter--total\">`+ countSlide + `</span>\n                        </div>`;\n                    }, 1000);\n                }\n\n                const setSlickCounter = () => {\n                    clearTimeout(appendTimeout);\n                    appendTimeout = setTimeout(() => {sliderNav.append(slickCounter)}, 1000);\n                }\n\n                sliderNav.on('init', () => {\n                    if (window.innerWidth < 768 && navCounterMobi) {\n                        if (variant_image_group) getSlickCounter();\n                        setSlickCounter();\n                        sliderNav.on('reInit afterChange', function (event, slick, currentSlide, nextSlide) {\n                            var i = (currentSlide ? currentSlide : 0) + 1;\n                            sliderNav.find('.slick-counter--current').text(i);\n                        });\n                    }\n                });\n\n                sliderNav.on('reInit', () => {\n                    if (window.innerWidth < 768 && navCounterMobi) {\n                        if (variant_image_group) getSlickCounter();\n                        setSlickCounter();\n                    }\n                });\n\n                sliderNav.closest('.productView').is('.layout-4') ? checkFor = false : checkFor = sliderFor;\n\n                if(sliderNav.hasClass('productView-nav-gallery')) {\n                    var sliderNav2 = $scope.find('.productView-nav.productView-nav-gallery'),\n                        length = sliderNav2.data('media-count'),\n                        oneItems = sliderNav2.data('1-item-mobi'),\n                        show = 2,\n                        rows = 2;\n\n                    if (length == 1) {\n                      show = 1;\n                      rows = 1;\n                    }\n                    if (length == 2) {\n                      show = 2;\n                      rows = 1;\n                    }\n\n                    if (oneItems && window.innerWidth < 551) {\n                        show = 1;\n                        rows = 1;\n                    }\n\n                    sliderNav2.slick({\n                        dots: true,\n                        rows: rows,\n                        arrows: navArrowsDesk,\n                        infinite: true,\n                        slidesPerRow: 1,\n                        slidesToShow: show,\n                        focusOnSelect: false,\n                        asNavFor: checkFor,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: [\n                            {\n                                breakpoint: 767,\n                                settings: {\n                                    arrows: navArrowsMobi\n                                }\n                            }\n                        ]\n                    });\n                    checkNav = sliderNav2;\n                } else if(sliderNav.hasClass('productView-horizontal-tabs')) {\n                    var sliderNav2 = $scope.find('.productView-nav.productView-horizontal-tabs'),\n                        show = 2,\n                        rows = 1;\n\n                    sliderNav2.slick({\n                        dots: true,\n                        rows: rows,\n                        arrows: navArrowsDesk,\n                        infinite: false,\n                        slidesPerRow: 1,\n                        slidesToShow: 2,\n                        focusOnSelect: false,\n                        asNavFor: checkFor,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: [\n                            {\n                                breakpoint: 767,\n                                settings: {\n                                    arrows: navArrowsMobi,\n                                    get slidesToShow() {\n                                        if(sliderNav2.parents('.product-details').hasClass('featured-product')) {\n                                            return this.slidesToShow = 1;\n                                        } else {\n                                            return this.slidesToShow = 2;\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    });\n                    checkNav = sliderNav2;\n                } else {\n                    if (!sliderNav.is('.style-2, .style-3') || window.innerWidth < 768) {\n                        sliderNav.slick({\n                            fade: true,\n                            dots: false,\n                            arrows: navArrowsDesk,\n                            infinite: true,\n                            slidesToShow: 1,\n                            slidesToScroll: 1,\n                            asNavFor: checkFor,\n                            nextArrow: window.arrows.icon_next,\n                            prevArrow: window.arrows.icon_prev,\n                            rtl: window.rtl_slick,\n                            responsive: [\n                                {\n                                    breakpoint: 768,\n                                    settings: {\n                                        arrows: navArrowsMobi\n                                    }\n                                }\n                            ]\n                        }); \n                        checkNav = sliderNav;\n                    }\n                    else {\n                        checkNav = false;\n                    }\n                }\n\n                if($scope.hasClass('layout-1') || $scope.hasClass('layout-2')){\n                    sliderFor.on('init',(event, slick) => {\n                        sliderFor.find('.animated-loading').removeClass('animated-loading');\n                    });\n\n                    sliderFor.slick({\n                        slidesToShow: thumbnailToShow,\n                        slidesToScroll: 1,\n                        asNavFor: checkNav,\n                        arrows: true,\n                        dots: false,\n                        draggable: false,\n                        adaptiveHeight: false,\n                        focusOnSelect: true,\n                        vertical: true,\n                        verticalSwiping: true,\n                        infinite: true,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        responsive: [\n                            {\n                                breakpoint: 1600,\n                                settings: {\n                                    slidesToShow: thumbnailToShow > 3 ? thumbnailToShow - 1 : thumbnailToShow,\n                                    slidesToScroll: 1\n                                }\n                            },\n                            {\n                                breakpoint: 1280,\n                                settings: {\n                                    vertical: false,\n                                    verticalSwiping: false,\n                                    rtl: window.rtl_slick,\n                                }\n                            },\n                            {\n                                breakpoint: 767,\n                                settings: {\n                                    slidesToShow: 3,\n                                    slidesToScroll: 1,\n                                    vertical: false,\n                                    verticalSwiping: false,\n                                    rtl: window.rtl_slick,\n                                }\n                            }\n                        ]\n                    });\n                } else if($scope.hasClass('layout-3')){\n                    sliderFor.on('init',(event, slick) => {\n                        sliderFor.find('.animated-loading').removeClass('animated-loading');\n                    });\n\n                    sliderFor.slick({\n                        slidesToShow: thumbnailToShow,\n                        slidesToScroll: 1,\n                        asNavFor: checkNav,\n                        arrows: true,\n                        dots: false,\n                        focusOnSelect: true,\n                        infinite: true,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: [\n                            {\n                                breakpoint: 1600,\n                                settings: {\n                                    slidesToShow: thumbnailToShow > 3 ? thumbnailToShow - 1 : thumbnailToShow,\n                                    slidesToScroll: 1\n                                }\n                            },\n                            {\n                                breakpoint: 767,\n                                settings: {\n                                    slidesToShow: 3,\n                                    slidesToScroll: 1\n                                }\n                            }\n                        ]\n                    });\n                }\n\n                sliderForMobile.on('init',(event, slick) => {\n                    sliderForMobile.find('.animated-loading').removeClass('animated-loading');\n                });\n\n                sliderForMobile.slick({\n                    slidesToShow:  parseInt(sliderForMobile.data('max-thumbnail-to-show')),\n                    slidesToScroll: 1,\n                    asNavFor: checkNav,\n                    arrows: true,\n                    dots: false,\n                    draggable: false,\n                    adaptiveHeight: false,\n                    focusOnSelect: true,\n                    vertical: true,\n                    verticalSwiping: true,\n                    infinite: true,\n                    nextArrow: window.arrows.icon_next,\n                    prevArrow: window.arrows.icon_prev,\n                    rtl: window.rtl_slick,\n                    responsive: [\n                        {\n                            breakpoint: 1600,\n                            settings: {\n                                slidesToShow: thumbnailToShow > 3 ? thumbnailToShow - 1 : thumbnailToShow,\n                                slidesToScroll: 1\n                            }\n                        },\n                        {\n                            breakpoint: 1280,\n                            settings: {\n                                vertical: false,\n                                verticalSwiping: false\n                            }\n                        },\n                        {\n                            breakpoint: 767,\n                            settings: {\n                                slidesToShow: 2.2,\n                                slidesToScroll: 1,\n                                vertical: false,\n                                verticalSwiping: false\n                            }\n                        }\n                    ]\n                });\n\n                if (sliderNav.find('[data-youtube]').length > 0) {\n                    if (typeof window.onYouTubeIframeAPIReady === 'undefined') {\n                        window.onYouTubeIframeAPIReady = halo.initYoutubeCarousel.bind(window, sliderNav);\n\n                        const tag = document.createElement('script');\n                        tag.src = 'https://www.youtube.com/player_api';\n                        const firstScriptTag = document.getElementsByTagName('script')[0];\n                        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n                    } else {\n                        halo.initYoutubeCarousel(sliderNav);\n                    }\n                }\n\n                if (sliderNav.find('[data-vimeo]').length > 0) {\n                    sliderNav.on('beforeChange', (event, slick) => {\n                        var currentSlide,\n                            player,\n                            command;\n\n                        currentSlide = $(slick.$slider).find('.slick-current');\n                        player = currentSlide.find('iframe').get(0);\n\n                        command = {\n                            'method': 'pause',\n                            'value': 'true'\n                        };\n\n                        if (player != undefined) {\n                            player.contentWindow.postMessage(JSON.stringify(command), '*');\n                        }\n                    });\n\n                    sliderNav.on('afterChange', (event, slick) => {\n                        var currentSlide,\n                            player,\n                            command;\n\n                        currentSlide = $(slick.$slider).find('.slick-current');\n                        player = currentSlide.find('iframe').get(0);\n\n                        command = {\n                            'method': 'play',\n                            'value': 'true'\n                        };\n\n                        if (player != undefined) {\n                            player.contentWindow.postMessage(JSON.stringify(command), '*');\n                        }\n                    });\n                }\n\n                if (sliderNav.find('[data-mp4]').length > 0) {\n                    sliderNav.on('beforeChange', (event, slick) => {\n                        var currentSlide,\n                            player;\n\n                        currentSlide = $(slick.$slider).find('.slick-current');\n                        player = currentSlide.find('video').get(0);\n\n                        if (player != undefined) {\n                            player.pause();\n                        }\n                    });\n\n                    sliderNav.on('afterChange', (event, slick) => {\n                        var currentSlide,\n                            player;\n\n                        currentSlide = $(slick.$slider).find('.slick-current');\n                        player = currentSlide.find('video').get(0);\n\n                        if (player != undefined) {\n                            player.play();\n                        }\n                    });\n                }\n            }\n\n            var productFancybox = $scope.find('[data-fancybox]');\n\n            if(productFancybox.length > 0){\n                productFancybox.fancybox({\n                    buttons: [\n                        \"zoom\",\n                        \"share\",\n                        \"slideShow\",\n                        \"fullScreen\",\n                        //\"download\",\n                        \"thumbs\",\n                        \"close\"\n                    ],\n                    loop : true,\n                    thumbs : {\n                        autoStart : true,\n                    }\n                });\n            }\n\n            // if($body.hasClass('template-product')) {\n                // if ($scope.closest('.quickView').length) return;\n                var productZoom = $scope.find('[data-zoom-image]');\n\n                if ($win.width() > 1024) {\n                    productZoom.each((index, element) => {\n                        var $this = $(element);\n                        \n                        if ($win.width() > 1024) {\n                            $this.zoom({ url: $this.attr('data-zoom-image'), touch: false });\n                        } else {\n                            $this.trigger('zoom.destroy');\n                        }\n                    });\n                }\n            // }\n\n            $win.on('resize', () => {\n                if($scope.hasClass('layout-1') || $scope.hasClass('layout-2')){\n                    if ($win.width() > 1279) {\n                        setTimeout(() => {\n                            if (sliderFor.find('.slick-arrow').length > 0) {\n                                var height_for = sliderFor.outerHeight(),\n                                    height_nav = sliderNav.outerHeight(),\n                                    pos = (height_nav - height_for)/2;\n\n                                sliderFor.parent().addClass('arrows-visible');\n                                sliderFor.parent().css('top', pos);\n                            } else {\n                                sliderFor.parent().addClass('arrows-disable');\n                            }\n                        }, 200);\n                    } else {\n                        setTimeout(() => {\n                            if (sliderFor.find('.slick-arrow').length > 0) {\n                                sliderFor.parent().css('top', 'unset');\n                            }\n                        }, 200);\n                    }\n                }\n            });\n        },\n\n        productVideoGallery: function($scope) {\n            const videoThumbnail = $scope.find('[data-video-thumbnail]'),\n                videoThumbnailLen = videoThumbnail.length,\n                productVideoLen = $('.productView-video').length;\n\n            if (videoThumbnailLen) {\n                const $imageWrapper = $scope.find('.productView-image-wrapper'),\n                    videoModal = $('[data-popup-video]'),\n                    sliderNav = $scope.find('.productView-nav');\n                let offsetTop = $imageWrapper.offset().top + $imageWrapper.outerHeight();\n\n                if (productVideoLen) {\n                    $body.addClass('has-product-video');\n                }\n                \n                $win.on('scroll', (event) => {\n                    const $targetCur = $(event.currentTarget),\n                        thisVideo = $scope.find('.slick-current .productView-video'),\n                        videoType = thisVideo.data('type'),\n                        videoUrl = thisVideo.data('video-url');\n\n                    if (videoUrl != undefined) {\n                        if ($targetCur.scrollTop() > offsetTop) {\n                            if (!videoModal.is('.is-show')) {\n                                const player = sliderNav.find('.slick-slide.slick-active').data('youtube-player'),\n                                    dataTime = parseInt(player.getCurrentTime()),\n                                    videoContent = `<div class=\"fluid-width-video-wrapper\" style=\"padding-top: 56.24999999999999%\">\n                                                    ${videoType == 'youtube' ? \n                                                        `<iframe\n                                                            id=\"player\"\n                                                            type=\"text/html\"\n                                                            width=\"100%\"\n                                                            frameborder=\"0\"\n                                                            webkitAllowFullScreen\n                                                            mozallowfullscreen\n                                                            allowFullScreen\n                                                            src=\"https://www.youtube.com/embed/${videoUrl}?autoplay=1&mute=1&start=${dataTime}\">\n                                                        </iframe>`\n                                                        :\n                                                        `<iframe \n                                                            src=\"https://player.vimeo.com/video/${videoUrl}?autoplay=1&mute=1\" \n                                                            class=\"js-vimeo\" \n                                                            allow=\"autoplay; \n                                                            encrypted-media\" \n                                                            webkitallowfullscreen \n                                                            mozallowfullscreen \n                                                            allowfullscreen\">\n                                                        </iframe>`\n                                                    }\n                                                </div>`;\n                                videoModal.addClass('is-show');\n                                videoModal.find('.halo-popup-content').html(videoContent);\n                                $body.addClass('video-show product-video-show');\n                                player.pauseVideo();\n                            }\n                        } else {\n                            const player = sliderNav.find('.slick-slide.slick-active').data('youtube-player');\n                            videoModal.removeClass('is-show');\n                            videoModal.find('.halo-popup-content').empty();\n                            $body.removeClass('video-show product-video-show');\n                            player.playVideo();\n                        }\n                    }\n                });\n            }\n        },\n\n        initVariantImageGroup: function($scope, enable = false) {\n            if(enable){\n                var inputChecked = $scope.find('[data-filter]:checked'),\n                sliderFor = $scope.find('.productView-for'),\n                sliderNav = $scope.find('.productView-nav'),\n                productOption = $scope.find('.productView-product .productView-options'),\n                metafields = $scope.find('[data-filter]:checked').data('metafields-vig'),\n                pageLayout;\n\n                switch (true) {\n                    case sliderNav.hasClass('productView-nav-gallery'):\n                        pageLayout = 'gallery';\n                        break;\n                    case sliderNav.closest('.product-full-width').length == 1 || sliderNav.closest('.product-full-width-2').length == 1:\n                        pageLayout = 'full-width';\n                        break;\n                    default:\n                        pageLayout = 'default';\n                }\n\n                const unFilter = () => {\n                    sliderFor.slick('slickUnfilter');\n                    if (pageLayout == 'full-width' && window.innerWidth > 767) return;\n                    if (sliderNav.hasClass('slick-filter')) sliderNav.find('.slick-counter').remove();\n                    sliderNav.slick('slickUnfilter').removeClass('slick-filter');\n                }\n\n                const filter = (list) => {\n                    switch (pageLayout) {\n                        case 'gallery':\n                            sliderNav\n                                .slick('unslick')\n                                .empty()\n                                .html(sliderNavHTML)\n                                .find('.productView-image').each(function() {\n                                    if (!$(this).is(list)) $(this).remove();\n                                });\n\n                            const navArrowsDesk = sliderNav.data('arrows-desk'),\n                                navArrowsMobi = sliderNav.data('arrows-mobi'),\n                                length = sliderNav.data('media-count'),\n                                oneItems = sliderNav.data('1-item-mobi'),\n                                show = 2,\n                                rows = 2;\n\n                            if (length == 1) {\n                                show = 1;\n                                rows = 1;\n                            }\n\n                            if (length == 2) {\n                                show = 2;\n                                rows = 1;\n                            }\n\n                            if (oneItems && window.innerWidth < 551) {\n                                show = 1;\n                                rows = 1;\n                            }\n\n                            sliderNav.slick({\n                                dots: true,\n                                rows: rows,\n                                arrows: navArrowsDesk,\n                                infinite: true,\n                                slidesPerRow: 1,\n                                slidesToShow: show,\n                                focusOnSelect: false,\n                                asNavFor: sliderFor,\n                                nextArrow: window.arrows.icon_next,\n                                prevArrow: window.arrows.icon_prev,\n                                rtl: window.rtl_slick,\n                                responsive: [\n                                    {\n                                        breakpoint: 767,\n                                        settings: {\n                                            arrows: navArrowsMobi\n                                        }\n                                    }\n                                ]\n                            });\n                            if ($('.cursor-wrapper').length) halo.productCustomCursor($('.halo-productView'));\n                            break;\n                        case 'full-width':\n                            if (window.innerWidth > 767) {\n                                let dataIndex = 1, checkList = 0;\n\n                                sliderNav\n                                    .empty()\n                                    .html(sliderNavHTML);\n\n                                if (sliderNavHTML.length) {\n                                    list.split(',').forEach(element => {if (sliderNavHTML.includes(element.replace(/\\./g,''))) checkList++});\n                                    if (checkList == 0) {\n                                        sliderNav.removeClass('media-filter');\n                                    } else {\n                                        sliderNav.addClass('media-filter');\n                                        sliderNav.find('.productView-image').each(function() {\n                                            if (!$(this).is(list)) {\n                                                $(this).remove();\n                                            } else {\n                                                $(this).attr('data-index', dataIndex);\n                                                $(this).find('img').attr('data-index', dataIndex);\n                                                dataIndex++;\n                                            }\n                                        });\n                                    }\n                                }\n\n                                if ($('.cursor-wrapper').length) {\n                                    $('.cursor-wrapper .counter-total').text(sliderNav.find('.productView-image').length);\n                                    halo.productCustomCursor($('.halo-productView'));\n                                }\n                            }\n                            break;\n                        default:\n                            sliderNav\n                                .slick('slickFilter', list)\n                                .slick('refresh')\n                                .addClass('slick-filter');\n                    }\n                    if (sliderFor) sliderFor.slick('slickFilter', list).slick('refresh');\n                }\n\n                const setImageForMetafields = (list, unfilter) => {\n                    let array = list.split(','),\n                        slidesToKeep = [];\n                    \n                    array.forEach(element => {\n                        slidesToKeep.push(`.filter-${element.toLowerCase().replace(/[^A-Z0-9]/ig, '-')}`);\n                    });\n                    \n                    if (unfilter) unFilter();\n                    filter(slidesToKeep.join(','));\n                }\n\n                const setImage = (className, input) => {\n                    if (productOption.data('lang') != productOption.data('default-lang') && input.data('value-default-lang')) className = `.filter-${input.data('value-default-lang')}`;\n                    unFilter();\n                    if(className !== undefined) {\n                        if (sliderNav.find(className).length || sliderFor.find(className).length || pageLayout == 'full-width') filter(className);\n                    }\n                }\n\n                if(inputChecked.length > 0) {\n                    let className = inputChecked.data('filter');\n                    metafields && metafields.length ? setImageForMetafields(metafields, false) : setImage(className, inputChecked);\n                }\n\n                $doc.on('change', 'input[data-filter]', (event) => {\n                    let className = $(event.currentTarget).data('filter'),\n                    thisMetafields = $(event.currentTarget).data('metafields-vig');\n                    thisMetafields && thisMetafields.length ? setImageForMetafields(thisMetafields, true) : setImage(className, $(event.currentTarget));\n                });\n            }\n        },\n\n        initYoutubeCarousel: function(slider) {\n            slider.each((index, slick) => {\n                const $slick = $(slick);\n\n                if ($slick.find('[data-youtube]').length > 0) {\n                    $slick.addClass('slick-slider--video');\n\n                    halo.initYoutubeCarouselEvent(slick);\n                }\n            });\n        },\n\n        initYoutubeCarouselEvent: function(slick){\n            var $slick = $(slick),\n                $videos = $slick.find('[data-youtube]');\n\n            bindEvents(slick);\n\n            function bindEvents() {\n                if ($slick.hasClass('slick-initialized')) {\n                    onSlickImageInit($slick, $videos);\n                }\n\n                $doc.on('init', $slick, onSlickImageInit);\n                $doc.on('beforeChange', $slick, onSlickImageBeforeChange);\n                $doc.on('afterChange', $slick, onSlickImageAfterChange);\n            }\n\n            function onPlayerReady(event) {\n                $(event.target.getIframe()).closest('.slick-slide').data('youtube-player', event.target);\n\n                setTimeout(function(){\n                    if ($(event.target.getIframe()).closest('.slick-slide').hasClass('slick-active')) {\n                        $slick.slick('slickPause');\n                        event.target.playVideo();\n                    }\n                }, 200);\n            }\n\n            function onPlayerStateChange(event) {\n                if (event.data === YT.PlayerState.PLAYING) {\n                    $slick.slick('slickPause');\n                }\n\n                if (event.data === YT.PlayerState.ENDED) {\n                    $slick.slick('slickNext');\n                }\n            }\n\n            function onSlickImageInit() {\n                $videos.each((j, vid) => {\n                    const $vid = $(vid);\n                    const id = `youtube_player_${Math.floor(Math.random() * 100)}`;\n\n                    $vid.attr('id', id);\n\n                    const player = new YT.Player(id, {\n                        host: 'http://www.youtube.com',\n                        videoId: $vid.data('youtube'),\n                        wmode: 'transparent',\n                        playerVars: {\n                            autoplay: 0,\n                            controls: 0,\n                            disablekb: 1,\n                            enablejsapi: 1,\n                            fs: 0,\n                            rel: 0,\n                            showinfo: 0,\n                            iv_load_policy: 3,\n                            modestbranding: 1,\n                            wmode: 'transparent',\n                        },\n                        events: {\n                            onReady: onPlayerReady,\n                            onStateChange: onPlayerStateChange,\n                        },\n                    });\n                });\n            }\n\n            function onSlickImageBeforeChange(){\n                const player = $slick.find('.slick-slide.slick-active').data('youtube-player');\n\n                if (player) {\n                    player.stopVideo();\n                    $slick.removeClass('slick-slider--playvideo');\n                }\n            }\n\n            function onSlickImageAfterChange(){\n                const player = $slick.find('.slick-slide.slick-active').data('youtube-player');\n\n                if (player) {\n                    $slick.slick('slickPause');\n                    $slick.addClass('slick-slider--playvideo');\n                    player.playVideo();\n                }\n            }\n        },\n\n        productSizeChart: function($scope){\n            window.sizeChart = function() {\n                var sizeChartBtn =  $scope.find('[data-open-size-chart-popup]');\n\n                sizeChartBtn.on('click', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    document.body.classList.add('size-chart-show');\n                    if (document.body.classList.contains('quick-view-show')) {\n                        $('.halo-popup-content .halo-size-chart-popup').addClass('is-show');\n                    }\n                    else {\n                        $('#MainContent .halo-size-chart-popup').addClass('is-show');\n                    }\n                });\n\n                $doc.on('click', '[data-close-size-chart-popup]', () => {\n                    $body.removeClass('size-chart-show');\n                    $('.halo-size-chart-popup').removeClass('is-show');\n                });\n\n                $doc.on('click', (event) => {\n                    if ($body.hasClass('size-chart-show')) {\n                        if (($(event.target).closest('[data-open-size-chart-popup]').length === 0) && ($(event.target).closest('[data-size-chart-popup]').length === 0)) {\n                            $body.removeClass('size-chart-show');\n                        }\n                    }\n                });\n            };\n\n            var quickViewShow = document.body.classList.contains('quick-view-show'),\n                productSizeChart = $('.halo-productView .productView-sizeChart').length;\n\n            if (document.body.classList.contains('template-product')) {\n                if (!quickViewShow && productSizeChart) {\n                    window.sizeChart();\n                } else if (quickViewShow && productSizeChart === 0) {\n                    window.sizeChart();\n                }\n            } else {\n                window.sizeChart();\n            }\n        },\n\n        productLastSoldOut: function($scope) {\n            var wrapper = $scope.find('[data-sold-out-product]');\n\n            if (wrapper.length > 0) {\n                var numbersProductList = wrapper.data('item').toString().split(','),\n                    numbersProductItem = Math.floor(Math.random() * numbersProductList.length),\n                    numbersHoursList = wrapper.data('hours').toString().split(','),\n                    numbersHoursItem = Math.floor(Math.random() * numbersHoursList.length);\n\n                wrapper.find('[data-sold-out-number]').text(numbersProductList[numbersProductItem]);\n                wrapper.find('[data-sold-out-hours]').text(numbersHoursList[numbersHoursItem]);\n                wrapper.show();\n            }\n        },\n\n        productCustomerViewing: function($scope) {\n            var wrapper = $scope.find('[data-customer-view]');\n\n            if (wrapper.length > 0) {\n                var numbersViewer = wrapper.data('customer-view'),\n                    numbersViewerList =  JSON.parse('[' + numbersViewer + ']'),\n                    numbersViewerTime = wrapper.data('customer-view-time'),\n                    timeViewer =  parseInt(numbersViewerTime) * 1000;\n                \n                setInterval(function() {\n                    var numbersViewerItem = (Math.floor(Math.random() * numbersViewerList.length));\n\n                    wrapper.find('.text').text(window.customer_view.text.replace('[number]', numbersViewerList[numbersViewerItem]));\n                }, timeViewer);\n            }\n        },\n\n        productCountdown: function($scope){\n            var wrapper = $scope.find('[data-countdown-id]'),\n                countDown = wrapper.data('countdown'),\n                countDownDate = new Date(countDown).getTime(),\n                countDownText = window.countdown.text;\n\n            if(wrapper.length > 0) {\n                var countdownfunction = setInterval(function() {\n                    var now = new Date().getTime(),\n                        distance = countDownDate - now;\n\n                    if (distance < 0) {\n                        clearInterval(countdownfunction);\n                        wrapper.remove();\n                    } else {\n                        var days = Math.floor(distance / (1000 * 60 * 60 * 24)),\n                            hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),\n                            minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)),\n                            seconds = Math.floor((distance % (1000 * 60)) / 1000),\n                            strCountDown;\n\n                        if (wrapper.is('.style-2, .style-3, .style-4')) {\n                            strCountDown = '<span class=\"text\"><span>'+ countDownText +'</span></span><span class=\"num\">'+days+'<span>'+ window.countdown.day_2 +'</span></span>\\\n                                <span class=\"num\">'+hours+'<span>'+ window.countdown.hour_2 +'</span></span>\\\n                                <span class=\"num\">'+minutes+'<span>'+ window.countdown.min_2 +'</span></span>\\\n                                <span class=\"num\">'+seconds+'<span>'+ window.countdown.sec_2 +'</span></span>';\n                        }\n                        else {\n                            strCountDown = '<span class=\"text\"><span>'+ countDownText +'</span></span><span class=\"num\">'+days+'<span>'+ window.countdown.day +'</span></span>\\\n                                <span class=\"num\">'+hours+'<span>'+ window.countdown.hour +'</span></span>\\\n                                <span class=\"num\">'+minutes+'<span>'+ window.countdown.min +'</span></span>\\\n                                <span class=\"num\">'+seconds+'<span>'+ window.countdown.sec +'</span></span>';\n                        }\n\n                        wrapper.html(strCountDown);\n                        wrapper.addClass('show');\n                    }\n                }, 1000);\n            }\n        },\n\n        productCustomCursor: function($scope){\n            if ($('.cursor-wrapper').length == 0) return;\n            const { Back } = window;\n\n            this.cursorWrapper = document.querySelector(\".cursor-wrapper\");\n            this.innerCursor = document.querySelector(\".custom-cursor__inner\");\n            this.outerCursor = document.querySelector(\".custom-cursor__outer\");\n\n            this.cursorWrapperBox = this.cursorWrapper.getBoundingClientRect();\n            this.innerCursorBox = this.innerCursor.getBoundingClientRect();\n            this.outerCursorBox = this.outerCursor.getBoundingClientRect();\n\n            document.addEventListener(\"mousemove\", e => {\n                this.clientX = e.clientX;\n                this.clientY = e.clientY;\n            });\n\n            const render = () => {\n                TweenMax.set(this.cursorWrapper, {\n                    x: this.clientX,\n                    y: this.clientY\n                });\n                requestAnimationFrame(render);\n            };\n            requestAnimationFrame(render);\n\n            this.fullCursorSize = 60;\n            this.enlargeCursorTween = TweenMax.to(this.outerCursor, 0.3, {\n                width: this.fullCursorSize,\n                height: this.fullCursorSize,\n                ease: this.easing,\n                paused: true\n            });\n\n            const handleMouseEnter = () => {\n                this.enlargeCursorTween.play();\n                $('.cursor-wrapper').addClass('handleMouseEnter').removeClass('handleMouseLeave');\n            };\n\n            const handleMouseLeave = () => {\n                this.enlargeCursorTween.reverse();\n                $('.cursor-wrapper').addClass('handleMouseLeave').removeClass('handleMouseEnter');\n            };\n\n            const gridItems = document.querySelectorAll(\".productView-image\");\n            gridItems.forEach(el => {\n                if (el?.querySelector('.productView-video')) return;\n                el.addEventListener(\"mouseenter\", handleMouseEnter);\n                el.addEventListener(\"mouseleave\", handleMouseLeave);\n            });\n\n            this.bumpCursorTween = TweenMax.to(this.outerCursor, 0.1, {\n                scale: 0.7,\n                paused: true,\n                onComplete: () => {\n                    TweenMax.to(this.outerCursor, 0.2, {\n                        scale: 1,\n                        ease: this.easing\n                    });\n                }\n            });\n\n            $(document).on('mouseover', '[data-cursor-image]', (event) => {\n                var $target = $(event.currentTarget),\n                    imagesInView = new Array();\n\n                imagesInView.push($target.attr('data-index'));\n                $(\"#count-image\").text(imagesInView[0]);\n            });\n\n            $.fn.isInViewport = function(excludePartials) {\n                var elementTop = $(this).offset().top;\n                var elementBottom = elementTop + $(this).height();\n\n                var viewportTop = $(document).scrollTop();\n                var viewportBottom = viewportTop + $(window).height();\n\n                if (excludePartials) {\n                    var bottomVisible = (elementBottom - viewportTop) / $(this).height();\n                    var isInView = elementBottom > viewportTop && elementTop < viewportBottom;\n\n                    return isInView && bottomVisible > 0.5;\n                }\n\n                return elementBottom > viewportTop && elementTop < viewportBottom;\n            };\n\n            \n            if ($('.product-full-width').length > 0 || $('.product-full-width-2').length > 0) {\n                $(window).on('resize scroll', function() {\n                    var imagesInView = new Array();\n                    $('.productView-image').each(function() {\n                        if ($(this).isInViewport(true)) {\n                            imagesInView.push($(this).attr('data-index'));\n                            $(\"#count-image\").text(imagesInView[0]);\n                        }\n                    });\n                });\n            }\n        },\n\n        initWishlist: function() {\n            if(window.wishlist.show){\n                halo.setLocalStorageProductForWishlist();\n\n                $doc.on('click', '[data-wishlist]', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    if (!$(event.currentTarget).hasClass('is-in-grid')) {\n                        $('[data-wishlist-items-display]').removeClass('is-loaded');\n                    }\n\n                    var $target = $(event.currentTarget),\n                        id = $target.data('product-id'),\n                        handle = $target.data('wishlist-handle'),\n                        wishlistList = localStorage.getItem('wishlistItem') ? JSON.parse(localStorage.getItem('wishlistItem')) : [];\n                        index = wishlistList.indexOf(handle),\n                        wishlistContainer = $('[data-wishlist-container]');\n                        wishlistLayout = wishlistContainer.attr('data-wishlist-layout');\n\n                    if(!$target.hasClass('wishlist-added')){\n                        $target\n                            .addClass('wishlist-added')\n                            .find('.text')\n                            .text(window.wishlist.added);\n\n                        if(wishlistContainer.length > 0) {\n                            const addEvent = new CustomEvent('addwishlistitem', { detail: { handle } , bubbles: true });\n                            document.dispatchEvent(addEvent);\n                        }\n\n                        wishlistList.push(handle);\n                        localStorage.setItem('wishlistItem', JSON.stringify(wishlistList));\n                        \n                        const updateWishlistMailEvent = new CustomEvent('updatewishlistmail', { bubbles: true });\n                        document.dispatchEvent(updateWishlistMailEvent); \n                    } else {\n                        $target\n                            .removeClass('wishlist-added')\n                            .find('.text')\n                            .text(window.wishlist.add);\n                        if(wishlistContainer.length > 0) {\n                            if($('[data-wishlist-added=\"wishlist-'+ id +'\"]').length > 0) {\n                                $('[data-wishlist-added=\"wishlist-'+ id +'\"]').remove();\n                                const icon = $(`[data-wishlist][data-product-id=${id}]`);\n                                const productCard = icon.closest('.product');\n                                productCard.remove();\n                            }           \n                        }\n\n                        wishlistList.splice(index, 1);\n                        localStorage.setItem('wishlistItem', JSON.stringify(wishlistList));\n\n                        const updatePaginationEvent = new CustomEvent('updatepagination', { bubbles: true })\n                        document.dispatchEvent(updatePaginationEvent);\n                        \n                        if(wishlistContainer.length > 0) {\n                            wishlistList = localStorage.getItem('wishlistItem') ? JSON.parse(localStorage.getItem('wishlistItem')) : [];\n\n                            if (wishlistList.length > 0) {\n                                const updateWishlistMailEvent = new Event('updatewishlistmail', { bubbles: true })\n                                document.dispatchEvent(updateWishlistMailEvent);\n                            } else {\n                                $('[data-wishlist-container]')\n                                    .addClass('is-empty')\n                                    .html(`\\\n                                    <div class=\"wishlist-content-empty text-center\">\\\n                                        <span class=\"wishlist-content-text\">${window.wishlist.empty}</span>\\\n                                        <div class=\"wishlist-content-actions\">\\\n                                            <a class=\"button button-2 button-continue\" href=\"${window.routes.collection_all}\">\\\n                                                ${window.wishlist.continue_shopping}\\\n                                            </a>\\\n                                        </div>\\\n                                    </div>\\\n                                `);\n\n                                $('[data-wishlist-footer]').hide();\n                            }   \n                        }\n                    }\n                    $('[data-wishlist-count]').text(wishlistList.length);\n                    halo.setProductForWishlist(handle);\n                })\n            }\n        },\n\n        calculateCard06Padding() {\n            if (!$body.hasClass('product-card-layout-06')) return \n\n            const cardAction = document.querySelector('.card .card-action.card-grid__hidden');\n            cardAction.classList.remove('card-grid__hidden');\n            const padding = cardAction.scrollHeight;\n\n            document.querySelector('[data-wishlist-items-grid-display]').style.setProperty('--card-06-padding', padding + 'px');\n            cardAction.classList.add('card-grid__hidden');\n        },\n\n        setProductForWishlist: function(handle){\n            var wishlistList = JSON.parse(localStorage.getItem('wishlistItem')),\n                item = $('[data-wishlist-handle=\"'+ handle +'\"]'),\n                index = wishlistList?.indexOf(handle);\n\n            if (index == null || wishlistList == null) return;\n            \n            if(index >= 0) {\n                item\n                    .addClass('wishlist-added')\n                    .find('.text')\n                    .text(window.wishlist.added)\n            } else {\n                item\n                    .removeClass('wishlist-added')\n                    .find('.text')\n                    .text(window.wishlist.add);\n            }\n        },\n\n        setLocalStorageProductForWishlist: function() {\n            var wishlistList = localStorage.getItem('wishlistItem') ? JSON.parse(localStorage.getItem('wishlistItem')) : [];\n            localStorage.setItem('wishlistItem', JSON.stringify(wishlistList));\n\n            if (wishlistList.length > 0) {\n                wishlistList = JSON.parse(localStorage.getItem('wishlistItem'));\n                \n                wishlistList.forEach((handle) => {\n                    halo.setProductForWishlist(handle);\n                });\n            }\n            $('[data-wishlist-count]').text(wishlistList.length);\n        },\n\n        initCountdown: function () {\n          var countdownAnnouncementElm = $('[data-countdown-announcement]'),\n              countdownElm = $('[data-countdown]').not('[data-countdown-id]'),\n              countdownNewsletter = $('[data-countdown-time]');\n\n            if (countdownAnnouncementElm.length) {\n                countdownAnnouncementElm.each(function () {\n                    var self = $(this),\n                        countdownAnnouncement = self.data('countdown-value'),\n                        countdownAnnouncementDate = new Date(countdownAnnouncement).getTime();\n\n                    var countdownAnnouncementFunction = setInterval(function() {\n                        var now = new Date().getTime(),\n                            distance = countdownAnnouncementDate - now;\n\n                        if (distance < 0) {\n                            clearInterval(countdownAnnouncementFunction);\n                            if (self.hasClass('hide--countdown')) {\n                                self.remove();\n                            }\n                            else {\n                                const thisItem = self.parents('.announcement-bar__message'),\n                                    thisBar = self.parents('[data-announcement-bar]');\n                                thisBar.is('.slick-initialized') ? thisBar.slick('slickRemove', thisItem.data('slick-index')) : thisItem.remove();\n                            }\n                        } else {\n                             var days = Math.floor(distance / (1000 * 60 * 60 * 24)),\n                                hours = `0${Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))}`.slice(-2),\n                                minutes = `0${Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60))}`.slice(-2),\n                                seconds = `0${Math.floor((distance % (1000 * 60)) / 1000)}`.slice(-2),\n                                strCountDown = '';\n                            \n                            strCountDown = '<div class=\"clock-item\"><span class=\"num\">'+days+'</span><span class=\"text\">'+ window.countdown.days +'</span></div>\\\n                                            <div class=\"clock-item\"><span class=\"num\">'+hours+'</span><span class=\"text\">'+ window.countdown.hours +'</span></div>\\\n                                            <div class=\"clock-item\"><span class=\"num\">'+minutes+'</span><span class=\"text\">'+ window.countdown.mins +'</span></div>\\\n                                            <div class=\"clock-item\"><span class=\"num\">'+seconds+'</span><span class=\"text\">'+ window.countdown.secs +'</span></div>';\n                          \n                            self.html(strCountDown);\n                        }\n                    }, 1000);\n                });\n            }\n\n            if (countdownElm.length) {\n                countdownElm.each(function () {\n                    var self = $(this),\n                        countDown = self.data('countdown-value'),\n                        countDownDate = new Date(countDown).getTime();\n                        \n                    var countdownfunction = setInterval(function() {\n                        var now = new Date().getTime(),\n                            distance = countDownDate - now;\n\n                        if (distance < 0) {\n                            clearInterval(countdownfunction);\n                            if (self.hasClass('hide--countdown')) {\n                                self.remove();\n                            }\n                            else {\n                                self.parents('.shopify-section').remove();\n                            }\n                        } else {\n                            var days = Math.floor(distance / (1000 * 60 * 60 * 24)),\n                                hours = `0${Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))}`.slice(-2),\n                                minutes = `0${Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60))}`.slice(-2),\n                                seconds = `0${Math.floor((distance % (1000 * 60)) / 1000)}`.slice(-2),\n                                strCountDown = '';\n                            if (self.hasClass('product-countdown-block')) {\n                                if($('.halo-block-header').hasClass('countdown_style_2')){\n                                    strCountDown = '<div class=\"clock-item\"><span class=\"num\">'+days+ window.countdown.d +'</span><span class=\"icon\">:</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+hours+ window.countdown.h +'</span><span class=\"icon\">:</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+minutes+ window.countdown.m +'</span><span class=\"icon\">:</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+seconds+ window.countdown.s +'</span><span class=\"icon\"></span></div>';\n                                } else{\n                                    strCountDown = `<div class=\"clock-item\"><span class=\"num\">${days}d&nbsp;</span></div>\n                                    <div class=\"clock-item\"><span class=\"num\">${hours}:</span></div>\n                                    <div class=\"clock-item\"><span class=\"num\">${minutes}:</span></div>\n                                    <div class=\"clock-item\"><span class=\"num\">${seconds}</span></div>`;\n                                }\n                            } else {\n                                strCountDown = '<div class=\"clock-item\"><span class=\"num\">'+days+'</span><span class=\"text\">'+ window.countdown.days +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+hours+'</span><span class=\"text\">'+ window.countdown.hours +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+minutes+'</span><span class=\"text\">'+ window.countdown.mins +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+seconds+'</span><span class=\"text\">'+ window.countdown.secs +'</span></div>';\n                            }\n                            self.html(strCountDown);\n                        }\n                    }, 1000);\n                });\n            }\n\n            if (countdownNewsletter.length){\n                function initCountdown(element) {\n                    const $element = $(element);\n                    const countdownTime = new Date($element.data('countdown-time')).getTime();\n                \n                    const intervalId = setInterval(function() {\n                      const now = new Date().getTime();\n                      const distance = countdownTime - now;\n                \n                      if (distance < 0) {\n                        clearInterval(intervalId);\n                        $element.remove();\n                      } else {\n                        const days = Math.floor(distance / (1000 * 60 * 60 * 24));\n                        const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\n                        const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\n                        const seconds = Math.floor((distance % (1000 * 60)) / 1000);\n                \n                        const content = `\n                          <span class=\"item pos-relative d-inline-block v-a-top left w-auto\">\n                            <span class=\"num dis-i-block\">${days}</span>\n                            <span class=\"dis-block text uppercase\">${window.countdown.day}ays</span>\n                          </span>\n                          <span class=\"item pos-relative d-inline-block v-a-top left w-auto\">\n                            <span class=\"num dis-i-block\">${hours}</span>\n                            <span class=\"dis-block text uppercase\">${window.countdown.hour}ours</span>\n                          </span>\n                          <span class=\"item pos-relative d-inline-block v-a-top left w-auto\">\n                            <span class=\"num dis-i-block\">${minutes}</span>\n                            <span class=\"dis-block text uppercase\">${window.countdown.min}ins</span>\n                          </span>\n                          <span class=\"item pos-relative d-inline-block v-a-top left w-auto\">\n                            <span class=\"num dis-i-block\">${seconds}</span>\n                            <span class=\"dis-block text uppercase\">${window.countdown.sec}econds</span>\n                          </span>`;\n                \n                        $element.find('.countdown').html(content);\n                        $element.parent().removeClass('hidden');\n                        $element.find('.countdown').addClass('show');\n                      }\n                    }, 1000);\n                }\n                \n                countdownNewsletter.each(function() {\n                    initCountdown(this);\n                });\n            }\n        },\n\n        collectionCountdown: function () {\n            var countdownElm = $('[data-collection-countdown]');\n\n            if (countdownElm.length) {\n                countdownElm.each(function () {\n                    var self = $(this);\n\n                    var countDownCollection = (self) => {\n                        var countDown = self.data('collection-countdown-value'),\n                            countDownDate = new Date(countDown).getTime(),\n                            countDownText = window.countdown.text,\n                            now = new Date().getTime(),\n                            distance = countDownDate - now;\n\n                        if (distance < 0) {\n                            clearInterval(countDownCollection);\n                            if (self.hasClass('hide--countdown')) {\n                                self.remove();\n                            }\n                        } else {\n                            var days = Math.floor(distance / (1000 * 60 * 60 * 24)),\n                                hours = `0${Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))}`.slice(-2),\n                                minutes = `0${Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60))}`.slice(-2),\n                                seconds = `0${Math.floor((distance % (1000 * 60)) / 1000)}`.slice(-2),\n                                strCountDown = '';\n                            if (self.hasClass('collection-countdown')) {\n                                strCountDown = '<div class=\"clock-item\"><span class=\"num\">'+days+'</span><span class=\"text\">'+ window.countdown.days +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+hours+'</span><span class=\"text\">'+ window.countdown.hours +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+minutes+'</span><span class=\"text\">'+ window.countdown.mins +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+seconds+'</span><span class=\"text\">'+ window.countdown.secs +'</span></div>';\n                            }\n                            self.html(strCountDown);\n                        }\n                    }\n\n                    setInterval(() =>{\n                        countDownCollection(self)\n                    }, 1000);\n                });\n            }\n        },\n\n        handleScrollDown: function() {\n            var iconSrollDownSlt = '[data-scroll-down]',\n                iconSrollDown = $(iconSrollDownSlt);\n\n            if (iconSrollDownSlt.length) {\n                iconSrollDown.each(function() {\n                    var self = $(this);\n                    var target = self.closest('.shopify-section').next('.shopify-section').attr('id');\n\n                    self.attr('href', '#'+ target +'');\n\n                    iconSrollDown.on('click', function(e) {\n                        e.preventDefault();\n                        var scroll = $(this.getAttribute('href'));\n\n                        if (scroll.length) {\n                            $('html, body').stop().animate({\n                                scrollTop: scroll.offset().top\n                            }, 400);\n                        };\n                    });\n                });\n            }\n        },\n\n        toggleSidebarMobile: function() {\n            $doc.on('click', '[data-sidebar]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.addClass('open-mobile-sidebar');\n              \n            });\n\n            $doc.on('click', '[data-close-sidebar]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('open-mobile-sidebar');\n            });\n\n            $doc.on('click', (event) => {\n                if($body.hasClass('open-mobile-sidebar')){\n                    if (($(event.target).closest('[data-sidebar]').length === 0) && ($(event.target).closest('#halo-sidebar').length === 0)) {\n                        $body.removeClass('open-mobile-sidebar');\n                    }\n                }\n            });\n        },\n\n        initBlogMasonry: function() {\n            const $blogMasonry = $('.blog-layout-masonry .blog-block-item');\n            const isRTL = $body.hasClass('layout_rtl');\n\n            $blogMasonry.masonry({\n                columnWidth: '.blog-grid-sizer',\n                itemSelector: '[data-masonry-item]',\n                isRTL: isRTL,\n                originLeft: !isRTL\n            });\n        },\n\n        articleGallery: function() {\n            const $gallery = $('.articleGallery-block'),\n                $gallerySlider = $('.articleGallery-slider'),\n                galleryLength = $gallery.length,\n                col = $gallerySlider.data('col');\n\n            if (galleryLength > 0 && $gallerySlider.not('.slick-initialized')) {\n                $gallerySlider.slick({\n                    slidesToShow: 1,\n                    slidesToScroll: 1,\n                    dots: true,\n                    arrows: true,\n                    infinite: false,\n                    mobileFirst: true,\n                    focusOnSelect: false,\n                    nextArrow: window.arrows.icon_next,\n                    prevArrow: window.arrows.icon_prev,\n                    rtl: window.rtl_slick,\n                    responsive: [\n                        {\n                            breakpoint: 767,\n                            settings: {\n                                slidesToShow: col,\n                                slidesToScroll: col\n                            }\n                        },\n                        {\n                            breakpoint: 319,\n                            settings: {\n                                slidesToShow: 2,\n                                slidesToScroll: 2\n                            }\n                        }\n                    ]\n                });\n            }\n        },\n\n        initCollapseSidebarBlock: function () {\n            $doc.on('click', '.sidebarBlock-headingWrapper .sidebarBlock-heading', (event) => {\n                var $target = $(event.currentTarget),\n                    $blockCollapse = $target.parent().siblings(),\n                    $sidebarBlock = $target.parents('.sidebarBlock');\n\n                if ($target.hasClass('is-clicked')) {\n                    $target.removeClass('is-clicked');\n                    $blockCollapse.slideUp('slow');\n                } else {\n                    $target.addClass('is-clicked');\n                    $blockCollapse.slideDown('slow');\n\n                    if ($sidebarBlock.hasClass('sidebar-product')) {\n                        $sidebarBlock.find('.products-carousel').slick('refresh');\n                    }\n                }\n            });\n\n            $doc.on('click', '.sidebarBlock-headingWrapper-slide .sidebarBlock-heading', (event) => {\n                var $target = $(event.currentTarget),\n                    $wrapBlock = $target.closest(\".halo-sidebar-wrapper\"),\n                    $blockSlide = $target.parent().siblings(),\n                    $backButton = $blockSlide.find(\".sidebarBlock-slide__content-close\"),\n                    $sidebarBlock = $target.parents('.sidebarBlock');\n\n                $blockSlide.toggleClass(\"is-show\")\n                $wrapBlock.toggleClass(\"disable-scroll\")\n                $sidebarBlock.toggleClass(\"has-slide\")\n\n                $backButton.on(\"click\", function () {\n                    $blockSlide.removeClass(\"is-show\")\n                    $wrapBlock.removeClass(\"disable-scroll\")\n                    $sidebarBlock.removeClass(\"has-slide\")\n                })\n            });\n        },\n\n        initCategoryActive: function(){\n            if ($('.all-categories-list').length > 0) {\n                $doc.on('click', '.all-categories-list .icon-dropdown', (event) => {\n                    var $target = $(event.currentTarget).parent();\n\n                    $target.siblings().removeClass('is-clicked current-cate');\n                    $target.toggleClass('is-clicked');\n                    $target.siblings().find('> .dropdown-category-list').slideUp('slow');\n                    $target.find('> .dropdown-category-list').slideToggle('slow');\n                });\n\n                $('.all-categories-list li').each((index, element) =>{\n                    if ($(element).hasClass('current-cate')) {\n                        $(element).find('> .dropdown-category-list').slideToggle('slow');\n                    }\n                    if ($(element).hasClass(\"is-clicked\")) {\n                        $(element).closest(\".navPages-item\").addClass(\"is-clicked\");\n                        $(element).parent().slideDown(\"slow\");\n                    }\n                });\n            }\n        },\n\n        productBlockSilderSidebar: function() {\n            var productGrid = $('[data-product-slider-sidebar]'),\n                itemToShow = productGrid.data('item-to-show'),\n                itemDots = productGrid.data('item-dots'),\n                itemArrows = productGrid.data('item-arrows');\n\n            if(productGrid.length > 0) {\n                if(productGrid.not('.slick-initialized')) {\n                    productGrid.slick({\n                        mobileFirst: true,\n                        adaptiveHeight: true,\n                        vertical: false,\n                        infinite: false,\n                        slidesToShow: itemToShow,\n                        slidesToScroll: 1,\n                        arrows: itemArrows,\n                        dots: itemDots,\n                        autoplay: true,\n                        autoplaySpeed: 2000,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                    });\n\n                  \n                }\n            }\n\n            if ($('body').hasClass('cursor-fixed__show')){\n                window.sharedFunctionsAnimation.onEnterButton();\n                window.sharedFunctionsAnimation.onLeaveButton();\n            }\n        },\n\n        productBlockSilderArticle: function() {\n            var productGrid = $('[data-product-slider-article]'),\n                itemToShow = productGrid.data('item-to-show'),\n                itemDots = productGrid.data('item-dots'),\n                itemArrows = productGrid.data('item-arrows');\n\n            if(productGrid.length > 0) {\n                if(productGrid.not('.slick-initialized')) {\n                    productGrid.slick({\n                        adaptiveHeight: true,\n                        vertical: false,\n                        infinite: false,\n                        slidesToShow: itemToShow,\n                        slidesToScroll: 1,\n                        arrows: itemArrows,\n                        dots: itemDots,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: [{\n                                breakpoint: 992,\n                                settings: {\n                                    slidesToShow: 3,\n                                    slidesToScroll: 1,\n                                }\n                            },\n                            {\n                                breakpoint: 551,\n                                settings: {\n                                    slidesToShow: 2,\n                                    slidesToScroll: 1,\n                                }\n                            }\n                        ]\n                    });\n                }\n            }\n        },\n\n        articleGallery: function() {\n            const $gallery = $('.articleGallery-block'),\n                $gallerySlider = $('.articleGallery-slider'),\n                galleryLength = $gallery.length,\n                col = $gallerySlider.data('col');\n\n            if (galleryLength > 0 && $gallerySlider.not('.slick-initialized')) {\n                $gallerySlider.slick({\n                    slidesToShow: 1,\n                    slidesToScroll: 1,\n                    dots: true,\n                    arrows: true,\n                    infinite: false,\n                    mobileFirst: true,\n                    focusOnSelect: false,\n                    nextArrow: window.arrows.icon_next,\n                    prevArrow: window.arrows.icon_prev,\n                    rtl: window.rtl_slick,\n                    responsive: [\n                        {\n                            breakpoint: 767,\n                            settings: {\n                                slidesToShow: col,\n                                slidesToScroll: col\n                            }\n                        },\n                        {\n                            breakpoint: 319,\n                            settings: {\n                                slidesToShow: 2,\n                                slidesToScroll: 2\n                            }\n                        }\n                    ]\n                });\n            }\n        },\n\n        initInfiniteScrolling: function(){\n            if ($('.pagination-infinite'.length > 0)) {\n                $win.on('scroll load', () => {\n                    var currentScroll = $win.scrollTop(),\n                        pageInfinite = $('.pagination-infinite'),\n                        linkInfinite = pageInfinite.find('[data-infinite-scrolling]'),\n                        position; \n\n                    if(linkInfinite.length > 0 && !linkInfinite.hasClass('is-loading')){\n                        position = pageInfinite.offset().top - 500;\n                        \n                        if (currentScroll > position) {\n                            var url = linkInfinite.attr('href');\n\n                            halo.doAjaxInfiniteScrollingGetContent(url, linkInfinite);\n                        }\n                    }\n                });\n            }\n\n            $doc.on('click', '[data-infinite-scrolling]', (event) => {\n                var linkInfinite = $(event.currentTarget),\n                    url = linkInfinite.attr('href');\n\n                event.preventDefault();\n                event.stopPropagation();\n\n                halo.doAjaxInfiniteScrollingGetContent(url, linkInfinite);\n            });\n        },\n\n        doAjaxInfiniteScrollingGetContent: function(url, link){\n            $.ajax({\n                type: 'GET',\n                url: url,\n                beforeSend: function () {\n                    link.text(link.attr('data-loading-more'));\n                    link.addClass('is-loading');\n                    // document.getElementById('CollectionProductGrid').querySelector('.collection').classList.add('is-loading');\n                    // $body.addClass('has-halo-loader');\n                },\n                success: function (data) {\n                    halo.ajaxInfiniteScrollingMapData(data);\n                },\n                error: function (xhr, text) {\n                    alert($.parseJSON(xhr.responseText).description);\n                },\n                complete: function () {\n                    link.text(link.attr('data-load-more'));\n                    link.removeClass('is-loading');\n                    // document.getElementById('CollectionProductGrid').querySelector('.collection').classList.remove('is-loading');\n                    // $body.removeClass('has-halo-loader');\n                    if (document.querySelector('.collection-masonry')) {\n                        resizeAllGridItems();\n                    }\n                }\n            });\n        },\n\n        ajaxInfiniteScrollingMapData: function(data){\n            var currentTemplate = $('#CollectionProductGrid'),\n                currentProductListing = currentTemplate.find('.productListing'),\n                currentPagination = currentTemplate.find('.pagination'),\n                newTemplate = $(data).find('#CollectionProductGrid'),\n                newProductListing = newTemplate.find('.productListing'),\n                newPagination = newTemplate.find('.pagination'),\n                newProductItem = newProductListing.children('.product');\n                \n            if (newProductItem.length > 0) {\n                currentProductListing.append(newProductItem);\n                currentPagination.replaceWith(newPagination);\n\n                $('[data-total-start]').text(1);\n\n                if(window.compare.show){\n                    var $compareLink = $('[data-compare-link]');\n                    halo.setLocalStorageProductForCompare($compareLink);\n                }\n\n                if(window.wishlist.show){\n                    halo.setLocalStorageProductForWishlist();\n                }\n\n                if (halo.checkNeedToConvertCurrency()) {\n                    Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                }\n            }\n        },\n\n        initQuickShopProductList: function() {\n            $doc.on('click', '[data-open-quickshop-popup-list]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var handle = $(event.currentTarget).data('product-handle'),\n                    product = $(event.currentTarget).closest('.card');\n\n                if(!product.hasClass('quick-shop-show')){\n                    halo.updateContentQuickShop(product, handle);\n                }\n            });\n\n            $doc.on('click', '[data-close-quickshop-popup-list]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var product = $(event.currentTarget).closest('.card');\n\n                product.removeClass('quick-shop-show');\n                product.find('.card-popup-content').empty();\n            });\n\n            $doc.on('click', (event) => {\n                if($('.card').hasClass('quick-shop-show')){\n                    if (($(event.target).closest('[data-open-quickshop-popup-list]').length === 0) && ($(event.target).closest('.card-popup').length === 0)){\n                        $('.card').removeClass('quick-shop-show');\n                        $('.card').find('.card-popup-content').empty();\n                    }\n                }\n            });\n        },\n\n        updateContentQuickShop: function(product, handle) {\n            var popup = product.find('.card-popup'),\n                popupContent = popup.find('.card-popup-content');\n\n            $.ajax({\n                type: 'get',\n                url: window.routes.root + '/products/' + handle + '?view=ajax_quick_shop',\n                beforeSend: function () {\n                    $('.card').removeClass('quick-shop-show');\n                },\n                success: function (data) {\n                    popupContent.append(data);\n                },\n                error: function (xhr, text) {\n                    alert($.parseJSON(xhr.responseText).description);\n                },\n                complete: function () {\n                    product.addClass('quick-shop-show');\n                }\n            });\n        },\n\n        toggleVariantsForExpressOrder: function () {\n            var toggleVariant = '[data-toggle-variant]';\n\n            $(document).on('click', toggleVariant, function (e) {\n                e.preventDefault();\n                e.stopPropagation();\n\n                var self = $(this),\n                    curVariants = self.data('target');\n\n                if(self.hasClass('show-options-btn')) {\n                    self.text(window.inventory_text.hide_options);\n                    $(curVariants).slideDown(700, function () {\n                        self.addClass('hide-options-btn').removeClass('show-options-btn');\n                    });\n                }\n                else {\n                    self.text(window.inventory_text.show_options);\n                    $(curVariants).slideUp(700, function () {\n                        self.addClass('show-options-btn').removeClass('hide-options-btn');\n                    });\n                };\n            })\n        },\n\n        initExpressOrderAddToCart: function() {\n            var addToCartSlt = '[data-express-addtocart]';\n\n            $(document).off('click.addToCartExpress', addToCartSlt).on('click.addToCartExpress', addToCartSlt, function (e) {\n                e.preventDefault();\n\n                var self = $(this);\n\n                if (self.attr('disabled') != 'disabled') {\n                    var productItem = self.closest('.product-item');\n\n                    if(productItem.length == 0) {\n                        productItem = self.closest('.col-options');\n                    }\n\n                    var form = productItem.find('form');\n                    var variant_id = form.find('select[name=id]').val();\n\n                    if (!variant_id) {\n                        variant_id = form.find('input[name=id]').val();\n                    };\n\n                    var quantityElm = productItem.find('input[name=quantity]');\n\n                    if(quantityElm.length == 0) {\n                        quantityElm = productItem.siblings('.col-qtt').find('input[name=quantity]');\n                    }\n\n                    var quantity = quantityElm.val();\n                    if (!quantity) {\n                        quantity = 1;\n                    };\n\n                    if(parseInt(quantity) !== 0) {\n                        if (window.ajax_cart == 'none') {\n                            form.submit();\n                        } else {\n                            halo.expressAjaxAddToCart(variant_id, quantity, self, form);\n                            form.next('.feedback-text').show();\n                        }\n                    }\n                    else {\n                        form.next('.feedback-text').text('Quantity cannot be blank').show();\n                    }\n                }\n                return false;\n            });\n        },\n\n        expressAjaxAddToCart: function(variant_id, quantity, cartBtn, form) {\n            $.ajax({\n                type: \"post\",\n                url: \"/cart/add.js\",\n                data: 'quantity=' + quantity + '&id=' + variant_id,\n                dataType: 'json',\n\n                beforeSend: function() {\n                    window.setTimeout(function() {\n                        cartBtn.text(window.inventory_text.adding +\"...\");\n                    }, 100);\n                },\n\n                success: function(msg) {\n                    window.setTimeout(function() {\n                        cartBtn.text(window.inventory_text.thank_you);\n                        cartBtn.addClass('add_more');\n                        form.next('.feedback-text').text(window.inventory_text.cart_feedback).addClass('is-added');\n                    }, 600);\n                    window.setTimeout(function() {\n                        cartBtn.text(window.inventory_text.add_more + \"...\");\n                    }, 1000);\n\n                    switch (window.after_add_to_cart.type) {\n                        case 'cart':\n                            halo.redirectTo(window.routes.cart);\n\n                            break;\n                        case 'quick_cart':\n                            if(window.quick_cart.show){\n                                Shopify.getCart((cart) => {\n                                    if( window.quick_cart.type == 'popup'){\n                                        // $body.addClass('cart-modal-show');\n                                        // halo.updateDropdownCart(cart);\n                                    } else {\n                                        $body.addClass('cart-sidebar-show');\n                                        halo.updateSidebarCart(cart);\n                                    }\n                                });\n                            } else {\n                                halo.redirectTo(window.routes.cart);\n                            }\n\n                            break;\n                        case 'popup_cart_1':\n                            Shopify.getCart((cart) => {\n                                halo.updatePopupCart(cart, 1, variant_id);\n                                halo.updateSidebarCart(cart);\n                                $body.addClass('add-to-cart-show');\n                            });\n\n                            break;\n                    }\n                },\n\n                error: function(xhr, text) {\n                    alert($.parseJSON(xhr.responseText).description);\n                    window.setTimeout(function() {\n                        cartBtn.text(window.inventory_text.add_to_cart);\n                    }, 400);\n                }\n            });\n        },\n\n        initProductBundle: function() {\n            var productBundle = $('[data-product-bundle]'),\n                bundleList = productBundle.find('[data-bundle-slider]'),\n                dots = bundleList.data('dots'),\n                arrows = bundleList.data('arrows');\n\n            if(bundleList.length > 0){\n                if(!bundleList.hasClass('slick-initialized')){\n                    bundleList.slick({\n                        dots: true,\n                        arrows: arrows,\n                        slidesToShow: 2,\n                        slidesToScroll: 1,\n                        mobileFirst: true,\n                        infinite: false,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: [\n                            {\n                                breakpoint: 1200,\n                                settings: {\n                                    slidesToShow: 4,\n                                    slidesToScroll: 1,\n                                    dots: dots\n                                }\n                            },\n                            {\n                                breakpoint: 551,\n                                settings: {\n                                    slidesToShow: 3,\n                                    slidesToScroll: 1,\n                                    dots: dots\n                                }\n                            }\n                        ]\n                    });\n\n                    productBundle.find('.bundle-product-wrapper').removeClass('has-halo-block-loader');\n\n                    bundleList.on('afterChange', function(){\n                        bundleList.find('.bundle-product-item').removeClass('is-open');\n                    });\n                }\n            }\n        },\n\n        initDynamicBrowserTabTitle: function() {\n            if(window.dynamic_browser_title.show){\n                var pageTitleContent = document.title,\n                    newPageTitleContent = window.dynamic_browser_title.text;\n\n                window.onblur = function () {\n                    document.title = window.dynamic_browser_title.text;\n                }\n\n                window.onfocus = function () {\n                    document.title = pageTitleContent;\n                }\n            }\n        },\n\n        initWarningPopup: function() {\n            this.warningPopup = document.querySelector('[data-warning-popup]');\n            this.warningPopupContent = this.warningPopup.querySelector('[data-halo-warning-content]');\n            this.warningPopupCloseButton = this.warningPopup.querySelector('[data-close-warning-popup]');\n            this.warningPopupCloseButton.addEventListener('click', () => {\n                document.body.classList.remove('has-warning');\n            })\n\n            document.body.addEventListener('click', () => {\n                if (!event.target.closest('[data-warning-popup]')) {\n                    document.body.classList.remove('has-warning');\n                }\n            })\n           \n            this.warningTime = 3000\n            this.warningTimeout = undefined;\n\n            window.warningTimeout = this.warningTimeout;\n        },  \n\n        showWarning: function(content, time = this.warningTime) {\n            if (this.warningTimeout) {\n                clearTimeout(this.warningTimeout);\n            }\n\n            this.warningPopupContent.textContent = content;\n            document.body.classList.add('has-warning');\n            \n            if (time) {\n                this.warningTimeout = setTimeout(() => {\n                    document.body.classList.remove('has-warning');\n                }, time);\n            }\n        },\n\n        backgroundOverlayHoverEffect: function() {\n            const backgroundOverlay = document.querySelector('.background-overlay')\n            const backgroundCursorWrapper = backgroundOverlay.firstChild\n\n            const enlargeCursor = () => {\n                backgroundCursorWrapper.classList.add('enlarge-cursor')\n            }\n\n            const dwindleCursor = () => {\n                backgroundCursorWrapper.classList.remove('enlarge-cursor')\n            }\n\n            const setCursorPosition = (clientX, clientY) => {\n                requestAnimationFrame(() => {\n                    backgroundCursorWrapper.style.setProperty('--translate-y', clientY)\n                    backgroundCursorWrapper.style.setProperty('--translate-x', clientX)\n                })\n            }\n\n            const handleMouseMove = (e) => {\n                setCursorPosition(e.clientX, e.clientY)                \n            }\n\n            const handleMouseEnter = (e) => {\n                setCursorPosition(e.clientX, e.clientY)\n                enlargeCursor()\n            }\n            \n            const handleMouseLeave = e => {\n                setCursorPosition(e.clientX, e.clientY)\n                backgroundCursorWrapper.removeEventListener('mousemove', handleMouseMove)\n                dwindleCursor()\n            }\n\n            backgroundOverlay.addEventListener('mouseenter', handleMouseEnter)\n            backgroundOverlay.addEventListener('mouseleave', handleMouseLeave)\n            backgroundOverlay.addEventListener('mousemove', handleMouseMove)\n            backgroundOverlay.addEventListener('click', dwindleCursor)\n        },\n        backgroundOverlayHoverEffect1: function() {\n            const backgroundOverlay = document.querySelector('.background-overlay1')\n            if (!backgroundOverlay) return;\n          \n            const backgroundCursorWrapper = backgroundOverlay.firstChild\n\n            const enlargeCursor = () => {\n                backgroundCursorWrapper.classList.add('enlarge-cursor')\n            }\n\n            const dwindleCursor = () => {\n                backgroundCursorWrapper.classList.remove('enlarge-cursor')\n            }\n\n            const setCursorPosition = (clientX, clientY) => {\n                requestAnimationFrame(() => {\n                    backgroundCursorWrapper.style.setProperty('--translate-y', clientY)\n                    backgroundCursorWrapper.style.setProperty('--translate-x', clientX)\n                })\n            }\n\n            const handleMouseMove = (e) => {\n                setCursorPosition(e.clientX, e.clientY)                \n            }\n\n            const handleMouseEnter = (e) => {\n                setCursorPosition(e.clientX, e.clientY)\n                enlargeCursor()\n            }\n            \n            const handleMouseLeave = e => {\n                setCursorPosition(e.clientX, e.clientY)\n                backgroundCursorWrapper.removeEventListener('mousemove', handleMouseMove)\n                dwindleCursor()\n            }\n\n            backgroundOverlay.addEventListener('mouseenter', handleMouseEnter)\n            backgroundOverlay.addEventListener('mouseleave', handleMouseLeave)\n            backgroundOverlay.addEventListener('mousemove', handleMouseMove)\n            backgroundOverlay.addEventListener('click', dwindleCursor)\n        },\n        \n        productCustomInformation() {\n            const $customInfo = $('[data-custom-information]');\n            const $thisPopup = $('#halo-product-custom-information');\n            \n            $customInfo.on('click', (event) => {\n                const $this = $(event.currentTarget);\n                const title = $this.find('.title')[0].innerText;\n                const thisContent = $this.find('.product-customInformation__popup').html();\n\n                if (thisContent === \"\" || thisContent == null) return;\n                $thisPopup.addClass('is-show');\n                $thisPopup.find('.halo-popup-title').text(title);\n                $thisPopup.find('.halo-popup-content').html(thisContent);\n                $body.addClass('is-custom-information');\n            });\n\n            $doc.on('click', '[data-close-custom-information]', () => {\n                $body.removeClass('is-custom-information');\n                $thisPopup.removeClass('is-show');\n            });\n\n            $doc.on('click', (event) => {\n                if ($body.hasClass('is-custom-information')) {\n                    if (($(event.target).closest('#halo-product-custom-information').length === 0) && ($(event.target).closest('[data-custom-information]').length === 0)) {\n                        $body.removeClass('is-custom-information');\n                    }\n                }\n            });\n        },\n\n        initLazyloadObserver(loadingImages, productGrid) {\n            const setLazyLoaded = (target) => {\n                const card = target.closest('.card')\n                card.classList.add('ajax-loaded')\n            }\n\n            this.lazyloadedObserver = new MutationObserver((mutationList, observer) => {\n                mutationList.forEach((mutation) => {\n                    if (mutation.type == 'attributes') {\n                        if (!mutation.target.classList.contains('lazyloaded')) return \n                        setLazyLoaded(mutation.target)\n                    }\n                })\n            }) \n            \n            const parentObserver = new MutationObserver((mutationlist) => {\n                mutationlist.forEach((mutation) => {\n                    if (mutation.type == 'childList') {\n                        const addedLoadingImages = [...mutation.addedNodes].map(node => node.querySelector('.media--loading-effect img'))\n                        addedLoadingImages.forEach(image => {\n                            if (image) {\n                                this.lazyloadedObserver.observe(image, { childList: true, attributes: true })\n                            }\n                        })    \n                    }\n                })\n            }) \n\n            if (productGrid) parentObserver.observe(productGrid, { subtree: false, childList: true });\n            if (loadingImages.length > 0) loadingImages.forEach(image => {\n                if (image.classList.contains('lazyloaded')) {\n                    setLazyLoaded(image)\n                } else {\n                    this.lazyloadedObserver.observe(image, { childList: true, attributes: true })\n                }\n            })\n        },\n\n        observeImageLazyloaded(images) {\n            images.forEach(image => {\n                this.lazyloadedObserver.observe(image, { childList: true, attributes: true })\n            })\n        },\n\n        iconZoomClickMobile() {\n            const iconZoom = $('.productView-iconZoom');\n            iconZoom.on('click', (event) => {\n                document.querySelector('.productView-image .productView-img-container .media').click();\n            });\n        },\n\n        calculateTranslateYHeight() {\n            const cardActions = document.querySelectorAll('.card .card-action:not(.variants-popup-form)');\n            let heighest = 0;\n          \n            if (!cardActions.length) return;\n            cardActions.forEach(cardAction => {\n              cardAction.classList.add('temporary-show');\n            \n              const height = cardAction.clientHeight ;\n              if (height > heighest) heighest = height;\n  \n              cardAction.classList.remove('temporary-show');\n            })\n            document.body.style.setProperty('--translate-y-height', heighest * -1 + 'px');\n        },\n\n        checkScrollLayoutForRecenlyViewed() {\n            const RecentlyViewedSection = document.getElementById('recently-viewed-products-list-2');\n\n            if (RecentlyViewedSection && RecentlyViewedSection.classList.contains('products-flex')) {\n                const RecentlyViewedObserver = new MutationObserver((mutationList, observer) => {\n                    const mutationRecentlyViewed = mutationList[0];\n\n                    if (mutationRecentlyViewed.type == 'attributes' \n                        && mutationRecentlyViewed.target.classList.contains('recently-viewed-loaded')) {\n\n                        observer.disconnect();\n                    }\n                })\n\n                RecentlyViewedObserver.observe(RecentlyViewedSection, { attributes: true });\n            }\n        },\n      \n        clickIconScrollSection() {\n            if (!document.querySelector('.arrow-icon-scroll')) return;\n            let isScrollingDown = 'next';\n            const sections = document.querySelectorAll('.wrapper-body .shopify-section'),\n              sectionsLength = sections.length,\n              sectionFirstHeight = sections[0]?.getBoundingClientRect().height || 0,\n              sectionEndHeight = sections[sectionsLength - 1]?.getBoundingClientRect().height || 0,\n              footerHeight = document.querySelectorAll('.shopify-section-group-footer-group')[0]?.getBoundingClientRect().height || 0;\n\n              if (window.pageYOffset + sectionEndHeight >= document.documentElement.scrollHeight - footerHeight - 100) loadRotateArrow('prev');\n            \n              $(window).scroll(function() {\n                  if (window.pageYOffset + sectionEndHeight >= document.documentElement.scrollHeight - footerHeight - 100) loadRotateArrow('prev');\n                  else if (window.pageYOffset <= sectionFirstHeight/2) loadRotateArrow('next');\n              });\n            \n              $doc.on('click', '.arrow-icon-scroll', (event) => {\n                  let checkScroll = true;\n                  const headerHeight = window.innerWidth > 1024 ? document.querySelectorAll('sticky-header')[0]?.getBoundingClientRect().height : document.querySelector('sticky-header-mobile')?.getBoundingClientRect().height || 0,\n                    footerTop = document.querySelectorAll('.shopify-section-group-footer-group')[0]?.getBoundingClientRect().top || -1;\n                \n                  sections.forEach((element, index) => {\n                      if (!checkScroll) return;\n                      const thisTop = element.getBoundingClientRect().top;\n                    \n                      if (thisTop >= 0) {\n                          checkScroll = false;\n                        \n                          if (isScrollingDown == 'next') {\n                              if (element.nextElementSibling != null) scrollToSection(element.nextElementSibling.offsetTop - headerHeight);\n                              sectionsLength == index + 2 || element.nextElementSibling == null ? loadRotateArrow('prev') : loadRotateArrow('next');\n                          }\n                          else {\n                              if (element.previousElementSibling != null) scrollToSection(element.previousElementSibling.offsetTop - headerHeight);\n                              index == 1 || element.previousElementSibling == null ? loadRotateArrow('next') : loadRotateArrow('prev');\n                          }\n                      }\n                      else if (footerTop >= 0) scrollToSection(sections[sectionsLength - 1].offsetTop - headerHeight);\n                  });\n              });\n            \n              function scrollToSection(scope, rotate) {\n                  window.scrollTo({top: scope, behavior: \"smooth\"});\n              }\n  \n              function loadRotateArrow(rotate) {\n                  isScrollingDown = rotate;\n                  rotate == 'next' ? document.querySelector('.arrow-icon-scroll').classList.remove('rotate') : document.querySelector('.arrow-icon-scroll').classList.add('rotate');\n              }\n        },\n\n        specialBanner() {\n            const banners = document.querySelectorAll('[sticky-special-banner]'),\n              wdWidth = window.innerWidth,\n              wdHeight = window.innerHeight,\n              headerHeight = wdWidth > 1024 ? document.querySelectorAll('sticky-header')[0]?.getBoundingClientRect().height : document.querySelector('sticky-header-mobile')?.getBoundingClientRect().height || 0;\n          \n            if (banners) {\n                banners.forEach(element => {\n                    const banner = element.querySelector('.special-banner__img_box'),\n                      bannerWrap = element.querySelector('.special-banner__img'),  \n                      wrapperHeight = element.closest('.special-banner__wrapper').getBoundingClientRect().height,\n                      bannerHeight = bannerWrap.getBoundingClientRect().height;\n                  \n                    let top = headerHeight || 0;\n                    if (wdWidth >= 1200) {\n                        if (wrapperHeight > bannerHeight) {\n                            if (wdHeight > bannerHeight) top = (wdHeight - bannerHeight)/2;\n                            calculateSticky(banner, top);\n                        }\n                    }\n                    else if (wdWidth >= 768 && wdWidth < 1200) {\n                        if (wrapperHeight > bannerHeight) {\n                            calculateSticky(banner, top);\n                        }\n                    }\n                    else {\n                        element.classList.remove('is-sticky');\n                        element.style.top = ``;\n                    }\n                });\n            }\n\n            function calculateSticky(banner, top) {\n                banner.classList.add('is-sticky');\n                banner.style.top = `${top}px`;\n            }\n        },\n\n        specialBannerSlider() {\n            const productGrid = $('.special-banner__products--grid'),\n              wdWidth = window.innerWidth;\n          \n            if (productGrid) {\n                productGrid.each(function(index, element) {\n                    const $this = $(element),\n                      $block = $this.closest('.special-banner__product');\n                    \n                    if (!$block.hasClass('ajax-loaded')) return;\n                    \n                    if (wdWidth < 1200) {\n                        if (!$this.hasClass('slick-initialized')) {\n                            $this.addClass('products-carousel');\n                            specialProductSlider($block);\n                        }\n                    }\n                    else {\n                        if ($this.hasClass('slick-initialized')) {\n                            $this.slick('unslick');\n                            $this.removeClass('products-carousel');\n                        }\n                    }\n                })\n            }\n\n            function specialProductSlider(wrapper) {\n                let productGrid = wrapper.find('.products-carousel'),\n                    itemToShow = productGrid.data('item-to-show'),\n                    itemDots = productGrid.data('item-dots'),\n                    itemDotsMb = productGrid.data('item-dots-mb'),\n                    itemArrows = productGrid.data('item-arrows'),\n                    itemArrowsMb = productGrid.data('item-arrows-mb');\n    \n                productGrid.slick({\n                    mobileFirst: true,\n                    adaptiveHeight: true,\n                    infinite: true,\n                    slidesToShow: 2,\n                    slidesToScroll: 2,\n                    arrows: itemArrowsMb,\n                    dots: itemDotsMb,\n                    nextArrow: window.arrows.icon_next,\n                    prevArrow: window.arrows.icon_prev,\n                    rtl: window.rtl_slick,\n                    responsive: \n                    [\n                        {\n                            breakpoint: 767,\n                            settings: {\n                                arrows: itemArrows,\n                                dots: itemDots,\n                                slidesToShow: itemToShow,\n                                slidesToScroll: itemToShow,\n                            }\n                        }\n                    ]\n                });\n            }\n        },\n\n        unsymmetricalSlider(){\n            const productUnsy = $('.unsymmetrical-slider'),\n              wdWidth = $(window).width();\n\n                if(productUnsy){\n                    productUnsy.each(function(index, element) {\n                    const $this = $(element),\n                        $block = $this.closest('.halo-block-content');\n                    \n                    if (!$block.hasClass('ajax-loaded')) return;\n                    \n                    if (wdWidth < 1200) {\n                        if (!$this.hasClass('slick-initialized')) {\n                            $this.addClass('products-carousel');\n                            setTimeout(() => {\n                                unsymmetricalProductSlider($block);\n                            }, 1000);\n                        }\n                    }\n                    else {\n                        if ($this.hasClass('slick-initialized')) {\n                            $this.slick('unslick');\n                            $this.removeClass('products-carousel');\n                        }\n                    }\n                })\n\n                function unsymmetricalProductSlider(wrapper) {\n                    let productGrid = wrapper.find('.products-carousel'),\n                        itemToShow = productGrid.data('item-to-show'),\n                        itemDots = productGrid.data('item-dots'),\n                        itemArrows = productGrid.data('item-arrows');\n\n                    if (productGrid.hasClass('enable_progress_bar')) {\n                        var progressBar = wrapper.find('.scrollbar-thumb');\n                        productGrid.on('init', (event, slick) => {\n                            var percent = ((slick.currentSlide / (slick.slideCount - 1)) * 100) + '%';\n                            progressBar.css('--percent', percent);\n                        });\n                    }\n        \n                    productGrid.slick({\n                        mobileFirst: true,\n                        adaptiveHeight: true,\n                        infinite: true,\n                        slidesToShow: 1.5,\n                        slidesToScroll: 1,\n                        arrows: itemArrows,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        dots: itemDots,\n                        get initialSlide() {\n                            return this.initialSlide = 0.5;\n                        },\n                        responsive: \n                        [\n                            {\n                                breakpoint: 767,\n                                settings: {\n                                    arrows: itemArrows,\n                                    slidesToShow: itemToShow,\n                                    dots: itemDots,\n                                    slidesToScroll: itemToShow,\n                                    get slidesToScroll() {\n                                        if(itemToShow !== undefined && itemToShow !== null && itemToShow !== '' && itemToShow !== 1.5 && itemToShow !== 2.5 && itemToShow !== 3.5){\n                                            return this.slidesToScroll = itemToShow;\n                                        } else {\n                                            return this.slidesToScroll = 1;\n                                        }\n                                    },\n                                    get initialSlide() {\n                                        if(itemToShow !== 1.5 && itemToShow == 2.5 || itemToShow == 3.5) {\n                                            return this.initialSlide = 0.5;\n                                        } else {\n                                            return this.initialSlide = 0;\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    });\n\n                    if (productGrid.hasClass('enable_progress_bar')) {\n                        productGrid.on('afterChange', (event, slick, nextSlide) => {\n                            let number = 0;\n                            if(wdWidth > 767) {\n                                if(itemToShow == 1.5 || itemToShow == 2.5 || itemToShow == 3.5) {\n                                    number = 0.5;\n                                } else {\n                                    number = 0;\n                                }\n                            } else {\n                                number = 0.5;\n                            }\n                            var percent = (((nextSlide - number ) / (slick.slideCount - 1)) * 100) + '%';\n                            progressBar.css('--percent', percent);\n                        });\n                    }\n                }\n            }\n        },\n\n        productCountdownCard: function(){\n            var wrapper = $('.card .card-countDown').find('[data-countdown-id]'),\n                countDown = wrapper.data('countdown'),\n                countDownDate = new Date(countDown).getTime(),\n                countDownText = window.countdown.text;\n\n            if(wrapper.length > 0) {\n                var countdownfunction = setInterval(function() {\n                    var now = new Date().getTime(),\n                        distance = countDownDate - now;\n\n                    if (distance < 0) {\n                        clearInterval(countdownfunction);\n                        wrapper.remove();\n                    } else {\n                        var days = Math.floor(distance / (1000 * 60 * 60 * 24)),\n                            hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),\n                            minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)),\n                            seconds = Math.floor((distance % (1000 * 60)) / 1000),\n                            strCountDown;\n\n                            strCountDown = '<span class=\"text\"><span>'+ countDownText +'</span></span><span class=\"num\">'+days+'<span>'+ window.countdown.day +'</span></span>\\\n                                <span class=\"num\">'+hours+'<span class=\"icon\">:</span></span>\\\n                                <span class=\"num\">'+minutes+'<span class=\"icon\">:</span></span>\\\n                                <span class=\"num\">'+seconds+'</span>';\n\n                        wrapper.html(strCountDown);\n                        wrapper.addClass('show');\n                    }\n                }, 1000);\n            }\n        },\n\n        typingAnimation() {\n            // typing multiple text \n            $.fn.textType = function (rotate, period) {\n                return this.each(function () {\n                    var $this = $(this);\n                    var textType = new TextType($this, rotate, period);\n                });\n            };\n\n            var TextType = function (element, rotate, period) {\n                this.rotate = rotate;\n                this.$element = $(element);\n                this.loopNum = 0;\n                this.period = parseInt(period, 10) || 2000;\n                this.text = '';\n                this.tick();\n                this.isDeleting = false;\n            };\n\n            TextType.prototype.tick = function () {\n                var i = this.loopNum % this.rotate.length;\n                var fullText = this.rotate[i];\n\n                if (this.isDeleting) {\n                    this.text = fullText.substring(0, this.text.length - 1);\n                } else {\n                    this.text = fullText.substring(0, this.text.length + 1);\n                }\n\n                this.$element.find('[data-text-convert]').html(`<span class=\"text\">${this.text}</span>`);\n\n                var that = this;\n                var delta = 200 - Math.random() * 100;\n\n                if (this.isDeleting) {\n                    delta /= 2;\n                }\n\n                if (!this.isDeleting && this.text === fullText) {\n                    delta = this.period;\n                    this.isDeleting = true;\n                } else if (this.isDeleting && this.text === '') {\n                    this.isDeleting = false;\n                    this.loopNum++;\n                    delta = 500;\n                }\n\n                setTimeout(function () {\n                    that.tick();\n                }, delta);\n            };\n\n            // typing full text and split with comma\n            $.fn.textTypeMultipleSentences = function (period) {\n                return this.each(function () {\n                    var $this = $(this);\n                    var textType = new MultipleSentencesType($this, period);\n                });\n            };\n\n            var MultipleSentencesType = function (element, period) {\n                this.$element = $(element);\n                this.sentences = JSON.parse(this.$element.attr('data-type'));\n                this.period = parseInt(period, 10) || 2000;\n                this.sentenceIndex = 0;\n                this.setupCurrentSentence();\n                this.isDeleting = false;\n                this.isPaused = false;\n                this.tick();\n            };\n\n            MultipleSentencesType.prototype.setupCurrentSentence = function () {\n                this.currentTextArray = this.sentences[this.sentenceIndex].split(',').map(word => word.trim());\n                this.fullTextArray = this.currentTextArray;\n                this.displayedWords = this.currentTextArray.map(() => '');\n            };\n\n            MultipleSentencesType.prototype.tick = function () {\n                var that = this;\n                var completedTextArray = this.fullTextArray;\n\n                if (!this.isDeleting && !this.isPaused) {\n                    for (let i = 0; i < this.currentTextArray.length; i++) {\n                        if (this.displayedWords[i] !== completedTextArray[i]) {\n                            this.displayedWords[i] = completedTextArray[i].substring(0, this.displayedWords[i].length + 1);\n                            break;\n                        }\n                    }\n\n                    if (this.displayedWords.join(' ') === completedTextArray.join(' ')) {\n                        this.isPaused = true;\n                        setTimeout(function () {\n                            that.isPaused = false;\n                            that.isDeleting = true;\n                        }, 1000);\n                    }\n                } else if (this.isDeleting) {\n                    for (let i = this.currentTextArray.length - 1; i >= 0; i--) {\n                        if (this.displayedWords[i] !== '') {\n                            this.displayedWords[i] = this.displayedWords[i].substring(0, this.displayedWords[i].length - 1);\n                            break;\n                        }\n                    }\n\n                    if (this.displayedWords.join('') === '') {\n                        this.isDeleting = false;\n                        this.sentenceIndex = (this.sentenceIndex + 1) % this.sentences.length;\n                        this.setupCurrentSentence();\n                    }\n                }\n\n                var spans = this.displayedWords.map(word => `<span class=\"text\">${word}</span>`).join(' ');\n                this.$element.html(spans);\n\n                var delta = 150 - Math.random() * 50;\n                if (this.isPaused) {\n                    delta = this.period;\n                } else if (this.isDeleting && this.displayedWords.join('') === '') {\n                    delta = 500;\n                }\n\n                setTimeout(function () {\n                    that.tick();\n                }, delta);\n            };\n\n            //use\n            if ($(\"type-writer\").length) {\n                $(\"type-writer\").each(function (index, el) {\n                    const rotate = $(this).attr('data-type');\n                    const period = $(this).attr('data-period');\n\n                    if ($(this).hasClass('typing-comma')) {\n                        new MultipleSentencesType($(this), period);\n\n                    } else {\n                        if (rotate) {\n                            new TextType($(this), JSON.parse(rotate), period);\n                        }\n                    }\n                })\n            }\n\n\n        },\n\n        spotlightproductSlider: function(){\n            var productSpotlight = $('[data-spotlight-product]');\n            if (!productSpotlight.length > 0) return;\n\n            productSpotlight.each((index, element) => {\n                var self = $(element),\n                    productGrid = self.find('.spotlight-products__products--slider'),\n                    itemDots = productGrid.data('item-dots'),\n                    itemDotsMB = productGrid.data('item-dots-mb'),\n                    itemArrows = productGrid.data('item-arrows'),\n                    itemArrowsMB = productGrid.data('item-arrows-mb');\n\n                if(productGrid.length > 0){\n                    if(!productGrid.hasClass('slick-initialized')){\n                        productGrid.slick({\n                            mobileFirst: true,\n                            adaptiveHeight: false,\n                            infinite: false,\n                            vertical: false,\n                            slidesToShow: 1,\n                            slidesToScroll: 1,\n                            dots: itemDotsMB,\n                            arrows: itemArrowsMB,\n                            nextArrow: window.arrows.icon_next,\n                            prevArrow: window.arrows.icon_prev,\n                            rtl: window.rtl_slick,\n                            focusOnSelect: true,\n                            responsive: [\n                            {\n                                breakpoint: 1025,\n                                settings: {\n                                    dots: itemDots,\n                                    arrows: itemArrows\n                                }\n                            }]\n                        });\n\n                        productGrid.on('beforeChange', function (event, slick, currentSlide, nextSlide) {\n                            const section = $(event.target).parents('.spotlight-products');\n                            section.find('.point-button').removeClass('active');\n                            section.find(`[data-slide=\"${nextSlide+1}\"]`).addClass('active');\n                        });\n                    }\n                }\n            });\n\n            $('.spotlight-products__product_point .point-button').click(function(e) {\n                e.preventDefault();\n                const $this = $(this);\n                const section = $this.parents('.spotlight-products');\n                const slider = section.find('.spotlight-products__products--slider');\n                slider.slick('slickGoTo', $this.data('slide') - 1);\n            });\n        },\n\n        activeCheckboxStickyCartMobile: function(){\n            var enableSticky = $('.enable_sticky_buttton');\n            if (!enableSticky.length) return;\n\n            var buttonDisable = $('.button-disable'),\n                stickyButtonMB = $('.sticky_button_checkout_mb'),\n                haloStickyToolbar = $('.halo-sticky-toolbar-mobile'),\n                heightToolbar = haloStickyToolbar.outerHeight();\n\n            buttonDisable.on('click', function () {\n                stickyButtonMB.addClass('active');\n            });\n\n            if(haloStickyToolbar.length > 0) {\n                stickyButtonMB.css('bottom', heightToolbar);\n            } else {\n                stickyButtonMB.css('bottom','0px');\n            }\n        }\n    }\n})(jQuery);"],
  "mappings": "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",
  "names": ["index", "swipe", "event", "url", "curTabContent", "getMaxHeight", "text", "productAction", "selectedVariant", "inventoryQuantity", "inven_num", "cart", "item", "initCountdown", "self", "productGrid", "unsymmetricalProductSlider"]
}
