Women's Intimates & Women's Lingerie (2022)

").parent(), e.$slideTrack.css("opacity", 0), !0 !== e.options.centerMode && !0 !== e.options.swipeToSlide || (e.options.slidesToScroll = 1), i("img[data-lazy]", e.$slider).not("[src]").addClass("slick-loading"), e.setupInfinite(), e.buildArrows(), e.buildDots(), e.updateDots(), e.setSlideClasses("number" == typeof e.currentSlide ? e.currentSlide : 0), !0 === e.options.draggable && e.$list.addClass("draggable"); }, e.prototype.buildRows = function () { var i, e, t, o, s, n, r, l = this; if (o = document.createDocumentFragment(), n = l.$slider.children(), l.options.rows > 1) { for (r = l.options.slidesPerRow * l.options.rows, s = Math.ceil(n.length / r), i = 0; i < s; i++) { var d = document.createElement("div"); for (e = 0; e < l.options.rows; e++) { var a = document.createElement("div"); for (t = 0; t < l.options.slidesPerRow; t++) { var c = i * r + (e * l.options.slidesPerRow + t); n.get(c) && a.appendChild(n.get(c)); } d.appendChild(a); } o.appendChild(d); } l.$slider.empty().append(o), l.$slider.children().children().children().css({width: 100 / l.options.slidesPerRow + "%", display: "inline-block"}); } }, e.prototype.checkResponsive = function (e, t) { var o, s, n, r = this, l = !1, d = r.$slider.width(), a = window.innerWidth || i(window).width(); if ("window" === r.respondTo ? n = a : "slider" === r.respondTo ? n = d : "min" === r.respondTo && (n = Math.min(a, d)), r.options.responsive && r.options.responsive.length && null !== r.options.responsive) { s = null; for (o in r.breakpoints) { r.breakpoints.hasOwnProperty(o) && (!1 === r.originalSettings.mobileFirst ? n < r.breakpoints[o] && (s = r.breakpoints[o]) : n > r.breakpoints[o] && (s = r.breakpoints[o])); } null !== s ? null !== r.activeBreakpoint ? (s !== r.activeBreakpoint || t) && (r.activeBreakpoint = s, "unslick" === r.breakpointSettings[s] ? r.unslick(s) : (r.options = i.extend({}, r.originalSettings, r.breakpointSettings[s]), !0 === e && (r.currentSlide = r.options.initialSlide), r.refresh(e)), l = s) : (r.activeBreakpoint = s, "unslick" === r.breakpointSettings[s] ? r.unslick(s) : (r.options = i.extend({}, r.originalSettings, r.breakpointSettings[s]), !0 === e && (r.currentSlide = r.options.initialSlide), r.refresh(e)), l = s) : null !== r.activeBreakpoint && (r.activeBreakpoint = null, r.options = r.originalSettings, !0 === e && (r.currentSlide = r.options.initialSlide), r.refresh(e), l = s), e || !1 === l || r.$slider.trigger("breakpoint", [r, l]); } }, e.prototype.changeSlide = function (e, t) { var o, s, n, r = this, l = i(e.currentTarget); switch (l.is("a") && e.preventDefault(), l.is("li") || (l = l.closest("li")), n = r.slideCount % r.options.slidesToScroll != 0, o = n ? 0 : (r.slideCount - r.currentSlide) % r.options.slidesToScroll, e.data.message) { case "previous": s = 0 === o ? r.options.slidesToScroll : r.options.slidesToShow - o, r.slideCount > r.options.slidesToShow && r.slideHandler(r.currentSlide - s, !1, t); break; case "next": s = 0 === o ? r.options.slidesToScroll : o, r.slideCount > r.options.slidesToShow && r.slideHandler(r.currentSlide + s, !1, t); break; case "index": var d = 0 === e.data.index ? 0 : e.data.index || (l.index() - 1) * r.options.slidesToScroll; r.slideHandler(r.checkNavigable(d), !1, t), l.children().trigger("focus"); break; default: return; } }, e.prototype.checkNavigable = function (i) { var e, t; if (e = this.getNavigableIndexes(), t = 0, i > e[e.length - 1]) { i = e[e.length - 1]; } else { for (var o in e) { if (i < e[o]) { i = t; break; } t = e[o]; } } return i; }, e.prototype.cleanUpEvents = function () { var e = this; e.options.dots && null !== e.$dots && (i("li", e.$dots).off("click.slick", e.changeSlide).off("mouseenter.slick", i.proxy(e.interrupt, e, !0)).off("mouseleave.slick", i.proxy(e.interrupt, e, !1)), !0 === e.options.accessibility && e.$dots.off("keydown.slick", e.keyHandler)), e.$slider.off("focus.slick blur.slick"), !0 === e.options.arrows && e.slideCount > e.options.slidesToShow && (e.$prevArrow && e.$prevArrow.off("click.slick", e.changeSlide), e.$nextArrow && e.$nextArrow.off("click.slick", e.changeSlide), !0 === e.options.accessibility && (e.$prevArrow && e.$prevArrow.off("keydown.slick", e.keyHandler), e.$nextArrow && e.$nextArrow.off("keydown.slick", e.keyHandler))), e.$list.off("touchstart.slick mousedown.slick", e.swipeHandler), e.$list.off("touchmove.slick mousemove.slick", e.swipeHandler), e.$list.off("touchend.slick mouseup.slick", e.swipeHandler), e.$list.off("touchcancel.slick mouseleave.slick", e.swipeHandler), e.$list.off("click.slick", e.clickHandler), i(document).off(e.visibilityChange, e.visibility), e.cleanUpSlideEvents(), !0 === e.options.accessibility && e.$list.off("keydown.slick", e.keyHandler), !0 === e.options.focusOnSelect && i(e.$slideTrack).children().off("click.slick", e.selectHandler), i(window).off("orientationchange.slick.slick-" + e.instanceUid, e.orientationChange), i(window).off("resize.slick.slick-" + e.instanceUid, e.resize), i("[draggable!=true]", e.$slideTrack).off("dragstart", e.preventDefault), i(window).off("load.slick.slick-" + e.instanceUid, e.setPosition); }, e.prototype.cleanUpSlideEvents = function () { var e = this; e.$list.off("mouseenter.slick", i.proxy(e.interrupt, e, !0)), e.$list.off("mouseleave.slick", i.proxy(e.interrupt, e, !1)); }, e.prototype.cleanUpRows = function () { var i, e = this; e.options.rows > 1 && ((i = e.$slides.children().children()).removeAttr("style"), e.$slider.empty().append(i)); }, e.prototype.clickHandler = function (i) { !1 === this.shouldClick && (i.stopImmediatePropagation(), i.stopPropagation(), i.preventDefault()); }, e.prototype.destroy = function (e) { var t = this; t.autoPlayClear(), t.touchObject = {}, t.cleanUpEvents(), i(".slick-cloned", t.$slider).detach(), t.$dots && t.$dots.remove(), t.$prevArrow && t.$prevArrow.length && (t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), t.htmlExpr.test(t.options.prevArrow) && t.$prevArrow.remove()), t.$nextArrow && t.$nextArrow.length && (t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), t.htmlExpr.test(t.options.nextArrow) && t.$nextArrow.remove()), t.$slides && (t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function () { i(this).attr("style", i(this).data("originalStyling")); }), t.$slideTrack.children(this.options.slide).detach(), t.$slideTrack.detach(), t.$list.detach(), t.$slider.append(t.$slides)), t.cleanUpRows(), t.$slider.removeClass("slick-slider"), t.$slider.removeClass("slick-initialized"), t.$slider.removeClass("slick-dotted"), t.unslicked = !0, e || t.$slider.trigger("destroy", [t]); }, e.prototype.disableTransition = function (i) { var e = this, t = {}; t[e.transitionType] = "", !1 === e.options.fade ? e.$slideTrack.css(t) : e.$slides.eq(i).css(t); }, e.prototype.fadeSlide = function (i, e) { var t = this; !1 === t.cssTransitions ? (t.$slides.eq(i).css({zIndex: t.options.zIndex}), t.$slides.eq(i).animate({opacity: 1}, t.options.speed, t.options.easing, e)) : (t.applyTransition(i), t.$slides.eq(i).css({opacity: 1, zIndex: t.options.zIndex}), e && setTimeout(function () { t.disableTransition(i), e.call(); }, t.options.speed)); }, e.prototype.fadeSlideOut = function (i) { var e = this; !1 === e.cssTransitions ? e.$slides.eq(i).animate({opacity: 0, zIndex: e.options.zIndex - 2}, e.options.speed, e.options.easing) : (e.applyTransition(i), e.$slides.eq(i).css({opacity: 0, zIndex: e.options.zIndex - 2})); }, e.prototype.filterSlides = e.prototype.slickFilter = function (i) { var e = this; null !== i && (e.$slidesCache = e.$slides, e.unload(), e.$slideTrack.children(this.options.slide).detach(), e.$slidesCache.filter(i).appendTo(e.$slideTrack), e.reinit()); }, e.prototype.focusHandler = function () { var e = this; e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*", function (t) { t.stopImmediatePropagation(); var o = i(this); setTimeout(function () { e.options.pauseOnFocus && (e.focussed = o.is(":focus"), e.autoPlay()); }, 0); }); }, e.prototype.getCurrent = e.prototype.slickCurrentSlide = function () { return this.currentSlide; }, e.prototype.getDotCount = function () { var i = this, e = 0, t = 0, o = 0; if (!0 === i.options.infinite) { if (i.slideCount <= i.options.slidesToShow) { ++o; } else { for (; e < i.slideCount; ) { ++o, e = t + i.options.slidesToScroll, t += i.options.slidesToScroll <= i.options.slidesToShow ? i.options.slidesToScroll : i.options.slidesToShow; } } } else { if (!0 === i.options.centerMode) { o = i.slideCount; } else { if (i.options.asNavFor) { for (; e < i.slideCount; ) { ++o, e = t + i.options.slidesToScroll, t += i.options.slidesToScroll <= i.options.slidesToShow ? i.options.slidesToScroll : i.options.slidesToShow; } } else { o = 1 + Math.ceil((i.slideCount - i.options.slidesToShow) / i.options.slidesToScroll); } } } return o - 1; }, e.prototype.getLeft = function (i) { var e, t, o, s, n = this, r = 0; return n.slideOffset = 0, t = n.$slides.first().outerHeight(!0), !0 === n.options.infinite ? (n.slideCount > n.options.slidesToShow && (n.slideOffset = n.slideWidth * n.options.slidesToShow * -1, s = -1, !0 === n.options.vertical && !0 === n.options.centerMode && (2 === n.options.slidesToShow ? s = -1.5 : 1 === n.options.slidesToShow && (s = -2)), r = t * n.options.slidesToShow * s), n.slideCount % n.options.slidesToScroll != 0 && i + n.options.slidesToScroll > n.slideCount && n.slideCount > n.options.slidesToShow && (i > n.slideCount ? (n.slideOffset = (n.options.slidesToShow - (i - n.slideCount)) * n.slideWidth * -1, r = (n.options.slidesToShow - (i - n.slideCount)) * t * -1) : (n.slideOffset = n.slideCount % n.options.slidesToScroll * n.slideWidth * -1, r = n.slideCount % n.options.slidesToScroll * t * -1))) : i + n.options.slidesToShow > n.slideCount && (n.slideOffset = (i + n.options.slidesToShow - n.slideCount) * n.slideWidth, r = (i + n.options.slidesToShow - n.slideCount) * t), n.slideCount <= n.options.slidesToShow && (n.slideOffset = 0, r = 0), !0 === n.options.centerMode && n.slideCount <= n.options.slidesToShow ? n.slideOffset = n.slideWidth * Math.floor(n.options.slidesToShow) / 2 - n.slideWidth * n.slideCount / 2 : !0 === n.options.centerMode && !0 === n.options.infinite ? n.slideOffset += n.slideWidth * Math.floor(n.options.slidesToShow / 2) - n.slideWidth : !0 === n.options.centerMode && (n.slideOffset = 0, n.slideOffset += n.slideWidth * Math.floor(n.options.slidesToShow / 2)), e = !1 === n.options.vertical ? i * n.slideWidth * -1 + n.slideOffset : i * t * -1 + r, !0 === n.options.variableWidth && (o = n.slideCount <= n.options.slidesToShow || !1 === n.options.infinite ? n.$slideTrack.children(".slick-slide").eq(i) : n.$slideTrack.children(".slick-slide").eq(i + n.options.slidesToShow), e = !0 === n.options.rtl ? o[0] ? -1 * (n.$slideTrack.width() - o[0].offsetLeft - o.width()) : 0 : o[0] ? -1 * o[0].offsetLeft : 0, !0 === n.options.centerMode && (o = n.slideCount <= n.options.slidesToShow || !1 === n.options.infinite ? n.$slideTrack.children(".slick-slide").eq(i) : n.$slideTrack.children(".slick-slide").eq(i + n.options.slidesToShow + 1), e = !0 === n.options.rtl ? o[0] ? -1 * (n.$slideTrack.width() - o[0].offsetLeft - o.width()) : 0 : o[0] ? -1 * o[0].offsetLeft : 0, e += (n.$list.width() - o.outerWidth()) / 2)), e; }, e.prototype.getOption = e.prototype.slickGetOption = function (i) { return this.options[i]; }, e.prototype.getNavigableIndexes = function () { var i, e = this, t = 0, o = 0, s = []; for (!1 === e.options.infinite ? i = e.slideCount : (t = -1 * e.options.slidesToScroll, o = -1 * e.options.slidesToScroll, i = 2 * e.slideCount); t < i; ) { s.push(t), t = o + e.options.slidesToScroll, o += e.options.slidesToScroll <= e.options.slidesToShow ? e.options.slidesToScroll : e.options.slidesToShow; } return s; }, e.prototype.getSlick = function () { return this; }, e.prototype.getSlideCount = function () { var e, t, o = this; return t = !0 === o.options.centerMode ? o.slideWidth * Math.floor(o.options.slidesToShow / 2) : 0, !0 === o.options.swipeToSlide ? (o.$slideTrack.find(".slick-slide").each(function (s, n) { if (n.offsetLeft - t + i(n).outerWidth() / 2 > -1 * o.swipeLeft) { return e = n, !1; } }), Math.abs(i(e).attr("data-slick-index") - o.currentSlide) || 1) : o.options.slidesToScroll; }, e.prototype.goTo = e.prototype.slickGoTo = function (i, e) { this.changeSlide({data: {message: "index", index: parseInt(i)}}, e); }, e.prototype.init = function (e) { var t = this; i(t.$slider).hasClass("slick-initialized") || (i(t.$slider).addClass("slick-initialized"), t.buildRows(), t.buildOut(), t.setProps(), t.startLoad(), t.loadSlider(), t.initializeEvents(), t.updateArrows(), t.updateDots(), t.checkResponsive(!0), t.focusHandler()), e && t.$slider.trigger("init", [t]), !0 === t.options.accessibility && t.initADA(), t.options.autoplay && (t.paused = !1, t.autoPlay()); }, e.prototype.initADA = function () { var e = this, t = Math.ceil(e.slideCount / e.options.slidesToShow), o = e.getNavigableIndexes().filter(function (i) { return i >= 0 && i < e.slideCount; }); e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({"aria-hidden": "true", tabindex: "-1"}).find("a, input, button, select").attr({tabindex: "-1"}), null !== e.$dots && (e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function (t) { var s = o.indexOf(t); i(this).attr({role: "tabpanel", id: "slick-slide" + e.instanceUid + t, tabindex: -1}), -1 !== s && i(this).attr({"aria-describedby": "slick-slide-control" + e.instanceUid + s}); }), e.$dots.attr("role", "tablist").find("li").each(function (s) { var n = o[s]; i(this).attr({role: "presentation"}), i(this).find("button").first().attr({role: "tab", id: "slick-slide-control" + e.instanceUid + s, "aria-controls": "slick-slide" + e.instanceUid + n, "aria-label": s + 1 + " of " + t, "aria-selected": null, tabindex: "-1"}); }).eq(e.currentSlide).find("button").attr({"aria-selected": "true", tabindex: "0"}).end()); for (var s = e.currentSlide, n = s + e.options.slidesToShow; s < n; s++) { e.$slides.eq(s).attr("tabindex", 0); } e.activateADA(); }, e.prototype.initArrowEvents = function () { var i = this; !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && (i.$prevArrow.off("click.slick").on("click.slick", {message: "previous"}, i.changeSlide), i.$nextArrow.off("click.slick").on("click.slick", {message: "next"}, i.changeSlide), !0 === i.options.accessibility && (i.$prevArrow.on("keydown.slick", i.keyHandler), i.$nextArrow.on("keydown.slick", i.keyHandler))); }, e.prototype.initDotEvents = function () { var e = this; !0 === e.options.dots && (i("li", e.$dots).on("click.slick", {message: "index"}, e.changeSlide), !0 === e.options.accessibility && e.$dots.on("keydown.slick", e.keyHandler)), !0 === e.options.dots && !0 === e.options.pauseOnDotsHover && i("li", e.$dots).on("mouseenter.slick", i.proxy(e.interrupt, e, !0)).on("mouseleave.slick", i.proxy(e.interrupt, e, !1)); }, e.prototype.initSlideEvents = function () { var e = this; e.options.pauseOnHover && (e.$list.on("mouseenter.slick", i.proxy(e.interrupt, e, !0)), e.$list.on("mouseleave.slick", i.proxy(e.interrupt, e, !1))); }, e.prototype.initializeEvents = function () { var e = this; e.initArrowEvents(), e.initDotEvents(), e.initSlideEvents(), e.$list.on("touchstart.slick mousedown.slick", {action: "start"}, e.swipeHandler), e.$list.on("touchmove.slick mousemove.slick", {action: "move"}, e.swipeHandler), e.$list.on("touchend.slick mouseup.slick", {action: "end"}, e.swipeHandler), e.$list.on("touchcancel.slick mouseleave.slick", {action: "end"}, e.swipeHandler), e.$list.on("click.slick", e.clickHandler), i(document).on(e.visibilityChange, i.proxy(e.visibility, e)), !0 === e.options.accessibility && e.$list.on("keydown.slick", e.keyHandler), !0 === e.options.focusOnSelect && i(e.$slideTrack).children().on("click.slick", e.selectHandler), i(window).on("orientationchange.slick.slick-" + e.instanceUid, i.proxy(e.orientationChange, e)), i(window).on("resize.slick.slick-" + e.instanceUid, i.proxy(e.resize, e)), i("[draggable!=true]", e.$slideTrack).on("dragstart", e.preventDefault), i(window).on("load.slick.slick-" + e.instanceUid, e.setPosition), i(e.setPosition); }, e.prototype.initUI = function () { var i = this; !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && (i.$prevArrow.show(), i.$nextArrow.show()), !0 === i.options.dots && i.slideCount > i.options.slidesToShow && i.$dots.show(); }, e.prototype.keyHandler = function (i) { var e = this; i.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === i.keyCode && !0 === e.options.accessibility ? e.changeSlide({data: {message: !0 === e.options.rtl ? "next" : "previous"}}) : 39 === i.keyCode && !0 === e.options.accessibility && e.changeSlide({data: {message: !0 === e.options.rtl ? "previous" : "next"}})); }, e.prototype.lazyLoad = function () { function e(e) { i("img[data-lazy]", e).each(function () { var e = i(this), t = i(this).attr("data-lazy"), o = i(this).attr("data-srcset"), s = i(this).attr("data-sizes") || n.$slider.attr("data-sizes"), r = document.createElement("img"); r.onload = function () { e.animate({opacity: 0}, 100, function () { o && (e.attr("srcset", o), s && e.attr("sizes", s)), e.attr("src", t).animate({opacity: 1}, 200, function () { e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"); }), n.$slider.trigger("lazyLoaded", [n, e, t]); }); }, r.onerror = function () { e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), n.$slider.trigger("lazyLoadError", [n, e, t]); }, r.src = t; }); } var t, o, s, n = this; if (!0 === n.options.centerMode ? !0 === n.options.infinite ? s = (o = n.currentSlide + (n.options.slidesToShow / 2 + 1)) + n.options.slidesToShow + 2 : (o = Math.max(0, n.currentSlide - (n.options.slidesToShow / 2 + 1)), s = n.options.slidesToShow / 2 + 1 + 2 + n.currentSlide) : (o = n.options.infinite ? n.options.slidesToShow + n.currentSlide : n.currentSlide, s = Math.ceil(o + n.options.slidesToShow), !0 === n.options.fade && (o > 0 && o--, s <= n.slideCount && s++)), t = n.$slider.find(".slick-slide").slice(o, s), "anticipated" === n.options.lazyLoad) { for (var r = o - 1, l = s, d = n.$slider.find(".slick-slide"), a = 0; a < n.options.slidesToScroll; a++) { r < 0 && (r = n.slideCount - 1), t = (t = t.add(d.eq(r))).add(d.eq(l)), r--, l++; } } e(t), n.slideCount <= n.options.slidesToShow ? e(n.$slider.find(".slick-slide")) : n.currentSlide >= n.slideCount - n.options.slidesToShow ? e(n.$slider.find(".slick-cloned").slice(0, n.options.slidesToShow)) : 0 === n.currentSlide && e(n.$slider.find(".slick-cloned").slice(-1 * n.options.slidesToShow)); }, e.prototype.loadSlider = function () { var i = this; i.setPosition(), i.$slideTrack.css({opacity: 1}), i.$slider.removeClass("slick-loading"), i.initUI(), "progressive" === i.options.lazyLoad && i.progressiveLazyLoad(); }, e.prototype.next = e.prototype.slickNext = function () { this.changeSlide({data: {message: "next"}}); }, e.prototype.orientationChange = function () { var i = this; i.checkResponsive(), i.setPosition(); }, e.prototype.pause = e.prototype.slickPause = function () { var i = this; i.autoPlayClear(), i.paused = !0; }, e.prototype.play = e.prototype.slickPlay = function () { var i = this; i.autoPlay(), i.options.autoplay = !0, i.paused = !1, i.focussed = !1, i.interrupted = !1; }, e.prototype.postSlide = function (e) { var t = this; t.unslicked || (t.$slider.trigger("afterChange", [t, e]), t.animating = !1, t.slideCount > t.options.slidesToShow && t.setPosition(), t.swipeLeft = null, t.options.autoplay && t.autoPlay(), !0 === t.options.accessibility && (t.initADA(), t.options.focusOnChange && i(t.$slides.get(t.currentSlide)).attr("tabindex", 0).focus())); }, e.prototype.prev = e.prototype.slickPrev = function () { this.changeSlide({data: {message: "previous"}}); }, e.prototype.preventDefault = function (i) { i.preventDefault(); }, e.prototype.progressiveLazyLoad = function (e) { e = e || 1; var t, o, s, n, r, l = this, d = i("img[data-lazy]", l.$slider); d.length ? (t = d.first(), o = t.attr("data-lazy"), s = t.attr("data-srcset"), n = t.attr("data-sizes") || l.$slider.attr("data-sizes"), (r = document.createElement("img")).onload = function () { s && (t.attr("srcset", s), n && t.attr("sizes", n)), t.attr("src", o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"), !0 === l.options.adaptiveHeight && l.setPosition(), l.$slider.trigger("lazyLoaded", [l, t, o]), l.progressiveLazyLoad(); }, r.onerror = function () { e < 3 ? setTimeout(function () { l.progressiveLazyLoad(e + 1); }, 500) : (t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), l.$slider.trigger("lazyLoadError", [l, t, o]), l.progressiveLazyLoad()); }, r.src = o) : l.$slider.trigger("allImagesLoaded", [l]); }, e.prototype.refresh = function (e) { var t, o, s = this; o = s.slideCount - s.options.slidesToShow, !s.options.infinite && s.currentSlide > o && (s.currentSlide = o), s.slideCount <= s.options.slidesToShow && (s.currentSlide = 0), t = s.currentSlide, s.destroy(!0), i.extend(s, s.initials, {currentSlide: t}), s.init(), e || s.changeSlide({data: {message: "index", index: t}}, !1); }, e.prototype.registerBreakpoints = function () { var e, t, o, s = this, n = s.options.responsive || null; if ("array" === i.type(n) && n.length) { s.respondTo = s.options.respondTo || "window"; for (e in n) { if (o = s.breakpoints.length - 1, n.hasOwnProperty(e)) { for (t = n[e].breakpoint; o >= 0; ) { s.breakpoints[o] && s.breakpoints[o] === t && s.breakpoints.splice(o, 1), o--; } s.breakpoints.push(t), s.breakpointSettings[t] = n[e].settings; } } s.breakpoints.sort(function (i, e) { return s.options.mobileFirst ? i - e : e - i; }); } }, e.prototype.reinit = function () { var e = this; e.$slides = e.$slideTrack.children(e.options.slide).addClass("slick-slide"), e.slideCount = e.$slides.length, e.currentSlide >= e.slideCount && 0 !== e.currentSlide && (e.currentSlide = e.currentSlide - e.options.slidesToScroll), e.slideCount <= e.options.slidesToShow && (e.currentSlide = 0), e.registerBreakpoints(), e.setProps(), e.setupInfinite(), e.buildArrows(), e.updateArrows(), e.initArrowEvents(), e.buildDots(), e.updateDots(), e.initDotEvents(), e.cleanUpSlideEvents(), e.initSlideEvents(), e.checkResponsive(!1, !0), !0 === e.options.focusOnSelect && i(e.$slideTrack).children().on("click.slick", e.selectHandler), e.setSlideClasses("number" == typeof e.currentSlide ? e.currentSlide : 0), e.setPosition(), e.focusHandler(), e.paused = !e.options.autoplay, e.autoPlay(), e.$slider.trigger("reInit", [e]); }, e.prototype.resize = function () { var e = this; i(window).width() !== e.windowWidth && (clearTimeout(e.windowDelay), e.windowDelay = window.setTimeout(function () { e.windowWidth = i(window).width(), e.checkResponsive(), e.unslicked || e.setPosition(); }, 50)); }, e.prototype.removeSlide = e.prototype.slickRemove = function (i, e, t) { var o = this; if (i = "boolean" == typeof i ? !0 === (e = i) ? 0 : o.slideCount - 1 : !0 === e ? --i : i, o.slideCount < 1 || i < 0 || i > o.slideCount - 1) { return !1; } o.unload(), !0 === t ? o.$slideTrack.children().remove() : o.$slideTrack.children(this.options.slide).eq(i).remove(), o.$slides = o.$slideTrack.children(this.options.slide), o.$slideTrack.children(this.options.slide).detach(), o.$slideTrack.append(o.$slides), o.$slidesCache = o.$slides, o.reinit(); }, e.prototype.setCSS = function (i) { var e, t, o = this, s = {}; !0 === o.options.rtl && (i = -i), e = "left" == o.positionProp ? Math.ceil(i) + "px" : "0px", t = "top" == o.positionProp ? Math.ceil(i) + "px" : "0px", s[o.positionProp] = i, !1 === o.transformsEnabled ? o.$slideTrack.css(s) : (s = {}, !1 === o.cssTransitions ? (s[o.animType] = "translate(" + e + ", " + t + ")", o.$slideTrack.css(s)) : (s[o.animType] = "translate3d(" + e + ", " + t + ", 0px)", o.$slideTrack.css(s))); }, e.prototype.setDimensions = function () { var i = this; !1 === i.options.vertical ? !0 === i.options.centerMode && i.$list.css({padding: "0px " + i.options.centerPadding}) : (i.$list.height(i.$slides.first().outerHeight(!0) * i.options.slidesToShow), !0 === i.options.centerMode && i.$list.css({padding: i.options.centerPadding + " 0px"})), i.listWidth = i.$list.width(), i.listHeight = i.$list.height(), !1 === i.options.vertical && !1 === i.options.variableWidth ? (i.slideWidth = Math.ceil(i.listWidth / i.options.slidesToShow), i.$slideTrack.width(Math.ceil(i.slideWidth * i.$slideTrack.children(".slick-slide").length))) : !0 === i.options.variableWidth ? i.$slideTrack.width(5000 * i.slideCount) : (i.slideWidth = Math.ceil(i.listWidth), i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0) * i.$slideTrack.children(".slick-slide").length))); var e = i.$slides.first().outerWidth(!0) - i.$slides.first().width(); !1 === i.options.variableWidth && i.$slideTrack.children(".slick-slide").width(i.slideWidth - e); }, e.prototype.setFade = function () { var e, t = this; t.$slides.each(function (o, s) { e = t.slideWidth * o * -1, !0 === t.options.rtl ? i(s).css({position: "relative", right: e, top: 0, zIndex: t.options.zIndex - 2, opacity: 0}) : i(s).css({position: "relative", left: e, top: 0, zIndex: t.options.zIndex - 2, opacity: 0}); }), t.$slides.eq(t.currentSlide).css({zIndex: t.options.zIndex - 1, opacity: 1}); }, e.prototype.setHeight = function () { var i = this; if (1 === i.options.slidesToShow && !0 === i.options.adaptiveHeight && !1 === i.options.vertical) { var e = i.$slides.eq(i.currentSlide).outerHeight(!0); i.$list.css("height", e); } }, e.prototype.setOption = e.prototype.slickSetOption = function () { var e, t, o, s, n, r = this, l = !1; if ("object" === i.type(arguments[0]) ? (o = arguments[0], l = arguments[1], n = "multiple") : "string" === i.type(arguments[0]) && (o = arguments[0], s = arguments[1], l = arguments[2], "responsive" === arguments[0] && "array" === i.type(arguments[1]) ? n = "responsive" : void 0 !== arguments[1] && (n = "single")), "single" === n) { r.options[o] = s; } else { if ("multiple" === n) { i.each(o, function (i, e) { r.options[i] = e; }); } else { if ("responsive" === n) { for (t in s) { if ("array" !== i.type(r.options.responsive)) { r.options.responsive = [s[t]]; } else { for (e = r.options.responsive.length - 1; e >= 0; ) { r.options.responsive[e].breakpoint === s[t].breakpoint && r.options.responsive.splice(e, 1), e--; } r.options.responsive.push(s[t]); } } } } } l && (r.unload(), r.reinit()); }, e.prototype.setPosition = function () { var i = this; i.setDimensions(), i.setHeight(), !1 === i.options.fade ? i.setCSS(i.getLeft(i.currentSlide)) : i.setFade(), i.$slider.trigger("setPosition", [i]); }, e.prototype.setProps = function () { var i = this, e = document.body.style; i.positionProp = !0 === i.options.vertical ? "top" : "left", "top" === i.positionProp ? i.$slider.addClass("slick-vertical") : i.$slider.removeClass("slick-vertical"), void 0 === e.WebkitTransition && void 0 === e.MozTransition && void 0 === e.msTransition || !0 === i.options.useCSS && (i.cssTransitions = !0), i.options.fade && ("number" == typeof i.options.zIndex ? i.options.zIndex < 3 && (i.options.zIndex = 3) : i.options.zIndex = i.defaults.zIndex), void 0 !== e.OTransform && (i.animType = "OTransform", i.transformType = "-o-transform", i.transitionType = "OTransition", void 0 === e.perspectiveProperty && void 0 === e.webkitPerspective && (i.animType = !1)), void 0 !== e.MozTransform && (i.animType = "MozTransform", i.transformType = "-moz-transform", i.transitionType = "MozTransition", void 0 === e.perspectiveProperty && void 0 === e.MozPerspective && (i.animType = !1)), void 0 !== e.webkitTransform && (i.animType = "webkitTransform", i.transformType = "-webkit-transform", i.transitionType = "webkitTransition", void 0 === e.perspectiveProperty && void 0 === e.webkitPerspective && (i.animType = !1)), void 0 !== e.msTransform && (i.animType = "msTransform", i.transformType = "-ms-transform", i.transitionType = "msTransition", void 0 === e.msTransform && (i.animType = !1)), void 0 !== e.transform && !1 !== i.animType && (i.animType = "transform", i.transformType = "transform", i.transitionType = "transition"), i.transformsEnabled = i.options.useTransform && null !== i.animType && !1 !== i.animType; }, e.prototype.setSlideClasses = function (i) { var e, t, o, s, n = this; if (t = n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"), n.$slides.eq(i).addClass("slick-current"), !0 === n.options.centerMode) { var r = n.options.slidesToShow % 2 == 0 ? 1 : 0; e = Math.floor(n.options.slidesToShow / 2), !0 === n.options.infinite && (i >= e && i <= n.slideCount - 1 - e ? n.$slides.slice(i - e + r, i + e + 1).addClass("slick-active").attr("aria-hidden", "false") : (o = n.options.slidesToShow + i, t.slice(o - e + 1 + r, o + e + 2).addClass("slick-active").attr("aria-hidden", "false")), 0 === i ? t.eq(t.length - 1 - n.options.slidesToShow).addClass("slick-center") : i === n.slideCount - 1 && t.eq(n.options.slidesToShow).addClass("slick-center")), n.$slides.eq(i).addClass("slick-center"); } else { i >= 0 && i <= n.slideCount - n.options.slidesToShow ? n.$slides.slice(i, i + n.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : t.length <= n.options.slidesToShow ? t.addClass("slick-active").attr("aria-hidden", "false") : (s = n.slideCount % n.options.slidesToShow, o = !0 === n.options.infinite ? n.options.slidesToShow + i : i, n.options.slidesToShow == n.options.slidesToScroll && n.slideCount - i < n.options.slidesToShow ? t.slice(o - (n.options.slidesToShow - s), o + s).addClass("slick-active").attr("aria-hidden", "false") : t.slice(o, o + n.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false")); } "ondemand" !== n.options.lazyLoad && "anticipated" !== n.options.lazyLoad || n.lazyLoad(); }, e.prototype.setupInfinite = function () { var e, t, o, s = this; if (!0 === s.options.fade && (s.options.centerMode = !1), !0 === s.options.infinite && !1 === s.options.fade && (t = null, s.slideCount > s.options.slidesToShow)) { for (o = !0 === s.options.centerMode ? s.options.slidesToShow + 1 : s.options.slidesToShow, e = s.slideCount; e > s.slideCount - o; e -= 1) { t = e - 1, i(s.$slides[t]).clone(!0).attr("id", "").attr("data-slick-index", t - s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned"); } for (e = 0; e < o + s.slideCount; e += 1) { t = e, i(s.$slides[t]).clone(!0).attr("id", "").attr("data-slick-index", t + s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned"); } s.$slideTrack.find(".slick-cloned").find("[id]").each(function () { i(this).attr("id", ""); }); } }, e.prototype.interrupt = function (i) { var e = this; i || e.autoPlay(), e.interrupted = i; }, e.prototype.selectHandler = function (e) { var t = this, o = i(e.target).is(".slick-slide") ? i(e.target) : i(e.target).parents(".slick-slide"), s = parseInt(o.attr("data-slick-index")); s || (s = 0), t.slideCount <= t.options.slidesToShow ? t.slideHandler(s, !1, !0) : t.slideHandler(s); }, e.prototype.slideHandler = function (i, e, t) { var o, s, n, r, l, d = null, a = this; if (e = e || !1, !(!0 === a.animating && !0 === a.options.waitForAnimate || !0 === a.options.fade && a.currentSlide === i)) { if (!1 === e && a.asNavFor(i), o = i, d = a.getLeft(o), r = a.getLeft(a.currentSlide), a.currentLeft = null === a.swipeLeft ? r : a.swipeLeft, !1 === a.options.infinite && !1 === a.options.centerMode && (i < 0 || i > a.getDotCount() * a.options.slidesToScroll)) { !1 === a.options.fade && (o = a.currentSlide, !0 !== t ? a.animateSlide(r, function () { a.postSlide(o); }) : a.postSlide(o)); } else { if (!1 === a.options.infinite && !0 === a.options.centerMode && (i < 0 || i > a.slideCount - a.options.slidesToScroll)) { !1 === a.options.fade && (o = a.currentSlide, !0 !== t ? a.animateSlide(r, function () { a.postSlide(o); }) : a.postSlide(o)); } else { if (a.options.autoplay && clearInterval(a.autoPlayTimer), s = o < 0 ? a.slideCount % a.options.slidesToScroll != 0 ? a.slideCount - a.slideCount % a.options.slidesToScroll : a.slideCount + o : o >= a.slideCount ? a.slideCount % a.options.slidesToScroll != 0 ? 0 : o - a.slideCount : o, a.animating = !0, a.$slider.trigger("beforeChange", [a, a.currentSlide, s]), n = a.currentSlide, a.currentSlide = s, a.setSlideClasses(a.currentSlide), a.options.asNavFor && (l = (l = a.getNavTarget()).slick("getSlick")).slideCount <= l.options.slidesToShow && l.setSlideClasses(a.currentSlide), a.updateDots(), a.updateArrows(), !0 === a.options.fade) { return !0 !== t ? (a.fadeSlideOut(n), a.fadeSlide(s, function () { a.postSlide(s); })) : a.postSlide(s), void a.animateHeight(); } !0 !== t ? a.animateSlide(d, function () { a.postSlide(s); }) : a.postSlide(s); } } } }, e.prototype.startLoad = function () { var i = this; !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && (i.$prevArrow.hide(), i.$nextArrow.hide()), !0 === i.options.dots && i.slideCount > i.options.slidesToShow && i.$dots.hide(), i.$slider.addClass("slick-loading"); }, e.prototype.swipeDirection = function () { var i, e, t, o, s = this; return i = s.touchObject.startX - s.touchObject.curX, e = s.touchObject.startY - s.touchObject.curY, t = Math.atan2(e, i), (o = Math.round(180 * t / Math.PI)) < 0 && (o = 360 - Math.abs(o)), o <= 45 && o >= 0 ? !1 === s.options.rtl ? "left" : "right" : o <= 360 && o >= 315 ? !1 === s.options.rtl ? "left" : "right" : o >= 135 && o <= 225 ? !1 === s.options.rtl ? "right" : "left" : !0 === s.options.verticalSwiping ? o >= 35 && o <= 135 ? "down" : "up" : "vertical"; }, e.prototype.swipeEnd = function (i) { var e, t, o = this; if (o.dragging = !1, o.swiping = !1, o.scrolling) { return o.scrolling = !1, !1; } if (o.interrupted = !1, o.shouldClick = !(o.touchObject.swipeLength > 10), void 0 === o.touchObject.curX) { return !1; } if (!0 === o.touchObject.edgeHit && o.$slider.trigger("edge", [o, o.swipeDirection()]), o.touchObject.swipeLength >= o.touchObject.minSwipe) { switch (t = o.swipeDirection()) { case "left": case "down": e = o.options.swipeToSlide ? o.checkNavigable(o.currentSlide + o.getSlideCount()) : o.currentSlide + o.getSlideCount(), o.currentDirection = 0; break; case "right": case "up": e = o.options.swipeToSlide ? o.checkNavigable(o.currentSlide - o.getSlideCount()) : o.currentSlide - o.getSlideCount(), o.currentDirection = 1; } "vertical" != t && (o.slideHandler(e), o.touchObject = {}, o.$slider.trigger("swipe", [o, t])); } else { o.touchObject.startX !== o.touchObject.curX && (o.slideHandler(o.currentSlide), o.touchObject = {}); } }, e.prototype.swipeHandler = function (i) { var e = this; if (!(!1 === e.options.swipe || "ontouchend" in document && !1 === e.options.swipe || !1 === e.options.draggable && -1 !== i.type.indexOf("mouse"))) { switch (e.touchObject.fingerCount = i.originalEvent && void 0 !== i.originalEvent.touches ? i.originalEvent.touches.length : 1, e.touchObject.minSwipe = e.listWidth / e.options.touchThreshold, !0 === e.options.verticalSwiping && (e.touchObject.minSwipe = e.listHeight / e.options.touchThreshold), i.data.action) { case "start": e.swipeStart(i); break; case "move": e.swipeMove(i); break; case "end": e.swipeEnd(i); } } }, e.prototype.swipeMove = function (i) { var e, t, o, s, n, r, l = this; return n = void 0 !== i.originalEvent ? i.originalEvent.touches : null, !(!l.dragging || l.scrolling || n && 1 !== n.length) && (e = l.getLeft(l.currentSlide), l.touchObject.curX = void 0 !== n ? n[0].pageX : i.clientX, l.touchObject.curY = void 0 !== n ? n[0].pageY : i.clientY, l.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(l.touchObject.curX - l.touchObject.startX, 2))), r = Math.round(Math.sqrt(Math.pow(l.touchObject.curY - l.touchObject.startY, 2))), !l.options.verticalSwiping && !l.swiping && r > 4 ? (l.scrolling = !0, !1) : (!0 === l.options.verticalSwiping && (l.touchObject.swipeLength = r), t = l.swipeDirection(), void 0 !== i.originalEvent && l.touchObject.swipeLength > 4 && (l.swiping = !0, i.preventDefault()), s = (!1 === l.options.rtl ? 1 : -1) * (l.touchObject.curX > l.touchObject.startX ? 1 : -1), !0 === l.options.verticalSwiping && (s = l.touchObject.curY > l.touchObject.startY ? 1 : -1), o = l.touchObject.swipeLength, l.touchObject.edgeHit = !1, !1 === l.options.infinite && (0 === l.currentSlide && "right" === t || l.currentSlide >= l.getDotCount() && "left" === t) && (o = l.touchObject.swipeLength * l.options.edgeFriction, l.touchObject.edgeHit = !0), !1 === l.options.vertical ? l.swipeLeft = e + o * s : l.swipeLeft = e + o * (l.$list.height() / l.listWidth) * s, !0 === l.options.verticalSwiping && (l.swipeLeft = e + o * s), !0 !== l.options.fade && !1 !== l.options.touchMove && (!0 === l.animating ? (l.swipeLeft = null, !1) : void l.setCSS(l.swipeLeft)))); }, e.prototype.swipeStart = function (i) { var e, t = this; if (t.interrupted = !0, 1 !== t.touchObject.fingerCount || t.slideCount <= t.options.slidesToShow) { return t.touchObject = {}, !1; } void 0 !== i.originalEvent && void 0 !== i.originalEvent.touches && (e = i.originalEvent.touches[0]), t.touchObject.startX = t.touchObject.curX = void 0 !== e ? e.pageX : i.clientX, t.touchObject.startY = t.touchObject.curY = void 0 !== e ? e.pageY : i.clientY, t.dragging = !0; }, e.prototype.unfilterSlides = e.prototype.slickUnfilter = function () { var i = this; null !== i.$slidesCache && (i.unload(), i.$slideTrack.children(this.options.slide).detach(), i.$slidesCache.appendTo(i.$slideTrack), i.reinit()); }, e.prototype.unload = function () { var e = this; i(".slick-cloned", e.$slider).remove(), e.$dots && e.$dots.remove(), e.$prevArrow && e.htmlExpr.test(e.options.prevArrow) && e.$prevArrow.remove(), e.$nextArrow && e.htmlExpr.test(e.options.nextArrow) && e.$nextArrow.remove(), e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", ""); }, e.prototype.unslick = function (i) { var e = this; e.$slider.trigger("unslick", [e, i]), e.destroy(); }, e.prototype.updateArrows = function () { var i = this; Math.floor(i.options.slidesToShow / 2), !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && !i.options.infinite && (i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), 0 === i.currentSlide ? (i.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"), i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : i.currentSlide >= i.slideCount - i.options.slidesToShow && !1 === i.options.centerMode ? (i.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : i.currentSlide >= i.slideCount - 1 && !0 === i.options.centerMode && (i.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"))); }, e.prototype.updateDots = function () { var i = this; null !== i.$dots && (i.$dots.find("li").removeClass("slick-active").end(), i.$dots.find("li").eq(Math.floor(i.currentSlide / i.options.slidesToScroll)).addClass("slick-active")); }, e.prototype.visibility = function () { var i = this; i.options.autoplay && (document[i.hidden] ? i.interrupted = !0 : i.interrupted = !1); }, i.fn.slick = function () { var i, t, o = this, s = arguments[0], n = Array.prototype.slice.call(arguments, 1), r = o.length; for (i = 0; i < r; i++) { if ("object" == typeof s || void 0 === s ? o[i].slick = new e(o[i], s) : t = o[i].slick[s].apply(o[i].slick, n), void 0 !== t) { return t; } } return o; }; }); })(); for (d = 0; d < this.data.dimensions.length; d++) { if (this.data.dimensions[d].usable) { this.data.dimensions[d].matchMedia = window.matchMedia(this.data.dimensions[d].media); this.data.dimensions[d].matchMedia.d = d; if (this.data.dimensions[d].matchMedia.matches) { this.initializeCarousel(this.data.dimensions[d]); } else { initializeOnBreakpoint(this.data.dimensions[d]); } } }}function Carousel_initializeCarousel(e) { const self = this; log("function initializeCarousel executed!"); if (!e.matchMedia.matches) { return; } var dim = e.matchMedia.d; $("#" + self.instance.tagId + " .slick-carousel-dimension" + dim).append(self.buildSlides(dim)); var $c = $("#" + self.instance.tagId + " .slick-carousel:visible"); $c.on("init", function (e) { var $c = $(e.currentTarget), $d = $c.find(".slick-dots"), pp, variance = 5; $c.find("img").each(function (i, o) { var w; function setupImage(o) { var w = o.width(); if (1 < w) { o.css({"max-width": w, "width": "100%", "margin": "auto"}); } else { setTimeout(setupImage, 100, o); } } o = $(o); setupImage(o); }); if (!self.data.hideDots) { $d.prepend("

"); $pp = $c.find(".carousel-play-pause"); if (self.data.autoPlay) { $pp.addClass("carousel-pause").html("pause"); } else { $pp.addClass("carousel-play").html("pause"); } function pause(e) { var $pp = $(e.currentTarget), $c = $pp.closest(".slick-carousel"); $pp.html("play"); $c.slick("slickPause"); $pp.removeClass("carousel-pause"); $pp.addClass("carousel-play"); } $c.on("click", ".carousel-play", function (e) { var $pp = $(e.currentTarget), $c = $pp.closest(".slick-carousel"); $pp.html("pause"); $c.slick("slickPlay"); $pp.removeClass("carousel-play"); $pp.addClass("carousel-pause"); }); $c.on("click", ".carousel-pause", function (e) { pause(e); }); $c.on("click", ".slick-arrow, .slick-dots button", function (e) { var $d = $(e.currentTarget); e.currentTarget = $d.closest(".slick-carousel").find(".carousel-play-pause"); pause(e); }); setTimeout(function () { $d.width($d.width() + variance).css({right: 0, left: 0}); }, 1000); } }); log("self.config:", self.config); $c.slick({dots: self.config.slick.dots, autoplay: self.data.autoPlay, autoplaySpeed: self.data.delayTime, pauseOnHover: self.config.slick.pauseOnHover, slidesToShow: e.slidesToShow, slidesToScroll: e.slidesToScroll, infinite: self.data.infinite});}function Carousel_convertToLinkObj(s) { const self = this; if (!s.hasOwnProperty("link")) { s.link = {}; if (s.hasOwnProperty("linkURL")) { s.link.url = s.linkURL; } if (s.hasOwnProperty("linkText")) { s.link.text = s.linkText; } }}function Carousel_buildSlides(d) { const self = this; var str = ""; for (i = 0; i < self.data.slides.length; i++) { self.convertToLinkObj(self.data.slides[i]); if (self.data.slides[i].imageURL.length > d && "" !== self.data.slides[i].imageURL[d]) { str += "

"; str += "

"; str += "

"; str += "

"; } } return str;}function isNull(v) { return N === v;}function isUndefined(v) { return U === typeof v;}function isBoolean(v) { return B === typeof v;}function isFunction(v) { return F === typeof v;}function isNumber(v) { return "number" === typeof v;}function isString(v) { return S === typeof v;}function isStringEmpty(v) { return E === v;}function isArray(v) { return Array.isArray(v);}function isArrayEmpty(v) { return v.length ? false : true;}function isObject(v) { return O === typeof v;}function isObjectEmpty(v) { var i, c = true; for (i in v) { c = false; break; } return c;}function isObjectNotEmpty(v) { return !isObjectEmpty(v);}function isObjectAndEmpty(v) { return isObject(v) && isObjectEmpty(v);}function isObjectAndNotEmpty(v) { return isObject(v) && isObjectNotEmpty(v);}function isBaseObject(v) { return O === typeof v && N !== v && "Object" === v.constructor.name;}function isBaseObjectAndEmpty(v) { return isBaseObject(v) && isObjectEmpty(v);}function isBaseObjectAndNotEmpty(v) { return isBaseObject() && isObjectNotEmpty(v);}function isEmpty(v) { var i, c; return isNull(v) || isUndefined(v) || isStringEmpty(v) || (isObject(v) && isObjectEmpty(v)) || (isArray(v) && isArrayEmpty(v));}function toBoolean(v, d) { var r = d; if (isUndefined(d) || !isBoolean(d)) { d = false; } if (isNaN(v)) { r = String(!d).toUpperCase() === v.toUpperCase() ? !d : d; } else { r = Number(!d) === v ? !d : d; } return r;}function getUrlParm(url, name) { var str = url, s = str.indexOf(name + "="), e, p, value = ""; if (-1 !== s) { e = str.indexOf("&", s); if (-1 === e) { e = str.length; } p = str.substring(s, e).split("="); if (1 < p.length) { value = p[1]; } } return value;}function addUrlParms(url, parms) { const q = "?", a = "&"; var sep = q, pos = -1, p; if (!url) { url = ""; } pos = url.lastIndexOf(q); if (-1 !== pos) { if (url.length - 1 === pos) { sep = E; } else { sep = a; } } for (p in parms) { if (U !== typeof parms[p] && E !== parms[p]) { url += sep + p + "=" + parms[p]; sep = a; } } return url;}function objPropDef(o, pn, dv, vt, iv, npn) { var i = 1; function isMatch(c, cw, isTyped) { var ret = false, i; if (isFunction(cw)) { ret = cw(c); } else { if (isTyped) { c = typeof c; } if (Array.isArray(cw)) { for (i = 0; i < cw.length; i++) { if (c === cw[i]) { ret = true; break; } } } } return ret; } function isDefault(o, p) { var ret = false; if (o.hasOwnProperty(p) && o[p] !== dv) { if (!isMatch(o[p], vt, true) || isMatch(o[p], iv, false)) { ret = true; } } else { ret = true; } return ret; } if (isString(npn)) { if (isDefault(o, npn)) { if (isDefault(o, pn)) { o[npn] = dv; } else { o[npn] = o[pn]; } } delete o[pn]; } else { if (isDefault(o, pn)) { o[pn] = dv; } }}function jsonClone(json) { const FS = "\u0192s", functions = []; var clone; function replacer(n, v) { var nv = {}; if (isFunction(v)) { nv[FS] = functions.push(v) - 1; v = nv; } return v; } function reviver(n, v) { if (isBaseObject(v) && v.hasOwnProperty(FS)) { v = functions[v[FS]]; } return v; } clone = JSON.parse(JSON.stringify(json, replacer), reviver); return clone;}function jsonCompare(a, b) { return (JSON.stringify(a) === JSON.stringify(b));}function performJsonAjaxRequests(requests, success, failure, requestsData, simulateSendFunc, simTime) { const MIME_TYPE = "application/json"; var reqs = jsonClone(requests), name, ready, rn, co, results = {}, pubsub = {}, isSim = isFunction(simulateSendFunc), allDone = false; requestsData = jsonClone(isBaseObject(requestsData) ? requestsData : {}); if (!isNumber(simTime)) { simTime = 0; } function defaultSimulateSendFunc(request, data, handle) { handle({type: "load", currentTarget: {responseText: JSON.stringify(data)}}); } if (!isSim) { simulateSendFunc = defaultSimulateSendFunc; } function sub(name, func, data) { if (!pubsub[name]) { pubsub[name] = []; } pubsub[name].push({func: func, data: data}); } function pub(name, data) { var subs = pubsub[name], i, s; if (subs) { for (i = 0; i < subs.length; i++) { s = subs[i]; setTimeout(function (s) { s.func(name, data, s.data); }, 0, s); } } } function can(name, func) { var subs = pubsub[name], i, s; if (subs) { for (i = 0; i < subs.length; i++) { s = subs[i]; if (func === s.func) { subs.splice(i, 1); break; } } } } function isRequestReady(ready) { var ret = true, i; function isReadyAnds(ready) { var ret = true, r; if (Object.keys(ready).length) { for (r in ready) { if (results[r]) { if (ready[r] !== results[r].success) { ret = -1; break; } } else { ret = false; break; } } } return ret; } function isReadyOrs(ready) { var ret = true; if (ready.length) { for (i = 0; i < ready.length; i++) { ret = isReadyAnds(ready[i]); if (-1 < ret) { if (ret) { break; } } else { ready.splice(i--, 1); } } if (0 > ret) { if (0 < i) { ret = false; } else { ret = -1; } } } else { ret = -1; } return ret; } if (!isUndefined(ready) && !isNull(ready)) { if (isArray(ready)) { ret = isReadyOrs(ready); } else { if (isObject(ready)) { ret = isReadyAnds(ready); } else { if (isFunction(ready)) { ret = ready(jsonClone(results)); } else { if (isBoolean(ready)) { ret = ready ? true : -1; } } } } } return ret; } function mapData(request, resultsData) { var map = request.map, requestData = requestsData[request.name], pName, resName, resResults; if (map && isFunction(map)) { if (!requestData) { requestData = requestsData[request.name] = {}; } map(requestData, jsonClone(resultsData)); } else { if (isObjectAndNotEmpty(request.subscribes) && isObjectNotEmpty(resultsData) && isObject(requestData)) { for (pName in requestData) { if (isUndefined(requestData[pName])) { for (resName in resultsData) { resResults = resultsData[resName].out; if (resResults.hasOwnProperty(pName) && !isUndefined(resResults[pName])) { requestData[pName] = resResults[pName]; } } } } } } } function isRetry(retry, status, type) { var ret = false, wt; function isCount(retry) { var ret = false; if (isNumber(retry.max)) { if (0 < retry.max) { if (!retry.count) { retry.count = 0; } if (retry.count < retry.max) { ret = true; } } } else { ret = true; } return ret; } function isStatus(s, status) { var ret = false; if (isNumber(s)) { if (status === s) { ret = true; } } else { if (isArray(s)) { if (-1 !== s.indexOf(status)) { ret = true; } } } return ret; } if (retry) { if (isCount(retry)) { if (isObject(retry.when)) { if (retry.when.status) { ret = isStatus(retry.when.status, status); } if (!ret && (wt = retry.when[type])) { if (wt) { if (isBoolean(wt)) { ret = wt; } else { ret = isStatus(retry.when[type], status); } } } } else { ret = true; } } } return ret; } function makeRequest(request, data) { const MG = "GET", MP = "POST", cache = jsonAjaxResponseCache, pending = jsonAjaxInProgressRequests; var n, req = new XMLHttpRequest(), rname = request.name; function sets(target, method, sets) { var name; if (sets) { for (name in sets) { target[method](name, sets[name]); } } } function handle(e, fromCache) { var result, target = e.currentTarget || e.target || e.srcElement, responseText = target.responseText, reqStatus = isSim ? e.status : req.status; function isSuccess(e, r) { var ret = true; if (isFunction(request.isSuccess)) { ret = request.isSuccess(e, r); } return ret; } if (isRetry(request.retry, reqStatus, e.type)) { setTimeout(makeRequest, 0, request, data); } else { if (pending.hasOwnProperty(request.url) && pending[request.url].request === request) { delete pending[request.url]; } result = results[rname] = {}; result.fromCache = (!!fromCache); if (requestsData[rname]) { result.in = requestsData[rname]; } if ("load" === e.type) { try { result.out = JSON.parse(responseText); if (isSuccess(e, result.out)) { if (!fromCache) { saveResponse(request, data, e); } result.success = true; if (isFunction(request.success)) { setTimeout(request.success, 0, results); } } else { result.success = false; result[e.type] = req.status; result.event = e; } } catch (e) { result.success = false; result.required = request.required; result.parse = "Invalid Json Body!"; result.event = e; if (isFunction(request.failure)) { setTimeout(request.failure, 0, results); } } } else { result.success = false; result.required = request.required; result[e.type] = req.status; result.event = e; if (isFunction(request.failure)) { setTimeout(request.failure, 0, results); } } pub(rname, request); } } function saveResponse(request, data, e) { if (request.cache && request._url && "" !== request._url) { log("storing response to cache:", request, e); cache[request._url] = {e: e, data: data, time: new Date().getTime()}; } } function isCached(request) { var ret = false, time = new Date().getTime(); if (request.cache && cache.hasOwnProperty(request._url)) { if (jsonCompare(cache[request._url].data, data)) { log("request.cache:", request.cache, "cache[request._url].time:", cache[request._url].time, "+=", cache[request._url].time + request.cache, "time:", time); if (0 > request.cache || cache[request._url].time + request.cache > time) { log("response cache used, request:", request, "response:", jsonClone(cache[request._url].e)); handle(cache[request._url].e, true); ret = true; } else { log("deleting cache for request:", request, jsonClone(cache[request._url])); delete cache[request._url]; } } } return ret; } function addHandlers(req) { req.addEventListener("load", handle); req.addEventListener("error", handle); req.addEventListener("abort", handle); req.addEventListener("timeout", handle); } if (request.url && "" !== request.url) { if (pending.hasOwnProperty(request.url) && jsonCompare(pending[request.url].data, data)) { log("batch pending: found match!", request.url, "hold!"); addHandlers(pending[request.url].req); request.held = true; } else { if (!request.method) { request.method = MG; } if (MG === request.method) { request._url = addUrlParms(request.url, data); } else { request._url = request.url; } if (!isCached(request)) { if (isSim) { setTimeout(simulateSendFunc, 0, request, data, handle); } else { req.overrideMimeType("application/json"); addHandlers(req); sets(req, "addEventListener", request.handlers); req.open(request.method, request._url); sets(req, "setRequestHeader", request.headers); if (0 < request.timeout) { req.timeout = request.timeout; } if (MG === request.method) { try { req.send(); pending[request.url] = {request: request, data: data, req: req}; } catch (e) { log("req.send() Exception:", e); } } else { if (MP === request.method) { req.setRequestHeader("Content-Type", "application/json"); try { req.send(JSON.stringify(data)); pending[request.url] = {request: request, data: data, req: req}; } catch (e) { log("req.send() Exception:", e); } } else { log("Invalid request method.", "request:", request); } } } } } } else { setTimeout(defaultSimulateSendFunc, 0, request, data, handle); } } function performRequest(request, requestsData) { var isReady = false; isReady = isRequestReady(request._ready); if (-1 === isReady) { results[request.name] = {success: false, ready: request._ready}; if (isFunction(request.failure)) { setTimeout(request.failure, 0, results); } pub(request.name, request); } else { if (isReady) { mapData(request, results); makeRequest(request, requestsData[request.name]); } } } function startBatch(requests, requestsData) { var name, i, keys, request; function extractSubscribes(ready) { var subs = {}, i; function add(obj) { var keys = obj, i; if (!isArray(obj)) { keys = Object.keys(obj); } for (i = 0; i < keys.length; i++) { subs[keys[i]] = true; } } if (ready) { if (isArray(ready)) { for (i = 0; i < ready.length; i++) { add(ready[i]); } } else { if (isObject(ready)) { add(ready); } else { if (isFunction(ready)) { if (ready.subs) { add(ready.subs); } else { add(requests); } } } } } return subs; } function publish(name, pubData, subData) { can(name, publish); performRequest(subData, requestsData); } function checkDone(name, pubData, subData) { var isDone = true, isSuccess = true; if (allDone) { return; } for (name in requests) { if (!results[name]) { isDone = false; break; } } if (isDone) { allDone = true; pubsub = {}; for (name in requests) { if (requests[name].required && !results[name].success) { isSuccess = false; break; } } if (isSuccess) { success(results, requests); } else { failure(results, requests); } } } for (name in requests) { request = requests[name]; request.name = name; if (!isNumber(request.cache)) { request.cache = 0; } objPropDef(request, "required", true, ["boolean"]); if (request.hasOwnProperty("ready")) { request._ready = jsonClone(request.ready); } request.subscribes = extractSubscribes(request._ready); keys = Object.keys(request.subscribes); for (i = 0; i < keys.length; i++) { sub(keys[i], publish, request); } sub(name, checkDone, requests[name]); } for (name in requests) { performRequest(requests[name], requestsData); } } startBatch(reqs, requestsData);}function pad(val, count, str) { var i; val = "" + val || ""; count = count || 0; str = "" + str || ""; if (0 > count) { count = -count; for (i = val.length; i < count; i++) { val = val + str; } } else { for (i = val.length; i < count; i++) { val = str + val; } } return val;}function createId(type) { var c = config.ids, pre = c.prefix, sep = c.separator, td = c.type, sd = c.system, system, date = new Date(), id; type = onEtoVal(type, td); type = pad(type, -3, c.pad).substr(-0, 3).toUpperCase(); system = pad(sd, -3, c.pad).substr(-0, 3).toUpperCase(); id = pre + sep + type + sep + system + pad(date.getTime(), 16, "0") + pad(nextId++, 16, "0"); return id;}function onNtoE(v) { return N === v ? E : v;}function onEtoVal(v, val) { return E === v ? val : v;}function log() { var d, s, i; if (!DEBUG) { return; } d = "componentManager:"; s = "console.log(d"; for (i = 0; i < arguments.length; i++) { s += ",arguments[" + i + "]"; } s += ");"; eval(s);}function newInstance(cName, cData, cConfig) { var instance = null, template = {}; if (U === typeof cConfig) { cConfig = {}; } if (cNames.hasOwnProperty(cName)) { instance = {}; template = cNames[cName]; copyObject(instance, template); instance.data = mergeObjects(instance.default.data, cData); instance.config = mergeObjects(instance.default.config, cConfig); if (!template.hasOwnProperty("class")) { template["class"] = {}; } instance["class"] = template["class"]; } else { log("ERROR:", "Definition for component", cName, "NOT found!"); } return instance;}function buildStyle(style, parents) { const E = "", S = " "; var a, p, str = "", sep = "", pre = style.pre, sel = style.sel, post = style.post, attr = style.attr; function buildAttrString(attr) { var a, str = ""; for (a in attr) { str += a + ":" + attr[a] + ";"; } return str; } if (isEmpty(attr) || !isObject(attr) && !isArray(attr)) { return E; } if (isEmpty(parents)) { parents = E; } if (isEmpty(pre)) { pre = E; } if (isEmpty(sel)) { sel = E; } if (isEmpty(post)) { post = E; } if (isString(sel)) { str += parents + S + pre + (isStringEmpty(pre) ? E : S) + sel + (isStringEmpty(sel) ? E : S) + post; } else { if (isArray(sel)) { for (p = 0; p < sel.length; p++) { str += sep + parents + S + pre + (isStringEmpty(pre) ? E : S) + sel[p] + (isStringEmpty(sel[p]) ? E : S) + post; sep = ","; } } } if (isStringEmpty(str)) { return E; } str += "{"; if (isArray(attr)) { for (p = 0; p < attr.length; p++) { str += buildAttrString(attr[p]); } } else { str += buildAttrString(attr); } str += "}"; return str;}function buildTagString(tag) { var tstr = "", astr = "", cstr = "", a, p; if (tag.hasOwnProperty("content") && isString(tag.content)) { cstr += tag.content; } else { if (isArray(tag.content)) { } } if (tag.hasOwnProperty("name") && isString(tag.name) && !isStringEmpty(tag.name)) { if (tag.hasOwnProperty("attr") && isObject(tag.attr)) { for (a in tag.attr) { astr += " " + a + "=\"" + tag.attr[a] + "\""; } } if (tag.hasOwnProperty("prop") && isObject(tag.prop)) { for (p in tag.prop) { if (tag.prop[p]) { astr += " " + p; } } } tstr += "<" + tag.name + astr + ">" + cstr + "" + tag.name + ">"; } return tstr;}function buildComponentTag(contentFunc) { const _self = this; var tagId, html = ""; if (!_self.instance || !_self.instance.tagId) { tagId = createId("COM"); _self.instance = {tagId: tagId}; } else { tagId = _self.instance.tagId; } html += "

"; if (contentFunc) { html += contentFunc.call(_self); } html += "

"; return html;}function copyObjectNameMapDefault(sourceName, sourceValue) { return sourceName;}function copyObject(d, s, nameMap) { var j, k, js, stack = []; if ("function" !== typeof nameMap) { nameMap = copyObjectNameMapDefault; } stack.push({s: s, d: d}); while (0 < stack.length) { p = stack.pop(); s = p.s; d = p.d; for (j in s) { js = nameMap(j, s[j]); if ("string" === typeof s[j]) { d[js] = s[j]; } else { if ("object" === typeof s[j]) { if (Array.isArray(s[j])) { if (U === typeof d[js]) { d[js] = []; } for (k = 0; k < s[j].length; k++) { if ("string" === typeof s[j][k]) { d[js][k] = s[j][k]; } else { if ("object" === typeof s[j][k]) { if (U === typeof d[js][k]) { if (Array.isArray(s[j][k])) { d[js][k] = []; } else { d[js][k] = {}; } } } } stack.push({s: s[j][k], d: d[js][k]}); } } else { if (U === typeof d[j]) { d[js] = {}; } stack.push({s: s[j], d: d[js]}); } } else { d[js] = s[j]; } } } }}function mergeObjects() { var i = 0, n, r = {}, p; for (i = 0; i < arguments.length; i++) { n = arguments[i]; copyObject(r, n); } return r;}function persist() { var _self = this; if (!coms.hasOwnProperty(_self.instance.tagId)) { coms[_self.instance.tagId] = _self; }}function Bopis_html() { const _self = this; var f, str = ""; f = _self.config.feature; if (_self.config.features.hasOwnProperty(f)) { _self.feature = _self.config.features[f]; if (_self.hasOwnProperty(f) && _self.isFunction(_self[f])) { str += _self[f](); } } return str;}function Bopis_getDeliveryConfigBatch(callback) { const _self = this; const SP = "sitePreferences", DC = "deliveryConfig"; const AS = [S], AB = [B]; const batch = {}; batch[SP] = {"url": _self.baseAjaxUrl + "SitePreferences-GetPreferencesJSON?prefcontext=deliveryOptions", "cache": 60000}; batch[DC] = {"url": _self.baseAjaxUrl + "Stores-DeliveryConfig", "cache": 1800000}; _self.performJsonAjaxRequests(batch, function (r, rq) { var d, n, data = {}; function merge(d, s) { var n; for (n in s) { d[n] = s[n]; } } merge(data, r[SP].out); merge(data, r[DC].out); _self.objPropDef(data, "storeId", E, AS); _self.objPropDef(data, "zipCode", E, AS); _self.objPropDef(data, "sddZipCode", E, AS); _self.objPropDef(data, "StoreInventoryService", "dom", AS, null, "storeInvService"); _self.objPropDef(data, "FIND_IN_STORE_ENABLE", _self.default.data.fisEnabled, AB, null, "fisEnabled"); _self.objPropDef(data, "enableStorePickUp", _self.default.data.bopisEnabled, AB, null, "bopisEnabled"); _self.objPropDef(data, "enableSameDayDeliveryPDP", _self.default.data.sddEnabled, AB, null, "sddEnabled"); _self.objPropDef(data, "useSFCCforStoreInv", false, AB, null, "storeInvSfccOnly"); objPropDef(data, "BOPISPickupReadyHours", 4, ["number"], null, "readyHours"); if (_self.isFunction(callback)) { try { callback(data); } catch (e) { log("Exception:", e); } } }, function (r) { log("getDeliveryConfigBatch failure: results:", r); });}function Bopis_getStoresByZipPidBatch(pid, orin, zip, sddZip, sddStoreId, callback) { const _self = this; const prod = "www.belk.com", dev = "www.belkdev.com"; var host = prod; if (prod !== window.location.host) { host = dev; } const batch = {deliveryConfig: {url: _self.baseAjaxUrl + "Stores-DeliveryConfig", "cache": 1800000, required: false}, storesCall: {url: _self.baseAjaxUrl + "Stores-GetStoresByZip", "cache": 60000, required: false}, inventoryCall: {url: "https://" + host + "/inventory/" + _self.data.storeInvService, method: "POST", required: false, "cache": 60000, timeout: 3000, ready: {storesCall: true}, map: function (dest, results) { const source = results.storesCall.out; var i; dest.stores = []; for (i = 0; i < source.length; i++) { dest.stores[i] = source[i].storeId; } }, isSuccess: function (e, r) { var ret = true; if (r.statusCode) { log("statusCode in inventory response:", r); ret = false; } if (!r.hasOwnProperty(pid)) { log("missing pid", pid, " in inventory response:", r); ret = false; } return ret; }}, backupCall: {url: _self.baseAjaxUrl + "StoreInventory-RedesignInventory", "cache": 60000, required: false, ready: [{storesCall: false}, {inventoryCall: false}]}, successNode: {ready: [{storesCall: true, inventoryCall: true}, {backupCall: true}], required: true, map: function (dest, r) { var id, n, o; if (r.deliveryConfig.success) { for (n in r.deliveryConfig.out) { dest[n] = r.deliveryConfig.out[n]; } objPropDef(dest, "BOPISPickupReadyHours", 4, ["number"], null, "readyHours"); } if (r.storesCall.success && r.inventoryCall.success) { dest.stores = r.storesCall.out; for (n = 0; n < dest.stores.length; n++) { dest.stores[n].id = dest.stores[n].storeId; delete dest.stores[n].storeId; } if (r.inventoryCall.out[pid]) { o = r.inventoryCall.out[pid]; for (n = 0; n < dest.stores.length; n++) { id = dest.stores[n].id; if (o.hasOwnProperty(id)) { dest.stores[n].quantity = o[id]; if (0 < o[id]) { dest.success = true; } } else { dest.stores[n].quantity = 0; } } } else { for (n = 0; n < dest.stores.length; n++) { dest.stores[n].quantity = 0; } } _self.fixStoreData(dest); if (E !== sddStoreId) { for (n = 0; n < dest.stores.length; n++) { if (sddStoreId === dest.stores[n].id) { dest.sddStore = dest.stores[n]; break; } } } } else { if (r.backupCall.success) { for (n in r.backupCall.out) { dest[n] = r.backupCall.out[n]; } } else { log("getStoresByZipPidBatch successNode reach with invalid data."); } } }}}, data = {storesCall: {zipCode: zip, sddZipCode: sddZip, sddStore: sddStoreId}, inventoryCall: {items: [{pid: pid, orin: orin}]}, backupCall: {pid: pid, zipCode: zip, sddZip: sddZip, sddStoreId: sddStoreId}}; function suc(r, rq) { var data = r.successNode.out, parms = {pid: pid, orin: orin, zip: zip, sddZip: sddZip, sddStoreId: sddStoreId}; if (_self.isFunction(callback)) { try { callback(parms, data); } catch (e) { log("Exception:", e); } } } function fai(r) { log("batch failure: results:", r); } if (_self.data.storeInvSfccOnly) { batch.storesCall.ready = false; batch.inventoryCall.ready = false; } _self.performJsonAjaxRequests(batch, suc, fai, data);}function Bopis_validateData(cData) { const _self = this; var valid = {productOnlineOnly: false, bopisEnabled: false, findInStoreEnabled: false, curbSidePickupEnabled: false, bopisProduct: false, bopisSku: false, zip: false, storeId: false, skuId: false, productInStock: false, skuStockLevel: false, surchargeAmount: false, isPreOrderEnabled: false, showPreOrder: false, isQuickView: false, releaseDate: false, preOrderPromoId: false, preOrderPromoDetails: false, storeSearchDistance: false}, allValid = false; if (!_self.isBoolean(cData.productOnlineOnly)) { cData.bopisEnabled = _self.toBoolean(cData.bopisEnabled, _self.default.data.productOnlineOnly); } if (_self.isBoolean(cData.productOnlineOnly)) { valid.productOnlineOnly = true; } if (!_self.isBoolean(cData.bopisEnabled)) { cData.bopisEnabled = _self.toBoolean(cData.bopisEnabled, _self.default.data.bopisEnabled); } if (_self.isBoolean(cData.bopisEnabled)) { valid.bopisEnabled = true; } if (!_self.isBoolean(cData.findInStoreEnabled)) { cData.findInStoreEnabled = _self.toBoolean(cData.findInStoreEnabled, _self.default.data.findInStoreEnabled); } if (_self.isBoolean(cData.findInStoreEnabled)) { valid.findInStoreEnabled = true; } if (_self.isBoolean(cData.curbSidePickupEnabled)) { valid.curbSidePickupEnabled = true; } if (!_self.isBoolean(cData.bopisProduct)) { cData.bopisProduct = _self.toBoolean(cData.bopisProduct, _self.default.data.bopisProduct); } if (_self.isBoolean(cData.bopisProduct)) { valid.bopisProduct = true; } if (!_self.isBoolean(cData.bopisSku)) { cData.bopisSku = _self.toBoolean(cData.bopisSku, _self.default.data.bopisSku); } if (_self.isBoolean(cData.bopisSku)) { valid.bopisSku = true; } if (!_self.isString(cData.zip)) { cData.zip = new String(cData.zip); } if (5 !== cData.zip.length) { cData.zip = cData.zip.substring(0, 5); } if (_self.isStringEmpty(cData.zip) || !isNaN(cData.zip) && (5 === cData.zip.length)) { valid.zip = true; } if (_self.isNumber(cData.storeId)) { cData.storeId = new String(cData.storeId); } if (!_self.isString(cData.storeId) || isNaN(cData.storeId)) { cData.storeId = _self.default.data.storeId; } if (_self.isString(cData.storeId) && !isNaN(cData.storeId)) { valid.storeId = true; } if (_self.isNumber(cData.skuId)) { cData.skuId = new String(cData.skuId); } if (!_self.isString(cData.skuId)) { cData.skuId = _self.default.data.skuId; } if (_self.isString(cData.skuId)) { valid.skuId = true; } if (!_self.isBoolean(cData.productInStock)) { cData.productInStock = _self.toBoolean(cData.productInStock, _self.default.data.productInStock); } if (_self.isBoolean(cData.productInStock)) { valid.productInStock = true; } if (!_self.isNumber(cData.skuStockLevel) && !isNaN(cData.skuStockLevel)) { cData.skuStockLevel = Number(cData.skuStockLevel); } if (_self.isNumber(cData.skuStockLevel)) { valid.skuStockLevel = true; } if (_self.isNumber(cData.surchargeAmount)) { valid.surchargeAmount = true; } if (_self.isBoolean(cData.isPreOrderEnabled)) { valid.isPreOrderEnabled = true; } if (_self.isBoolean(cData.showPreOrder)) { valid.showPreOrder = true; } if (_self.isBoolean(cData.isQuickView)) { valid.isQuickView = true; } if (_self.isString(cData.releaseDate)) { valid.releaseDate = true; } if (_self.isString(cData.preOrderPromoId)) { valid.preOrderPromoId = true; } if (_self.isString(cData.preOrderPromoDetails)) { valid.preOrderPromoDetails = true; } if (_self.isNumber(cData.storeSearchDistance)) { valid.storeSearchDistance = true; } else { cData.storeSearchDistance = _self.default.data.storeSearchDistance; } for (i in valid) { if (valid[i]) { allValid = true; } else { allValid = false; break; } } return allValid ? true : valid;}function Bopis_reset() { const _self = this; _self.error = false; _self.searchResults = {}; _self.copyObject(_self.searchResults, _self.default.config.init.searchResults); _self.stores = []; _self.hasPreOrderResponse = false; _self.shipPromoMsg = ""; _self.isShipPromoMsg = false; _self.selectedStoreIds = [];}function Bopis_plp() { const _self = this; var str = "", storeName = _self.config.messaging.selectStore, ids = "", i, urlStoreId = "", mm = window.matchMedia("(max-width:767px)"); if (isUndefined(_self.config.messaging.bopis) || !isString(_self.config.messaging.bopis) || isStringEmpty(_self.config.messaging.bopis)) { _self.config.messaging.bopis = _self.default.config.messaging.bopis; } _self.checked = false; if (-1 !== window.location.href.indexOf("searchType=FreePickup")) { _self.checked = true; } function buildBopisPromoMsg() { return "" + _self.promoMsg + ""; } function build() { var str = "", isStore = !_self.isObjectEmpty(_self.data.store), bopisPromoAssetID = window.SitePreferences.BOPIS_CLEARANCE_COUPON_ENABLED ? "bopis-clearance-promo" : "bopis-promo-messaging"; str += "" + _self.config.messaging.bopis + _self.pickupTodayOrTomorrow(); if (1 < _self.selectedStoreIds.length) { storeName = _self.config.messaging.atStoresX.replace("X", _self.selectedStoreIds.length); } else { if (isStore) { storeName = _self.data.store.name; } } str += " " + _self.buildStoreSelectionToggle(storeName); str += ""; str += "
"; str += ""; if (!_self.isStringEmpty(_self.promoMsg)) { str += buildBopisPromoMsg(); } else { _self.getBopisPromoMessaging(bopisPromoAssetID, function (data) { if (data.hasOwnProperty("isOnline") && data.isOnline && data.hasOwnProperty("assetContent") && !_self.isStringEmpty(data.assetContent)) { _self.promoMsg = data.assetContent; $("#" + _self.instance.tagId + " .promo").html(buildBopisPromoMsg()); } }); } str += ""; const newMoveSel = "#bopis-pickup"; const oldMoveSel = "#secondary"; var moveToSel = newMoveSel; if (!window.facetNav || !window.facetNav.nav) { moveToSel = oldMoveSel; } var moveTryCount = 0; var toi = null; function startMoveTo(obj, toSel) { if (toi) { clearTimeout(toi); toi = null; } moveTo(obj, toSel); } function moveTo(obj, toSel) { var to = document.querySelector(toSel), plp; if (!_self.isNull(to)) { to.prepend(obj); _self.addStoreSelectionHandlers(); switch (toSel) { case oldMoveSel: case newMoveSel: $("#results-products").css({width: "auto"}); $(".bopis-filter-options").css({display: "none"}); plp = comp.querySelector(".plp"); plp.classList.add("facet"); if (oldMoveSel === moveToSel) { plp.classList.add("wrap"); } break; default: $("#results-products").css({width: ""}); $(".bopis-filter-options").css({display: ""}); plp = comp.querySelector(".plp"); plp.classList.remove("facet"); if (oldMoveSel === moveToSel) { plp.classList.remove("wrap"); } } } else { if (newMoveSel === moveToSel) { moveTryCount++; if (moveTryCount > 20) { moveToSel = oldMoveSel; toSel = moveToSel; } } toi = setTimeout(moveTo, 50, obj, toSel); } } var noMove = true; var comp = document.querySelector("#" + _self.instance.tagId); if (_self.feature.moveToLeftOnDesktop) { mm.addListener(function bpchange(e) { var comp = document.querySelector("#" + _self.instance.tagId); if (!comp) { mm.removeListener(bpchange); if (toi) { clearTimeout(toi); toi = null; } return; } if (noMove !== e.matches) { noMove = e.matches; if (noMove) { startMoveTo(comp, ".bopis-filter-options"); } else { startMoveTo(comp, moveToSel); } } }); noMove = mm.matches; } if (!_self.isNull(comp)) { $(comp).find(".plp .center-vert").html(str); _self.addStoreSelectionHandlers(); if (!noMove) { startMoveTo(comp, moveToSel); } } } function getStores(zip) { var found = {}; if (!_self.isStringEmpty(zip)) { _self.getStoresByZip(zip, function (zip, data) { var i; _self.log("getStoresByZip with zip:", zip, " returned data:", data); if (_self.isObject(data) && data.hasOwnProperty("success") && data.success) { _self.data.zip = zip; _self.stores = data.stores; if (data.hasOwnProperty("readyHours") && _self.isNumber(data.readyHours)) { _self.readyHours = data.readyHours; } if (data.hasOwnProperty("pickupToday") && _self.isBoolean(data.pickupToday)) { _self.pickupToday = data.pickupToday; } if (data.hasOwnProperty("pickupDay") && _self.isString(data.pickupDay)) { _self.data.pickupDay = data.pickupDay; } if (0 === _self.selectedStoreIds.length) { if (!_self.isArrayEmpty(_self.stores)) { found = _self.findFirstBopisStore(); } if (!_self.isUndefined(found.store)) { _self.data.store = found.store; _self.selectedStoreIds.push(found.store.id); } else { _self.data.store = {}; } } else { if (!_self.isArrayEmpty(_self.stores)) { for (i = 0; i < _self.selectedStoreIds.length; i++) { found = _self.findStore(_self.selectedStoreIds[i]); if (!found.hasOwnProperty("store") || !found.store.hasOwnProperty("bopis") || !found.store.bopis) { _self.selectedStoreIds.splice(i--, 1); } } found = {}; if (0 !== _self.selectedStoreIds.length) { found = _self.findStore(_self.selectedStoreIds[0]); } } if (found.hasOwnProperty("store") && found.store.hasOwnProperty("bopis") && found.store.bopis) { _self.data.store = found.store; } else { _self.data.store = {}; } } } build(); }); } else { _self.data.zip = zip; build(); } } urlStoreId = _self.getUrlParm(window.location.href, "storeId"); if (!_self.isStringEmpty(urlStoreId)) { ids = decodeURIComponent(urlStoreId); } else { if (window.hasOwnProperty("User") && window.User.hasOwnProperty("storeId") && !_self.isNull(window.User.storeId)) { ids = window.User.storeId; } } if (!_self.isStringEmpty(ids)) { ids = ids.split("|"); for (i = 0; i < ids.length; i++) { _self.selectedStoreIds.push(ids[i]); } } function closePopper(e) { var $t = $(e.target), $p; if (_self["class"].ignoreNextClosePopperSelf === _self) { _self["class"].ignoreNextClosePopperSelf = null; return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .as-link").length) { return; } if ("filterByStorePickup" === $t.attr("for")) { return; } $p = $t.closest("#" + _self.instance.tagId + " .popper"); if (0 === $p.length) { if (_self.isPopperOpen) { _self.hidePopper(); } } } window.libs.notify.api.request(["jquery-ready"], function () { const ENS = "click." + _self.component.class + ".popper"; var zip, $B = $("body"); $B.off(ENS); $B.on(ENS, closePopper); if (_self.isStringEmpty(_self.data.zip)) { _self.getDeliveryConfigBatch(function (data) { if (!_self.isObjectEmpty(data)) { _self.data.bopisEnabled = data.bopisEnabled; _self.data.findInStoreEnabled = data.fisEnabled; _self.data.storeId = data.storeId; if ("" !== data.zipCode) { zip = data.zipCode; getStores(zip); } else { getStores(_self.data.zip); } } else { build(); } }); } else { getStores(_self.data.zip); } }); document.addEventListener("brdata_ready", function (e) { const checked = (-1 !== window.location.href.indexOf("searchType=FreePickup")); _self.update({checked: checked}); }); str += "

"; return str;}function Bopis_pdp() { const _self = this; const zipClass = "select-zip"; var valid, str = "", e, pid = "", zip = ""; valid = _self.validateData(_self.data); log("data valid:", valid); if (isUndefined(_self.config.messaging.bopis) || !isString(_self.config.messaging.bopis) || isStringEmpty(_self.config.messaging.bopis)) { _self.config.messaging.bopis = _self.default.config.messaging.bopis; } pid = _self.data.skuId; _self.objPropDef(_self.data, "skuOrin", "", ["string"]); orin = _self.data.skuOrin; zip = _self.data.zip; function closePopper(e) { if (_self.ignoreNextClosePopper) { _self.ignoreNextClosePopper = false; return; } var $t = $(e.target), $p = $t.closest("#" + _self.instance.tagId + " .popper"); if (0 !== $t.filter("#" + _self.instance.tagId + " .as-link").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .rradio").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .rcheckbox").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .vlabel").length) { return; } if ($t.hasClass("rradio")) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " #receive-option-pickup").length) { return; } if (0 === $p.length) { if (_self.isPopperOpen) { _self.hidePopper(); } } } function build() { var $C = $("#" + _self.instance.tagId); $C.find(".pdp").html(_self.buildPDP()); $C.find(".reserve-space").removeClass("reserve-space"); _self.addOutlineHandlers(); _self.addStoreSelectionHandlers(); _self.addPDPZipSelectionHandlers(); } function getStores(pid, orin, zip, sddZip, sddStoreId) { var found = {}; if (_self.isUndefined(pid)) { pid = ""; } if (_self.isUndefined(orin)) { orin = ""; } if (_self.isUndefined(zip)) { zip = ""; } if (_self.isUndefined(sddZip)) { sddZip = ""; } if (_self.isUndefined(sddStoreId)) { sddStoreId = ""; } if (!_self.isStringEmpty(pid) && (_self.data.findInStoreEnabled && !_self.isStringEmpty(zip) || !_self.isStringEmpty(sddZip) && !_self.isStringEmpty(sddStoreId))) { if (_self.isStringEmpty(sddStoreId)) { sddZip = ""; } else { if (_self.isStringEmpty(sddZip)) { sddStoreId = ""; } } _self.getStoresByZipPidBatch(pid, orin, zip, sddZip, sddStoreId, function (parms, data) { if (_self.isObject(data) && data.hasOwnProperty("success") && data.success) { _self.data.skuId = parms.pid; _self.data.zip = parms.zip; if (data.hasOwnProperty("stores")) { _self.stores = data.stores; } if (data.hasOwnProperty("readyHours")) { _self.readyHours = data.readyHours; } if (data.hasOwnProperty("pickupToday")) { _self.pickupToday = data.pickupToday; } if (data.hasOwnProperty("pickupDay") && _self.isString(data.pickupDay)) { _self.data.pickupDay = data.pickupDay; } if (data.hasOwnProperty("sddStore")) { _self.data.sddStore = data.sddStore; _self.data.sddStoreId = _self.data.sddStore.id; } if (data.hasOwnProperty("sameDay")) { _self.data.sddSameDay = data.sameDay; } if (!_self.isArrayEmpty(_self.stores)) { if (!_self.isNull(_self.data.preferredStoreId)) { found = _self.findStore(_self.data.preferredStoreId); } else { if (!_self.isObjectEmpty(_self.data.store)) { found = _self.findStore(_self.data.store.id); } } } if (!_self.isUndefined(found.store)) { _self.data.store = found.store; _self.data.storeId = _self.data.store.id; } else { if (0 < _self.stores.length) { _self.data.store = _self.stores[0]; _self.data.storeId = _self.data.store.id; } } if (_self.isObjectEmpty(_self.data.store) || !_self.data.store.bopis || 0 === _self.data.store.quantity) { _self.searchResults = _self.searchStores(_self.stores); if (_self.searchResults.bopis) { _self.data.store = _self.searchResults.store; _self.data.storeId = _self.data.store.id; } } } build(); }); } else { _self.data.zip = zip; build(); } } window.libs.notify.api.request(["jquery-ready"], function () { const ENS = "click." + _self.component.class + ".popper"; var $B = $("body"); $B.off(ENS); $B.on(ENS, closePopper); if (_self.isStringEmpty(_self.data.zip)) { _self.getDeliveryConfigBatch(function (data) { if (!_self.isObjectEmpty(data)) { _self.data.bopisEnabled = data.bopisEnabled; _self.data.findInStoreEnabled = data.fisEnabled; _self.data.storeId = data.storeId; _self.data.preferredStoreId = _self.data.storeId; _self.data.zip = data.zipCode; _self.data.sddEnabled = data.sddEnabled; _self.data.sddZip = data.sddZipCode; _self.data.storeInvService = data.storeInvService; _self.data.storeInvSfccOnly = data.storeInvSfccOnly; if (_self.data.sddEnabled && E !== _self.data.sddZip) { _self.getSddStore(function (data) { if (!_self.isObjectEmpty(data) && data.hasOwnProperty("store") && !_self.isStringEmpty(data.store)) { _self.data.sddStoreId = data.store; } getStores(pid, _self.data.skuOrin, _self.data.zip, _self.data.sddZip, _self.data.sddStoreId); }); } else { getStores(pid, _self.data.skuOrin, _self.data.zip); } } else { build(); } }); } else { getStores(pid, _self.data.skuOrin, _self.data.zip, _self.data.sddZip, _self.data.sddStoreId); } }); _self.persist(); str += "

"; return str;}function Bopis_bag() { const _self = this; var valid, str = ""; if (!_self.class.hasOwnProperty("isClosePoppers")) { _self.class.isClosePoppers = false; } if (!_self.class.hasOwnProperty("ignoreNextClosePopperSelf")) { _self.class.ignoreNextClosePopperSelf = null; } _self.readyHours = 4; _self.pickupToday = false; if (!_self.isUndefined(_self.data.readyHours) && _self.isNumber(_self.data.readyHours)) { _self.readyHours = _self.data.readyHours; } if (!_self.isUndefined(_self.data.pickupToday) && _self.isBoolean(_self.data.pickupToday)) { _self.pickupToday = _self.data.pickupToday; } if (!_self.isString(_self.data.pickupDay)) { _self.data.pickupDay = ""; } if (isUndefined(_self.config.messaging.bopis) || !isString(_self.config.messaging.bopis) || isStringEmpty(_self.config.messaging.bopis)) { _self.config.messaging.bopis = _self.default.config.messaging.bopis; } if (!_self.data.hasOwnProperty("sessionZip")) { _self.data.sessionZip = ""; } function closePoppers(e) { var $t = $(e.target), ignoreSelf = null, pid = ""; if (0 !== $t.closest(".receive-option-pickup").length) { pid = $t.closest("." + _self.component.class).attr("id"); if ("" !== pid && coms.hasOwnProperty(pid)) { ignoreSelf = coms[pid]; } } if (!isNull(_self.class.ignoreNextClosePopperSelf)) { ignoreSelf = _self.class.ignoreNextClosePopperSelf; _self.class.ignoreNextClosePopperSelf = null; } _self.hidePoppers(ignoreSelf); } function build() { const ENS = "click." + _self.component.class + ".popper"; var $B = $("body"); var $C = $("#" + _self.instance.tagId); $C.find(".bag").html(_self.buildPDP()); $C.find(".reserve-space").removeClass("reserve-space"); _self.addStoreSelectionHandlers(); if (!_self.class.isClosePoppers) { $B.off(ENS); $B.on(ENS, closePoppers); _self.class.isClosePoppers = true; } } if (_self.data.productInStock) { _self.getDeliveryConfigBatch(function (data) { _self.data.storeInvService = data.storeInvService; _self.data.storeInvSfccOnly = data.storeInvSfccOnly; window.libs.notify.api.request(["jquery-ready"], function () { build(); }); }); _self.persist(); str += "

"; } return str;}function Bopis_bagSddBanner() { const _self = this; const zipClass = "select-zip", sddM = _self.config.messaging.sdd; var str = ""; function formatPrice(p) { const regEx = /(\d(?=(\d{3})+\.))/g; return "$" + Number(p).toFixed(2).replace(regEx, "$1,"); } if (isNumber(_self.data.sddFee) || isString(_self.data.sddFee) && !isStringEmpty(_self.data.sddFee)) { _self.data.formattedSddFee = formatPrice(_self.data.sddFee); } else { _self.data.formattedSddFee = ""; } function closePopper(e) { if (_self.ignoreNextClosePopper) { _self.ignoreNextClosePopper = false; return; } var $t = $(e.target), $p = $t.closest("#" + _self.instance.tagId + " .popper"); if (0 !== $t.filter("#" + _self.instance.tagId + " .as-link").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .rradio").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .rcheckbox").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .vlabel").length) { return; } if ($t.hasClass("rradio")) { return; } if (0 === $p.length) { if (_self.isPopperOpen) { _self.hidePopper(); } } } function buildSddMessage() { var msg = "", fee = _self.isStringEmpty(_self.data.formattedSddFee) ? "" : "(" + _self.data.formattedSddFee + ") "; function day(sameDay) { var msg = ""; if (sameDay) { msg = "today"; } else { msg = "tomorrow"; } return msg; } function fill(msg) { var rX = /{{X}}/, rS = /{{S}}/, rC = /{{C}}/, rE = /{{E}}/; msg = msg.replace(rX, _self.data.sddItemCount); msg = msg.replace(rS, 1 < _self.data.sddItemCount ? "s" : ""); msg = msg.replace(rC, _self.data.sddCutoffTime + " ET"); msg = msg.replace(rE, _self.data.sddEndTime.replace(" ", "")); if (!_self.data.hasReducedEliteFee && 0 !== _self.data.sddFee) { return fee + msg; } else { return msg; } } if (_self.data.hasSdd) { if (_self.data.sddZip) { if (_self.data.sddStoreId) { if (0 < _self.data.sddItemCount) { if (_self.data.sddSelected) { if (_self.data.sddSameDay) { msg = fill(sddM.eligibleActive); } else { msg = fill(sddM.eligibleActiveCutoff); } } else { if (_self.data.hasPresale) { if (_self.data.sddSameDay) { msg = fill(sddM.eligiblePresale); } else { msg = fill(sddM.eligiblePresaleCutoff); } } else { if (_self.data.sddSameDay) { msg = fill(sddM.eligible); } else { msg = fill(sddM.eligibleCutoff); } } } } else { msg = _self.data.sddFee === 0 ? "(" + sddM.Free + ")" + " " + sddM.noSddInZip : fee + sddM.noSddInZip; } } else { msg = _self.data.sddFee === 0 ? "(" + sddM.Free + ")" + " " + sddM.zipNotEligible : fee + sddM.zipNotEligible; } } else { msg = _self.data.sddFee === 0 ? "(" + sddM.Free + ")" + " " + sddM.noZip : fee + sddM.noZip; } } else { } return msg; } function addSelectionHandlers() { var $C = $("#" + _self.instance.tagId); var $zObj = $C.find("." + zipClass), $in, len; $zObj.on("click", function (e) { if ($zObj.prop("checked")) { _self.showPopper(zipClass); $in = $C.find(".popper .search-by-zip .zip-code"); $in.focus(); len = $in.val().length; $in[0].setSelectionRange(len, len); } else { _self.hidePopper(); } e.stopPropagation(); }); var $cbObj = $C.find("#selectSdd"); $cbObj.on("click", function (e) { if ($cbObj.prop("checked")) { $("#sddSelected").val(true); } else { $("#sddSelected").val(false); } if (window.progress) { window.progress.show(); } $("input[type=\"hidden\"][name$=\"_updateCart\"]").remove(); $("input[type=\"hidden\"][name$=\"_updateGiftBox\"]").remove(); $("input[type=\"hidden\"][name$=\"_updateSSDZipCode\"]").remove(); $("#update-sddOption").click(); }); } function build() { var str = "", zipLabel = "", isTo = false, isDisabled = false, fee = _self.isStringEmpty(_self.data.formattedSddFee) ? "" : _self.data.formattedSddFee; if (_self.isStringEmpty(_self.data.sddZip)) { zipLabel = "Check My Area"; } else { zipLabel = _self.data.sddZip, isTo = true; } if (!_self.data.sddZip || !_self.data.sddStoreId || !_self.data.sddItemCount) { isDisabled = true; } str += "

"; str += "

"; str += "

"; str += ""; str += "

"; str += "" + (isDisabled ? "" : (_self.data.sddSameDay ? sddM.sameDayPre : sddM.nextDayPre)); str += isDisabled ? "" : _self.data.isEliteCustomer ? (0 === _self.data.sddFee ? sddM.elitesPre : _self.data.hasReducedEliteFee ? fee : "") : 0 === _self.data.sddFee ? sddM.Free : ""; str += " " + sddM.title + (isDisabled ? "" : (_self.data.hasReducedEliteFee && _self.data.isEliteCustomer && 0 !== _self.data.sddFee ? " " + sddM.forElites + " " : " ")) + _self.buildToolTip(_self.data.sddToolTip) + (isTo ? " to " : "") + ""; str += " " + _self.buildSelectionToggle(zipClass, zipLabel); str += ""; str += "
"; str += ""; str += buildSddMessage(); str += "

"; str += "

"; str += "

"; return str; } if (_self.data.hasSdd) { window.libs.notify.api.request(["jquery-ready"], function () { const ENS = "click." + _self.instance.tagId + ".popper"; var $B = $("body"); $B.off(ENS); $B.on(ENS, closePopper); addSelectionHandlers(); }); str = "

"; str += "

"; str += build(); str += "

"; str += "

"; } return str;}function Bopis_isPickupDisabled() { const _self = this; const NITP = true; var isDisabled = true; if (!_self.data.mirakl && !_self.error && !_self.data.productOnlineOnly && !_self.data.skuOnlineOnly && _self.data.bopisEnabled && _self.data.findInStoreEnabled && _self.data.bopisProduct && !_self.isStringEmpty(_self.data.skuId) && _self.data.bopisSku && (NITP || !_self.isStringEmpty(_self.data.zip)) && ((NITP && _self.isStringEmpty(_self.data.zip)) || !_self.isObjectEmpty(_self.data.store) && _self.data.store.bopis && 0 < _self.data.store.quantity || _self.searchResults.bopis)) { isDisabled = false; } return isDisabled;}function Bopis_buildInputRC(config) { const _self = this; var c = config, str = "", checked = c.isChecked ? "checked" : ""; function pc(c) { return _self.isUndefined(c) || !_self.isString(c) || _self.isStringEmpty(c) ? "" : " " === c[0] ? c : " " + c; } if (!c.isDisabled) { if (c.isMultiSelect) { str += ""; } else { str += ""; } } else { str += "

"; } str += ""; return str;}function Bopis_buildPDP() { const _self = this; const regD = /{{D}}/; var M = _self.config.messaging, str = "", name = "receive-option", quantity = 0, labelText = "", skuSelected = false, pid = "", preOrderPromoDetails = "", preOrderPromoId = ""; if (!_self.isStringEmpty(_self.data.skuId)) { skuSelected = true; } if (_self.isObject(_self.data.store) && _self.data.store.hasOwnProperty("quantity") && _self.isNumber(_self.data.store.quantity)) { quantity = _self.data.store.quantity; } if ("pdp" === _self.config.feature && skuSelected && !_self.data.skuShipEligible && 0 >= quantity) { str += "

"; str += ""; str += M.bopisOnly; str += ""; str += ""; str += M.productOutNear.replace(/{{Z}}/, _self.data.zip).replace(regD, _self.data.storeSearchDistance); str += "

"; } else { if (_self.data.productInStock) { if (!skuSelected) { str += "

"; str += ""; if (_self.data.skuShipEligible) { str += ""; if (!_self.isStringEmpty(_self.shipPromoMsg)) { str += _self.shipPromoMsg; } str += ""; str += ""; str += M.selectSizeForOpt; } else { str += "" + M.bopisOnly + ""; str += ""; str += M.selectSizeBopisOnly; } str += "

"; } else { if (0 < _self.data.skuStockLevel) { if (_self.data.sddEnabled && _self.data.skuSddEligible) { str += _self.buildSddEligibleBanner(); } str += "

"; str += "

"; labelText = _self.buildProductShipStatus(_self.data.skuStockLevel, _self.data.productInStock && !skuSelected, _self.data.surchargeAmount); str += _self.buildInputRC({isDisabled: !_self.data.skuShipEligible, isMultiSelect: false, id: name + "-ship", value: "ship", name: name, content: labelText, isChecked: "bag" === _self.config.feature && !_self.isObjectEmpty(_self.data.store) && _self.data.bopisSelected ? false : true, isMessage: false}); str += "

"; str += "

"; if (_self.data.isPreOrderEnabled && _self.data.showPreOrder && ("bag" === _self.config.feature || _self.hasPreOrderResponse)) { str += _self.buildPreSaleOption(); } str += "

"; str += _self.buildPickupOption(); str += "

"; str += _self.buildStoreId(); } else { str += "

"; str += M.skuOut; str += "

"; } } } else { str += "

"; str += M.productOut; str += "

"; } } function updatePreOrderRadio(invStatus) { var $C = $("#" + _self.instance.tagId); if (invStatus) { var preOrderContent = ""; preOrderContent += _self.buildPreSaleOption(); $C.find(".preorder-container").html(preOrderContent).show(); } else { $C.find(".preorder-container").hide(); } } if ("pdp" === _self.config.feature && _self.data.isPreOrderEnabled && _self.data.showPreOrder) { pid = _self.data.skuId; if (_self.isStringEmpty(pid)) { pid = _self.data.productId; } preOrderPromoDetails = _self.data.preOrderPromoDetails; preOrderPromoId = _self.data.preOrderPromoId; _self.getPreOrderFCInventory(pid, preOrderPromoDetails, function (pid, preOrderPromoDetails, data) { _self.hasPreOrderResponse = true; if (data.hasOwnProperty("preOrderInStock") && data.preOrderInStock && data.hasOwnProperty("preOrderATSCount") && data.preOrderATSCount > 0) { _self.data.hasPreOrderInventory = true; updatePreOrderRadio(true); _self.addStoreSelectionHandlers(); updatePDPPreOrderIndicators(); } else { _self.data.hasPreOrderInventory = false; updatePreOrderRadio(false); updatePDPPreOrderIndicators(); } }); } else { if (_self.data.isQuickView && !_self.data.showPreOrder && _self.data.skuId !== "") { _self.data.hasPreOrderInventory = false; _self.hasPreOrderResponse = true; updatePreOrderRadio(false); updatePDPPreOrderIndicators(); } } function updateShipPromoMsg() { var $C; if (_self.isString(_self.shipPromoMsg) && !_self.isStringEmpty(_self.shipPromoMsg)) { $C = $("#" + _self.instance.tagId); $C.find(".ship-message .ship-promo").html((_self.isStringEmpty(_self.data.skuId) ? "" : " - ") + _self.shipPromoMsg); } } if ("pdp" === _self.config.feature && _self.data.skuShipEligible && (!_self.isShipPromoMsg || _self.lastSkuId !== _self.data.skuId)) { _self.isShipPromoMsg = true; pid = _self.data.skuId; if (_self.isStringEmpty(pid)) { pid = _self.data.productId; } _self.getShippingPromoMessage(pid, function (pid, data) { _self.lastSkuId = _self.data.skuId; if (data.hasOwnProperty("shippingMsg")) { if (_self.isString(data.shippingMsg) && !_self.isStringEmpty(data.shippingMsg)) { _self.shipPromoMsg = data.shippingMsg; updateShipPromoMsg(); } else { if (_self.isObject(data.shippingMsg) && !_self.isObjectEmpty(data.shippingMsg)) { if (_self.isStringEmpty(_self.data.skuId) && data.shippingMsg.long) { _self.shipPromoMsg = data.shippingMsg.long; } else { if (data.shippingMsg.short) { _self.shipPromoMsg = data.shippingMsg.short; } } updateShipPromoMsg(); } } } }); } function updatePDPPreOrderIndicators() { var $poGiftBadge = $(".preorder-gift-badge"), $pdTop = $(".product-detail.top"), badgeHtml = "

Pre-sale Gift Eligible

", $promoContainer = $(".promotion"), $promoCallOutMessage = $(".promotion .callout-message"), $poPromoMessage = $(".callout-message-row.preorder-promo-message"), $regularPromoMessage = $(".callout-message-row:not(.preorder-promo-message)"); if (_self.data.hasPreOrderInventory) { if ($poGiftBadge.length === 0 && $pdTop.length > 0) { $pdTop.prepend(badgeHtml); } else { $poGiftBadge.show(); } } else { if ($poGiftBadge.length !== 0) { $poGiftBadge.hide(); } if ($poPromoMessage.length !== 0 && $regularPromoMessage.length === 0) { $promoContainer.hide(); $poPromoMessage.hide(); } else { if ($poPromoMessage.length !== 0) { $poPromoMessage.hide(); } } } } if (_self.isStringEmpty(_self.promoMsg) || _self.data.bopisPromoAssetID !== _self.promoMsgAssetID) { _self.promoMsgAssetID = _self.data.bopisPromoAssetID; _self.getBopisPromoMessaging(_self.data.bopisPromoAssetID, function (data) { if (data.hasOwnProperty("isOnline") && data.isOnline && data.hasOwnProperty("assetContent") && !_self.isStringEmpty(data.assetContent)) { _self.promoMsg = data.assetContent; $("#" + _self.instance.tagId + " .promo-msg").html(_self.promoMsg); } }); } return str;}function Bopis_fixStoreData(data) { const _self = this; var i; if (data.stores) { for (i = 0; i < data.stores.length; i++) { data.stores[i].distance = data.stores[i].distance.replace(/[^.0-9]/g, ""); data.stores[i].name = data.stores[i].name.replace(/Belk /gi, ""); } }}function Bopis_getBopisPromoMessaging(bopisPromoAssetID, callback) { const _self = this; var CAN = bopisPromoAssetID !== "" ? bopisPromoAssetID : "bopis-promo-messaging"; var url = _self.baseAjaxUrl; url += "COContent-GetContentAsset?assetName="; url += CAN; $.ajax(url, {success: function (data, textStatus, jqXHR) { log("getBopisPromoMessaging ajax success: data:", data, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self.isFunction(callback)) { try { callback(data); } catch (e) { log("Exception:", e); } } }, error: function (jqXHR, textStatus, errorThrown) { log("getBopisPromoMessaging ajax error: jqXHR:", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); }, complete: function (jqXHR, textStatus) { log("getBopisPromoMessaging ajax complete: jqXHR:", jqXHR, "textStatus:", textStatus); }});}function Bopis_getShippingPromoMessage(pid, callback) { const _self = this; var url = _self.baseAjaxUrl; url += "Product-GetShippingPromoMsg?pid="; url += pid; $.ajax(url, {success: function (data, textStatus, jqXHR) { log("getShippingPromoMessage ajax success: data:", data, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self.isUndefined(data)) { data = {}; } if (_self.isFunction(callback)) { try { callback(pid, data); } catch (e) { log("Exception:", e); } } }, error: function (jqXHR, textStatus, errorThrown) { log("getShippingPromoMessage ajax error: jqXHR:", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); if (_self.isFunction(callback)) { try { callback(pid, {}); } catch (e) { log("Exception:", e); } } }, complete: function (jqXHR, textStatus) { log("getShippingPromoMessage ajax complete: jqXHR:", jqXHR, "textStatus:", textStatus); }});}function Bopis_getStoresByZip(zip, callback) { const _self = this; var url = _self.baseAjaxUrl; _self.error = false; if (_self.isStringEmpty(zip)) { return; } url += "Stores-GetBopisStoresByZip?zipCode=" + zip; callback = callback || function (zip, data) { log("No callback given for getStoresByZip call by zip:", zip, "returned data:", data); }; $.ajax(url, {success: function (data, textStatus, jqXHR) { log("getStoresByZip ajax success: data:", data, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self.isObject(data) && data.hasOwnProperty("success") && data.success) { _self.fixStoreData(data); } if (!data.success) { _self.error = true; } if (_self.isFunction(callback)) { try { callback(zip, data); } catch (e) { log("Exception:", e); } } }, error: function (jqXHR, textStatus, errorThrown) { log("getStoresByZip ajax error: jqXHR:", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); }, complete: function (jqXHR, textStatus) { log("getStoresByZip ajax complete: jqXHR:", jqXHR, "textStatus:", textStatus); }});}function Bopis_getSddStore(callback) { const _self = this; var url = _self.baseAjaxUrl, cachedData; log("_self.sddZipToStoreCache:", _self.sddZipToStoreCache); if (_self.sddZipToStoreCache.hasOwnProperty(_self.data.sddZip)) { cachedData = _self.sddZipToStoreCache[_self.data.sddZip]; if (!_self.isUndefined(cachedData) && !_self.isObjectEmpty(cachedData) && _self.isFunction(callback)) { try { callback(cachedData); } catch (e) { log("Exception:", e); } return; } } url += "COSameDayDelivery-GetDeliveryAssuranceStore?zipCode=" + _self.data.sddZip; $.ajax(url, {success: function (data, textStatus, jqXHR) { log("getSddStore ajax success: data:", data, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self.isObject(data) && !_self.isObjectEmpty(data) && data.hasOwnProperty("zipCode") && _self.isString(data.zipCode) && !_self.isStringEmpty(data.zipCode)) { _self.sddZipToStoreCache[data.zipCode] = data; } else { data = {}; } if (_self.isFunction(callback)) { try { callback(data); } catch (e) { log("Exception:", e); } } }, error: function (jqXHR, textStatus, errorThrown) { log("getSddStore ajax error: jqXHR:", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); if (_self.isFunction(callback)) { try { callback({}); } catch (e) { log("Exception:", e); } } }, complete: function (jqXHR, textStatus) { log("getSddStore ajax complete: jqXHR:", jqXHR, "textStatus:", textStatus); }});}function Bopis_setSessionStore(storeId, callback) { const _self = this; var url = _self.baseAjaxUrl; url += "StoreInventory-SetPreferredStore?storeId=" + storeId; $.ajax(url, {success: function (data, textStatus, jqXHR) { log("setSessionStore ajax success: data:", data, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self.isFunction(callback)) { try { callback(data); } catch (e) { log("Exception:", e); } } }, error: function (jqXHR, textStatus, errorThrown) { log("setSessionStore ajax error: jqXHR:", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); }, complete: function (jqXHR, textStatus) { log("setSessionStore ajax complete: jqXHR:", jqXHR, "textStatus:", textStatus); }});}function Bopis_getPreOrderFCInventory(pid, preOrderPromoDetails, callback) { log("getPreOrderFCInventory called with pid:", pid, "preOrderPromoDetails:", preOrderPromoDetails, "callback", callback); const _self = this; var url = _self.baseAjaxUrl + "COPreOrder-GetPreOrderFCInventory"; if (_self.isStringEmpty(preOrderPromoDetails)) { return; } callback = callback || function (preOrderPromoDetails, data) { log("No callback given for getPreOrderFCInventory call by preOrderPromoDetails:", preOrderPromoDetails, "returned data:", data); }; preOrderPromoDetails = JSON.parse(preOrderPromoDetails); preOrderPromoDetails.pid = pid; $.ajax({method: "POST", dataType: "json", contentType: "application/json", url: url, data: JSON.stringify(preOrderPromoDetails), success: function (data, textStatus, jqXHR) { log("getPreOrderFCInventory ajax success: data:", data, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self.isFunction(callback)) { try { callback(pid, preOrderPromoDetails, data); } catch (e) { log("Exception:", e); } } }, error: function (jqXHR, textStatus, errorThrown) { log("getPreOrderFCInventory ajax error: jqXHR:", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); }, complete: function (jqXHR, textStatus) { log("getPreOrderFCInventory ajax complete: jqXHR:", jqXHR, "textStatus:", textStatus); }});}function Bopis_availabilityMessage(quantity, forceInStock, isPunc, forPopper) { const _self = this; const p = ".", e = "!", n = ""; var M = _self.config.messaging, str = " quantity) { str += " less\">" + M.stock["less"]; if (5 > quantity) { str += " (" + M.stock.lowX.replace("X", quantity) + ")"; } } else { if (forceInStock || 5 < quantity) { str += " in\">" + M.stock["in"] + (!forPopper && isPunc ? p : ""); } else { if (0 === quantity) { str += " out\">" + M.stock.out; } else { if (5 === quantity) { str += " low\">" + M.stock.low; } else { if (5 > quantity) { str += " low\">" + M.stock.lowX.replace("X", quantity) + (isPunc ? e : ""); } } } } } str += ""; return str;}function Bopis_buildSelectionToggle(theClass, text) { const _self = this; var str = ""; str += ""; str += ""; str += "

"; return str;}function Bopis_buildStoreSelectionToggle(text) { const _self = this; var str = ""; str += ""; str += ""; str += "

"; return str;}function Bopis_searchStores(stores) { const _self = this; var i, store, ret = {}; _self.copyObject(ret, _self.default.config.init.searchResults); if (0 < stores.length) { for (i = 0; i < stores.length; i++) { store = stores[i]; if (0 < store.quantity) { ret.inStore = true; if (store.bopis) { ret.bopis = true; ret.store = store; break; } } } ret.isSearch = true; } return ret;}function Bopis_updateInStockOnly() { const _self = this; var $C = $("#" + _self.instance.tagId), $d = $C.find(".popper.bopis .stores li .filter-instockonly").closest("li"), $inp = $C.find(".popper.bopis .filters input[name=\"in-stock-only\"]"); if ($inp.length) { if ($inp.prop("checked")) { _self.inStockOnly = true; $d.hide(); } else { _self.inStockOnly = false; $d.show(); } _self.updatePopperScrollbar(); }}function Bopis_searchResponse(pid, zip, data) { const _self = this; var $C = $("#" + _self.instance.tagId); if (_self.isObject(data) && data.hasOwnProperty("success") && data.success) { _self.data.skuId = pid; _self.data.zip = zip; if (data.hasOwnProperty("stores") && _self.isArray(data.stores) && 0 < data.stores.length) { _self.data.store = data.stores[0]; _self.stores = data.stores; } else { _self.data.store = {}; _self.stores = []; } if (data.hasOwnProperty("readyHours") && _self.isNumber(data.readyHours)) { _self.readyHours = data.readyHours; } if (data.hasOwnProperty("pickupToday") && _self.isBoolean(data.pickupToday)) { _self.pickupToday = data.pickupToday; } if (data.hasOwnProperty("pickupDay") && _self.isString(data.pickupDay)) { _self.data.pickupDay = data.pickupDay; } _self.searchResults = _self.searchStores(_self.stores); if (_self.searchResults.bopis) { if (_self.feature.myStore) { $C.find(".my-store").replaceWith(buildMyStoreHtml(_self.stores[0], 0)); } $C.find(".popper.bopis .stores").empty(); $C.find(".popper.bopis .stores").append(_self.buildStoresHtml()); $C.find(".popper.bopis .zip-link").hide().html(_self.data.zip); $C.find(".popper.bopis .show-on-results").show(); $C.find(".popper.bopis .no-stores-msg").remove(); $C.find(".popper.bopis .zip-link").show(); $C.find(".popper.bopis .search-by-zip").hide(); _self.updateInStockOnly(); _self.updatePopperScrollbar(); _self.addStoreItemHandlers(); } else { $C.find(".popper.bopis .show-on-results").hide(); $C.find(".popper.bopis .search-by-zip").show(); $C.find(".popper.bopis .no-stores-msg").remove(); $C.find(".popper.bopis").append("

" + _self.config.messaging.notInStockX.replace("X", "" + zip + "") + " " + _self.config.messaging.tryArea + "

"); } } else { log("stopped here?"); $C.find(".popper.bopis .show-on-results").hide(); $C.find(".popper.bopis .search-by-zip").show(); $C.find(".popper.bopis .no-stores-msg").remove(); $C.find(".popper.bopis").append("

" + _self.config.messaging.notInStockX.replace("X", "" + zip + "") + " " + _self.config.messaging.tryArea + "

"); } if (window.progress) { window.progress.hide(); }}function Bopis_pickupTodayOrTomorrow() { const _self = this; var ret = " Today"; if (!_self.pickupToday) { if ("" === _self.data.pickupDay) { ret = " Tomorrow"; } else { ret = " " + _self.data.pickupDay; } } return ret;}function Bopis_buildPickupOption() { const _self = this; var str = "", name = "receive-option", labelText = "", isDisabled = true, skuSelected = false, hideRadio = false, M = _self.config.messaging, isChecked = false; skuSelected = !_self.isStringEmpty(_self.data.skuId); if (skuSelected && !_self.isArrayEmpty(_self.stores) && (!_self.data.bopisSku || _self.isObjectEmpty(_self.data.store) || !_self.data.store.bopis || 0 === _self.data.store.quantity)) { _self.searchResults = _self.searchStores(_self.stores); } str += "

"; isDisabled = _self.isPickupDisabled(); hideRadio = (!skuSelected || 0 === _self.data.skuStockLevel); if (hideRadio) { labelText += ""; if (skuSelected) { labelText += _self.config.messaging.skuOut; } else { labelText += _self.config.messaging.selectSize; } labelText += ""; } else { labelText = _self.buildProductPickupStatus(); } if ("bag" === _self.config.feature && !_self.isObjectEmpty(_self.data.store) && _self.data.bopisSelected) { isChecked = true; } else { if (!_self.data.skuShipEligible) { isChecked = true; } } str += _self.buildInputRC({isDisabled: isDisabled, isMultiSelect: false, id: name + "-pickup", value: "pickup", name: name, content: labelText, isChecked: isChecked, isMessage: hideRadio}); str += "

"; return str;}function Bopis_buildPreSaleOption() { const _self = this; var str = "", name = "receive-option", labelText = "", M = _self.config.messaging; if (!_self.data.hasPreOrderInventory) { return str; } str += "

"; labelText += "" + M.preSaleHeader + " - " + M.preSaleShipMessage + " " + _self.data.releaseDate + "
" + M.preSaleCouponExclusionMessage + "
"; if ("bag" === _self.config.feature && _self.data.preOrderSelected) { _self.fromPreOrder = true; } str += _self.buildInputRC({isMultiSelect: false, id: name + "-presale", value: "presale", name: name, content: labelText, isChecked: "bag" === _self.config.feature && _self.data.preOrderSelected ? true : false}); str += ""; str += "

"; return str;}function Bopis_buildProductShipStatus(skuStockLevel, forceInStock, surchargeAmount) { const _self = this; var str = "", M = _self.config.messaging; function fill(msg) { var rE = /{{E}}/, rT = /{{T}}/; msg = msg.replace(rE, _self.data.sddEndTime.replace(" ", "")); msg = msg.replace(rT, _self.data.sddSameDay ? "today" : "tomorrow"); return msg; } str += ""; if (_self.data.skuShipEligible) { str += ("bag" === _self.config.feature && !isStringEmpty(_self.data.sddStoreId)) ? M.sdd.title : M.shipFree; if ("bag" === _self.config.feature && !isStringEmpty(_self.data.sddStoreId)) { str += ""; str += " - " + fill(M.sdd.delivers); str += ""; } else { if ("bag" === _self.config.feature && !_self.isStringEmpty(_self.data.estimatedShippingMessage)) { str += ""; str += " - " + _self.config.messaging.estimatedDelivery + _self.data.estimatedShippingMessage; str += ""; } else { str += ""; if (!_self.isStringEmpty(_self.shipPromoMsg)) { str += " - " + _self.shipPromoMsg; } str += ""; } } str += "
"; str += _self.availabilityMessage(skuStockLevel, forceInStock, true, false); if (_self.isNumber(surchargeAmount) && 0 !== surchargeAmount) { str += "$" + surchargeAmount + " " + M.surchargeAmountApplies + ""; } } else { str += _self.config.messaging.noShip; str += "
"; str += "" + _self.config.messaging.bopisOnly + ""; } str += "
"; return str;}function Bopis_buildProductPickupStatus() { const _self = this; const regD = /{{D}}/; var str = "", msg = "", br = "
", bh = "", tc = "", ssm = "", pro = "", M = _self.config.messaging, sto = {}; str += "

"; function storeMsg(store) { var sto = {msg: M.atNearStore, name: M.selectStore}; if (!_self.isObjectEmpty(store)) { if (store.closed) { sto.msg = M.storeClosed; } else { sto.msg = M.atMyStore; } sto.name = store.name; } return sto; } function ofZip(msg) { var str = br + ssm + msg; if (!_self.isStringEmpty(_self.data.zip)) { str += " of " + _self.data.zip; } str += tc; return str; } function inStoreScenarios() { if (_self.searchResults.isSearch && _self.searchResults.inStore) { if (0 < _self.data.store.quantity) { msg = bh + M.notBopis + tc; if (_self.data.store.closed) { msg += br + ssm + M.storeClosed + tc; } else { msg += br + ssm + M.atMyStore + tc; } msg += _self.buildStoreSelectionToggle(_self.data.store.name); msg += br + _self.availabilityMessage(_self.data.store.quantity, false, true, false); } else { if (!_self.data.skuOnlineOnly) { msg = bh + M.noBopisNearby + tc; } else { msg = bh + M.notBopis + tc; } msg += br + ssm + M.atNearStore + tc; msg += " " + _self.buildStoreSelectionToggle(M.selectStore); } } else { if (_self.data.skuOnlineOnly) { msg = bh + M.notBopis + tc; msg += br + ssm + _self.config.messaging.skuOnlineOnly + tc; } else { if (_self.data.bopisSku) { msg = bh + M.noBopisNearby + tc; msg += ofZip(M.notNearby.replace(regD, _self.data.storeSearchDistance)); msg += br + _self.buildStoreSelectionToggle(M.selectZip); } else { msg = bh + M.notBopis + tc; if (_self.data.store.closed) { msg += br + ssm + M.storeClosed + tc; } else { msg += br + ssm + M.atNearStore + tc; msg += " " + _self.buildStoreSelectionToggle(M.selectStore); } } } } } if (_self.data.mirakl) { msg = bh + M.notBopis + tc; } else { if (_self.data.productOnlineOnly) { msg = bh + M.notBopis + tc; if ("pdp" === _self.config.feature) { msg += br + _self.config.messaging.productOnlineOnly; } } else { if (_self.data.skuOnlineOnly) { msg = bh + M.notBopis + tc; if ("pdp" === _self.config.feature) { msg += br + ssm + M.skuOnlineOnly + tc; } } else { if (!_self.data.productInStock) { log("(!_self.data.productInStock) Scenario Should NOT have occured"); } else { if (_self.data.bopisEnabled && _self.data.findInStoreEnabled) { if (_self.error) { if (_self.data.skuOnlineOnly) { msg = bh + M.notBopis + tc; if ("pdp" === _self.config.feature) { msg += br + ssm + _self.config.messaging.skuOnlineOnly + tc; } } else { if (_self.data.bopisSku) { msg = bh + M.noBopisNearby + tc; } else { msg = bh + M.notBopis + tc; } msg += ofZip(M.notNearby.replace(regD, _self.data.storeSearchDistance)); msg += br + _self.buildStoreSelectionToggle(M.selectZip); } } else { if (_self.data.bopisProduct) { if (!_self.isStringEmpty(_self.data.skuId)) { if (_self.data.bopisSku) { if (!_self.isStringEmpty(_self.data.zip)) { if (!_self.isObjectEmpty(_self.data.store)) { if (_self.data.store.bopis && 0 < _self.data.store.quantity) { msg = bh + M.bopis + _self.pickupTodayOrTomorrow() + tc; msg += br + _self.availabilityMessage(_self.data.store.quantity, false, false, false); msg += " at "; msg += _self.buildStoreSelectionToggle(_self.data.store.name); msg += br + pro; if (_self.isStringEmpty(_self.promoMsg)) { msg += M.readyTimeX.replace("X", _self.readyHours); } else { msg += _self.promoMsg; } msg += tc; } else { if (_self.searchResults.bopis) { msg = bh + M.bopis + _self.pickupTodayOrTomorrow() + tc; msg += br + M.nearby + " " + _self.buildStoreSelectionToggle(M.selectStore); msg += br + pro; if (_self.isStringEmpty(_self.promoMsg)) { msg += M.readyTimeX.replace("X", _self.readyHours); } else { msg += _self.promoMsg; } msg += tc; } else { if ("bag" === _self.config.feature) { msg = bh + M.notBopis + tc; } else { inStoreScenarios(); } } } } else { if (0 === _self.stores.length) { msg = bh + M.notBopis + tc; msg += ofZip(M.noStoresNearby.replace(regD, _self.data.storeSearchDistance)); msg += br + _self.buildStoreSelectionToggle(M.selectZip); } else { msg = bh + M.noBopisNearby + _self.pickupTodayOrTomorrow() + tc; msg += " " + _self.buildStoreSelectionToggle(M.selectStore); } } } else { msg = bh + M.bopis + _self.pickupTodayOrTomorrow() + tc; msg += " " + _self.buildStoreSelectionToggle(M.selectStore); } } else { if ("bag" === _self.config.feature) { msg = bh + M.notBopis + tc; } else { inStoreScenarios(); } } } else { log("(_self.isStringEmpty(data.prdoductId)) Scenario Should NOT have occured"); } } else { if (!_self.isStringEmpty(data.prdoductId)) { if (_self.data.bopisSku) { } else { } } else { msg = bh + M.notBopis + tc; msg += br + M.selectSize; } } } } else { if ("bag" === _self.config.feature) { msg = bh + M.notBopis + tc; } else { msg = bh + M.bopisDisabled + tc; if (_self.data.findInStoreEnabled) { sto = storeMsg(_self.data.store); msg += br + ssm + sto.msg + tc + " " + _self.buildStoreSelectionToggle(sto.name); } } } } } } } str += msg; str += "

"; return str;}function Bopis_buildStoreHtml(store, offset) { const _self = this; var str = "", VC = _self.feature; str += ""; str += "" + store.name + ""; str += "
" + store.distance + " mi"; if (store.bopis) { if (VC.showStock) { str += _self.availabilityMessage(store.quantity, false, true, true); } } else { str += "Temporarily Unavailable"; } str += "
"; return str;}function Bopis_buildMyStoreHtml(store, offset) { const _self = this; var str = ""; str += "

"; str += "

"; str += "

My store near " + _self.data.zip + "

"; str += _self.buildStoreHtml(store, offset); str += "

Always included in filter results

"; str += "

"; str += "

"; return str;}function Bopis_buildStoreItemHtml(store, offset) { const _self = this; var str = "", VC = _self.feature, addClass = "filter-instockonly", isDisabled = true, isChecked = false, isSelected = _self.selectedStoreIds.some(function (e) { return e === store.id; }); if (store.id === _self.data.storeId || isSelected) { isChecked = true; } if ("plp" === _self.config.feature) { if (store.bopis) { isDisabled = false; } } else { if (0 < store.quantity && store.bopis) { if ("bag" === _self.config.feature && _self.data.hasOwnProperty("lineItemQuantity") && _self.data.lineItemQuantity > store.quantity) { addClass = ""; } else { isDisabled = false; } } } str += _self.buildInputRC({isDisabled: isDisabled, isMultiSelect: VC.isMultiSelect, name: name + offset, id: store.id, name: "store", value: store.id, content: _self.buildStoreHtml(store, offset), isChecked: isChecked, isMessage: false, "class": isDisabled ? addClass : ""}); return str;}function Bopis_buildStoresHtml() { const _self = this; var str = "", VC = _self.feature, s = 0, storesLength = _self.stores.length; if (0 < VC.storeListLimit && VC.storeListLimit < storesLength) { storesLength = VC.storeListLimit; } for (s = 0; s < storesLength; s++) { str += "
  • "; str += _self.buildStoreItemHtml(_self.stores[s], s); str += "
  • "; } return str;}function Bopis_buildToolTip(data) { const _self = this, ttc = "sdd-ui-tooltip", qttc = "sddq-ui-tooltip", styleId = ttc + "-style", qstyleId = qttc + "-style", style = "." + ttc + "{max-width:300px;z-index:5;}", qstyleb = "." + qttc + "{max-width:300px;z-index:", qstylee = ";}", hbs = "

    ", he = "

    "; var content = "", str = "", ss = null, qv = null, qzi = 1000, tc = ttc; if (data.hasOwnProperty("isOnline") && data.isOnline && data.hasOwnProperty("assetContent") && !_self.isStringEmpty(data.assetContent)) { content = data.assetContent; } if (_self.data.isQuickView) { if (!document.querySelector("#" + qstyleId)) { qv = document.querySelector(".ui-dialog.quick-view"); if (qv) { qzi = qv.style["z-index"]; } ss = document.createElement("style"); ss.id = qstyleId; ss.innerHTML = qstyleb + qzi + qstylee; } tc = qttc; } else { if (!document.querySelector("#" + styleId)) { ss = document.createElement("style"); ss.id = styleId; ss.innerHTML = style; } } if (!_self.isNull(ss)) { document.head.appendChild(ss); } str += hbs + tc + hbe + content + he; return str;}function Bopis_buildSddEligibleBanner() { const _self = this; const zipClass = "select-zip"; var str = "", zipLabel = "Check My Area", isTo = false, toggle = "", message = _self.config.messaging.sdd.msgEligible, isEligible = true; if ("pdp" === _self.config.feature && _self.data.sddEnabled) { if (!_self.isStringEmpty(_self.data.sddZip)) { zipLabel = _self.data.sddZip, isTo = true; } toggle = _self.buildSelectionToggle(zipClass, zipLabel); if (_self.isStringEmpty(_self.data.sddZip)) { message = _self.config.messaging.sdd.title; } else { if (_self.isStringEmpty(_self.data.sddStoreId) || _self.data.sddStore.closed || !_self.data.sddStore.bopis || 0 >= _self.data.sddStore.quantity) { message = _self.config.messaging.sdd.msgNotEligible; isEligible = false; } } } str += "

    "; str += "

    "; str += "

    " + "" + message + " " + _self.buildToolTip(_self.data.sddToolTip) + (isTo ? " to " : " ") + toggle + "

    "; str += "

    "; return str;}function Bopis_buildPopper(theClass) { const _self = this; var str = "", storesLength, min = false, hideTop = false, DN = " style=\"display:none;\"", altMsg = "Update location:", defaultMsg = "Stores near", msg = defaultMsg, sd = "none", oi = "inline", VC = _self.feature, noStoresMsg = "", zip = "", zipStr, isSdd = ("select-zip" === theClass), isError = false; if (isSdd) { VC = _self.config.features.bagSddBanner; zip = _self.data.sddZip; min = true; sd = "block"; } else { zip = _self.data.zip; isError = _self.error; if (_self.isStringEmpty(zip) || isError || (_self.searchResults.isSearch && !_self.searchResults.bopis && !_self.searchResults.inStore)) { min = true; sd = "block"; } } if (VC.myStore) { if ("" !== zip) { msg = altMsg; } _self.firstStoreItem = 1; hideTop = true; } str += "

    "; str += "

    "; str += "

    "; if (!isSdd) { str += "

    " + msg + " " + zip + "

    "; } str += "

    "; if (VC.showFilters && !VC.myStore) { str += ""; } str += "

    "; if (!isSdd) { if (VC.myStore && 0 < _self.stores.length) { str += buildMyStoreHtml(_self.stores[0], 0); } if (!_self.searchResults.isSearch || _self.searchResults.bopis || _self.searchResults.inStore) { str += "

      "; str += _self.buildStoresHtml(); str += "

    "; } else { str += "

    "; zipStr = "" + zip + ""; if (0 < _self.stores.length) { noStoresMsg = _self.config.messaging.notInStockX.replace("X", zipStr); } else { noStoresMsg = _self.config.messaging.notInStockX.replace("X", zipStr); } str += "

    " + noStoresMsg + " " + _self.config.messaging.tryArea + "

    "; } if (VC.isMultiSelect) { str += "

    "; } } str += "

    "; return str;}function Bopis_showPopper(theClass) { log("showPopper called!"); const _self = this; var str = "", tc = theClass ? theClass : "select-store", $i = $("#" + _self.instance.tagId + "-" + tc), $pl = $i.nextAll(".popper-location"), $p = $pl.find(".popper"), zip = "", showWait = false; function show() { $p = $pl.find(".popper").show(); _self.fixPopperPosition(); if (0 === $(document.activeElement).filter(".zip-code").length) { $p.find(".top").focus(); } _self.isPopperOpen = true; if (!$i.prop("checked")) { $i.prop("checked", true); } _self.updatePopperScrollbar(); if ("plp" === _self.config.feature && _self.feature.moveToLeftOnDesktop) { $("#secondary").css({overflow: "visible", display: "inline-block"}); } } if ("bag" === _self.config.feature && 0 === _self.stores.length && !_self.error && (!_self.isStringEmpty(_self.data.zip) || !_self.isStringEmpty(_self.data.sessionZip))) { showWait = true; if (window.progress) { window.progress.show(); } zip = _self.data.zip; if (_self.isStringEmpty(zip)) { zip = _self.data.sessionZip; } if (!_self.isStringEmpty(zip)) { _self.data.zip = zip; _self.getStoresByZipPidBatch(_self.data.skuId, _self.data.skuOrin, zip, "", "", function (parms, data) { _self.searchResponse(parms.pid, parms.zip, data); show(); }); } } if (_self.isPopperOpen) { return; } if (0 === $p.length) { str += _self.buildPopper(theClass); $pl.append(str); _self.addPopperHandlers(); } _self.ignoreNextClosePopper = true; _self["class"].ignoreNextClosePopperSelf = _self; setTimeout(function (e) { _self.ignoreNextClosePopper = false; _self["class"].ignoreNextClosePopperSelf = null; }, 5); if (!showWait) { show(); }}function Bopis_hidePopper() { const _self = this; var $C = $("#" + _self.instance.tagId); _self.ignoreNextClosePopper = false; _self["class"].ignoreNextClosePopperSelf = null; if (0 < $C.length) { $C.find(".select-store").prop("checked", false); $C.find(".select-zip").prop("checked", false); $C.find(".popper").hide(); _self.isPopperOpen = false; } if ("plp" === _self.config.feature && _self.feature.moveToLeftOnDesktop) { $("#secondary").css({overflow: "", display: ""}); }}function Bopis_hidePoppers(ignoreSelf) { const _self = this; var $poppers = $(".vco_Bopis"); if (!_self.isUndefined(ignoreSelf) && !_self.isNull(ignoreSelf)) { $poppers = $poppers.not("#" + ignoreSelf.instance.tagId); } $poppers = $poppers.find(".popper"); $poppers.each(function (i, o) { var $o = $(o), $i, $b, bid, c; $i = $o.closest(".pickup-message").find(".toggle-carrot"); $b = $i.closest("." + _self.component.class); bid = $b.attr("id"); if (coms.hasOwnProperty(bid)) { c = coms[bid]; c.hidePopper.call(c); } });}function Bopis_updatePopperScrollbar() { const _self = this; var $C = $("#" + _self.instance.tagId), $S = $C.find(".popper.bopis .stores"); if (4 < $S.find("li:visible").length) { $S.css("overflow-y", "scroll"); } else { $S.css("overflow-y", "hidden"); }}function Bopis_fixPopperPosition() { const _self = this; const marginLeft = 12; var $ps = $("." + _self.component.class + " .popper"), $au, r, delta, pRight, aRight; $ps.each(function (i, o) { var $o = $(o); r = $o[0].getBoundingClientRect(); if (0 !== r.width || 0 !== r.height) { pRight = Number($o.css("right").replace("px", "")); $au = $o.find(".arrowup"); delta = Math.floor(r.left) - marginLeft; if (0 > delta) { $o.css("right", pRight + delta); aRight = Number($au.css("right").replace("px", "")); $au.css("right", aRight - delta); } } });}function Bopis_multiSelectUpdate($C, selectedCount) { const _self = this; if (0 < _self.feature.storeSelectLimit && _self.feature.storeSelectLimit <= selectedCount) { $C.find(".popper .stores input:not(:checked)").prop("disabled", true); } else { $C.find(".popper .stores input:disabled").prop("disabled", false); }}function Bopis_addPDPZipSelectionHandlers() { const _self = this; const zipClass = "select-zip", ENS = "click." + _self.component.class + "." + zipClass + ".popper"; var $in, len; var $C = $("#" + _self.instance.tagId); var $zObj = $C.find("." + zipClass); $zObj.off(ENS); $zObj.on(ENS, function (e) { $(".toggle-carrot.select-store").prop("checked", false); $(".toggle-carrot.select-store + .vlabel + .popper-location .popper").hide(); _self.isPopperOpen = false; if ($(e.currentTarget).prop("checked")) { _self.showPopper(zipClass); $in = $C.find(".popper .search-by-zip .zip-code"); $in.focus(); len = $in.val().length; $in[0].setSelectionRange(len, len); } else { _self.hidePopper(); } e.stopPropagation(); });}function Bopis_addStoreItemHandlers() { const _self = this, checkedStorePattern = ".popper.bopis .stores input:checked"; var $C = $("#" + _self.instance.tagId), $ins = $C.find(".stores input"); $ins.on("click", function (e) { var store = {}, found = null, str = ""; if (_self.feature.isMultiSelect) { selectedCount = $C.find(checkedStorePattern).length; if (0 === selectedCount) { e.preventDefault(); } else { _self.multiSelectUpdate($C, selectedCount); } } else { store.obj = $C.find("#" + e.currentTarget.getAttribute("id")); store.name = store.obj.find("+ .vlabel > .store > .name").html(); store.id = store.obj.val(); found = _self.findStore(store.id).store; if (!_self.isEmpty(found)) { _self.data.store = found; _self.data.storeId = found.id; str = _self.buildInputRC({isDisabled: _self.isPickupDisabled(), isMultiSelect: false, id: "receive-option-pickup", value: "pickup", name: "receive-option", content: _self.buildProductPickupStatus(), isChecked: true, isMessage: false}); if (!_self.isNull(_self.to)) { clearTimeout(_self.to); _self.to = null; } _self.to = setTimeout(function () { $C.find(".receive-option-pickup").html(str); _self.isPopperOpen = false; _self.updateStoreId(); _self.addStoreSelectionHandlers(); _self.to = null; }, 1000); if ("bag" === _self.config.feature) { window.expose.cartInventory.deliveryOptionChange(_self.data.lineItemId, true, false, _self.fromPreOrder, _self.data.storeId); } } } });}function Bopis_addStoreSelectionHandlers() { const _self = this; var $C = $("#" + _self.instance.tagId); var $ss = $C.find(".select-store"); $ss.on("click", function (e) { $(".toggle-carrot.select-zip").prop("checked", false); $(".toggle-carrot.select-zip + .vlabel + .popper-location .popper").hide(); _self.isPopperOpen = false; if ($ss.prop("checked")) { _self.showPopper(); } else { _self.hidePopper(); } e.stopPropagation(); }); $C.on("click", ".js_nostore", function (e) { e.preventDefault(); _self.showPopper(); }); function pickupOptionHandler(previousOption) { if (_self.isObjectEmpty(_self.data.store) || !_self.data.store.bopis || 0 === _self.data.store.quantity || "bag" === _self.config.feature && _self.data.store.quantity < _self.data.lineItemQuantity) { $(".toggle-carrot.select-zip").prop("checked", false); $(".toggle-carrot.select-zip + .vlabel + .popper-location .popper").hide(); _self.isPopperOpen = false; _self.showPopper(); $("#" + _self.instance.tagId + previousOption).prop("checked", true); } else { if ("bag" === _self.config.feature) { window.expose.cartInventory.deliveryOptionChange(_self.data.lineItemId, true, false, _self.fromPreOrder, _self.data.storeId); } } } function changePWCVisibility(isPreOrder) { var $pwc = $(".vjs_price-with-coupon"); if ($pwc.length > 0) { if (isPreOrder) { $pwc.hide(); } else { $pwc.show(); } } } if ("bag" === _self.config.feature) { $C.find("#" + _self.instance.tagId + "-receive-option-pickup").on("click", function (e) { if (_self.data.triggerPOModal && _self.fromPreOrder) { e.preventDefault(); document.addEventListener("modal-affirmed", function (data) { if (data.detail === "preorder-ro-change-modal") { if (_self.isObjectEmpty(_self.data.store) || !_self.data.store.bopis || 0 === _self.data.store.quantity || "bag" === _self.config.feature && _self.data.store.quantity < _self.data.lineItemQuantity) { pickupOptionHandler("-receive-option-presale"); } else { $("#" + _self.instance.tagId + "-receive-option-pickup").prop("checked", true); window.expose.cartInventory.deliveryOptionChange(_self.data.lineItemId, true, false, _self.fromPreOrder, _self.data.storeId); } window.location.hash = ""; } }); window.location.hash = "preorder-ro-change-modal"; } else { if (_self.fromPreOrder) { pickupOptionHandler("-receive-option-presale"); } else { pickupOptionHandler("-receive-option-ship"); } } }); } else { $C.find("#" + _self.instance.tagId + "-receive-option-pickup").on("change", function (e) { pickupOptionHandler("-receive-option-ship"); changePWCVisibility(false); }); } $C.find("#" + _self.instance.tagId + "-receive-option-ship").on("click", function (e) { if ("bag" === _self.config.feature) { if (_self.data.triggerPOModal && _self.fromPreOrder) { e.preventDefault(); document.addEventListener("modal-affirmed", function (data) { if (data.detail === "preorder-ro-change-modal") { $("#" + _self.instance.tagId + "-receive-option-ship").prop("checked", true); window.expose.cartInventory.deliveryOptionChange(_self.data.lineItemId, false, false, _self.fromPreOrder); window.location.hash = ""; } }); document.addEventListener("modal-rejected", function (data) { if (data.detail === "preorder-ro-change-modal") { $("#" + _self.instance.tagId + "-receive-option-presale").prop("checked", true); } }); window.location.hash = "preorder-ro-change-modal"; } else { $("#" + _self.instance.tagId + "-receive-option-ship").prop("checked", true); window.expose.cartInventory.deliveryOptionChange(_self.data.lineItemId, false, false, _self.fromPreOrder); } } else { $("#" + _self.instance.tagId + "-receive-option-ship").prop("checked", true); changePWCVisibility(false); } }); $C.find("#" + _self.instance.tagId + "-receive-option-presale").on("click", function (e) { if ("bag" === _self.config.feature) { window.expose.cartInventory.deliveryOptionChange(_self.data.lineItemId, false, true, false); } else { changePWCVisibility(true); } });}function Bopis_addPopperHandlers() { const _self = this; const checkedStorePattern = ".popper .stores input:checked"; var i, $C = $("#" + _self.instance.tagId), selectedCount = 0; var isFix = (-1 !== navigator.userAgent.indexOf("iPhone OS 13_")); _self.to = null; function sddChangeZip() { var zip = $C.find(".search-by-zip .zip-code.sdd").val(); var $f, $b; if (5 === zip.length) { if ("bagSddBanner" === _self.config.feature) { $f = $("#sddZipCode"); if ($f.length) { $f.val(zip); $b = $("#update-sddZip"); if ($b.length) { $C.find("#" + _self.instance.tagId + "-select-zip + .vlabel .as-link").html(zip); if (window.progress) { window.progress.show(); } _self.hidePopper(); $("input[type=\"hidden\"][name$=\"_updateCart\"]").remove(); $("input[type=\"hidden\"][name$=\"_updateGiftBox\"]").remove(); $("input[type=\"hidden\"][name$=\"_updateSameDayDelivery\"]").remove(); $b.click(); } } } else { _self.data.sddZip = zip; _self.data.sddStoreId = ""; if (window.progress) { window.progress.show(); } _self.hidePopper(); _self.getSddStore(function (data) { if (!_self.isObjectEmpty(data) && data.hasOwnProperty("store") && !_self.isStringEmpty(data.store)) { _self.data.sddStoreId = data.store; _self.getStoresByZipPidBatch(_self.data.skuId, _self.data.skuOrin, "", _self.data.sddZip, _self.data.sddStoreId, function (parms, data) { log("pdp zip update data:", data); if (data.hasOwnProperty("success") && data.success && data.hasOwnProperty("sddStore") && !_self.isObjectEmpty(data.sddStore)) { _self.data.sddStore = data.sddStore; _self.data.sddStoreId = _self.data.sddStore.id; } if (_self.data.sddEnabled) { $C.find(".sdd-eligible").replaceWith(_self.buildSddEligibleBanner()); _self.addPDPZipSelectionHandlers(); } if (window.progress) { window.progress.hide(); } }); } else { log("no sddStoreId!"); if (_self.data.sddEnabled) { $C.find(".sdd-eligible").replaceWith(_self.buildSddEligibleBanner()); _self.addPDPZipSelectionHandlers(); } if (window.progress) { window.progress.hide(); } } }); } } else { $C.find(".popper.sdd .no-stores-msg").remove(); $C.find(".popper.sdd").append("

    " + _self.config.messaging.notInStockX.replace("X", "" + zip + "") + " " + _self.config.messaging.tryArea + "

    "); } } if (0 < $C.length) { _self.multiSelectUpdate($C, $C.find(checkedStorePattern).length); $C.find(".zip-code").on("keypress", function (e) { switch (e.key) { case "Enter": e.preventDefault(); if ($(e.currentTarget).siblings("button.update").length) { sddChangeZip(); } else { search(); } break; case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": break; default: e.preventDefault(); return false; break; } }); function iPhoneOS13PopperFix($this) { var $p = $C.find(".popper"); $p.hide(); setTimeout(function () { $p.show(); $this.focus(); }); } if (isFix) { $C.find(".zip-code").on("keyup", function (e) { var $this = $(this), $p = $C.find(".popper"); if (2 > $this.val().length) { iPhoneOS13PopperFix($this); } }); } $C.find(".zip-code").on("paste", function (e) { var $o = $(this), v, nv, ret = false; setTimeout(function () { v = $o.val(); nv = v.replace(/[^0-9]/g, ""); if (v !== nv) { $o.val(nv); } }, 0); return true; }); _self.addStoreItemHandlers(); _self.updateInStockOnly(); $C.find(".filters input[name=\"in-stock-only\"]").on("click", function () { _self.updateInStockOnly(); }); function search() { var available = false; _self.data.zip = $C.find(".search-by-zip .zip-code.bopis").val(); if ("pdp" === _self.config.feature || "bag" === _self.config.feature) { if (_self.isStringEmpty(_self.data.zip)) { _self.searchResponse(_self.data.skuId, "", {success: true, stores: []}); } else { if (window.progress) { window.progress.show(); } _self.getStoresByZipPidBatch(_self.data.skuId, _self.data.skuOrin, _self.data.zip, "", "", function (parms, data) { _self.searchResponse(parms.pid, parms.zip, data); }); } } else { if ("plp" === _self.config.feature) { _self.getStoresByZip(_self.data.zip, function (zip, data) { var found = {}, selectedStoreIds = [], saveSelected; if (_self.isObject(data) && data.hasOwnProperty("success") && data.success) { _self.data.zip = zip; _self.stores = data.stores; if (data.hasOwnProperty("readyHours") && _self.isNumber(data.readyHours)) { _self.readyHours = data.readyHours; } if (data.hasOwnProperty("pickupToday") && _self.isBoolean(data.pickupToday)) { _self.pickupToday = data.pickupToday; } if (data.hasOwnProperty("pickupDay") && _self.isString(data.pickupDay)) { _self.data.pickupDay = data.pickupDay; } if (!_self.isArrayEmpty(_self.stores)) { found = _self.findFirstBopisStore(); } if (!_self.isUndefined(found.store)) { _self.data.store = found.store; _self.data.storeId = found.store.id; selectedStoreIds.push(found.store.id); _self.selectedStoreIds = []; $C.find(".stores").empty(); $C.find(".stores").append(_self.buildStoresHtml()); $C.find(".zip-link").hide().html(_self.data.zip); $C.find(".show-on-results").show(); $C.find(".no-stores-msg").remove(); _self.updatePopperScrollbar(); _self.addStoreItemHandlers(); } else { _self.data.store = {}; $C.find(".show-on-results").hide(); $C.find(".no-stores-msg").remove(); $C.find(".popper").append("

    " + _self.config.messaging.notInStockX.replace("X", "" + _self.data.zip + "") + " " + _self.config.messaging.tryArea + "

    "); } } }); } } } $C.find(".search-by-zip .update").on("click", sddChangeZip); $C.find(".search-by-zip .search").on("click", search); $C.find(".search-by-zip .clear-input").on("click", function (e) { var $z = $(e.currentTarget); if ($z.length) { $z = $z.siblings(".zip-code"); $z.val(""); if (isFix) { iPhoneOS13PopperFix($z); } } }); $C.find(".zip-link").on("click", function (e) { e.stopPropagation(); $C.find(".zip").hide(); $C.find(".top .zip-link").hide(); $C.find(".search-by-zip").show(); $C.find(".top").show(); _self.fixPopperPosition(); }); $C.find(".bottom .multi-select-results").on("click", function () { var $checkedStores, firstStoreId = "", firstStore = {}, storename = "", storeId = "", sep = ""; $checkedStores = $C.find(".stores .rcheckbox:checked"); if (0 < $checkedStores.length) { firstStoreId = $checkedStores.eq(0).val(); if (!_self.isStringEmpty(firstStoreId)) { _self.setSessionStore(firstStoreId); if (1 < $checkedStores.length) { storename = _self.config.messaging.atStoresX.replace("X", $checkedStores.length); } else { firstStore = _self.findStore(firstStoreId).store; storename = firstStore.name; } $C.find(".select-store + .vlabel .as-link").html(storename); _self.selectedStoreIds = []; $checkedStores.each(function (i, o) { var v = $(o).val(); _self.selectedStoreIds.push(v); storeId += sep + v; sep = "|"; }); window.User.storeId = storeId; _self.hidePopper(); var $fbsp = $C.find("#filterByStorePickup"); if (0 < $fbsp.length) { if ($fbsp.prop("checked")) { $fbsp.removeClass("js__allitems"); $fbsp.removeClass("js_nostore"); $fbsp.addClass("js__pickuptoday"); $fbsp.click(); $fbsp.removeClass("js__pickuptoday"); $fbsp.addClass("js__allitems"); } else { $fbsp.addClass("js__pickuptoday"); $fbsp.click(); } } } else { log("first store emtpy!"); } } }); } $(window).off("resize.bopis.popper").on("resize.bopis.popper", function () { _self.fixPopperPosition(); });}function Bopis_addOutlineHandlers() { const _self = this; var flag = false; var $C = $("#" + _self.instance.tagId); $C.on("keydown", function (e) { var $t = $(e.target), $n = $t, f = ""; if (9 === e.keyCode) { flag = true; log("key 9"); } if (13 === e.keyCode) { log("key 13"); log("e.target:", e.target); if ($t.hasClass("vlabel")) { f = $t.attr("for"); if (!_self.isStringEmpty(f)) { $n = $t.siblings("#" + f); } if (0 === $n.length) { $n = $t.prev(); } } $n.trigger("click"); } }); $C.on("focusin", function (e) { var $t = $(e.target); if (flag) { $t.removeClass("no-outline"); flag = false; $t.on("blur", function () { $t.addClass("no-outline"); }); } });}function Bopis_buildStoreId() { const _self = this; var str = ""; str += ""; return str;}function Bopis_updateStoreId() { const _self = this; var $i = $("input[name=\"store-ship-radio\"]"); $i.attr("value", _self.data.storeId);}function Bopis_findStore(id) { const _self = this; var i, found = {}; for (i = 0; i < _self.stores.length; i++) { if (id === _self.stores[i].id) { found.store = _self.stores[i]; found.offset = i; break; } } return found;}function Bopis_findFirstBopisStore() { const _self = this; var i, found = {}; for (i = 0; i < _self.stores.length; i++) { if (_self.stores[i].bopis) { found.store = _self.stores[i]; found.offset = i; break; } } return found;}function Bopis_update(data) { const _self = this; var $C; _self.log("Bopis.update called with new data:", data); $C = $("#" + _self.instance.tagId); if (!$C.length) { _self.log("component needs to be rebuilt"); $(".bopis-filter-options").html(_self.buildComponentTag()); $C = $("#" + _self.instance.tagId); } if (data) { Object.assign(_self.data, data); _self.reset(); } $C.empty(); $C.html(_self.html());}var cNames={"Carousel":{isNull:isNull,isUndefined:isUndefined,isBoolean:isBoolean,isFunction:isFunction,isNumber:isNumber,isString:isString,isStringEmpty:isStringEmpty,isArray:isArray,isArrayEmpty:isArrayEmpty,isObject:isObject,isObjectEmpty:isObjectEmpty,isObjectNotEmpty:isObjectNotEmpty,isObjectAndEmpty:isObjectAndEmpty,isObjectAndNotEmpty:isObjectAndNotEmpty,isBaseObject:isBaseObject,isBaseObjectAndEmpty:isBaseObjectAndEmpty,isBaseObjectAndNotEmpty:isBaseObjectAndNotEmpty,isEmpty:isEmpty,toBoolean:toBoolean,getUrlParm:getUrlParm,addUrlParms:addUrlParms,objPropDef:objPropDef,jsonClone:jsonClone,jsonCompare:jsonCompare,performJsonAjaxRequests:performJsonAjaxRequests,pad:pad,createId:createId,onNtoE:onNtoE,onEtoVal:onEtoVal,log:log,newInstance:newInstance,buildStyle:buildStyle,buildTagString:buildTagString,buildComponentTag:buildComponentTag,copyObjectNameMapDefault:copyObjectNameMapDefault,copyObject:copyObject,mergeObjects:mergeObjects,persist:persist,html:Carousel_html,isJS:false,waitForjQuery:Carousel_waitForjQuery,initializeSlick:Carousel_initializeSlick,initializeCarousel:Carousel_initializeCarousel,convertToLinkObj:Carousel_convertToLinkObj,buildSlides:Carousel_buildSlides,super:{},component:{"name":"Carousel","class":"vjs_Carousel"},default:{"data":{"autoPlay":true,"delayTime":5000,"slidesToShow":1,"slidesToScroll":1,"infinite":false,"hideDots":true,"dimensions":[],"slides":[]},"config":{"slick":{"dots":true,"pauseOnHover":true}}}},"Bopis":{isNull:isNull,isUndefined:isUndefined,isBoolean:isBoolean,isFunction:isFunction,isNumber:isNumber,isString:isString,isStringEmpty:isStringEmpty,isArray:isArray,isArrayEmpty:isArrayEmpty,isObject:isObject,isObjectEmpty:isObjectEmpty,isObjectNotEmpty:isObjectNotEmpty,isObjectAndEmpty:isObjectAndEmpty,isObjectAndNotEmpty:isObjectAndNotEmpty,isBaseObject:isBaseObject,isBaseObjectAndEmpty:isBaseObjectAndEmpty,isBaseObjectAndNotEmpty:isBaseObjectAndNotEmpty,isEmpty:isEmpty,toBoolean:toBoolean,getUrlParm:getUrlParm,addUrlParms:addUrlParms,objPropDef:objPropDef,jsonClone:jsonClone,jsonCompare:jsonCompare,performJsonAjaxRequests:performJsonAjaxRequests,pad:pad,createId:createId,onNtoE:onNtoE,onEtoVal:onEtoVal,log:log,newInstance:newInstance,buildStyle:buildStyle,buildTagString:buildTagString,buildComponentTag:buildComponentTag,copyObjectNameMapDefault:copyObjectNameMapDefault,copyObject:copyObject,mergeObjects:mergeObjects,persist:persist,html:Bopis_html,baseAjaxUrl:"/on/demandware.store/Sites-Belk-Site/default/",isPopperOpen:false,promoMsg:"",isPromoMsg:false,promoMsgAssetID:"",shipPromoMsg:"",isShipPromoMsg:false,firstStoreItem:0,ignoreNextClosePopper:false,hasPreOrderResponse:false,fromPreOrder:false,feature:{},store:{},stores:[],sddZipToStoreCache:{},lastSkuId:"none",error:false,searchResults:{"isSearch":false,"bopis":false,"inStore":false,"store":{}},selectedStoreIds:[],inStockOnly:true,getDeliveryConfigBatch:Bopis_getDeliveryConfigBatch,getStoresByZipPidBatch:Bopis_getStoresByZipPidBatch,validateData:Bopis_validateData,reset:Bopis_reset,plp:Bopis_plp,pdp:Bopis_pdp,bag:Bopis_bag,bagSddBanner:Bopis_bagSddBanner,isPickupDisabled:Bopis_isPickupDisabled,buildInputRC:Bopis_buildInputRC,buildPDP:Bopis_buildPDP,fixStoreData:Bopis_fixStoreData,getBopisPromoMessaging:Bopis_getBopisPromoMessaging,getShippingPromoMessage:Bopis_getShippingPromoMessage,getStoresByZip:Bopis_getStoresByZip,getSddStore:Bopis_getSddStore,setSessionStore:Bopis_setSessionStore,getPreOrderFCInventory:Bopis_getPreOrderFCInventory,availabilityMessage:Bopis_availabilityMessage,buildSelectionToggle:Bopis_buildSelectionToggle,buildStoreSelectionToggle:Bopis_buildStoreSelectionToggle,searchStores:Bopis_searchStores,updateInStockOnly:Bopis_updateInStockOnly,searchResponse:Bopis_searchResponse,pickupTodayOrTomorrow:Bopis_pickupTodayOrTomorrow,buildPickupOption:Bopis_buildPickupOption,buildPreSaleOption:Bopis_buildPreSaleOption,buildProductShipStatus:Bopis_buildProductShipStatus,buildProductPickupStatus:Bopis_buildProductPickupStatus,buildStoreHtml:Bopis_buildStoreHtml,buildMyStoreHtml:Bopis_buildMyStoreHtml,buildStoreItemHtml:Bopis_buildStoreItemHtml,buildStoresHtml:Bopis_buildStoresHtml,buildToolTip:Bopis_buildToolTip,buildSddEligibleBanner:Bopis_buildSddEligibleBanner,buildPopper:Bopis_buildPopper,showPopper:Bopis_showPopper,hidePopper:Bopis_hidePopper,hidePoppers:Bopis_hidePoppers,updatePopperScrollbar:Bopis_updatePopperScrollbar,fixPopperPosition:Bopis_fixPopperPosition,multiSelectUpdate:Bopis_multiSelectUpdate,addPDPZipSelectionHandlers:Bopis_addPDPZipSelectionHandlers,addStoreItemHandlers:Bopis_addStoreItemHandlers,addStoreSelectionHandlers:Bopis_addStoreSelectionHandlers,addPopperHandlers:Bopis_addPopperHandlers,addOutlineHandlers:Bopis_addOutlineHandlers,buildStoreId:Bopis_buildStoreId,updateStoreId:Bopis_updateStoreId,findStore:Bopis_findStore,findFirstBopisStore:Bopis_findFirstBopisStore,update:Bopis_update,super:{},component:{"name":"Bopis","class":"vco_Bopis"},default:{"data":{"productOnlineOnly":false,"skuOnlineOnly":false,"bopisEnabled":false,"findInStoreEnabled":false,"curbSidePickupEnabled":false,"sddEnabled":false,"fisEnabled":true,"bopisProduct":true,"bopisSku":false,"zip":"","storeId":"","productInStock":false,"skuId":"","skuStockLevel":-1,"surchargeAmount":"","showPreOrder":false,"isPreOrderEnabled":false,"preOrderSelected":false,"hasPreOrderInventory":false,"triggerPOModal":false,"isQuickView":false,"releaseDate":"","preOrderPromoId":"","preOrderPromoDetails":"","store":{},"estimatedShippingMessage":"","sddZip":"","sddStoreId":"","sddStore":{},"sddSameDay":true,"skuSddEligible":false,"skuShipEligible":false,"storeSearchDistance":50,"pickupDay":"","mirakl":false,"bopisPromoAssetID":"bopis-promo-messaging"},"config":{"init":{"searchResults":{"isSearch":false,"bopis":false,"inStore":false}},"feature":"","features":{"plp":{"moveToLeftOnDesktop":true,"isMultiSelect":true,"showFilters":false,"myStore":false,"showStock":false,"storeListLimit":0,"storeSelectLimit":5,"hideScrollbars":false},"pdp":{"isMultiSelect":false,"showFilters":true,"myStore":false,"showStock":true,"storeListLimit":0,"storeSelectLimit":0,"hideScrollbars":false},"bag":{"isMultiSelect":false,"showFilters":true,"myStore":false,"showStock":true,"storeListLimit":0,"storeSelectLimit":0,"hideScrollbars":false},"bagSddBanner":{"isMultiSelect":false,"showFilters":false,"myStore":false,"showStock":false,"storeListLimit":0,"storeSelectLimit":0,"hideScrollbars":false}},"readyHours":4,"pickupToday":true,"tags":{},"messaging":{"sdd":{"title":"Same Day Delivery","pre":"NEW! ","sameDayPre":"Get it today! ","nextDayPre":"Get it fast! ","elitesPre":"Elites Get FREE","forElites":"for Elites","Free":"FREE","delivers":"Delivers by {{E}} {{T}}.","eligible":"You have {{X}} eligible item{{S}}. Order by {{C}} to get it today by {{E}}.","eligibleCutoff":"It's past time for Same Day. Get {{X}} item{{S}} tomorrow by {{E}}.","eligibleActive":"{{X}} item{{S}} deliver today by {{E}}.","eligibleActiveCutoff":"It's past time for Same Day. {{X}} item{{S}} deliver tomorrow by {{E}}.","eligiblePresale":"Order by {{C}} to get {{X}} items today by {{E}}. Pre-sale items will still ship on release date.","eligiblePresaleCutoff":"It's past time for Same Day. Get {{X}} item{{S}} tomorrow by {{E}}. Pre-sale will ship on release date.","noSddInZip":"Your items are not available for Same Day to this ZIP.","noZip":"Enter your ZIP to check availability.","zipNotEligible":"This service is not available in your ZIP.","msgEligible":"Eligible for Same Day Delivery","msgNotEligible":"Not eligible for Same Day Delivery"},"stock":{"in":"In stock","low":"A few left","lowX":"X left","out":"Out of stock","less":"Insufficient Stock"},"bopisDisabled":"Pickup temporarily unavailable","shipFree":"Ship It","ship":"Ship It","productOut":"This item is currently out of stock.","productOutNear":"This item is currently out of stock within {{D}} miles of {{Z}}.","skuOut":"Your selected item options are currently out of stock.","productOnlineOnly":"This item is online only.","skuOnlineOnly":"Selected item options are online only.","bopisOnly":"Store Pickup Only","noShip":"Shipping not available","bopis":"FREE Store Pickup","notBopis":"Pickup not available","noBopisNearby":"Pickup not available nearby","readyTimeX":"Most orders ready within X hours!","atMyStore":"Visit store to purchase at ","storeClosure":"Stores are temporarily closed.","storeClosed":"Store is temporarily closed.","atNearStore":"Visit store to purchase.","notNearby":"Not in stock within {{D}} miles","noStoresNearby":"No stores within {{D}} miles","selectZip":"Try Another Area","selectStore":"Find A Store","selectSizeBopisOnly":"Select size to find in store","selectSize":"Please select a size to check in-store availability.","selectSizeForOpt":"Select size to see delivery options.","nearby":"Available nearby","noStoresX":"No Belk stores are located near X.","notInStockX":"Item is not in stock at a store near X.","tryArea":"Try another area or shop online and we'll ship it.","atStoresX":"At X Stores Near You","estimatedDelivery":" Arrives in ","surchargeAmountApplies":"large item surcharge applies.","preSaleHeader":"Pre-sale","preSaleShipMessage":"Ships with Gift","preSaleCouponExclusionMessage":"Coupon & Non-Pre-sale Gifts Excluded"}}}}};if (window.comp.hasOwnProperty('insert')) nextInsert=window.comp.insert;window.comp={VERSION:"0.3.4.0",debug:debug,insert:insert,attach:attach,getComs:getComs,update:update};})(window,document); after coupon',add(e),isCoupon=!0):!onePrice&&product.price.sale&&((e=cEA("div","class","product-sales-price")).innerHTML+=price(product.price.sale,""),add(e)),onePrice&&!isCoupon?((e=cEA("div","class","product-standard-price")).innerHTML+=price(product.price.orig,""),add(e)):((e=cEA("div","class","product-original-price")).innerHTML+=price(product.price.orig,""),add(e)),up()),product.promotion&&null!==(e=buildPromotion(product))&&add(e),buildProductIndicator&&product.mirakl)&&add((new DOMParser).parseFromString(buildProductIndicator(),"text/html").body.firstElementChild);return html}function getId(){return _productData.id}return product=product||"",_productData=JSON.parse(JSON.stringify(product)),inst.buildHTML=buildHTML,inst.getId=getId,inst}function insertStyle(){var h,s;(h=DOC.getElementsByTagName("head")).length&&((s=DOC.createElement("style")).appendChild(DOC.createTextNode('.product-name.sponsored{margin-top:12px;}.product-name.sponsored:before{content:"Sponsored";display:block;color: #767676;}')),h[0].appendChild(s))}function insertBeforeItem(item,newSibling){item.parentNode.insertBefore(newSibling,item)}function getUrlParm(name){var str=WND.location.search,s=str.indexOf(name+"="),e,p,value="";return-1!==s&&(-1===(e=str.indexOf("&",s))&&(e=str.length),1<(p=str.substring(s,e).split("=")).length&&(value=p[1])),value}function init(){var pt=null,sib;if(WND.pageData&&WND.pageData.products){if(!(p=WND.pageData.products).length)return;if(WND.pageData.selectedColors)for(sc=WND.pageData.selectedColors,i=0;i";}buildProductIndicator._={"PRODUCT_INDICATOR_CLASS":"mirakl-product-indicator","PRODUCT_INDICATOR_IMG":"https://belk.scene7.com/is/image/Belk/MarketplaceLogo?fmt=png-alpha","PRODUCT_INDICATOR_COPY":"Belk Marketplace"};function buildSoldBy(offer, config) { const _ = buildSoldBy._ || _mirakl_js_; var str = ""; config = config || {}; if (config.header) { str += "

    " + buildProductIndicator() + "

    "; } str += "

    "; if (config.icon) { str += buildProductIndicator() + " "; } if (offer.shopId && offer.shopName && "" !== offer.shopId && "" !== offer.shopName) { str += _.SOLD_BY_COPY + " " + offer.shopName + ""; if (config.tooltip) { str += "

    " + _.TOOLTIP_COPY + "

    "; } } str += "

    "; return str;}buildSoldBy._={"SELLER_URL":"https://www.belk.com/seller-info/?sellerId=","PRODUCT_INDICATOR_COPY":"Belk Marketplace","SOLD_BY_COPY":"Sales, shipping & returns by","TOOLTIP_COPY":"Belk Marketplace offers a tailored selection of brands and makers. This partner handles shipping, returns and customer service for all items sold. Belk Marketplace items have different shipping charges, returns policy and they are not eligible for promotions or coupons. Marketplace items cannot be returned to Belk stores or via Belk.com Customer care.","SOLD_BY_CLASS":"mirakl-sold-by","TOOLTIP_CLASS":"mirakl-tooltip"};window.expose=window.expose||{};window.expose.buildSoldBy=buildSoldBy;init()}(window,document);':listEl+='

  • '+el.name+'
  • ':listEl+='

  • '+el.name+'
  • '}),desktopBC=desktopBCContainer+homeBC+olEl+listEl+"

    "}function buildBreadcrumbNav(data){let breadcrumbContainer=DOC.querySelector(".breadcrumb"),desktopBC=buildDesktopBC(data),mobileBC="";data.breadcrumb.length>2&&(mobileBC=buildMobileBC(data)),breadcrumbContainer&&(breadcrumbContainer.innerHTML=desktopBC+mobileBC)}function renderFacetNav(){let secondaryEl=DOC.querySelector("#secondary"),facetNavHtml='

    ';secondaryEl&&(secondaryEl.innerHTML=facetNavHtml)}function buildSort(data){let sortContainerEl=DOC.querySelector(".sort-by"),selectEl='

    "+mobileSortEl+"

    ",sortContainerEl&&(sortContainerEl.innerHTML=selectEl)}function buildPagination(data){let paginationContainerEl=DOC.querySelector(".search-result-options.last"),resultCountEl='

    "),paginationContainerEl&&(paginationContainerEl.innerHTML=resultCountEl+paginationEl)}function updatePageMetaData(data){let titleEl=DOC.querySelector("title"),metaDescriptionEl=DOC.querySelector('meta[name="description"]');data.metaData&&data.metaData.hasOwnProperty("description")&&metaDescriptionEl&&metaDescriptionEl.setAttribute("content",data.metaData.description),data.metaData&&data.metaData.hasOwnProperty("pageTitle")&&titleEl&&(titleEl.innerHTML=data.metaData.pageTitle)}function buildPage(data){buildBreadcrumbNav(data),0!==data.product_tiles.length&&(buildTitle(data),renderFacetNav(),buildSort(data),buildPagination(data),updatePageMetaData(data));let event=new CustomEvent("plp-build-complete");hideProgress(),DOC.dispatchEvent(event)}function jumpToResults(){let el=DOC.getElementById("results-products");if(el){let hh=getComputedStyle(DOC.documentElement).getPropertyValue("--header-height")||0;hh&&(hh=parseInt(hh)),mobileNavQuery.matches?WND.scrollBy(0,el.getBoundingClientRect().top-hh-80):WND.scrollBy(0,el.getBoundingClientRect().top-hh-5)}}function updatePLPTopContent(metaData){if(Urls.getPLPContent&&metaData){let contentUrl=void 0!==metaData.cgid&&""!==metaData.cgid?Utils.appendParamToURL(Urls.getPLPContent,"cgid",metaData.cgid):Utils.appendParamToURL(Urls.getPLPContent,"searchKeyword",metaData.searchKeyword);fetch(contentUrl).then((function(response){if(response.ok)return response.text()})).then((function(contentHtml){let slotEl=DOC.querySelector(".content-slot");slotEl&&(slotEl.innerHTML=contentHtml),jumpToResults()}))}}function updateSEOContent(cgid){if(Urls.getPLPContent&&""!==cgid){let seoUrl=Utils.appendParamsToUrl(Urls.getPLPContent,{cgid:cgid,seoContent:"true"});fetch(seoUrl).then((function(response){if(response.ok)return response.text()})).then((function(contentHtml){let seoSlotEl=DOC.querySelector("#plp-seo-content");seoSlotEl&&(seoSlotEl.innerHTML=contentHtml)}))}}function noProductContent(){let noProductContentUrl=void 0!==WND.pageData.brData.metaData&&void 0!==WND.pageData.brData.metaData.cgid&&null!==WND.pageData.brData.metaData.cgid?Utils.appendParamToURL(Urls.getNoProductContent,"cgid",WND.pageData.brData.metaData.cgid):Utils.appendParamToURL(Urls.getNoProductContent,"searchKeyword",WND.pageData.brData.metaData.searchKeyword);noProductContentUrl&&fetch(noProductContentUrl).then((function(response){if(response.ok)return response.text()})).then((function(noContentHtml){let primaryEl=DOC.querySelector("#primary"),wrapperEl=DOC.querySelector("#wrapper");primaryEl&&(primaryEl.innerHTML=noContentHtml),wrapperEl&&wrapperEl.classList.add("pt_product-search-noresult")}))}function brAppUnavailable(){Urls.getBRAppUnavailableContent&&fetch(Urls.getBRAppUnavailableContent).then((function(response){if(response.ok)return response.text()})).then((function(contentHtml){let mainEl=DOC.querySelector("#main");mainEl&&(mainEl.innerHTML=contentHtml),hideProgress()}))}function getPidList(tileData){let pidList=[];return tileData.forEach((function(el){pidList.push(el.id)})),pidList}function buildBRAppUrl(brParams){brParams=brParams.replace("http://","").replace("https://","").replace("/s/Belk/search/","").replace("/search/","").replace(WND.location.host,"");let searchUrl=WND.pageData.BR_SEARCH_URL?WND.pageData.BR_SEARCH_URL:"belk.com/ecom/br/v1/web/search",categoryUrl=WND.pageData.BR_CATEGORY_URL?WND.pageData.BR_CATEGORY_URL:"belk.com/ecom/br/v1/web/category",isSearchUrl,brUrl;return!!brParams.includes("q=")?searchUrl+brParams:categoryUrl+brParams}function getDataFromBRApp(url,isAJAX){showProgress(),fetch(url,{credentials:"include"}).then((function(response){if(response.ok)return response.json();brAppUnavailable()})).then((function(brData){void 0!==WND.pageData&&void 0!==brData&&(!brData.product_tiles&&brData.metaData&&""!==brData.metaData.redirectUrl?WND.location.replace(brData.metaData.redirectUrl):0===brData.product_tiles.length?(WND.pageData.brData=brData,noProductContent(),DOC.dispatchEvent(new CustomEvent("brdata_ready"))):1===brData.product_tiles.length&&brData.pdpData&&brData.pdpData.pdpRedirect?WND.location.href=brData.product_tiles[0].url:(WND.pageData.products=brData.product_tiles,WND.facetNav=brData.facetNav,WND.pageData.brData=brData,void 0!==WND.utag_data&&(WND.utag_data.product_on_page=getPidList(brData.product_tiles)),DOC.dispatchEvent(new CustomEvent("brdata_ready")),isAJAX&&brData.metaData&&DOC.dispatchEvent(new CustomEvent("update-plp-content",{detail:brData.metaData}))))})).catch((function(){brAppUnavailable()}))}function init(){WND.pageData&&WND.pageData.brData&&buildPage(WND.pageData.brData)}if(DOC.addEventListener("brdata_ready",init),DOC.addEventListener("plp-ajax-call",(function(e){if(e.detail.url){let brAppUrl;getDataFromBRApp(buildBRAppUrl(e.detail.url),!0),WND.history.pushState({reason:"updateProductListing()"},"",e.detail.url)}})),DOC.addEventListener("update-plp-content",(function(e){e.detail&&(updatePLPTopContent(e.detail),e.detail.cgid&&updateSEOContent(e.detail.cgid))})),DOC.addEventListener("DOMContentLoaded",(function(){WND.pageData&&WND.pageData.brData&&buildPage(WND.pageData.brData)})),""!==WND.pageData.bloomreach_url){let url;getDataFromBRApp(buildBRAppUrl(WND.pageData.bloomreach_url)),WND.history.replaceState({reason:"initializeEvents()"},"",WND.location.href)}}(window,document);

    You might also like

    Latest Posts

    Article information

    Author: Ms. Lucile Johns

    Last Updated: 08/15/2022

    Views: 6067

    Rating: 4 / 5 (61 voted)

    Reviews: 84% of readers found this page helpful

    Author information

    Name: Ms. Lucile Johns

    Birthday: 1999-11-16

    Address: Suite 237 56046 Walsh Coves, West Enid, VT 46557

    Phone: +59115435987187

    Job: Education Supervisor

    Hobby: Genealogy, Stone skipping, Skydiving, Nordic skating, Couponing, Coloring, Gardening

    Introduction: My name is Ms. Lucile Johns, I am a successful, friendly, friendly, homely, adventurous, handsome, delightful person who loves writing and wants to share my knowledge and understanding with you.