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