{"sessionId":"906584517a714f039e83c688ae5460ee","tntId":"906584517a714f039e83c688ae5460ee.34_0","offers":[{"responseTokens":{"experience.id":"3","activity.name":"[ALL] Quickshop on PDP and PLP New Mall Launch","activity.id":"235688","experience.name":"Quickshop on PDP and PLP","profile.marketingCloudVisitorId":"59856821627303108022680157373352516456","profile.activeActivities":"235688","activity.decisioningMethod":"server-side"},"html":"<script>\n    function quickViewButtonPLP(method) {\n    if (window.jQuery && jQuery().initialize && typeof utag_data !== 'undefined' && typeof util !== 'undefined') {\n        method();\n    } else {\n        setTimeout(function () { quickViewButtonPLP(method) }, 50);\n    }\n}\n\n    setTimeout(function () {\n        quickViewButtonPLP(function () {\n            // function for view quick view after clicking on widget item\n            function openQuickView(url, pid, colorId) {\n                url += \"?pid=\" + pid + \"&sfra=true&cartQuickView=true&dwvar_\" + pid + \"_color=\" + colorId + \"\";\n                $.spinner().start();\n                $.ajax({\n                    url: url,\n                    method: 'GET',\n                    success: function (data) {\n                        if ($('#quickViewModal').length !== 0) {\n                            $('#quickViewModal').remove();\n                        }\n                        parseQuickViewModelHtml(data);\n                        getQuickViewModelHtml(pid);\n                        $('#quickViewModal').modal('show');\n                        $('#quickViewModal .modal-body').html(data);\n                        $('#quickViewModal .product-detail').addClass(\"h-90 overflow-auto\");\n                        $('#quickViewModal .modal-body').css('overflow', 'auto');\n                        $(\"#quickViewModal\").css(\"z-index\", 100);\n                        $(\".modal-backdrop\").css(\"z-index\", 3);\n                        if (window.innerWidth < 600) {\n                            $('#quickViewModal .modal-footer').append($('.edit-cart-qty-cobtn-wrapper').addClass('w-100'));\n                        }\n                        if ($(\"#quickViewModal\").length && $(\"#quickViewModal\").hasClass('show')) {\n                            // intialize the primaryImageSlider after quick view opened\n                            var $productContainer = $(\"#quickViewModal\").find('.product-detail');\n                            primaryImageSliderFunc($productContainer);\n                        }\n                        setProductFindingMethod();\n                        $.spinner().stop();\n                    },\n                    error: function () {\n                        $.spinner().stop();\n                    }\n                });\n            }\n\n            $('#quickViewModal').on('hide.bs.modal', function () {\n                var prevProductFindingMEthod = $('#outfits-widget-container').attr('data-current-finding-method');\n                if (typeof prevProductFindingMEthod != 'undefined') {\n                    util.createCookie('_productFindingMethodOSS', prevProductFindingMEthod, 3);\n                }\n            });\n\n            // parse quickview modal\n            function parseQuickViewModelHtml(html) {\n                var $html = $('<div>').append($.parseHTML(html));\n                return $html.html();\n            }\n\n            // quickview modal\n            function getQuickViewModelHtml(pid) {\n                if ($('#quickViewModal').length !== 0) {\n                    $('#quickViewModal').remove();\n                }\n\n                if ($('.modal-backdrop.show').length !== 0) {\n                    $('.modal-backdrop.show').remove();\n                }\n\n                var htmlString = `\n                <div class=\"modal show\" tabindex=\"-1\" id=\"quickViewModal\" style=\"display: block; max-width: 100vw; padding-right: 17px;\" aria-modal=\"true\" role=\"dialog\">`\n                    + `<div class=\"modal-dialog modal-xl modal-dialog-centered modal-fullscreen-md\" role=\"document\">` +\n                    `<div class=\"modal-content\">` +\n                    `<div class=\"modal-header\">` +\n                    `<h4 class=\"modal-title\">Quick Shop</h4>` +\n                    `<button type=\"button\" class=\"btn close\" data-dismiss=\"modal\" aria-label=\"Close Modal\">\n                    <img class=\"icon-size-md\" src=\"/images/common/icons/icon-close.svg\" alt=\"\" aria-hidden=\"true\"></button>` +\n                    `</div>` +\n                    `<div class=\"modal-body px-5\">` + `</div>` +\n                    `</div>` +\n                    `</div>` +\n                    `</div>`;\n                $('body').append(htmlString);\n            }\n\n            function setProductFindingMethod() {\n                var currentFindingMethodCookie = util.getCookie('_productFindingMethodOSS');\n                if (currentFindingMethodCookie) {\n                    $('#outfits-widget-container').attr('data-current-finding-method', currentFindingMethodCookie);\n                }\n                util.createCookie('_productFindingMethodOSS', 'shop_the_look', 3);\n            }\n\n            function primaryImageSliderFunc($productContainer) {\n                imagesLoaded('.primary-images .active-primary img').on('done', function () {\n                    var $elemProductID = $('.product-detail').attr('data-pid');\n                    var isEnlargeModalVisible = $('#product-enlarge-modal-' + $elemProductID).hasClass('show');\n                    var isEditModalVisible = $(\"#editModal\").length && $(\"#editModal\").hasClass('show');\n                    if (isEnlargeModalVisible) {\n                        enlargeZoom();\n                    } else if (!isEditModalVisible) {\n                        $('.product-primary-image.active-primary').on('mouseover touchstart', function () {\n                            initPrimaryImgZoom($(this));\n                        });\n                    }\n                    if ($(window).width() < parseInt(util.breakpoints().lg)) {\n                        adjustZoomBtnLocation();\n                    }\n                });\n                var $primaryImgSlider = $productContainer ? $productContainer.find('.primary-images .product-primary-images') : $('.primary-images .product-primary-images');\n                if ($primaryImgSlider.find('.product-primary-image').length == 1) return;\n                if ($(window).width() >= parseInt(util.breakpoints().md)) {\n                    if ($primaryImgSlider.hasClass('slick-initialized')) {\n                        $primaryImgSlider.slick('unslick');\n                        $primaryImgSlider.find('.product-primary-image').find('picture,picture img').css('height', '');\n                        if ($primaryImgSlider.find('.product-primary-image').find('picture img').closest('.pinch-zoom-container').length) {\n                            $primaryImgSlider.find('.product-primary-image').find('picture img').unwrap();\n                        }\n                    }\n                } else {\n                    if ($primaryImgSlider.hasClass('slick-initialized')) {\n                        return;\n                    }\n                    var slickValue = {\n                        variableWidth: false,\n                        infinite: false,\n                        dots: true,\n                        arrows: false,\n                        swipeToSlide: true,\n                        slidesToShow: 1,\n                        slidesToScroll: 1,\n                        touchThreshold: 100\n                    };\n                    $primaryImgSlider.slick(slickValue);\n                    imagesLoaded('.product-primary-image img.img-fluid').on('always', function () {\n                        $('.product-primary-image img.img-fluid').each(function () {\n                            loadPinchZoom(this);\n                        });\n                    });\n                }\n            }\n\n            function loadPinchZoom(el) {\n                if (!el.parentElement.classList.contains('pinch-zoom-container')) {\n                    var $this = $(el);\n                    var elemHeight = $this.closest('.product-primary-image').height();\n                    $this.closest('picture').height(elemHeight);\n                    $this.height(elemHeight);\n                    el.classList.add('position-relative');\n                    new PinchZoom[\"default\"](el, {\n                        draggableUnzoomed: false,\n                        use2d: false\n                    });\n                }\n            }\n\n            function enlargeZoom() {\n                $(\"body\").find('.zoomContainer,.zoomWindowContainer').remove();\n                if ($(window).width() >= util.breakpoints().md) {\n                    var $elemProductID = $('.product-detail').attr('data-pid');\n                    var $outerContent = $('#product-enlarge-modal-' + $elemProductID).find('.pdp-carousel .active-primary');\n                    var $innerContent = $outerContent.find('img');\n                    var zoomOptions = {\n                        zoomType: \"inner\",\n                        cursor: \"default\",\n                        onZoomedImageLoaded: function onZoomedImageLoaded() {\n                            $(\".zoomContainer\").addClass('enlargeZoom');\n                        }\n                    };\n                    if ($innerContent.width() > $outerContent.width()) {\n                        $outerContent.scrollLeft(($innerContent.width() - $outerContent.width()) / 2);\n                    }\n                    $('#product-enlarge-modal-' + $elemProductID).find('.pdp-carousel .active-primary').elevateZoom(zoomOptions);\n                } else {\n                    var $zoomedImg = $('#product-enlarge-modal-' + $elemProductID + ' .active-primary img');\n                    $zoomedImg.imagesLoaded().done(function () {\n                        if (!$zoomedImg.parent().hasClass('pinch-zoom-container')) {\n                            loadPinchZoom($zoomedImg[0]);\n                        }\n                    });\n                }\n            }\n            // get data-show-pdp-img-from-swatch dom on page load\n            var isShowPdpImageFromSwatch;\n            var $pdpCarousel = $(\".primary-images .pdp-carousel\");\n            var $psPdpCarousel = $(\".isPsMaster\");\n            isShowPdpImageFromSwatch = $pdpCarousel.length && $pdpCarousel.data('show-pdp-img-from-swatch') === true || false;\n            if ($psPdpCarousel.length && $pdpCarousel.length > 0) {\n                var $nonPsPdpcarousel = $pdpCarousel.last();\n                isShowPdpImageFromSwatch = $nonPsPdpcarousel.data('show-pdp-img-from-swatch') === true || false;\n            }\n            function initPrimaryImgZoom($zoomimg) {\n                $(\"body\").find('.zoomContainer,.zoomWindowContainer').remove();\n                if ($(window).width() >= util.breakpoints().md) {\n                    var hasScript = !!$('#sfcc-base-js-dynamic').length;\n                    var $primaryImgs = $('.primary-images');\n                    var $activePrimaryImg = $primaryImgs.find('.pdp-carousel .active-primary img');\n                    if (!hasScript) {\n                        var url = $primaryImgs.data('elevateZoomUrl');\n                        var $elevateZoomScript = $('<scr' + 'ipt id=\"sfcc-base-js-dynamic\" async type=\"text/javascript\" src=\"' + url + '\"></scr' + 'ipt>');\n                        $('body').append($elevateZoomScript);\n                    }\n                    var $eleID = \"\";\n                    if ($zoomimg && $zoomimg.closest('.cqo-product-section') && $zoomimg.closest('.cqo-product-section').length == 1 || $zoomimg && $zoomimg.closest('.product-collection-section') && $zoomimg.closest('.product-collection-section').length == 1) {\n                        $eleID = $zoomimg.find('.attributes').attr('id');\n                    } else {\n                        $eleID = \"primary-zoom-container\";\n                    }\n                    var zoomOptions = {\n                        zoomWindowPosition: $eleID,\n                        borderSize: 1,\n                        cursor: \"crosshair\",\n                        zoomContainer: \".primary-images .active-primary\",\n                        zoomWindowWidth: '449',\n                        zoomWindowHeight: '449',\n                        responsive: true,\n                        onZoomedImageLoaded: function onZoomedImageLoaded() {\n                            $(\".zoomContainer\").addClass('primaryZoom');\n                            $(\".zoomWindowContainer\").addClass('primaryZoomContainer');\n                            if (isShowPdpImageFromSwatch) {\n                                $(\".zoomWindowContainer div\").css('background-image', 'url(' + $activePrimaryImg.attr('data-zoom-image') + ')');\n                            }\n                        }\n                    };\n                    $activePrimaryImg.each(function () {\n                        var currentSrc = $(this).attr('src');\n                        if (currentSrc.indexOf(\"?\") > 0) {\n                            var cleanUrl = currentSrc.substring(0, currentSrc.indexOf(\"?\"));\n                            $(this).attr('data-zoom-image', cleanUrl);\n                        }\n                    });\n                    $activePrimaryImg.elevateZoom(zoomOptions);\n                }\n            }\n            function adjustZoomBtnLocation() {\n                var containerHeight = $('.primary-images .primary-img-col').height();\n                var imageHeight = $('.primary-images .product-primary-images').find('.active-primary img').height();\n                if (imageHeight === 0) {\n                    var $imgs = $('.primary-images .product-primary-images img');\n                    for (var i = 0; i < $imgs.length; i++) {\n                        if ($imgs[i].height > 0) {\n                            imageHeight = $imgs[i].height;\n                            i = $imgs.length;\n                        }\n                    }\n                }\n                $('body').find('.enlarge-modal-btn').css({\n                    'bottom': '0'\n                });\n            }\n            var quickshopButton = `<button class=\"btn btn-outline-primary btn-sm btn-block atquickShopButton\">QUICK SHOP</button>`;\n            var embedCss =\n                `<style type=\"text/css\">\n                .product-tile:hover .atquickShopButton {\n                    visibility: visible !important;\n                }\n                .atquickShopButton {\n                    visibility: hidden;\n                    width: calc(100% - 16px);\n                    display: block;\n                    position: absolute;\n                    z-index: 10;\n                    bottom: 8px;\n                    height: 40px;\n                    margin: 0 auto;\n                    background-color: white;\n                    font-weight: 900;\n                    font-size: 12px;\n                    left: 0;\n                    right: 0;\n                    margin-left: auto;\n                    margin-right: auto;\n                }\n            </style>`;\n            $('body').append($(embedCss));\n            $.initialize('.product-tile', function (index) {\n                // console.log($(this).find('.name-link.text-black'))\n                // console.log($(this).find('.name-link.text-black').text().contains('Set'));\n                psRegex = /PS_[A-Za-z0-9]+_[A-Za-z0-9]+/i;\n                collectionRegex = /[A-Za-z0-9]+-[A-Za-z0-9]+-[A-Za-z0-9]+/i;\n                if (!psRegex.test($(this).attr('data-pid')) && !collectionRegex.test($(this).attr('data-pid'))) {\n                    $(this).find('.image-container').append($(quickshopButton));\n                    $(this).find('.atquickShopButton').on('click', function () {\n                        if ($('.load-spinner-container .veil .spinner').length == 0) {\n                            openQuickView('/on/demandware.store/Sites-oss-Site/default/Product-Show', $(this).parents('.product-tile').attr('data-pid'), $(this).parents('.product-tile').attr('data-color-id'));\n\n                        }\n                    });\n                }\n            });\n\n            $.initialize('#quickViewModal', function () {\n                // Observe class changes and fire an empty/custom event when 'show' is removed\n                var $modal = $(this);\n                var hadShow = $modal.hasClass('show');\n                try {\n                    var classObserver = new MutationObserver(function (mutations) {\n                        mutations.forEach(function (m) {\n                            if (m.attributeName === 'class') {\n                                var hasShow = $modal.hasClass('show');\n                                if (hadShow && !hasShow) {\n                                    // Empty event — consumers can listen to 'quickview:hidden'\n                                    if (document && document.body && document.body.style && document.body.style.overflow === 'hidden') {\n                                        document.body.style.overflow = '';\n                                    }\n\n                                    // Remove previous '.modal.sizechart-dialog' if any\n                                    $('.modal.sizechart-dialog').remove();\n                                }\n                                hadShow = hasShow;\n                            }\n                        });\n                    });\n                    classObserver.observe(this, { attributes: true, attributeFilter: ['class'] });\n                } catch (e) {\n                    // Fallback: poll for class changes if MutationObserver not available\n                    var pollInterval = setInterval(function () {\n                        var hasShowNow = $modal.hasClass('show');\n                        if (hadShow && !hasShowNow) {\n                            if (document && document.body && document.body.style && document.body.style.overflow === 'hidden') {\n                                document.body.style.overflow = '';\n                            }\n\n                            // Remove previous '.modal.sizechart-dialog' if any\n                            $('.modal.sizechart-dialog').remove();\n                        }\n                        hadShow = hasShowNow;\n                    }, 200);\n                    // stop polling once modal is removed\n                    $.initialize('#quickViewModal', function () {\n                        if (!$('#quickViewModal').length) clearInterval(pollInterval);\n                    });\n                }\n            });\n        });\n}, 50)\n</script>"}]}