function HomeIndexInit(){$("html").addClass("homePage")}function _ProductBoxInit(n){const{id:t,dynamicPreviewAvailable:s,previewActionUrl:h,isSingleProductAddToCart:c,addToBasketSuccess:l,addToBasketFailed:a,addToBasketUrl:v,stateId:e,teaserHasFirstAttr:r,teaserHasLastAttr:u,teaserHasBothAttrs:f,teaserStockData:i,getProductPricesUrl:y,displayStockInlineOnTeaserPage:o}=n;function p(){var n={messages:{success:l,failed:a},url:v};return(r||u)&&(n.selectedAttributes=w()),n}$(document).ready(function(){let n=$(`[data-productid='${t}']`);if(s&&n.dynamicPreview({id:"#"+t,previewActionUrl:h,spinnerId:`#spinner_${t}`}),c)$(`#productlistaddtocartbutton_${t}`).onAddToCartButtonClick(p,t,$(`#categoryQtyBox_${t}`));if(e&&n.productBox(e),r||u)$(`[data-productid='${t}'] .teaser-attribute-button`).on("click",function(){var n=$(this);n.hasClass("is-disabled")||(n.closest(".attribute-values").find(".teaser-attribute-button").removeClass("is-primary"),n.addClass("is-primary"),n.closest(".column, .teaser-last-attr-value").find("input[type='radio']").prop("checked",!0),n.closest(".column, .teaser-last-attr-value").find("input[type='radio']").trigger("change"))});if(f&&a(),r||u){$(`[data-productid='${t}'] .teaser-first-attribute`).on("change",function(){f&&a();l()});$(`[data-productid='${t}'] .teaser-last-attribute`).on("change",function(){l()});$(`[data-productid='${t}'] [id^='categoryQtyBox_']`).on("change",function(){l()});v()&&l()}function v(){var r=n.find(".teaser-first-attribute:checked"),t=n.find(".teaser-first-attribute").filter("select"),u=n.find(".teaser-last-attribute:checked"),i=n.find(".teaser-last-attribute").filter("select"),f=r.length>0&&r.val()||t.length>0&&t.val()&&t.val()!=="0",e=u.length>0&&u.val()||i.length>0&&i.val()&&i.val()!=="0";return f||e}function w(n){var t=n.find(".teaser-first-attribute"),i=n.find(".teaser-first-attribute:checked");return t.is("select")?t.val():i.length?i.val():null}function b(n,t,i,r,u,f){return Object.keys(n.attrs).length!==f?!1:n.attrs[t.firstAttrId]!==i?!1:u.every(function(t){return n.attrs[t]===r[t]})}function k(n,t){var i={},r=n.middleAttrs||{},u=Object.keys(r),f=2+u.length;return n.combinations.forEach(function(e){if(b(e,n,t,r,u,f)){var o=e.attrs[n.lastAttrId];o&&(i[o]={stock:e.stock,allowBackOrder:e.allowBackOrder,isInStock:e.stock>0||e.allowBackOrder,isDisabled:1>e.stock&&!e.allowBackOrder})}}),i}function d(n,t){n.find(".teaser-last-attr-value").each(function(){var n=$(this),r=n.find(".teaser-last-attribute-btn"),i=n.find(".teaser-stock-tag"),u=n.find("input[type='radio']");r.addClass("is-disabled").removeClass("is-primary").prop("disabled",!0);u.prop("checked",!1).prop("disabled",!0);i.length&&i.text(t.strings.outOfStock)});n.find(".teaser-last-attribute option").each(function(){var n=$(this),i=n.data("name");i&&(o?n.prop("disabled",!0).text(i+" "+t.strings.outOfStock):n.prop("disabled",!0).text(i))})}function g(n,t,i,r){var u=n.find(".teaser-last-attr-value[data-value-id='"+t+"']");if(u.length){var e=u.find(".teaser-last-attribute-btn"),f=u.find(".teaser-stock-tag"),o=u.find("input[type='radio']");i.isDisabled||(e.removeClass("is-disabled").prop("disabled",!1),o.prop("disabled",!1));f.length&&(i.isInStock?i.allowBackOrder&&1>i.stock?f.text(r.strings.backordering):f.text(r.strings.quantityFormat.replace("{0}",i.stock)):f.text(r.strings.outOfStock))}}function nt(n,t,i,r){var u=n.find(".teaser-last-attribute option[value='"+t+"']");if(u.length){var f=u.data("name");if(f)if(o){var e=i.isInStock?i.allowBackOrder&&1>i.stock?r.strings.backordering:r.strings.quantityFormat.replace("{0}",i.stock):r.strings.outOfStock;u.text(f+" "+e).prop("disabled",i.isDisabled)}else u.text(f).prop("disabled",i.isDisabled)}}function tt(n,t){var i=n.find(".teaser-last-attribute").filter("select");if(i.length){if(t){var r=i.find("option[value='"+t+"']");if(r.length&&!r.prop("disabled")){i.val(t);return}}var u=i.find("option:selected");if(!u.length||u.prop("disabled")){var f=i.find("option:not(:disabled):first");f.length&&i.val(f.val())}}}function a(){if(i){var h=w(n),r=k(i,h),t=null;if(n.find(".teaser-last-attr-value").each(function(){var n=$(this).find("input[type='radio']");if(n.prop("defaultChecked"))return t=$(this).data("value-id"),!1}),!t){var e=n.find(".teaser-last-attribute").filter("select");if(e.length){var o=e.find("option[selected]");o.length&&(t=o.val())}}d(n,i);for(var u in r){var s=r[u];g(n,u,s,i);nt(n,u,s,i)}if(t&&r[t]&&!r[t].isDisabled){var f=n.find(".teaser-last-attr-value[data-value-id='"+t+"']");if(f.length){var c=f.find("input[type='radio']"),l=f.find(".teaser-last-attribute-btn");c.prop("checked",!0);n.find(".teaser-last-attribute-btn").removeClass("is-primary");l.addClass("is-primary")}}tt(n,t)}}function l(){var o=`${t}`,n=$("[data-productid='"+o+"']"),i=[],r=n.find(".teaser-first-attribute").filter("select");if(r.length>0&&r.val()&&r.val()!=="0")i.push(parseInt(r.val()));else{var f=n.find(".teaser-first-attribute:checked");f.length>0&&f.val()&&i.push(parseInt(f.val()))}var u=n.find(".teaser-last-attribute").filter("select");if(u.length>0&&u.val()&&u.val()!=="0")i.push(parseInt(u.val()));else{var e=n.find(".teaser-last-attribute:checked");e.length>0&&e.val()&&i.push(parseInt(e.val()))}var s=n.find("[id^='categoryQtyBox_']").val()||1,h={ProductId:parseInt(o),Quantity:parseInt(s),TeaserProductAttributeValueIds:i.length>0?i:null};$.ajax({url:y,type:"POST",contentType:"application/json",data:JSON.stringify([h]),success:function(t){if(t&&t.length>0){var i=t[0];i&&i.FormattedPrice&&n.find(".productPrice").html(i.FormattedPrice)}}})}});function w(){var u=[],n=$(`[data-productid='${t}']`);if(f){var e=n.find(".teaser-first-attribute").filter("select"),o=null,p=null,w=null;if(e.length>0)o=e.val(),p=e.data("xml-attribute-id"),w=e.data("product-attribute-id");else{var s=n.find(".teaser-first-attribute:checked");s.length>0&&(o=s.val(),p=s.data("xml-attribute-id"),w=s.data("product-attribute-id"))}o&&u.push({XAId:String(p),PAId:w,Vs:[String(o)]});i&&i.middleAttrsSaav&&i.middleAttrsSaav.forEach(function(n){u.push(n)});var h=n.find(".teaser-last-attribute").filter("select"),c=null,b=null,k=null;if(h.length>0)c=h.val(),b=h.data("xml-attribute-id"),k=h.data("product-attribute-id");else{var l=n.find(".teaser-last-attribute:checked");l.length>0&&(c=l.val(),b=l.data("xml-attribute-id"),k=l.data("product-attribute-id"))}c&&u.push({XAId:String(b),PAId:k,Vs:[String(c)]})}else{var nt=r?".teaser-first-attribute":".teaser-last-attribute",a=n.find(nt).filter("select"),v=null,d=null,g=null;if(a.length>0)v=a.val(),d=a.data("xml-attribute-id"),g=a.data("product-attribute-id");else{var y=n.find(`${nt}:checked`);y.length>0&&(v=y.val(),d=y.data("xml-attribute-id"),g=y.data("product-attribute-id"))}v&&u.push({XAId:String(d),PAId:g,Vs:[String(v)]})}return JSON.stringify(u)}}$.fn.onAddToCartButtonClick=function(n,t,i){$(this).click(function(){var r=n();let u=i.val();addToCartProduct(t,u,r.url,r.messages,r.customerEnteredPrice,r.selectedAttributes)})};function addToCartProduct(n,t,i,r,u,f,e,o){$.ajax({cache:!1,type:"POST",contentType:"application/json; charset=utf-8",url:i,data:getAddToBasketRequestJson(n,t,u,f,e,o),success:function(n){if(n.IsSuccess)if(n.RedirectOnAddToCartUrl)setLocation(n.RedirectOnAddToCartUrl);else window.cfVue.toast.success(r.success,3e3,{override:!0}),$(".cf_headerlinks_shoppngcart__counter span").html(n.TotalBasketQuantity),$(".current-basket-quantity span").html(n.TotalBasketQuantity);else if(n.Items){const t=n.Items.filter(n=>n.Errors?.length>0).filter(n=>!n.IsSuccess),i=t.map(n=>n.Name+":"+n.Errors.join(","));window.cfVue.toast.error(String.format(r.failed,i.join(";")),1e4,{override:!0})}else n&&typeof n=="string"&&window.cfVue.toast.error(String.format(r.failed,n),1e4,{override:!0})},error:function(){window.cfVue.toast.error(r.failed,1e4,{override:!0})}})}function getAddToBasketRequestJson(n,t,i,r,u,f){var e={Items:[{ProductId:n,Quantity:t,CustomerEnteredPrice:i,SelectedAttributesJson:r,GiftCardAttributes:u,SavedQuoteId:f}]};return JSON.stringify(e)}(function(){function n(n,t,i,r){window.EventBus.dispatchEvent("change-state-"+n,{id:t,isEnabled:i,quantity:r||null})}function t(n){var t=n.find(".quantity-input-selector");return t?t.val()||null:null}$.fn.productBox=function(i){const r=$(this);let c=!1;a(!1);const f=r.find(".selection-checkbox"),o=r.data("productid"),y=r.find(".multi-selector-switch"),e=r.find(".quantity-input-selector"),p=1;let s=p;s=l("min");const b=l("data-default-quantity"),u=r.find(".multi-select-reset"),k=r.find(".click-trigger"),d=r.find(".productlistaddtocartbutton"),h=d.length>0;h?window.EventBus.dispatchEvent("register-"+i,{id:o,isEnabled:!1,quantity:t(r)}):f.attr("disabled","disabled");function g(){if(it(e)){f.prop("checked",!0);const t=e.val();n(i,o,!0,t);u.length&&u.hasClass("is-hidden")&&u.removeClass("is-hidden")}}const nt=()=>{var u=f.prop("checked");n(i,o,u,t(r));v()},tt=()=>{n(i,o,!0,t(r)),v(!0),u.length&&u.hasClass("is-hidden")&&u.removeClass("is-hidden")};f.click(nt);e.on("blur",g);e.on("input",tt);k.click(function(u){if((c||h)&&(u.preventDefault(),h)){var e=f.prop("checked");n(i,o,!e,t(r));v()}});function l(n){return w(e.attr(n))}function w(n){return Number(!n?s:n)}function it(n){const i=l("max"),t=w(n.val());return t>i||t{e.val(b??p),f.prop("checked",!1),n(i,o,!1,t(r)),u.addClass("is-hidden")});return window.EventBus.addEventListener("on-state-changed-"+i,function(n){var t=n.detail;t.length==0?ut():rt();var i=t.find(n=>n.id==o);i!=null?f.prop("checked",!0):f.prop("checked",!1)}),this}})(),function(){var n={rootMargin:"0px",threshold:1};$.fn.observeVisible=function(t){return this.each(function(){var i=new IntersectionObserver(n=>{n.forEach(n=>{var i=n.intersectionRatio>0;t(i);t.bind(this)(i)})},n);i.observe($(this).get()[0])}),this}}(),function(){var r={},n={};function f(n,t,i){n&&ImmediateAction.Default(n,function(){t();ImmediateAction.AutoCancel(n)},function(n){if(n.Success){const t=n.Urls?n.Urls:null;i(t)}else console.log("Failed to process action",n),i(null)},300)}function t(n,t){$(n).hide();$(t).show()}function e(n){var t=(new Date).getTime(),i=n.indexOf("?")!==-1?"&":"?";return n+i+"timestamp="+t}function i(t,i,u){const f=$(t);let s=f.attr("src");$(i).hide();u?(u=e(u),n[t]=!0,o(u,5,1e3).then(n=>{if(n){f.attr("src",u).on("load",function(){f.show()});s=u}}).catch(n=>{console.error("Failed to load image after 5 attempts:",n)})):n[t]=!1;r[t]=s}function o(n,t,i){return new Promise(r=>{function u(f){fetch(n).then(n=>{n.ok?r(!0):(console.warn(`Attempt ${f} failed: ${n.status}`),fu(f+1),i):r(!1))}).catch(n=>{console.warn(`Attempt ${f} encountered an error: ${n}`),fu(f+1),i):r(!1)})}u(1)})}function u(n,t,i){$.ajax({url:n,method:"POST",dataType:"json",contentType:"application/json; charset=utf-8",success:function(n){if(!n){alert("Something went wrong");return}if(!n.success){alert(n.ErrorMessage);return}n.queueId?(t(),f(n.queueId,t,i)):i(n.urls)},error:function(n){console.log("Failed to get dynamic preview",n);alert("Failed to get dynamic preview")}})}function s(n,t,i){var r=new RegExp("([?&])"+t+"=.*?(&|$)","i"),u=n.indexOf("?")!==-1?"&":"?";return n.match(r)?n.replace(r,"$1"+t+"="+i+"$2"):n+u+t+"="+i}function h(){$("a[rel^='lightbox']").slimbox({},null,function(n){return this==n||this.rel.length>8&&this.rel==n.rel})}window.dynamicPreviewAction=function(n,t,i){var r=n.previewActionUrl;return n.thumbnailSize&&(r=s(r,"thumbnailSize",n.thumbnailSize)),u(r,function(){t&&t()},function(n){i&&i(n)}),this};$.fn.dopPreview=function(n){t(n.id,n.spinnerId);l(n.previewActionUrl,function(t){i(n.id,n.spinnerId,t);c(n.sciId,t);h()})};function c(n,t){if(t){var r=$('[data-sciId="'+n+'"]');if(r.length>0){var i=r.find(".shopping-cart__product__images__item");if(i.length>0){i.attr("href",t);var u=i.find("img");u.length>0&&u.show();$(".loading-overlay").removeClass("is-active")}}}}function l(n,t){var r=24;function i(u){$.ajax({url:n,method:"GET",success:function(n){t(n)},error:function(n){u{let i=n;for(let n=0;n
`,u=`
${i}
`,f=`
`,e=StringHelper.format(f,[!t?"":r,!i?"":u]);return!t&&!i?"":e}window[`OnAuthenticateSuccess${n}`]=function(i){i.Authenticated?($(`#phPassword-${n}`).hide(),$(`#phPassword-${n}`).after(t(i.Title?.trim()??"",i.Body?.trim()??""))):($(`#passworderror-${n}`).text(i.Error),$(`#phPassword-${n} #password-${n}`).select().focus())}}function _QuantityBasedPricingSelectorInit(n){const{bUpdatePricing:u,selectorId:t,useDelegatedEvents:r}=n;if(r)$(document).on("change",t,i);else $(t).change(i);i();function i(){const i=$(t).val(),n=$(".quantityBox");if(n.val(i),r&&n.trigger("input"),u)$(".productPrice").find("span").text("")}}const ProductHelper={types:{price:"price",stock:"stock"},emitLoading:(n,t)=>{ProductHelper.types.hasOwnProperty(t)?window.EventBus.dispatchEvent(`${t}-loader-change-status`,n):console.error(`Invalid emit loading type: ${t}`)},loadProductData:(n,t,i,r)=>{if(n){const{beforeSend:f,onSuccess:e,onError:u,onComplete:o,getDataModel:s}=r,h=n.map(n=>s(n));$.ajax({url:i,contentType:"application/json; charset=utf-8",type:"POST",dataType:"json",data:JSON.stringify(h),beforeSend:()=>{n.forEach(n=>{ProductHelper.emitLoading({enable:!0,productId:n},t)}),f&&f()},success:n=>{n.forEach(n=>{n.Success?e&&e(n,n.ProductId):u&&u(n)})},error:()=>{n.forEach(n=>{u&&u(n)})},complete:()=>n.forEach(n=>{ProductHelper.emitLoading({enable:!1,productId:n},t),o&&o(n)})})}},startObserve:(n,t)=>{if(n){const i=new IntersectionObserver(t);n.forEach(n=>i.observe(n))}}};function handleBeforeSend(n,t){t.forEach(t=>{n.unobserve(t)})}function handleButton(n,t,i,r){const u=$(t(n));u&&i(u,r)}function disableAddToCartButton(n,t){handleButton(n,t,n=>n.attr("disabled","disabled"))}function enableAddToCartButton(n,t){handleButton(n,t,n=>n.removeAttr("disabled"))}function initializeObserver(n,t,i,r,u,f,e){ProductHelper.startObserve(e,(e,o)=>{let s=[],c=[],h;e.forEach(e=>{if(e.intersectionRatio>0){let l=t(e.target);s.push(l);c.push(e.target);const a={beforeSend:()=>handleBeforeSend(o,c),onSuccess:u,onError:f,getDataModel:i};h||(h=setTimeout(()=>{ProductHelper.loadProductData(s,r,n,a),s=[],h=null},300))}})})}function startObserve(n,t,i,r,u,f,e,o,s,h,c){const l=n=>$(u(n)),a=n=>$(f(n)),v=n=>{let{productId:t,enable:u}=n.detail;if(t){const i=l(t),r=a(t);i&&(u?(i.text(e),i.removeClass("is-hidden"),r.removeClass("is-hidden"),disableAddToCartButton(t,c)):(r.addClass("is-hidden"),enableAddToCartButton(t,c)))}};window.EventBus.addEventListener(`${o}-loader-change-status`,v);const y=Array.from(r).filter(n=>l(t(n))!==null);initializeObserver(n,t,i,o,s,h,y)}function loadProductPrice(n,t,i,r,u){const e=$(i),f={onSuccess:r,getDataModel:u};ProductHelper.loadProductData([t],"price",n,f)}function _TeaserProductLiveScriptsInit(n){const{handleLiveStock:e,handleLivePricing:o,stockUrl:s,loadingStockString:h,stockAvailabilityString:c,pricingUrl:t,loadingPriceString:l}=n;function i(n,t){var i=$(`#teaser-attribute-${t}-${n}`);if(i.length>0&&i.val())return parseInt(i.val());var r=$(`input[name="teaser-attribute-${t}-${n}"]:checked`);return r.length>0&&r.val()?parseInt(r.val()):null}function a(n){var t=[],r=i(n,"first"),u=i(n,"last");return r&&t.push(r),u&&t.push(u),t}const r=n=>n?n.getAttribute("data-productId"):null,u=$("div[data-productId].product-item.catfish-default-product-box"),f=n=>`div[data-productId="${n}"] .productlistaddtocartbutton`;if(e){const n=n=>`div[data-productId="${n}"] .product--stockquantity`,t=n=>`#stock-loader_${n}`,i=(t,i)=>{const r=$(n(i));r&&r.text(`${c} ${t.StockAvailability}`)},e=t=>{const i=$(n(t));i&&i.text(`Failed to get stock. Please contact your administrator.`)},o=n=>n;$(function(){startObserve(s,r,o,u.toArray(),n,t,h,"stock",i,e,f)})}if(o){const n=n=>`div[data-productId="${n}"] .productPrice`,o=n=>`div[data-productId="${n}"] .loader.priceLoader`,s=n=>$(`div[data-productId="${n}"] meta[itemprop="price"]`),i=(t,i)=>{const r=$(n(i));r&&t&&t.FormattedPrice&&(r.html(t.FormattedPrice),s(i).attr("content",t.Amount))},h=t=>{const r=t.ProductId,i=$(n(r));i&&i.html(t.CallForPriceMessage)},e=n=>{let i=$(`#categoryQtyBox_${n}`).val()||1,t=a(n);return{ProductId:n,Quantity:i,TeaserProductAttributeValueIds:t.length>0?t:null}};$(function(){startObserve(t,r,e,u.toArray(),n,o,l,"price",i,h,f);const s=$("[id^='categoryQtyBox_']");s.on("change",function(){const o=$(this).val()||1,u=$(this).attr("id"),r=u.split("_")[1],f=n(r);loadProductPrice(t,r,f,i,e)});const c=$(".teaser-first-attribute, .teaser-last-attribute").filter("select");c.on("change",function(){const r=$(this).data("product-id"),u=n(r);loadProductPrice(t,r,u,i,e)});const a=$(".teaser-first-attribute, .teaser-last-attribute").filter("input[type='radio']");a.on("change",function(){const r=$(this).data("product-id"),u=n(r);loadProductPrice(t,r,u,i,e)})})}}function _PollInit({id:n,voteUrl:t}){$(`#vote-poll-${n}`).click(function(){var r=$(`input:radio[name=pollanswers-${n}]:checked`).val();if(typeof r=="undefined")alert("Please select an answer");else{var i=$(`#poll-voting-progress-${n}`);i.show();$.ajax({cache:!1,type:"POST",url:t,data:"pollAnswerId="+r,success:function(t){i.hide();$(`#pnl-poll-vote-result-${n}`).html(t.Result);t.Success?$(`#pnl-poll-vote-${n}`).hide():$(`#pnl-poll-vote-result-${n}`).fadeIn("slow").delay(2e3).fadeOut("slow")},error:function(){alert("Failed to vote.");i.hide()}})}return!1})}function DynamicTierPricingInit(n){const{productVariantId:u,getDynamicQuantityBasedPricingUrl:f}=n;let i=!1,r=!1;l();t();function e(){const n=document.querySelector(".dynamic-quantity-pricing-wrapper");n&&n.classList.add("is-loading")}function o(){const n=document.querySelector(".dynamic-quantity-pricing-wrapper");n&&n.classList.remove("is-loading")}function s(){const n=document.querySelector('input[id^="price_'+u+'_EnteredQuantity"]');return n?n.closest("form"):document.querySelector('form[id*="product"]')||document.querySelector(".product-essential form")}function h(){typeof updateSelectedAttributes=="function"&&window.updateSelectedAttributes();const n=s();return n?$(n).serialize():""}function c(){const n=document.getElementById("quantityBasedPricingSelector");return n?parseInt(n.value):null}function t(){if(i){r=!0;return}i=!0;e();$.ajax({url:f,type:"POST",data:{productVariantId:u,data:h(),selectedQuantity:c()},success:function(n){if(n&&n.trim()){const t=document.querySelector(".dynamic-quantity-pricing-wrapper");if(t&&t.parentNode){const i=document.createElement("div");i.innerHTML=n;const r=i.querySelector(".dynamic-quantity-pricing-wrapper");r&&t.parentNode.replaceChild(r,t)}}},error:function(n,t,i){console.warn("Failed to fetch dynamic quantity-based pricing:",i)},complete:function(){o();i=!1;r&&(r=!1,t())}})}function l(){window.EventBus&&typeof window.EventBus.addEventListener=="function"&&window.EventBus.addEventListener("on-attributes-changed",function(){t()});document.addEventListener("updateProductPrice",function(){t()})}}