1const ADDONS={};app_shop.vars.xhr="";var hotspotAjaxWrapType="",iaical_dateFormat="yy-mm-dd",iaical_firstDay="1",iaical_monthNext=window.Literals.calendar.nextMonth,iaical_monthPrev=window.Literals.calendar.prevMonth,iaical_daysShort=window.Literals.calendar.dayNamesShort,iaical_monthNames=window.Literals.calendar.monthNames,iaical_shortNames=window.Literals.calendar.monthNamesShort;app_shop.getFile=a=>{const s=document.createElement("script");s.src=`${app_shop.urls.prefix}${a}.js`,document.body.appendChild(s)},app_shop.getOuterJS=a=>{a.forEach((a=>{const s=document.createElement("script");s.src=`${app_shop.urls.prefix}${a}.js`,document.body.appendChild(s)}))},app_shop.run=(a,s,l,c)=>{if(!a)return void console.error("run error: fun missing",a,s,l,c);if(!s)return void console.error("run error: mode missing",a,s,l,c);if(c&&null===l)return void console.error("run error: wrapper missing for ajax call",a,s,l,c);(Array.isArray(s)?s:[s]).forEach((s=>{app_shop.fnrun[s]=app_shop.fnrun[s]||[],app_shop.fnrun[s].push({w:l,fn:a,a:c})}))},app_shop.runArr=(a,s,l)=>{a&&(console.groupCollapsed(`mode: ${s}`),a.forEach((a=>{const{w:s,fn:c,a:d}=a;(!s||null!==document.querySelector(s))&&(l&&s&&!d||(c(),console.log("w:",s,"a:",d)))})),console.groupEnd())},app_shop.runApp=()=>{const a=document.getElementById("viewType"),{width:s}=window.getComputedStyle(a)||{};app_shop.vars.view=parseInt(s,10)||1,app_shop.runArr(app_shop.fnrun.all,"all"),app_shop.runArr(app_shop.fnrun[app_shop.vars.view],app_shop.vars.view),app_shop.fn.setGrid(),app_shop.getOuterJS(app_shop.files),iaiGet.init();let l,c=app_shop.vars.view;const viewResizeHandler=()=>{clearTimeout(l),l=setTimeout((()=>{const{width:s}=window.getComputedStyle(a);app_shop.vars.view=parseInt(s,10),app_shop.vars.view!==c&&(c=app_shop.vars.view,app_shop.runArr(app_shop.fnrun[app_shop.vars.view],app_shop.vars.view),app_shop.fn.setGrid())}),100)};window.removeEventListener("resize",viewResizeHandler),window.addEventListener("resize",viewResizeHandler)},String.prototype.format=function formatString(...a){let s=this;return a.forEach((a=>{s=s.replace(/%[a-z]/,a)})),s};const Alertek={alert_cover:"",cloudID:"",alert_timer:null,fadeIn:()=>{Alertek.cloudID.style.display="block",Alertek.cloudID.style.transition="opacity 0.5s",Alertek.cloudID.style.opacity=0,setTimeout((()=>{Alertek.cloudID.style.opacity=1}),0)},fadeOut:()=>{Alertek.cloudID.style.opacity=0,setTimeout((()=>{Alertek.cloudID.style.display="none"}),500)},Start:(a,s,l=4e3)=>{clearTimeout(Alertek.alert_timer),document.querySelector("#alert_cover")?.remove();const c=document.createElement("div");c.className="alertek"+(s?` ${s}`:""),c.id="alert_cover",c.style.display="none",c.onclick=Alertek.hide_alert,c.setAttribute("role","alert"),document.body.appendChild(c),s||c.classList.add("menu_messages_message"),Alertek.cloudID=c,a&&(Alertek.cloudID.innerHTML=a,Alertek.fadeIn(),Alertek.alert_timer=setTimeout(Alertek.End,l))},End:()=>{Alertek.fadeOut()},Info:(a,s)=>{Alertek.Start(a,"--info",s)},Warning:(a,s)=>{Alertek.Start(a,"--warning",s)},Error:(a,s)=>{Alertek.Start(a,"--error",s)},Success:(a,s)=>{Alertek.Start(a,"--success",s)},show_alert:(a,s)=>{Alertek.Start(a,!1,s)},hide_alert:()=>{Alertek.End()},SrOnly:(a,s)=>{Alertek.Start(a,"sr-only",s)}};var Basketedit={getValues:function(a){var s=a.attr("data-amount"),l=a.attr("data-unit_sellby"),c=a.attr("data-unit");return{precision:a.attr("data-unit_precision"),unit_sellby:l,unit:c,amount:s,max_q:a.attr("data-max_q"),max_s:a.attr("data-max_s"),min_q:a.attr("data-min_q"),min_s:a.attr("data-min_s")}},roundNumber:function(a,s){return num=parseFloat(a),result=Math.abs(num.toFixed(s)),result},if_isanumber:function(a,s){return isNaN(a)?1:1==s?a:s},sellby_recount:function(a,s,l){return"up"==l?a*s:Math.round(l/s)*s},number_check:function(a){var s=a,l=Basketedit.getValues(a),c=parseFloat(l.unit_sellby),d=parseFloat(l.precision),p=parseFloat(l.amount),h=l.unit,m=parseFloat(s.val());if(m<0)return s.val(0),!1;m=parseFloat(m);var _=parseFloat(l.max_q),g=parseFloat(l.max_s),y=parseFloat(l.min_q),v=parseFloat(l.min_s);if(!$.isNumeric(m)||m<=c){if(isNaN(_)&&isNaN(g)&&isNaN(y)&&isNaN(v))return s.val(c.toFixed(d)),!0;c=c.toFixed(d)}number=Math.floor(m/c)*c,number=(m/c*c-number).toFixed(d+1)>0?(1*number+c).toFixed(d):number.toFixed(d),number=parseFloat(number);var b=p,w=c,k=-1;if(!isNaN(_)){k=(k=_-(k=$.map($("."+s.attr("class")),(function(a){return parseFloat($(a).val())})).reduce((function(a,s){return a+s}))))<0?"end":k;var L=$("."+s.attr("class")).not(s);L.size()&&$.map(L,(function(a){return parseFloat($(a).val())})).reduce((function(a,s){return a+s})),b=b>_?_:b}return isNaN(g)||(b=b>g?g:b),isNaN(y)||(w=y>w?y:w),isNaN(v)||(w=v>w?v:w),-1!=b&&(w=b>w?w:c),w&&number<w?(Alertek.show_alert(window.Literals.alerts.minAmountOrder+" "+Math.ceil(parseFloat(w)/c)*c+" "+h),s.val(Math.ceil(parseFloat(w)/c)*c),!0):"end"==k?(Alertek.show_alert(window.Literals.alerts.maxAmountOrder+" "+Math.floor(parseFloat(_)/c)*c+" "+h),s.val(Math.floor(parseFloat(_)/c)*c),!0):number>b&&-1!=b?(Alertek.show_alert(window.Literals.alerts.maxAmountOrder+" "+Math.floor(parseFloat(b)/c)*c+" "+h),s.val(Math.floor(parseFloat(b)/c)*c),!0):(s.val(number),!0)}};app_shop.formControl={vars:{minLength:function(a){return window.Literals.validation.minChar+a+"."},maxLength:function(a){return window.Literals.validation.maxChar+a+"."},email:window.Literals.validation.invalidEmail,required:window.Literals.validation.isRequired,bankAccount:window.Literals.validation.invalidNrb,phone:window.Literals.validation.invalidPhone},patterns:{email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/},timeHandle:"",ajaxValidation:function(a,s,l,c,d){var p,h,m,_,g,y;if(h=this,m=a.parent(),_=a.data("validation"),y=a.data("ajaxtype"),p=_+"="+s,a.data("serialize")&&a.data("serialize").indexOf("data-")>-1&&(p+="&"+a.attr(a.data("serialize"))),""==s)return h.clearValidation(m),h.resetRequiredClass(m),!1;"get"==y?$.get(l,p,(function(s){s.errno?("bankAccount"==_&&(g=h.vars.bankAccount),h.addError(a,g),d&&d()):(h.addSuccess(a),c&&c())}),"json"):$.post(l,p,(function(s){s.errno?("bankAccount"==_&&(g=h.vars.bankAccount),h.addError(a,g),d&&d()):(h.addSuccess(a),c&&c())}),"json")},ajaxValidationWithData:function(a,s,l,c){$.post(a,s,(function(a){0!=a.errno?c&&c(a):l&&l(a)}),"json")},validate:function(a,s){var l,c,d,p,h,m,_;if(d=a.parent(),l=a.attr("type"),c=a.val(),this.patterns.email,p=a.attr("minlength"),h=a.attr("maxlength"),m=a.data("validate"),_=a.data("validation-url"),"checkbox"==a.attr("type"))a.is(":checked")?a.parents(".has-feedback, .f-feedback").removeClass("has-error --error").addClass("has-success --success"):a.parents(".has-feedback, .f-feedback").removeClass("has-success --success").addClass("has-error --error");else if(_)this.ajaxValidation(a,c,_);else{if(p){if(c.length<p)return this.addError(a,this.vars.minLength(p)),!1;this.addSuccess(a)}
1if(h){if(c.length>h)return this.addError(a,this.vars.minLength(h)),!1;this.addSuccess(a)}"email"==l&&this.checkMail(a),m&&"text"==l&&(m.indexOf("phone")>-1||m.indexOf("email")>-1)&&($.isNumeric(c)?c.length<9?this.addError(a,this.vars.phone):this.addSuccess(a):m.indexOf("email")>-1?this.checkMail(a):m.indexOf("phone")>-1&&this.addError(a,this.vars.phone)),c||s||(this.clearValidation(d),this.resetRequiredClass(d))}},checkMail:function(a){a.val().match(this.patterns.email)?this.addSuccess(a):this.addError(a,this.vars.email)},checkForm:function(a,s){var l,c,d;return l=a.find("input.validate:enabled:visible, textarea.validate:enabled:visible, input.--validate:enabled:visible, textarea.--validate:enabled:visible"),a.find('input[type="checkbox"]').not("[disabled]").not(":checked"),d=this,!l.length||(l.each((function(){d.validate($(this),!0)})),this.resetRequiredClass(l),!(c=a.find(".has-error:visible:first, .--error:visible:first")).length||($("html, body").animate({scrollTop:app_shop.vars.view<3?c.offset().top-10-$("header").outerHeight():c.offset().top-10},300),!1))},checkValidateFields:function(a,s){var l=a.find("input.validate:enabled:visible, textarea.validate:enabled:visible, input.--validate:enabled:visible, textarea.--validate:enabled:visible"),c=a.find("input#terms_agree[required]").not("[disabled]").not(":checked"),d=!0;if((that=this,this.resetRequiredClass(l),l.length)&&(l.each((function(){$this=$(this),d=!$.trim($this.val()),$this.is("[required]")&&d&&(that.addError($this),$this.parents(".form-group, .f-group").find(" > div").append('<span class="help-block validate_message text-danger">'+window.Literals.validation.isRequired+"</span>"),c.each((function(){that.addError($this)})))})),that.resetRequiredClass(a),a.find(".has-error:visible:first, .--error:visible:first").length))return!1;return!0},addSuccess:function(a){this.clearValidation(a.parent()),this.removeErrorInfo(a),(a=a.is("[type=checkbox]")?a.parents("div.checkbox, .--checkbox"):a.parent()).addClass("has-success --success")},addError:function(a,s){this.clearValidation(a.parent()),s&&this.addErrorInfo(a,s),(a=a.is("[type=checkbox]")?a.parents("div.checkbox, .--checkbox"):a.parent()).addClass("has-error --error")},clearValidation:function(a){this.removeErrorInfo(a),a.removeClass("has-success has-error has-required --success --error --required")},resetRequiredClass:function(a){a.find("input.validate[required], input.--validate[required]").parent().not(".has-success,.has-error,.checkbox, .--success, .--error, .--checkbox").addClass("has-required --required")},addErrorInfo:function(a,s){this.removeErrorInfo(a),a.parent().append('<span class="help-block validate_message text-danger">'+s+"</span>")},removeErrorInfo:function(a){a.children(".validate_message").remove()}};var google_map_style_array=[{featureType:"landscape",stylers:[{saturation:-100},{lightness:65},{visibility:"on"}]},{featureType:"poi",stylers:[{saturation:-100},{lightness:51},{visibility:"simplified"}]},{featureType:"road.highway",stylers:[{saturation:-100},{visibility:"simplified"}]},{featureType:"road.arterial",stylers:[{saturation:-100},{lightness:30},{visibility:"on"}]},{featureType:"road.local",stylers:[{saturation:-100},{lightness:40},{visibility:"on"}]},{featureType:"transit",stylers:[{saturation:-100},{visibility:"simplified"}]},{featureType:"administrative.province",stylers:[{visibility:"off"}]},{featureType:"water",elementType:"labels",stylers:[{visibility:"on"},{lightness:-25},{saturation:-100}]},{featureType:"water",elementType:"geometry",stylers:[{hue:"#ffff00"},{lightness:-25},{saturation:-97}]}];class CustomCache{static pendingFetches=new Map;constructor(a="cache_"){this.prefix=a}set(a,s,l=3e5){const c={data:s,expiry:Date.now()+l};localStorage.setItem(this.prefix+a,JSON.stringify(c))}get(a){const s=localStorage.getItem(this.prefix+a);if(!s)return null;try{const{data:l,expiry:c}=JSON.parse(s);return Date.now()>c?(this.remove(a),null):l}catch(s){return console.warn(`BÅÄ
d podczas odczytu cache: ${a}`,s),this.remove(a),null}}remove(a){localStorage.removeItem(this.prefix+a)}async getOrFetch(a,s,l=3e5){const c=this.get(a);if(null!==c)return c;const d=this.prefix+a;if(!CustomCache.pendingFetches.has(d)){const c=Promise.resolve(s()).then((s=>(this.set(a,s,l),s))).finally((()=>
1{CustomCache.pendingFetches.delete(d)}));CustomCache.pendingFetches.set(d,c)}return CustomCache.pendingFetches.get(d)}clear(){Object.keys(localStorage).forEach((a=>{a.startsWith(this.prefix)&&localStorage.removeItem(a)}))}}function FormValidation(a){const{form:s,formSelector:l,afterValidate:c,afterValidateForm:d}=a||{};this.debounce=(a,s=500)=>{let l;return(...c)=>{clearTimeout(l),l=setTimeout((()=>a(...c)),s)}},this.fetchData=async a=>{try{const s=await fetch(`${app_shop?.urls?.graphql||"/graphql/v1/"}?query=validateClientData`,{method:"POST",body:JSON.stringify({query:`query {${a}}`})});return await s.json()}catch(a){return console.error("AJAX FormValidation() validateClientData Error:",a),!1}},this.vars={passwordLengthMin:6,passwordLengthMax:30,changedInputs:[]},this.callbacks={validate:c,validateAll:d},this.errorCode={birth_date:app_shop?.txt?.errorCode?.birth_date||"Wpisz poprawnÄ
datÄ urodzenia w formacie RRRR-MM-DD",illegal_characters_client_city:app_shop?.txt?.errorCode?.illegal_characters_client_city||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_client_firm:app_shop?.txt?.errorCode?.illegal_characters_client_firm||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_client_firstname:app_shop?.txt?.errorCode?.illegal_characters_client_firstname||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_client_lastname:app_shop?.txt?.errorCode?.illegal_characters_client_lastname||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_client_nip:app_shop?.txt?.errorCode?.illegal_characters_client_nip||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_client_phone:app_shop?.txt?.errorCode?.illegal_characters_client_phone||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_client_phone2:app_shop?.txt?.errorCode?.illegal_characters_client_phone2||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_client_street:app_shop?.txt?.errorCode?.illegal_characters_client_street||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_delivery_additional:app_shop?.txt?.errorCode?.illegal_characters_delivery_additional||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_delivery_city:app_shop?.txt?.errorCode?.illegal_characters_delivery_city||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_delivery_firstname:app_shop?.txt?.errorCode?.illegal_characters_delivery_firstname||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_delivery_lastname:app_shop?.txt?.errorCode?.illegal_characters_delivery_lastname||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_delivery_phone:app_shop?.txt?.errorCode?.illegal_characters_delivery_phone||"Jeden z użytych znaków jest niedozwolony.",illegal_characters_delivery_street:app_shop?.txt?.errorCode?.illegal_characters_delivery_street||"Jeden z użytych znaków jest niedozwolony.",incorect_delivery_region:app_shop?.txt?.errorCode?.incorect_delivery_region||"Wybierz kraj odbiorcy przesyÅki.",incorect_delivery_zipcode:app_shop?.txt?.errorCode?.incorect_delivery_zipcode||"Wpisz kod pocztowy odbiorcy przesyÅki.",incorect_email:app_shop?.txt?.errorCode?.incorect_email||"BÅÄdnie wpisany e-mail. Wpisz peÅny adres e-mail, np. [email protected]",incorect_invoice_phone:app_shop?.txt?.errorCode?.incorect_invoice_phone||"Wpisz telefon klienta.",incorect_invoice_zipcode:app_shop?.txt?.errorCode?.incorect_invoice_zipcode||"Wpisz kod pocztowy klienta.",incorect_login:app_shop?.txt?.errorCode?.incorect_login||"BÅÄdnie wpisany login. Login musi mieÄ minimum 3, a maksimum 40 znaków. Możesz użyÄ liter i cyfr oraz symboli @ . - _.",incorect_nip:app_shop?.txt?.errorCode?.incorect_nip||"Niepoprawny NIP dla wybranego kraju.",incorect_phone:app_shop?.txt?.errorCode?.incorect_phone||"Wpisz swój telefon.",incorect_shops:app_shop?.txt?.errorCode?.incorect_shops||"Wybierz sklep z listy.",incorect_zipcode:app_shop?.txt?.errorCode?.incorect_zipcode||"BÅÄdnie wpisany kod pocztowy.",incorect_zipcode_not_allowed:app_shop?.txt?.errorCode?.incorect_zipcode_not_allowed||"Przepraszamy, nie realizujemy dostawy na ten adres.",incorrect_region:app_shop?.txt?.errorCode?.incorrect_region||"BÅÄdnie wybrany region.",invalid_format:app_shop?.txt?.errorCode?.invali
1d_format||"NieprawidÅowy format. Pole musi zawieraÄ przynajmniej jednÄ
literÄ.",login_equals_password:app_shop?.txt?.errorCode?.login_equals_password||"HasÅo jest takie samo jak login. Wpisz inne hasÅo.",login_taken:app_shop?.txt?.errorCode?.login_taken||"Podany login jest już zajÄty",login_taken_login_propose:app_shop?.txt?.errorCode?.login_taken_login_propose||"Podany login jest już zajÄty.<br/><br/>Proponowany login: ",no_city:app_shop?.txt?.errorCode?.no_city||"Wpisz w to pole nazwÄ miasta.",no_delivery_city:app_shop?.txt?.errorCode?.no_delivery_city||"Wpisz miejscowoÅÄ odbiorcy przesyÅki.",no_delivery_firstname:app_shop?.txt?.errorCode?.no_delivery_firstname||"Wpisz imiÄ odbiorcy przesyÅki.",no_delivery_lastname:app_shop?.txt?.errorCode?.no_delivery_lastname||"Wpisz nazwisko odbiorcy przesyÅki.",no_delivery_street:app_shop?.txt?.errorCode?.no_delivery_street||"Wpisz ulicÄ i numer domu odbiorcy przesyÅki.",no_firmname:app_shop?.txt?.errorCode?.no_firmname||"BÅÄdnie wpisana nazwa firmy.",no_firstname:app_shop?.txt?.errorCode?.no_firstname||"Wpisz w to pole swoje imiÄ.",no_invoice_city:app_shop?.txt?.errorCode?.no_invoice_city||"Wpisz miejscowoÅÄ klienta.",no_invoice_firmname:app_shop?.txt?.errorCode?.no_invoice_firmname||"Wpisz nazwÄ firmy klienta.",no_invoice_firstname:app_shop?.txt?.errorCode?.no_invoice_firstname||"Wpisz imiÄ klienta.",no_invoice_lastname:app_shop?.txt?.errorCode?.no_invoice_lastname||"Wpisz nazwisko klienta.",no_invoice_street:app_shop?.txt?.errorCode?.no_invoice_street||"Wpisz ulicÄ i numer domu klienta.",no_invoice_street_number:app_shop?.txt?.errorCode?.no_invoice_street_number||"Wpisz ulicÄ i numer domu klienta.",no_login:app_shop?.txt?.errorCode?.no_login||"Wpisz w to pole swój login.",no_name:app_shop?.txt?.errorCode?.no_name||"Wpisz w to pole swoje nazwisko.",no_password:app_shop?.txt?.errorCode?.no_password||"Wpisz w to pole swoje hasÅo.",no_street:app_shop?.txt?.errorCode?.no_street||"Wpisz nazwÄ ulicy lub miejscowoÅci.",no_street_number:app_shop?.txt?.errorCode?.no_street_number||"Podaj nr domu.",no_street_number_uk:app_shop?.txt?.errorCode?.no_street_number_uk||"Brakuje numeru domu.",not_equal_passwords:app_shop?.txt?.errorCode?.not_equal_passwords||"Wpisane hasÅa nie sÄ
takie same. Wpisz ponownie hasÅo i potwierdzenie.",password_to_long:app_shop?.txt?.errorCode?.password_to_long||"Za dÅugie hasÅo. Wpisz krótsze hasÅo (maksimum",password_to_short:app_shop?.txt?.errorCode?.password_to_short||"Zbyt krótkie hasÅo. Wpisz dÅuższe hasÅo (minimum",used_login:app_shop?.txt?.errorCode?.used_login||"Podany login jest już zajÄty",incorrect_iban:app_shop?.txt?.errorCode?.incorrect_iban||window.Literals.validation.invalidNrb||"Format numeru konta bankowego jest niepoprawny"},this.passwordErrorCodes=["no_password","not_equal_passwords","password_to_long","password_to_short","login_equals_password"],this.loginErrorCodes=["incorect_login","login_taken","login_taken_login_propose","no_login","used_login"],this.txt={mandatoryField:app_shop?.txt?.formValidation?.mandatoryField||"ProszÄ wypeÅniÄ to pole.",zipcodeFormat:app_shop?.txt?.formValidation?.zipcodeFormat||"Poprawne formaty kodu pocztowego dla wybranego kraju to [X - cyfra; Y - litera]:",characters:app_shop?.txt?.formValidation?.characters||"znaków).",noOptionSelected:app_shop?.txt?.formValidation?.noOptionSelected||"ProszÄ wybraÄ opcjÄ.",minimalCharacters:app_shop?.txt?.formValidation?.minimalCharacters||app_shop.txt?.txt_validation1||"Minimalna liczba znaków dla tego pola to ",maximumCharacters:app_shop?.txt?.formValidation?.maximumCharacters||app_shop.txt?.txt_validation2||"Maksymalna liczba znaków dla tego pola to ",onlyDigital:app_shop?.txt?.formValidation?.onlyDigital||"Pole nie może zawieraÄ cyfr.",cyrillicCharacters:app_shop?.txt?.formValidation?.cyrillicCharacters||"Pole nie może zawieraÄ cyrylicy.",latinCharacters:app_shop?.txt?.formValidation?.latinCharacters||"Pole nie może zawieraÄ liter ÅaciÅskich.",noFathersName:app_shop?.txt?.formValidation?.noFathersName||"Pole musi zawieraÄ imiÄ ojca.",illegalCharactersOnly:app_shop?.txt?.formValidation?.illegalCharactersOnly||"Jeden z użytych znaków jest niedozwolony."},this.queries={VALIDATE_FIRSTNAME_QUERY:a=>`\n validateClientData(\n ClientDataInput: {\n clientData: {\n clientBillingData: {\n firstname: "${a?.replace?.(/"/g,'\\"')}"\n }\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_LASTNAME_QUERY:a=>`\n validateClientData(\n ClientDataInput: {\n clientData: {\n clientBillingData: {\n lastname: "${a?.replace?.(/"/g,'\\"')}"\n }\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_ADDITIONAL_QUERY:a=>`\n validateClientData(\n ClientDataInput: {\n clientData: {\n clientBillingData: {\n companyName: "${a?.replace?.(/"/g,'\\"')}"\n }\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_NIP_QUERY:(a,s)=>`\n validateClientData(\n ClientDataInput: {\n clientData: {\n clientBillingData: {\n country: ${s}\n }\n taxNumber: "${a?.replace?.(/"/g,'\\"')}"\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_STREET_QUERY:(a,s)=>`\n validateClientData(\n ClientDataInput: {\n clientData: {\n clientBillingData: {\n street: "${a?.replace?.(/"/g,'\\"')}"\n country: ${s}\n }\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_ZIPCODE_QUERY:(a,s)=>`\n validateClientData(\n ClientDataInput: {\n clientData: {\n clientBillingData: {\n zipcode: "${a?.replace?.(/"/g,'\\"')}"\n country: ${s}\n }\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_CITY_QUERY:a=>`\n validateClientData(\n ClientDataInput: {\n clientData: {\n clientBillingData: {\n city: "${a?.replace?.(/"/g,'\\"')}"\n }\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_PHONE_QUERY:(a,s)=>`\n validateClientData(\n ClientDataInput: {\n clientData: {\n clientBillingData: {\n phone: "${a?.replace?.(/"/g,'\\"')}"\n country: ${s}\n }\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_EMAIL_QUERY:a=>`\n validateClientData(\n ClientDataInput: {\n clientData: {\n email: "${a?.replace?.(/"/g,'\\"')}"\n }\n }) {\n messages {\n code\n message\n }\n clientExists\n }`,VALIDATE_BIRTHDATE_QUERY:a=>`\n validateClientData(\n ClientDataInput: {\n clientData: {\n birthDate: "${a?.replace?.(/"/g,'\\"')}"\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_LOGIN_QUERY:(a,s)=>`\n validateClientData(\n ClientDataInput: {\n loginAndPassword: {\n login: "${a?.replace?.(/"/g,'\\"')}"\n ${s?`password: "${s?.replace?.(/"/g,'\\"')}"`:""}\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_PASSWORD_QUERY:(a,s)=>`\n validateClientData(\n ClientDataInput: {\n loginAndPassword: {\n ${s?`login: "${s?.replace?.(/"/g,'\\"')}"`:""}\n password: "${a?.replace?.(/"/g,'\\"')}"\n }\n }) {\n messages {\n code\n message\n }\n }`,VALIDATE_INPUTS_QUERY:a=>JSON.stringify({query:`query {\n validateClientData(${a}) {\n messages {\n code\n message\n }\n }\n }`})},this.events={onInput:a=>{const{target:s}=a;this.vars.changedInputs.push(s),this.debounces.validateInput(s)},onChange:a=>{const{target:s}=a;this.validateCheckbox(s)},onSubmit:async a=>{if("true"===this.form.dataset.handled)return void delete this.form.dataset.handled;a.preventDefault();await this.validateForm()?(this.form.classList.remove("--fail-validation"),this.form.dataset.handled="true",this.form.submit()):this.form.classList.add("--fail-validation")}},this.concatErrorMessages=a=>{const{code:s}=a[0];switch(s){case"incorect_zipcode":{const l=a[0]?.message||this.errorCode[s],c=a[1]?.message;return c?`${l} ${this.txt.zipcodeFormat} ${c}`:l}case"password_to_short":return`${this.errorCode[s]} ${this.vars.passwordLengthMin} ${this.txt.characters}`;case"password_to_long":return`${this.errorCode[s]} ${this.vars.passwordLengthMax} ${this.txt.characters}`;default:return this.errorCode[s]}},this.checkDigital=a=>!!/\d/.test(a),this.validateFirstnameGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,p=this.queries.VALIDATE_FIRSTNAME_QUERY(d);if(l)return this.queries.VALIDATE_FIRSTNAME_QUERY(d);const h=c||await this.fetchData(p),{messages:m}=h?.data?.validateClientData||h;return this.checkDigital(d)?this.txt.onlyDigital:m?.length?this.concatErrorMessages(m):""},this.validateLastnameGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,p=this.queries.VALIDATE_LASTNAME_QUERY(d);if(l)return this.queries.VALIDATE_LASTNAME_QUERY(d);const h=c||await this.fetchData(p),{messages:m}=h?.data?.validateClientData||h;return this.checkDigital(d)?this.txt.onlyDigital:m?.length?this.concatErrorMessages(m):""},this.validateAdditionalGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,p=this.queries.VALIDATE_ADDITIONAL_QUERY(d);if(l)return p;const h=c||await this.fetchData(p),{messages:m}=h?.data?.validateClientData||h;return m?.length?this.concatErrorMessages(m):""},this.validateNipGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,{region:p}=s.dataset,h=this.queries.VALIDATE_NIP_QUERY(d,p);if(l)return h;const m=c||await this.fetchData(h),{messages:_}=m?.data?.validateClientData||m;return _?.length?this.concatErrorMessages(_):""},this.validateStreetGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,{concatFrom:p,region:h}=s.dataset,m=this.form?.querySelector(p),_=`${d} ${m?.value||""}`,g=this.queries.VALIDATE_STREET_QUERY(_,h);if(l)return g;const y=c||await this.fetchData(g),{messages:v}=y?.data?.validateClientData||y;return v?.length?m&&"no_street_number"===v[0].code?(this.setValidityState(m,this.concatErrorMessages(v)),""):this.concatErrorMessages(v):(m&&this.setValidityState(m,""),"")};const p={1143020016:{customCodeValidation:a=>/^\d{4}
1$/.test(a),errors:[{code:"incorect_zipcode",message:"Niepoprawny kod pocztowy"},{code:"zipcode_pattern",message:"XXXX"}]},1143020163:{customCodeValidation:a=>!/^9\d{3}-?\d{3}$/.test(a.trim()),errors:[{code:"incorect_zipcode_not_allowed"}]}};this.validateZipcodeGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,{region:h}=s.dataset,m=this.queries.VALIDATE_ZIPCODE_QUERY(d,h);if(l)return m;const _=p[h];if(_&&!_.customCodeValidation(d))return this.concatErrorMessages(_.errors);const g=c||await this.fetchData(m),{messages:y}=g?.data?.validateClientData||g;return y?.length?this.concatErrorMessages(y):""},this.validateCityGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,p=this.queries.VALIDATE_CITY_QUERY(d);if(l)return p;const h=c||await this.fetchData(p),{messages:m}=h?.data?.validateClientData||h;return m?.length?this.concatErrorMessages(m):""},this.validatePhone=a=>{const{input:s,getQuery:l}=a;if(l)return"";const{value:c}=s;return c.length>=9?"":this.concatErrorMessages([{code:"incorect_phone"}])},this.validatePhoneGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,{concatFrom:p,region:h}=s.dataset,m=this.form?.querySelector(p),_=m?.value||"",g=_?`${_}${d}`:d;if(!h)return this.validatePhone(a);const y=this.queries.VALIDATE_PHONE_QUERY(g,h);if(l)return y;const v=c||await this.fetchData(y),{messages:b}=v?.data?.validateClientData||v;return b?.length?this.concatErrorMessages(b):""},this.validateEmailGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,p=this.queries.VALIDATE_EMAIL_QUERY(d);if(l)return p;const h=c||await this.fetchData(p),{messages:m}=h?.data?.validateClientData||h;return m?.length?this.concatErrorMessages(m):""},this.validateBirthdateGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,p=this.queries.VALIDATE_BIRTHDATE_QUERY(d);if(l)return p;const h=c||await this.fetchData(p),{messages:m}=h?.data?.validateClientData||h;return m?.length?this.concatErrorMessages(m):""},this.setPasswordState=({element:a,messages:s})=>{if(!s.length)return void this.removeValidityState(a);const l=s.filter((a=>this.passwordErrorCodes.includes(a.code)));if(!l.length)return void this.removeValidityState(a);const c=this.concatErrorMessages(l);this.setValidityState(a,c)},this.validateLoginGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,{concatPassword:p}=s.dataset,h=this.form?.querySelector(p),m=h?.value||"",_=this.queries.VALIDATE_LOGIN_QUERY(d,m);if(l)return _;const g=c||await this.fetchData(_),{messages:y}=g?.data?.validateClientData||g;if(m&&this.setPasswordState({element:h,messages:y}),!y?.length)return"";const v=y.filter((a=>!this.passwordErrorCodes.includes(a.code)));return v.length?this.concatErrorMessages(v):""},this.validatePasswordGQL=async a=>{const{input:s,getQuery:l,response:c}=a,{value:d}=s,{concatLogin:p}=s.dataset,h=this.form?.querySelector(p),m=h?.value||"",_=this.queries.VALIDATE_PASSWORD_QUERY(d,m);if(l)return _;const g=c||await this.fetchData(_),{messages:y}=g?.data?.validateClientData||g;if(!y?.length)return"";const v=y.filter((a=>!this.loginErrorCodes.includes(a.code)));return v.length?this.concatErrorMessages(v):""},this.validateIBANGQL=async a=>{const{input:s,getQuery:l}=a,{value:c}=s;if(l)return"";const d=await fetch(`/ajax/payments.php?action=verify_iban&bankAccount=${c}`),p=await d.json(),{errno:h}=p||{};return h?this.concatErrorMessages([{code:"incorrect_iban"}]):""},this.getInputQueries=async a=>(await Promise.all(a.map((async a=>{const s=await this.validateGraphQL({input:a,getQuery:!0});return`${a.id}:${s}`})))).join(""),this.validateInputsGQL=async a=>{const s=await this.getInputQueries(a),l=await this.fetchData(s);l?.data&&Object.keys(l.data).forEach((async s=>{const[c]=a.filter((a=>a.id===s));if(!c)return;const d=await this.validateGraphQL({input:c,response:l.data[s]});this.setValidityState(c,d)}))},this.clientExists=async a=>{const s=this.queries.VALIDATE_EMAIL_QUERY(a),l=await this.fetchData(s),{clientExists:c}=l?.data?.validateClientData||l;return c},this.validateNotEmpty=a=>a.required||0!==a.value.length?a.value.length>0?"":this.txt.mandatoryField:"",this.validateCyrillicLetters=a=>
1{if(!FORM_BLOCK_CYRILLIC)return"";const{graphql:s}=a.dataset;if(["phone","email","zipcode","nip","login","password","firm"].includes(s))return"";let l;try{l=/\p{Script=Cyrillic}/u}catch(a){l=/[\u0400-\u04FF]/,console.log("validateCyrillicLetters: Using Legacy Hex-Range Fallback")}return l.test(a.value)?this.txt.cyrillicCharacters:""},this.validateNotOnlySpecialChars=a=>{const s=a.value.trim();if(!s)return"";const{graphql:l}=a.dataset;if(["phone","email","zipcode","nip","login","password","firm"].includes(l))return"";let c;try{c=/[\p{L}\p{N}]/u}catch(a){c=/[a-zA-Z0-9\u0400-\u04FF]/,console.log("validateNotOnlySpecialChars: Using Legacy Fallback")}return c.test(s)?"":this.txt.illegalCharactersOnly},this.validateLatinLetters=a=>{if(!FORM_BLOCK_LATIN)return"";const{graphql:s}=a.dataset;if(["phone","email","zipcode","nip","login","password","firm"].includes(s))return"";let l;try{l=/\p{Script=Latin}/u}catch(a){l=/[A-Za-z\u00C0-\u024F\s]/,console.log("validateLatinLetters: Using Legacy Hex-Range Fallback")}return l.test(a.value)?this.txt.latinCharacters:""},this.validateNoBackslash=a=>"streetNumber"!==a.dataset.name?"":a.value.includes("\\")?this.txt.illegalCharactersOnly:"",this.validateFathersName=a=>{if(!FORM_REQUIRE_FATHERS_NAME)return"";const s=a.value.trim();if(!s)return"";const{name:l}=a.dataset;if(!["firstname"].includes(l))return"";return/^[\p{L}'-]+\s+[\p{L}'-]+$/u.test(s)?"":this.txt.noFathersName},this.validatePhoneSpecialPrefix=a=>{if(!FORM_TRIM_PHONE_SPECIAL_PREFIX||!1===FORM_TRIM_PHONE_SPECIAL_PREFIX)return"";if(!a.value.trim())return"";const{name:s}=a.dataset;return["phone"].includes(s)?(a.value.startsWith(FORM_TRIM_PHONE_SPECIAL_PREFIX)&&(a.value=a.value.slice(FORM_TRIM_PHONE_SPECIAL_PREFIX.length)),""):""},this.validateMinLength=a=>{const s=a.getAttribute("minlength");return s?+s<=a.value.length?"":`${this.txt.minimalCharacters}${s}`:""},this.validateMaxLength=a=>{const s=a.getAttribute("maxlength");return s?+s>=a.value.length?"":`${this.txt.maximumCharacters}${s}`:""},this.validateInputs=async a=>{a.forEach((a=>{const s=this.validateNotEmpty(a)||this.validatePhoneSpecialPrefix(a)||this.validateMinLength(a)||this.validateMaxLength(a)||this.validateNoBackslash(a)||this.validateNotOnlySpecialChars(a)||this.validateCyrillicLetters(a)||this.validateLatinLetters(a)||this.validateFathersName(a);""!==s&&this.setValidityState(a,s)}));const s=[...a].filter((a=>a.closest(".f-feedback:not(.--error)")));if(!s.length)return;[...s].filter((a=>!a.hasAttribute("data-graphql"))).forEach((a=>{this.setValidityState(a,"")}));const l=[...s].filter((a=>a.hasAttribute("data-graphql")));if(!l.length)return;const c=l.findIndex((a=>"iban"===a.dataset.graphql));-1!==c&&(await this.validateInput(l[c]),l.splice(c,1)),l.length&&await this.validateInputsGQL(l)},this.isPhoneNumber=a=>new RegExp("^[0-9*#+() ]+$").test(a),this.getGQLType=a=>{const{graphql:s}=a.dataset,l=s.split(" ");if(2===l.filter((a=>"phone"===a||"email"===a)).length){return this.isPhoneNumber(a.value)?"phone":"email"}return l[0]},this.validateGraphQL=async a=>{const{input:s,getQuery:l,response:c}=a,{graphql:d}=s.dataset;if(!d)return!1;const p=d.split(" ");switch(1===p.length?p[0]:this.getGQLType(s)){case"firstname":return await this.validateFirstnameGQL({input:s,getQuery:l,response:c});case"lastname":return await this.validateLastnameGQL({input:s,getQuery:l,response:c});case"additional":case"firm":return await this.validateAdditionalGQL({input:s,getQuery:l,response:c});case"nip":return await this.validateNipGQL({input:s,getQuery:l,response:c});case"street":return await this.validateStreetGQL({input:s,getQuery:l,response:c});case"zipcode":return await this.validateZipcodeGQL({input:s,getQuery:l,response:c});case"city":return await this.validateCityGQL({input:s,getQuery:l,response:c});case"phone":return await this.validatePhoneGQL({input:s,getQuery:l,response:c});case"email":return await this.validateEmailGQL({input:s,getQuery:l,response:c});case"birthdate":return await this.validateBirthdateGQL({input:s,getQuery:l,response:c});case"login":return await this.validateLoginGQL({input:s,getQuery:l,response:c});case"password":return await this.validatePasswordGQL({input:s,getQuery:l,response:c});case"iban":return await this.validateIBANGQL({input:s,getQuery:l,response:c});default:return console.warn(`No support for validation '${d}' in validateClientData GraphQL`),this.setValidityState(s,"")}},this.validateInput=async a=>{const s=[...new Set(this.vars.changedInputs)].filter((a=>"username"!==a.autocomplete&&"current-password"!==a.autocomplete));if(this.vars.changedInputs=[],s.length>1)return this.removeAllValidityState(),this.validateForm(),!1;const{concatTo:l}=a.dataset;if(l){const s=this.validateNoBackslash(a);return""!==s?this.setValidityState(a,s):this.validateInput(this.form.querySelector(l))}let c=this.validateNotEmpty(a)||this.validatePhoneSpecialPrefix(a)||this.validateMinLength(a)||this.validateMaxLength(a)||this.validateNoBackslash(a)||this.validateNotOnlySpecialChars(a)||this.validateCyrillicLetters(a)||this.validateLatinLetters(a)||this.validateFathersName(a);if(""!==c)return this.setValidityState(a,c);return a.getAttribute("data-graphql")?(c=await this.validateGraphQL({input:a}),this.setValidityState(a,c)):this.setValidityState(a,c)},this.validateSelects=a=>{a.forEach((a=>{this.validateSelect(a)}))},this.validateSelect=a=>{if(!a)return!0;let s="";return a.closest(".--placeholder")&&a.selectedIndex<1?(s=this.txt.noOptionSelected,this.setValidityState(a,s)):this.setValidityState(a,s)},this.validateCheckboxes=a=>{a.forEach((a=>{this.validateCheckbox(a)}))},this.validateCheckbox=a=>!a||(a.checked?this.setValidityState(a,"",!0):this.setValidityState(a,"error",!0)),this.validateObjectGQL=async(a={})=>{let s="";for(const[l,c]of Object.entries(a)){const d={dataset:{}};d.value="street"===l&&a.streetNumber?`${c} ${a.streetNumber}`:c,d.dataset.region=a.region,d.dataset.graphql=l;const p=await this.validateGraphQL({input:d,getQuery:!0});p&&(s+=`${l}:${p}`)}if(""===s)return!0;const l=await this.fetchData(s);if(!l?.data)return!0;const c=[];for(const[s,d]of Object.entries(l.data)){const p={dataset:{}};p.value="street"===s&&a.streetNumber?`${d} ${a.streetNumber}`:d,p.dataset.region=a.region,p.dataset.graphql=s,c.push(await this.validateGraphQL({input:p,response:l.data[s]}))}return!c.filter((a=>
1""!==a)).length},this.validateObjectRequired=(a={},s=[])=>{if(!s.length)return!0;for(const[l,c]of Object.entries(a))if(s.includes(l)&&""===c)return validRequired=!1,!1;return!0},this.validateObject=async(a={},s)=>{if(!this.validateObjectRequired(a,s))return!1;return!!await this.validateObjectGQL(a,s)},this.validateForm=async a=>{const s=a||this.form,l=s.querySelectorAll('.f-control.--validate:not(:disabled):not([type="checkbox"])'),c=[...l].filter((a=>a.closest(".f-feedback:not(.--error):not(.--success)")));await this.validateInputs(c);const d=s.querySelectorAll("select.f-select.--validate:not(:disabled), div.f-select.--validate select:not(:disabled)"),p=[...d].filter((a=>a.closest(".f-feedback:not(.--error):not(.--success)")));this.validateSelects(p);const h=s.querySelectorAll('.f-control.--validate[type="checkbox"]:not(:disabled)'),m=[...h].filter((a=>a.closest(".--checkbox:not(.--error):not(.--success), .--switch:not(.--error):not(.--success)")));this.validateCheckboxes(m);const _=[...l].filter((a=>a.closest(".f-feedback.--error"))),g=[...l].filter((a=>a.closest(".foxentry-input-invalid"))),y=[...d].filter((a=>a.closest(".f-feedback.--error"))),v=[...h].filter((a=>a.closest(".--checkbox.--error, .--switch.--error, .f-feedback.--error")));return _.length||g.length||y.length||v.length?("function"==typeof this.callbacks.validateAll&&this.callbacks.validateAll(a,!1),!1):("function"==typeof this.callbacks.validateAll&&this.callbacks.validateAll(a,!0),!0)},this.createMessageElement=a=>{const s=document.createElement("div");return s.classList.add("f-message"),s.setAttribute("aria-live","polite"),a.append(s),s},this.setValidityState=(a,s,l)=>{if(!(a&&a instanceof HTMLElement))return!1;const c=a.closest(".f-feedback")||a.parentNode;c.classList.remove("--success","--error");const d=!l&&(c.querySelector(".f-message")||this.createMessageElement(c));return c.classList.toggle("--empty",""===a.value),""===s?(c.classList.add("--success"),d&&(d.textContent=""),"function"==typeof this.callbacks.validate&&this.callbacks.validate(a,!0),!0):(c.classList.add("--error"),d&&(d.textContent=s),"function"==typeof this.callbacks.validate&&this.callbacks.validate(a,!1),!1)},this.getValidityState=a=>{if(!a)return"";const s=a.closest(".f-feedback")||a.parentNode;return s.classList.contains("--success")?"success":s.classList.contains("--error")?"error":""},this.removeAllValidityState=a=>{(a||this.form).querySelectorAll(".f-control.--validate").forEach((a=>{this.removeValidityState(a)}))},this.removeValidityState=a=>{const s=a.closest(".f-feedback")||a.parentNode;s.classList.remove("--success","--error");const l=s.querySelector(".f-message");l&&(l.textContent="")},this.removeEvents=()=>{this.form&&(this.form.querySelectorAll(".f-control.--validate").forEach((a=>{"checkbox"!==a.type?a.removeEventListener("input",this.events.onInput):a.removeEventListener("change",this.events.onChange)})),"FORM"===this.form.tagName&&this.form.removeEventListener("submit",this.events.onSubmit))},this.initEvents=()=>{this.form&&(this.form.querySelectorAll(".f-control.--validate").forEach((a=>{"checkbox"!==a.type?a.addEventListener("input",this.events.onInput):a.addEventListener("change",this.events.onChange)})),"FORM"===this.form.tagName&&this.form.addEventListener("submit",this.events.onSubmit))},this.init=()=>{this.form=s||document.querySelector(l)||document,this.initEvents()},this.destroy=()=>{this.removeEvents()},this.reInit=()=>{this.destroy(),this.init()},this.debounces={validateInput:this.debounce(this.validateInput)}}class iaiGetAjax{constructor(){this.data={},this.cache={},this.fn={}}addToData(a,s,l){this.data[a]?console.log(`${a} data exist`):(this.data[a]=s,this.fn[a]=l)}projector(a){this.addToData("Projector",{format:"json",params:{}},a)}basket(a){this.addToData("Basket",{},a)}wishlist(a){this.addToData("Wishlist",{},a)}comparers(a){this.addToData("Comparers",{},a)}snippets(a,s){this.addToData("Snippets",{format:"json",params:{mobile:s.mobile,tablet:s.tablet,pc:s.pc,request_uri:s.request_uri,additional_ajax:s.additional_ajax}},a)}toplayersAndWidgets(a,s){this.addToData("ToplayersAndWidgets",{format:"json",params:{mobile:s.mobile,tablet:s.tablet,pc:s.pc,request_uri:s.request_uri,additional_ajax:s.additional_ajax}},a)}
1reInit(a=[]){a.length?(Object.keys(this.data).forEach((s=>{a.includes(s)||(delete this.data[s],delete this.fn[s],delete this.cache[s])})),this.init()):this.init()}init(){const a=`request=${JSON.stringify(this.data)}`;fetch("/ajax/get.php",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:a}).then((a=>a.json())).then((a=>{this.cache=a,Object.values(this.fn).forEach((a=>a(this.cache)))})).catch((a=>{console.error("Error:",a)}))}}const iaiGet=new iaiGetAjax,SelectToDropdown=function selectToDropdown(a){return this.params=a,this.init=()=>{const{direction:a="down",selector:s,generateDropdownCallback:l,clickDropdownCallback:c,afterClickDropdownCallback:d,disableMobileView:p}=this.params;if(this.selects=document.querySelectorAll(s),this.direction=a,this.generateDropdownCallback=l,this.clickDropdownCallback=c,this.afterClickDropdownCallback=d,this.disableMobileView=p,this.selects.length){if(this.generateDropdown(),app_shop.vars.selectToDropdownEventsAdded)return;document.addEventListener("click",this.closeDropdown),document.addEventListener("focusin",this.closeDropdown),app_shop.vars.selectToDropdownEventsAdded=!0}},this.transformOptionListByDirection=a=>"top"===this.direction?a.reverse().join(""):a.join(""),this.generateDropdown=()=>{this.selects.forEach((a=>{a.selectedIndex<0&&(a.selectedIndex=0);const s=[...a.querySelectorAll("option")].map(((a,s)=>`\n <li class="f-dropdown-li${a.hasAttribute("class")?` ${a.getAttribute("class")}`:""}${a.disabled?" --disabled":""}">\n <a class="f-dropdown-item${a.selected?" --selected":""}" href="#${a.getAttribute("value")}" data-index="${s}" data-value="${a.getAttribute("value")}" ${[...a.attributes].filter((a=>a.name.startsWith("data-"))).map((a=>`${a.name}="${a.value}"`)).join(" ")}>${a.innerHTML}</a>\n </li>\n `)),l=`<div class="f-dropdown f-group ${a.getAttribute("class")} ${this.disableMobileView?"--disable-mobile-view":""}" data-direction="${this.direction}">\n <button type="button" class="f-control f-dropdown-toggle${a.disabled?" --disabled":""}${a.hasAttribute("readonly")?" --readonly":""}" data-indexcurrent="${a.options[a.selectedIndex].index}" aria-expanded="false">\n ${!a.hasAttribute("data-label")&&a.hasAttribute("aria-label")?`<span class="sr-only">${a.getAttribute("aria-label")}</span>`:""}\n ${a.hasAttribute("data-label")?`<strong class="f-dropdown-label">${a.getAttribute("data-label")}</strong>`:""}\n <span class="f-dropdown-button">${a.options[a.selectedIndex].text}</span>\n </button>\n <ul class="f-dropdown-menu">\n ${this.transformOptionListByDirection(s)}\n </ul>\n </div>`,c=document.createElement("div");c.innerHTML=l;const d=c.firstChild;a.insertAdjacentElement("afterend",d),d.insertBefore(a,d.firstChild),Object.values(a.classList).forEach((s=>a.classList.replace(s,`${s}-select`))),this.openDropdown(d),this.clickDropdown(d),this.disableMobileView||this.mobileView(d),this.generateDropdownCallback&&this.generateDropdownCallback(d)}))},this.mobileView=a=>{a.querySelector("select").addEventListener("change",(function mobileViewClick(){const s=this.selectedIndex;a.querySelectorAll(".f-dropdown-li").forEach((a=>{parseInt(a.querySelector(".f-dropdown-item").getAttribute("data-index"),10)===s&&a.click()}))}))},this.openDropdown=a=>{a.querySelector("button.f-dropdown-toggle").addEventListener("click",(function DropdownToggle(a){if(a.preventDefault(),this.classList.contains("--disabled"))return!1;this.parentNode.classList.toggle("--open"),this.setAttribute("aria-expanded",this.parentNode.classList.contains("--open")?"true":"false"),document.documentElement.classList.toggle("--dropdown-open",this.parentNode.classList.contains("--open"))}))},this.closeDropdown=a=>{document.querySelectorAll(".f-dropdown").forEach((s=>!!s.classList.contains("--open")&&((!a||"click"!==a.type&&"focusin"!==a.type||s===a||!s.contains(a.target))&&(console.log(a.target,s,a.type,s.contains(a.target)),s.classList.remove("--open"),s.querySelector("button.f-dropdown-toggle")?.setAttribute("aria-expanded","fal
1se"),void document.documentElement.classList.remove("--dropdown-open")))))},this.clickDropdown=a=>{if(this.clickDropdownCallback)this.clickDropdownCallback(a);else{const s=this.afterClickDropdownCallback;a.querySelectorAll(".f-dropdown-li").forEach((l=>{l.addEventListener("click",(function clickDropdown(l){l.preventDefault();const c=this.querySelector(".f-dropdown-item"),d=a.querySelectorAll(".f-dropdown-item"),p=c.getAttribute("data-index"),h=c.innerHTML,m=a.querySelector("select"),_=a.querySelector("button.f-dropdown-toggle"),g=_.querySelector(".f-dropdown-button"),y=a.querySelector(".f-dropdown-item.--selected");d.forEach((a=>a.classList.remove("--selected","--prev"))),y.classList.add("--prev"),c.classList.add("--selected"),m.selectedIndex=p,g.innerHTML=h,_.setAttribute("data-indexcurrent",c.getAttribute("data-index")),a.classList.remove("--open"),_.setAttribute("aria-expanded","false"),document.documentElement.classList.remove("--dropdown-open"),s&&s(this)}))}))}},this.destroy=()=>{this.selects.forEach((a=>{const s=a.closest(".f-dropdown");s&&(s.insertAdjacentElement("afterend",a),s.remove(),a.classList.forEach((s=>a.classList.replace(s,s.slice(0,-7)))))}))},this.reInit=()=>{this.destroy(),this.init()},this.init()};class UserLocation{cacheKey="U_COORDS";apiUrl="https://pro.ip-api.com/json/?fields=status,message,lat,lon&key=Yw47lsQ5fOj8ov8";async fetchUserLocation(){try{const a=await fetch(this.apiUrl),s=await a.json();if(!s||"success"!==s.status)throw new Error(`Failed to fetch user location: ${s.message||"Unknown error"}`);return s}catch(a){throw new Error(`Failed to fetch user location: ${a.message}`,a)}}async getUserLocation(){const a=new CustomCache,s=a.get(this.cacheKey);if(s)return s;try{const s=await this.fetchUserLocation();return a.set(this.cacheKey,s,6048e5),s}catch(a){throw new Error(`Error in getUserLocation: ${a.message}`,a)}}}class WebAuthn{constructor(a={}){this.IAIAccountsUrl=a.IAIAccountsUrl||"https://accounts.idosell.com/",this.urls=a.urls||{generateRegister:`${this.IAIAccountsUrl}webAuthn/generateRegisterRequest.php`,register:`${this.IAIAccountsUrl}webAuthn/register.php`,generateLogin:`${this.IAIAccountsUrl}webAuthn/generateLoginRequest.php`,login:`${this.IAIAccountsUrl}webAuthn/login.php`,gql:"/graphql/v1/"},this.supportMac=a.supportMac??!0,this.supportIos=a.supportIos??!0,this.supportSafari=a.supportSafari??!0,this.supportOpera=a.supportOpera??!0}async fetchDataGQL(a={}){const{data:s,url:l,urlParameter:c=""}=a;if(!s)return!1;const d=`${l||this.urls.gql||"/graphql/v1/"}${c}`;try{const a=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:s});if(!a.ok)throw new Error(`HTTP error! status: ${a.status}`);return await a.json()}catch(a){throw new Error(`A connection error occurred. It was not possible to retrieve data from ${d}`,a)}}async fetchData(a={}){const{data:s,url:l}=a;if(!s||!l)return!1;try{const a=await fetch(l,{method:"POST",body:s,credentials:"include",cache:"no-cache"});if(!a.ok)throw new Error(`HTTP error! status: ${a.status}`);return await a.json()}catch(a){throw new Error(`A connection error occurred. It was not possible to retrieve data from ${l}`,a)}}browserNotSupported(){const a=new Error("Browser not supported.");throw a.code=1,a}isOpera(){const{browser:a}=document.documentElement.dataset;return!!a&&("Opera"===a||"Safari"===a&&navigator.userAgent.indexOf("OP")>-1)}isNotSupportedSafari(){const{browser:a,browserVersion:s}=document.documentElement.dataset;return!(!a||!s)&&("Safari"===a&&+s<15)}async checkBrowserSupport(){return!(!window.fetch||!navigator.credentials||!navigator.credentials.create||!window.PublicKeyCredential?.isUserVerifyingPlatformAuthenticatorAvailable||!await(window.PublicKeyCredential?.isUserVerifyingPlatformAuthenticatorAvailable())||!this.supportMac&&app_shop.vars.isMac||!this.supportIos&&app_shop.vars.isIos||!this.supportSafari&&app_shop.vars.isSafari||!this.supportOpera&&this.isOpera()||this.isNotSupportedSafari())}checkResponse(a){if(!a)throw new Error("Failed to retrieve data.");if("error"===a.status)throw new Error(a.errorMsg||"Unknown error occured.")}recursiveBase64StrToArrayBuffer(a){const s="=?BINARY?B?";let l={};if(Array.isArray(a))l=a.map((a=>this.recursiveBase64StrToArrayBuffer(a)));else{if("object"!=typeof a)return a;
1Object.keys(a).forEach((c=>{if("string"==typeof a[c]){let d=a[c];if(d.startsWith(s)&&d.endsWith("?=")){d=d.slice(11,-2);const a=window.atob(d),s=new Uint8Array(a.length);for(let l=0;l<a.length;l++)s[l]=a.charCodeAt(l);l[c]=s.buffer}else l[c]=a[c]}else l[c]=this.recursiveBase64StrToArrayBuffer(a[c])}))}return l}arrayBufferToBase64(a){const s=new Uint8Array(a),l=Array.from(s,(a=>String.fromCharCode(a))).join("");return window.btoa(l)}async registration({userLogin:a="",authorizeToken:s=""}){if(await this.checkBrowserSupport()||this.browserNotSupported(),!a)throw new Error('"userLogin" is required.');if(!s)throw new Error('"authorizeToken" is required. GraphQL expressCheckoutVerifyOtp > verificationToken.');const l=await this.fetchData({data:s,url:this.urls.generateRegister});this.checkResponse(l);const c=JSON.parse(l.data),d=this.recursiveBase64StrToArrayBuffer(c),p=await navigator.credentials.create(d),{clientDataJSON:h,attestationObject:m}=p?.response||{},_={userLogin:a,domain:window.location.hostname,authenticatorTransportMethods:p.response.getTransports?p.response.getTransports():[],clientDataJSONBase64:h?this.arrayBufferToBase64(h):"",attestationObjectBase64:m?this.arrayBufferToBase64(m):""},g=await this.fetchData({data:JSON.stringify(_),url:this.urls.register});this.checkResponse(g),console.log(g)}async login(){await this.checkBrowserSupport()||this.browserNotSupported();const a={domain:window.location.hostname},s=await this.fetchData({data:JSON.stringify(a),url:this.urls.generateLogin});this.checkResponse(s);const l=JSON.parse(s.data),c=this.recursiveBase64StrToArrayBuffer(l),d=await navigator.credentials.get(c),{rawId:p,response:{clientDataJSON:h,authenticatorData:m,signature:_,userHandle:g}}=d||{},y={domain:window.location.hostname,publicKeyCredentialBinRawId:p?this.arrayBufferToBase64(p):null,clientDataJSONBase64:h?this.arrayBufferToBase64(h):null,authenticatorDataBase64:m?this.arrayBufferToBase64(m):null,signatureBase64:_?this.arrayBufferToBase64(_):null,userHandleBinBase64:g?this.arrayBufferToBase64(g):null},v=await this.fetchData({data:JSON.stringify(y),url:this.urls.login});if(this.checkResponse(v),"success"!==v.status)throw new Error(v.ms);return await this.loginToShop(v.loginToken)}async loginToShop(a){if(!a)throw new Error('"loginToken" is invalid.');const s=JSON.stringify({query:`mutation{\n loginByIAIAccountsToken(token: "${a}") {\n status\n login\n }\n }`}),l=await this.fetchDataGQL({data:s,urlParameter:"?mutation=loginByToken"}),{status:c}=l?.data?.loginByIAIAccountsToken||{};if("success"!==c)throw new Error("Failed to log into the shop.");return l?.data?.loginByIAIAccountsToken}}app_shop.fn.ajaxLoadSite=a=>{if((()=>{const a=document.getElementById("ajaxLoadSite"),s=document.getElementById("ajaxLoadSite_cover");a&&a.remove(),s&&s.remove()})(),!a)return;const s=`\n <div id="ajaxLoadSite_cover" style="height:${document.body.scrollHeight}px;width:100%;position:absolute;left:0;top:0;"></div>\n <div id="ajaxLoadSite" style="left:50%;transform:translateX(-50%);"></div>\n `;document.body.insertAdjacentHTML("beforeend",s)},app_shop.fn.ajaxLoadSiteMessage=a=>{const s=document.getElementById("ajaxLoadSite");s&&s.append(a)},app_shop.fn.getAjaxItem=async(a,s,l)=>{try{const c=await(async(a,s)=>{try{return(await fetch(`${a}?shop_xml=1&get_ajax_items=${s}`,{method:"POST",mode:"cors",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer"})).json()}catch{console.error("fetchAjaxItem() Error:",error)}})(a,s);return c[s]?(l(c[s]),c[s]):(console.warn("app_shop.fn.getAjaxItem Error: Section not found"),l(!1),!1)}catch(a){return l(!1),console.error("app_shop.fn.getAjaxItem Error: ",a),!1}},app_shop.fn.runAjaxFn=()=>{if(app_shop.runArr(app_shop.fnrun.all,"all",!0),app_shop.vars.view)return void app_shop.runArr(app_shop.fnrun[app_shop.vars.view],app_shop.vars.view,!0);const a=document.getElementById("viewType");if(!a)return;const{width:s}=window.getComputedStyle(a);app_shop.vars.view=parseInt(s,10),app_shop.runArr(app_shop.fnrun[app_shop.vars.view],app_shop.vars.view,!0)};var IAI_Ajax={Request:function(_url,pd,fun){$.ajax({type:"POST",url:_url,data:pd}).done((function(responseText){fun&&fun.onSuccess&&(fun.arg?eval(fun.onSuccess+"('"+responseText+"', '"+fun.arg+"');"):eval(fun.onSuccess+"('"+responseText+"');"))}))}};function ownKeys(a,s){var l=Object.keys(a);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(a);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(a,s).enumerable}))),l.push.apply(l,c)}return l}function _objectSpread(a){for(var s=1;s<arguments.length;s++){var l=null!=arguments[s]?arguments[s]:{};
1s%2?ownKeys(Object(l),!0).forEach((function(s){_defineProperty(a,s,l[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(l)):ownKeys(Object(l)).forEach((function(s){Object.defineProperty(a,s,Object.getOwnPropertyDescriptor(l,s))}))}return a}function _defineProperty(a,s,l){return s in a?Object.defineProperty(a,s,{value:l,enumerable:!0,configurable:!0,writable:!0}):a[s]=l,a}function procesArrayFunctions(a){var s,l;for(s=0,l=a.length;s<l;s++){$(a[s][1]).length&&a[s][0]($(a[s][1]))}}app_shop.fn.appendAffiliateToURL=(a=window.location.href)=>{const s="affiliateUrlAppended";if(window.sessionStorage.getItem(s))return;const l="affiliate",c=app_shop.fn.cookie.get(l);if(c)try{const d="undefined"!=typeof window?window.location.origin:"http://localhost",p=new URL(a,d);if(p.searchParams.has(l))return;p.searchParams.set(l,c);const h=p.href.replace(/\+/g,"%20");window.history.replaceState(null,"",h),window.sessionStorage.setItem(s,"1")}catch(a){console.error("Niepoprawny format URL w appendAffiliateToURL:",a)}},app_shop.fn.changeLiteral=(a,s,l)=>{const c=a%10,d=a%100,p=[];return!0!==l&&p.push(a),1===a&&s[1]?p.push(s[1]):(0===a||c>=0&&c<=1||c>=5&&c<=9||d>10&&d<20)&&s[0]?p.push(s[0]):(d<10||d>20)&&c>=2&&c<=4&&s[2]&&p.push(s[2]),p.join(" ")},app_shop.fn.change_url=a=>{history.pushState&&history.pushState({foo:"bar"},"",decodeURIComponent(a))},app_shop.fn.cookie={get:function(a){const s=document.cookie.split(";");for(let l=0;l<s.length;l++){const c=s[l].trim(),[d,p]=c.split("=");if(d===a)return decodeURIComponent(p)}return null},set:function(a,s,l){let c="";if(l){const a=new Date;a.setTime(a.getTime()+24*l*60*60*1e3),c=`; expires=${a.toUTCString()}`}document.cookie=`${a}=${encodeURIComponent(s)}${c}; path=/`},remove:function(a){this.set(a,"",-1)}},app_shop.fn.dropdownClick=function(a){var s=a.find("a"),l=s.data("value"),c=s.html(),d=a.parents(".dropdown");d.find("input").val(l),d.find("button span").html(c),d.find(".selected").removeClass("selected"),s.addClass("selected")},app_shop.fn.dropdown=function selectToDropdown(a,s,l){a.each((function(a){var c=$(this),d=a;$selectValue=c.val(),$selectName=c.attr("name"),$labelName="",c.data("label")&&($labelName="<b>"+c.data("label")+"</b>"),$ul=$('<div class="f-dropdown f-group '+c.attr("class")+'"><ul class="f-dropdown-menu" aria-labelledby="'+s+d+'"></ul></div>'),c.children().each((function(a){var s=$(this);$li=$("<li>");var l,c=new Array;$.each(s.data(),(function(a,s){var l="data-"+a+'="'+s+'"';c.push(l)})),l=c.length?c.join(" "):"",$('<a data-index="'+a+'" '+l+">").attr("href","#"+s.attr("value")).attr("data-value",s.attr("value")).text(s.text()).addClass($selectValue===s.attr("value")?"selected":"").appendTo($li),$li.appendTo($ul.find("ul")),s.attr("class")&&$li.addClass(s.attr("class")),s.attr("data-price")&&$li.attr("data-price",s.attr("data-price"))})),$ul.prepend('<button id="'+s+d+'" class="f-control f-dropdown-toggle" data-indexcurrent="0" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">'+$labelName+"<span>"+c.find("option:selected").text()+"</span></button>").prepend('<input class="select_hidden searching_ajax" type="hidden" name="'+$selectName+'" value="'+$selectValue+'" />'),l&&$ul.find("li").on("click.option",(function(){l($(this))})),c.replaceWith($ul)}))},app_shop.fn.clickDropdown=function clickDropdown(a,s){var l=a.find("a"),c=l.data("value"),d=l.html(),p=a.parents(".f-dropdown");p.find("input").val(c),p.find("button span").html(d),p.find(".selected").removeClass("selected"),l.addClass("selected"),s&&a.parents("form").submit()},app_shop.fn.shouldSkipDropdown=a=>{const s=window.innerWidth<=768,l=a.classList.contains("--dropdown-no-mobile"),c=a.classList.contains("--dropdown-no-desktop");return s&&l||!s&&c},app_shop.fn.initDropdown=()=>{const a=document.querySelectorAll(".dropdown");a.length&&a.forEach((a=>{const s=a.querySelector(".dropdown__header"),l=a.querySelector(".dropdown__content");if(s&&l)return app_shop.fn.shouldSkipDropdown(a)?(s.classList.remove("dropdown__header"),void l.classList.remove("dropdown__content")):void s.addEventListener("click",(()=>{a.classList.contains("--hideHeader")&&s.classList.add("hidden"),a.classList.toggle("--active")}))}))},app_shop.fn.evalJSFromHtml=function(a){let s;s=a?"function"==typeof a.querySelectorAll?a:"string"==typeof a?$(`<div>${a}</div>`):a instanceof $?a:document:document;("function"==typeof s.find?s.find("script.ajaxLoad").toArray():s.querySelectorAll("script.ajaxLoad")).forEac
1h((a=>{const s=document.createElement("script");s.innerHTML=a.innerHTML||$(a).html(),document.body.appendChild(s)}))},app_shop.fn.fontCallback=()=>{void 0!==app_shop.fn.fontCallbackMenu&&app_shop.fn.fontCallbackMenu()},app_shop.fn.loadImageFromInput=a=>new Promise(((s,l)=>{const c=(window.URL||window.webkitURL).createObjectURL(a),d=new Image;d.onload=()=>s({width:d.width,height:d.height}),d.onerror=l,d.src=c})),window.format_price=function(a,s={}){var l=a,c=s.mask||"### ##0,00";currency_grouping_separator&&(c=c.replace(",",currency_grouping_separator)),currency_decimal_separator&&(c=c.replace(".",currency_decimal_separator));var d=s.currency||"",p=s.currency_space?" ":"",h=!!s.currency_before_price;if(!c||isNaN(+l))return l;var m=(l="-"==c.charAt(0)?-l:+l)<0?l=-l:0,_=c.match(/[^\d\-+#]/g),g=_&&_[_.length-1]||".",y=_&&_[1]&&_[0]||",";c=c.split(g),l=+(l=l.toFixed(c[1]&&c[1].length))+"";var v=c[1]&&c[1].lastIndexOf("0"),b=l.split(".");(!b[1]||b[1]&&b[1].length<=v)&&(l=(+l).toFixed(v+1));var w=c[0].split(y);c[0]=w.join("");var k=c[0]&&c[0].indexOf("0");if(k>-1)for(;b[0].length<c[0].length-k;)b[0]="0"+b[0];else 0==+b[0]&&(b[0]="");(l=l.split("."))[0]=b[0];var $=w[1]&&w[w.length-1].length;if($){for(var L=l[0],C="",S=L.length%$,A=0,x=L.length;A<x;A++)C+=L.charAt(A),!((A-S+1)%$)&&A<x-$&&(C+=y);l[0]=C}l[1]=c[1]&&l[1]?g+l[1]:"";var T=(m?"-":"")+l[0]+l[1];return T=h?d+p+T:T+p+d},app_shop.fn.addFocused=function addFocusedClassOnInput(a,s){const l=s?$(s):$(this);(l.next().hasClass("control-label")||l.next().hasClass("f-label"))&&(""!=l.val()?l.addClass("focused"):l.removeClass("focused"))},app_shop.fn.setMobileClass=()=>{$("[data-tablet-class]").each((function(){$(this).removeClass($(this).attr("data-tablet-class"))})),$("[data-mobile-class]").each((function(){$(this).addClass($(this).attr("data-mobile-class"))})),$("html").addClass("_mobile")},app_shop.fn.setTabletClass=()=>{$("[data-mobile-class]").each((function(){$(this).removeClass($(this).attr("data-mobile-class"))})),$("[data-tablet-class]").each((function(){$(this).addClass($(this).attr("data-tablet-class"))})),$("html").removeClass("_mobile")},app_shop.fn.addScrollToElement=a=>{const s=document.getElementById(a);if(!s)return;let l,c,d=!1;s.addEventListener("mousedown",(a=>{d=!0,l=a.pageX-s.offsetLeft,c=s.scrollLeft})),s.addEventListener("mouseleave",(()=>{d=!1})),s.addEventListener("mouseup",(()=>{d=!1})),s.addEventListener("mousemove",(a=>{if(!d)return;a.preventDefault();const p=2*(a.pageX-s.offsetLeft-l);s.scrollLeft=c-p}))},app_shop.fn.sesion2link=function(){var a=$.cookie("client"),s=new RegExp("[\\?&]client=([^&#]*)");if(!a||$.isEmptyObject(app_shop.vars.sites)||!app_shop.vars.session_share||"true"!=app_shop.vars.session_share)return!1;$('a[href*="http://"],a[href*="https://"],a[href^="//"]').each((function(){if(-1!=$.inArray(this.hostname,app_shop.vars.sites)){var l=$(this).get(0),c=l.href;null==s.exec(c)&&(-1!=c.indexOf("?")?l.pathname+="&client="+a:l.pathname+="?client="+a)}}))},app_shop.fn.callAllFunctions=(...a)=>{const s=a.filter((a=>"function"==typeof a));return(...a)=>s.forEach((s=>s(...a)))},app_shop.fn.reloadPage=(a=4e3)=>{setTimeout((()=>{window.location.reload()}),a)},app_shop.fn.getRwdSrc=a=>{if(!a)return"";const{src_mobile:s,src_tablet:l,src_desktop:c}=a.dataset||a.data()||{},d=[s,l,c,c][app_shop.vars.view-1];return d||""},app_shop.fn.createDomElement=(a,s=[],l={},c="")=>{const d=document.createElement(a);Array.isArray(s)&&s.length&&d.classList.add(...s);for(const[a,s]of Object.entries(l))null!=s&&d.setAttribute(a,s);return"string"!=typeof c&&"number"!=typeof c||(d.innerHTML=c),d},app_shop.fn.trackCheckboxSelectionInSessionStorage=(a,s,l=!1)=>{if(!a||!s)return;const c=document.getElementById(a);if(c instanceof HTMLInputElement&&"checkbox"===c.type){if(!0===l){const a=sessionStorage.getItem(s);null!==a&&(c.checked="true"===a)}else sessionStorage.setItem(s,c.checked.toString());c.addEventListener("change",(()=>{sessionStorage.setItem(s,c.checked.toString())}))}else console.warn(`Element with ID "${a}" is not a valid checkbox.`)},app_shop.fn.load=async(a,s,l,c="")=>{const d=`${a}${c}`,p=new AbortController,h=setTimeout((()=>p.abort()),16e3);
1s.forEach((([a])=>document.querySelector(a)?.classList.add("load-content")));try{const c=await fetch(d,{signal:p.signal}),h=await c.text(),m=(new DOMParser).parseFromString(h,"text/html");s.forEach((a=>{const[s,l]=a,c=document.querySelector(s),d=m.querySelector(l);c&&d&&(c.outerHTML=d.outerHTML)})),app_shop.fn.change_url(a),app_shop.fn.evalJSFromHtml(m),l&&l(m)}catch(s){console.error("app_shop.fn.load error:",s),window.location.href=a}finally{clearTimeout(h)}},app_shop.fn.menuBasketCache=a=>{a&&($.ajax({type:"GET",url:"/ajax/basket.php?&getAjax=true",dataType:"JSON",success:function(a){a=a.basket,$("#menu_basket .topBasket__price").html(a.worth_formatted),a.productsCounter>0?$("#menu_basket .badge").html(a.productsCounter):$("#menu_basket .badge").html(""),$(".topBasket__price").removeAttr("style"),app_shop.vars.shippingLimitFree=a.shippingLimitFree,app_shop.vars.toShippingFree=a.toShippingFree}}),iaiGet.wishlist((function(a){if(!a.Wishlist.response.attributes)return!1;var s=$("#menu_basket .wishes_link span.hidden-phone"),l=s.text(),c=a.Wishlist.response.attributes.count;s.text(l.replace(/\(.{1,3}\)/,"("+c+")")),s.next(".badge").remove(),c>0&&s.after('<span class="badge badge-important visible-phone">'+c+"</span>")})))},app_shop.fn.newsData=a=>{const{data:s,month_names:l,format:c="%d-%m-%y"}=a||{};if(!s)return!1;const d=s.split("-");return!(d.length<3)&&(l&&(d[1]=l[parseInt(d[1],10)-1]),c.format(d[2],d[1],d[0]))},function(a,s){"object"==typeof exports&&"undefined"!=typeof module?s():"function"==typeof define&&define.amd?define(s):s()}(0,(function(){"use strict";function e(a){var s=this.constructor;return this.then((function(l){return s.resolve(a()).then((function(){return l}))}),(function(l){return s.resolve(a()).then((function(){return s.reject(l)}))}))}function n(){}function t(a){if(!(this instanceof t))throw new TypeError("Promises must be constructed via new");if("function"!=typeof a)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],u(a,this)}function o(a,s){for(;3===a._state;)a=a._value;0!==a._state?(a._handled=!0,t._immediateFn((function(){var l=1===a._state?s.onFulfilled:s.onRejected;if(null!==l){var c;try{c=l(a._value)}catch(a){return void i(s.promise,a)}r(s.promise,c)}else(1===a._state?r:i)(s.promise,a._value)}))):a._deferreds.push(s)}function r(a,s){try{if(s===a)throw new TypeError("A promise cannot be resolved with itself.");if(s&&("object"==typeof s||"function"==typeof s)){var l=s.then;if(s instanceof t)return a._state=3,a._value=s,void f(a);if("function"==typeof l)return void u(function(a,s){return function(){a.apply(s,arguments)}}(l,s),a)}a._state=1,a._value=s,f(a)}catch(s){i(a,s)}}function i(a,s){a._state=2,a._value=s,f(a)}function f(a){2===a._state&&0===a._deferreds.length&&t._immediateFn((function(){a._handled||t._unhandledRejectionFn(a._value)}));for(var s=0,l=a._deferreds.length;l>s;s++)o(a,a._deferreds[s]);a._deferreds=null}function u(a,s){var l=!1;try{a((function(a){l||(l=!0,r(s,a))}),(function(a){l||(l=!0,i(s,a))}))}catch(a){if(l)return;l=!0,i(s,a)}}var a=setTimeout;t.prototype.catch=function(a){return this.then(null,a)},t.prototype.then=function(a,s){var l=new this.constructor(n);return o(this,new function(a,s,l){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof s?s:null,this.promise=l}(a,s,l)),l},t.prototype.finally=e,t.all=function(a){return new t((function(s,l){function o(a,p){try{if(p&&("object"==typeof p||"function"==typeof p)){var h=p.then;if("function"==typeof h)return void h.call(p,(function(s){o(a,s)}),l)}c[a]=p,0==--d&&s(c)}catch(a){l(a)}}if(!a||void 0===a.length)throw new TypeError("Promise.all accepts an array");var c=Array.prototype.slice.call(a);if(0===c.length)return s([]);for(var d=c.length,p=0;c.length>p;p++)o(p,c[p])}))},t.resolve=function(a){return a&&"object"==typeof a&&a.constructor===t?a:new t((function(s){s(a)}))},t.reject=function(a){return new t((function(s,l){l(a)}))},t.race=function(a){return new t((function(s,l){for(var c=0,d=a.length;d>c;c++)a[c].then(s,l)}))},t._immediateFn="function"==typeof setImmediate&&function(a){setImmediate(a)}||function(s){a(s,0)},t._unhandledRejectionFn=function(a){void 0!==console&&console&&console.warn("Possible Unhandled Promise Rejection:",a)};var s=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw Error("unable to locate global object")}();"Promise"in s?s.Promise.prototype.finally||(s.Promise.prototype.finally=e):s.Promise=t})),app_shop.fn.replaceSelects=function(a,s,l){a.each((function(a){var c=$(this),d=a;$selectValue=c.val(),$selectName=c.attr("name"),$labelName="",c.data("label")&&($labelName="
1<b>"+c.data("label")+"</b>"),$ul=$('<div class="dropdown dropdownsearching form-group '+c.attr("class")+'"><ul class="dropdown-menu" aria-labelledby="'+s+d+'"></ul></div>'),c.children().each((function(a){var s=$(this);$li=$("<li>");var l,c=new Array;$.each(s.data(),(function(a,s){var l="data-"+a+"="+s;c.push(l)})),l=c.length?c.join(" "):"",$('<a data-index="'+a+'" '+l+">").attr("href","#"+s.attr("value")).attr("data-value",s.attr("value")).text(s.text()).addClass($selectValue==s.attr("value")?"selected":"").appendTo($li),$li.appendTo($ul.find("ul")),s.attr("class")&&$li.addClass(s.attr("class")),s.attr("data-price")&&$li.attr("data-price",s.attr("data-price"))})),$ul.prepend('<button id="'+s+d+'" class="form-control dropdown-toggle" data-indexcurrent="0" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">'+$labelName+"<span>"+c.find("option:selected").text()+"</span></button>").prepend('<input class="select_hidden searching_ajax" type="hidden" name="'+$selectName+'" value="'+$selectValue+'" />'),l&&$ul.find("li").on("click.option",(function(){l($(this))})),c.replaceWith($ul)}))},app_shop.fn.rwdBanner=(a,s)=>{a&&s&&s.forEach((s=>{app_shop.run((()=>{document.querySelectorAll(a).forEach((a=>{a.querySelectorAll("img.rwd-src").forEach((a=>{a.setAttribute("src",app_shop.fn.getRwdSrc(a))}))}))}),s,a)}))};const excludeFromMove=["#menu_contact"];app_shop.fn.setGrid=()=>{switch(app_shop.vars.view){case 4:case 3:document.querySelectorAll(".domHandler").forEach((a=>{const s=a.dataset.item,l=document.querySelector(s);l&&(excludeFromMove.includes(s)?l.classList.contains("--clone")&&l.remove():a.after(l),a.remove())}));break;case 2:case 1:if(document.querySelector(".domHandler"))return;document.querySelectorAll(".setMobileGrid").forEach((a=>{const s=a.dataset.item,l=document.querySelector(s);if(!l||a.querySelectorAll(s).length>0)return;const c=document.createElement("del");if(c.classList.add("domHandler"),c.dataset.item=s,c.style.display="none",l.before(c),excludeFromMove.includes(s)){const s=l.cloneNode(!0);s.classList.add("--clone"),a.append(s)}else a.append(l)}))}},app_shop.fn.parseURLParams=a=>{var s={},l=a.indexOf("?")+1,c=a.indexOf("#")+1||a.length+1,d=a.slice(l,c-1);if(d===a||""===d)return s;for(var p=d.replace(/\+/g," ").split("&"),h=0;h<p.length;h++){var m=p[h].split("="),_=decodeURIComponent(m[0]),g=decodeURIComponent(m[1]);_ in s||(s[_]=[]),s[_].push(2===m.length?g:null)}return s},app_shop.fn.variety=(a,s,l)=>1==+a?s:l,function(a){a.fn.textWidth=function getTextWidth(s,l){return a.fn.textWidth.fakeEl||(a.fn.textWidth.fakeEl=a("<span>").hide().appendTo(document.body)),a.fn.textWidth.fakeEl.text(s||this.val()||this.text()).css("font",l||this.css("font")),a.fn.textWidth.fakeEl.width()}}(jQuery),function(a){a.fn.inView=function(){return hh=a(window).scrollTop()+a(window).height(),gg=a(this).position().top,hh+100>gg}}(jQuery),function(a){a.fn.maxHeightO=function(){var s=0;return this.each((function(){s=Math.max(s,a(this).outerHeight())})),s}}(jQuery),function(a){a.fn.maxHeight=function(){var s=0;return this.height("auto"),this.each((function(){s=Math.max(s,a(this).outerHeight())})),this.height(s),this}}(jQuery),jQuery.fn.setHeight=function(a){var s=Math.round(a.outerWidth(!0)/a.children().outerWidth(!0)),l=a.children().length;if(s>0)for(var c=0;c<l;c+=s){var d=a.children().slice(c,c+s);d.find(this).length&&(d=d.find(this)),d.removeAttr("style"),d.css("min-height",d.maxHeightO())}},jQuery.fn.hasScrollBar=function(){return this.width()<this.find(">*:first").width()},function(a){a.fn.backTop=function(s){var l=a.extend({speed:500,txt:"↑",id:"backTop",duration:500},s);a("#"+l.id).remove(),a("body").append("<a id="+l.id+">"+l.txt+"</a>");var c=a("#"+l.id),d=2*a(window).height(),p=l.speed;getRightOffset=function(){var s=45,l=.5*(a(window).width()-a("#container").outerWidth())-2*s;l>=c.outerWidth()&&(s=l-c.outerWidth()+s),c.css("right",s+"px")},getRightOffset(),a(window).resize((function(){getRightOffset()})),a(document).scroll((function(){a(window).scrollTop()>=d?c.fadeIn(p):c.fadeOut(p)})),c.click((function(){a("html, body").animate({scrollTop:0},{duration:l.duration})}))}}(jQuery),function(a){a.fn.separateElements=function(s){var l=a.extend({numCol:4},s);return this.each((function(){$this=a(this),$this.find(".separator").remove(),$this.find("> *:nth-child("+l.numCol+"n)").after('<div class="clearfix separator">')}))}}(jQuery),function(a){a.fn.iai_align=function(){return this.each((function(){if(a(this).data("align")){const l=a(this).data("align").split("|");var s=a(this);for(i in l){const c=l[i].split("#"),d=c[0];if("px"==(c[1]||"px")){const l=Math.max.apply(null,s.find(d).map((function(){return a(this).outerHeight()})).get());s.find(d).css("min-height",l)}else s.find(d).each((function(){a(this).wrap('<div style="display: table;width:100%;height:100%;table-layout: fixed;"><div style="display: table-cell;vertical-align: middle;min-height:100%">')}))}}}))}}(jQuery),function(a){a.fn.wrappTableLayout=function(s){var l=a.extend({numCol:4,wrapper:'<div class="table_row">',tableClass:"table_wrapper",cellClass:"table_cell",wrapp:!0},s);return this.each((function(){$this=a(this);var s=$this.find("> *");if($this.is("."+l.tableClass)&&($this.removeClass(l.tableClass),s.removeClass(l.cellClass),s.find("> *").unwrap(),s=$this.find("> *")),l.wrapp){$this.addClass(l.tableClass),s.addClass(l.cellClass);for(var c=0,d=s.length;c<d;c+=l.numCol)s.slice(c,c+l.numCol).wrapAll(l.wrapper)}}))}}(jQuery),function(a){var s,l,c="center",d="left",p="right",h="auto";function trunk8(s){this.$element=a(s),this.original_text=this.$element.html(),this.settings=a.extend({},a.fn.trunk8.defaults)}function truncate(){var s,c,d,p,m=this.data("trunk8"),_=m.settings,g=_.width,y=_.side,v=_.fill,b=l.getLineHeight(this)*_.lines,w=m.original_text,k=w.length,$="";if(this.html(w),g===h){if(this.height()<=b)return;for(s=0,c=k-1;s<=c;)d=s+(c-s>>1),p=l.eatStr(w,y,k-d,v),this.html(p),this.height()>b?c=d-1:(s=d+1,$=$.length>p.length?$:p);this.html(""),this.html($),_.tooltip&&this.attr("title",w)}else isNaN(g)?a.error('Invalid width "'+g+'".'):(d=k-g,p=l.eatStr(w,y,d,v),this.html(p),_.tooltip&&this.attr("title",w))}trunk8.prototype.updateSettings=function(s){this.settings=a.extend(this.settings,s)},s={init:function(s){return this.each((function(){var l=a(this),c=l.data("trunk8");c||l.data("trunk8",c=new trunk8(this)),c.updateSettings(s),truncate.call(l)}))},update:function(s){return this.each((function(){var l=a(this);s&&(l.data("trunk8").original_text=s),truncate.call(l)}))},revert:function(){return this.each((function(){var s=a(this).data("trunk8").original_text;a(this).html(s)}))},getSettings:function(){return this.get(0).data("trunk8").settings}},l={eatStr:function(s,h,m,_){var g,y,v=s.length,b=l.eatStr.generateKey.apply(null,arguments);if(l.eatStr.cache[b])return l.eatStr.cache[b];if("string"==typeof s&&0!==v||a.error('Invalid source string "'+s+'".'),m<0||m>v)a.error('Invalid bite size "'+m+'".');else if(0===m)return s;switch("string"!=typeof(_+"")&&a.error("Fill unable to be converted to a string."),h){case p:return l.eatStr.cache[b]=a.trim(s.substr(0,v-m))+_;case d:return l.eatStr.cache[b]=_+a.trim(s.substr(m));case c:return g=v>>1,y=m>>1,l.eatStr.cache[b]=a.trim(l.eatStr(s.substr(0,v-g),p,m-y,""))+_+a.trim(l.eatStr(s.substr(v-g),d,y,""));default:a.error('Invalid side "'+h+'".')}},getLineHeight:function(s){var l,c=a(s),d=c.css("float"),p=c.css("position"),h=c.html(),m="line-height-test";return"none"!==d&&c.css("float","none"),"absolute"===p&&c.css("position","static"),c.html("i").wrap('<div id="'+m+'" />'),l=a("#"+m).innerHeight(),c.html(h).css({float:d,position:p}).unwrap(),l}},l.eatStr.cache={},l.eatStr.generateKey=function(){return Array.prototype.join.call(arguments,"")},a.fn.trunk8=function(l){return s[l]?s[l].apply(this,Array.prototype.slice.call(arguments,1
1)):"object"!=typeof l&&l?void a.error("Method "+l+" does not exist on jQuery.trunk8"):s.init.apply(this,arguments)},a.fn.trunk8.defaults={fill:"…",lines:1,side:p,tooltip:!0,width:h}}(jQuery),function(a){a.fn.extend({dialog:function(s){return s=a.extend({content:"text",wrappContent:!1,removeContent:!0,width:!1,background:"#fff",borderColor:"#fff",wrapperClass:!1,cover:!0,coverClosesDialog:!0,fixed:!0,fitToWindow:!0,animate:!0,showCloseButton:!0,offsetApp:120,beforeShow:function(){},afterShow:function(){},afterCloseFn:function(){},txtCloseButton:"x",buttons:[]},s),$mousePosY=0,$mousePosX=0,$animateHeight=0,$animateWidth=0,$wrapperWidth=0,$wrapperHeight=0,$wrapperSubHeight=0,$cloneElement=0,this.each((function(){$element=a(this);var l,c,d,closeAll=function(s){$cloneElement&&($cloneElement.hide(),$cloneElement.appendTo("body"),$cloneElement=0),a("#dialog_cover,#dialog_wrapper").remove(),a("body").removeClass("dialog_open")};closeAll(),s.cover&&(a("body").append("<div id='dialog_cover'></div>"),s.coverClosesDialog&&a("#dialog_cover").click((function(){closeAll(),s.afterCloseFn()}))),l=a('<div id="dialog_wrapper"><div id="dialog_wrapper_sub"></div></div>'),c=s.buttons,s.showCloseButton&&l.find("#dialog_wrapper_sub").before('<a id="dialog_close" href="#close">'+s.txtCloseButton+"</a>"),(!a.isEmptyObject(c)||a.isArray(c)&&c.length)&&(l.find("#dialog_wrapper_sub").after('<div id="ui-dialog_button"></div>'),a.each(c,(function(s,c){(c=a.isFunction(c)?{text:s,click:c}:c).className||(c.className="btn-small"),l.find("#ui-dialog_button").append(a('<button class="'+c.className+'">'+c.text+"</button>").on("click",c.click))}))),a("body").append(l),s.width&&a("#dialog_wrapper").css({width:s.width}),s.background&&a("#dialog_wrapper").css({background:s.background}),s.borderColor&&a("#dialog_wrapper").css({borderColor:s.borderColor}),s.wrapperClass&&a("#dialog_wrapper").addClass(s.wrapperClass),a("#dialog_wrapper").css({top:"-1000px"}),s.fixed?a("#dialog_wrapper").css({position:"fixed"}):a("#dialog_wrapper").css({position:"absolute"}),s.wrappContent?($cloneElement=$element.clone(!0),s.removeContent&&$element.remove(),$cloneElement.prependTo("#dialog_wrapper_sub"),$cloneElement.show(),a("#dialog_wrapper_sub div:first-child").show()):a("#dialog_wrapper_sub").html(s.content),s.clickAnimate||a("#dialog_close").click((function(){closeAll(),s.afterCloseFn()})),s.beforeShow(),a("body").addClass("dialog_open"),d="#dialog_wrapper",$wrapperWidth=a(d).outerWidth(),$wrapperHeight=a(d).outerHeight(),$wrapperSubHeight=a("#dialog_wrapper_sub").height(),1==app_shop.vars.isMobileApp&&($wrapperHeight+=s.offsetApp),a(window).height()>a("#dialog_wrapper").outerHeight()?s.animate?s.fixed?a(d).css({"margin-left":-$wrapperWidth/2,left:"50%"}).animate({top:a(window).height()/2-$wrapperHeight/2}):a(d).css({"margin-left":-$wrapperWidth/2,left:"50%"}).animate({top:a(window).height()/2-$wrapperHeight/2+a(window).scrollTop()}):a(d).css({"margin-left":-$wrapperWidth/2,left:"50%",top:a(window).height()/2-$wrapperHeight/2+a(window).scrollTop()}):(s.fitToWindow&&a("#dialog_wrapper_sub").css({"max-height":a(window).height()-40-($wrapperHeight-$wrapperSubHeight),overflow:"auto"}).addClass("setMaxHeightWindow"),s.animate?s.fixed?a(d).css({"margin-left":-$wrapperWidth/2,left:"50%"}).animate({top:"20px"}):a(d).css({"margin-left":-$wrapperWidth/2,left:"50%"}).animate({top:20+a(window).scrollTop()}):a(d).css({"margin-left":-$wrapperWidth/2,left:"50%",top:20+a(window).scrollTop()})),a("#dialog_wrapper").addClass("active"),s.afterShow()}))}})}(jQuery),function(a){a.fn.fancyList=function(s){var l,c;return l=a.extend({forceMobile:!0,buildHTML:!0,fnClick:function(){},fnItemClick:function(){}},s),!!navigator.userAgent.match(/Mobile|webOS/i),c=!!navigator.userAgent.match(/iP(hone|od|ad)/i),this.each((function(){var s=a(this),d=s.find("ul.options");s.prepend('<select class="fancified">');var p,h,m,_,g=s.find("select.fancified");d.find("li").each((function(s,l){var c=(l=a(l)).data("title")||l.html();return g.append('<option value="'+l.attr("data-value")+'">'+c+"</option>")})),g.addClass("fancified"),g.css({width:1,height:1,display:"block",position:"absolute",top:0,left:0,opacity:0}
1),m=s.find(".trigger"),(h=g.prop("disabled"))&&s.addClass("disabled"),_=function(){return m.find("span").length?m.find("span").text(g.find(":selected").text()):m.text(g.find(":selected").text())},s.mouseenter((function(){m.addClass("hover")})),s.mouseleave((function(){m.removeClass("hover")})),g.on("blur",(function(){return m.hasClass("hover")?g.focus():m.hasClass("open")?setTimeout((function(){return m.trigger("close")}),120):void 0})),m.on("close",(function(){return m.removeClass("open"),d.removeClass("open")})),m.on("click",(function(){var s;if(l.fnClick(m,g),!h){if(m.toggleClass("open"),m.hasClass("open")&&((s=m.parent()).offsetParent(),s.offset().top+s.outerHeight()+d.outerHeight()+20>a(window).height()?d.addClass("overflowing"):d.removeClass("overflowing")),d.toggleClass("open"),!c)return g.focus();d.hasClass("open")?(a("div.fancy-select div.trigger.open").removeClass("open"),a("div.fancy-select ul.options.open").removeClass("open"),d.addClass("open"),m.addClass("open")):(a("div.fancy-select div.trigger.open").removeClass("open"),a("div.fancy-select ul.options.open").removeClass("open"))}})),g.on("enable",(function(){return g.prop("disabled",!1),s.removeClass("disabled"),h=!1,p()})),g.on("disable",(function(){return g.prop("disabled",!0),s.addClass("disabled"),h=!0})),g.on("change",(function(a){return a.originalEvent&&a.originalEvent.isTrusted?a.stopPropagation():_()})),g.on("keydown",(function(a){var s,l,c;if(c=a.which,(s=d.find(".hover")).removeClass("hover"),d.hasClass("open")){if(38===c?(a.preventDefault(),s.length&&s.index()>0?s.prev().addClass("hover"):d.find("li:last-child").addClass("hover")):40===c?(a.preventDefault(),s.length&&s.index()<d.find("li").length-1?s.next().addClass("hover"):d.find("li:first-child").addClass("hover")):27===c?(a.preventDefault(),m.trigger("click")):13===c||32===c?(a.preventDefault(),s.trigger("click")):9===c&&m.hasClass("open")&&m.trigger("close"),(l=d.find(".hover")).length)return d.scrollTop(0),d.scrollTop(l.position().top-12)}else if(13===c||32===c||38===c||40===c)return a.preventDefault(),m.trigger("click")})),d.on("click","li",(function(){return l.fnItemClick(a(this)),m.removeClass("hover"),c?g.val(a(this).data("value")).trigger("change").trigger("blur").trigger("focus"):g.val(a(this).data("value")).trigger("change").trigger("blur"),!1})),d.on("mouseenter","li",(function(){var s;return s=a(this),d.find(".hover").removeClass("hover"),s.addClass("hover")})),d.on("mouseleave","li",(function(){return d.find(".hover").removeClass("hover")})),p=function(){if(_(),!c||l.forceiOS)return g.find("option").each((function(s,c){var p;if(!(c=a(c)).prop("disabled")&&(c.val()||l.includeBlank))return p=l.optionTemplate(c),c.prop("selected")?d.append('<li data-raw-value="'+c.val()+'" class="selected">'+p+"</li>"):c.is(".disabled")?d.append('<li class="fs-disabled" data-raw-value="'+c.val()+'">'+p+"</li>"):d.append('<li data-raw-value="'+c.val()+'">'+p+"</li>")}))}}))}}(jQuery),function(a){a.fn.fancySelect=function(s){var l,c;return null===s&&(s={}),c=a.extend({forceiOS:!0,includeBlank:!1,optionTemplate:function(a){return a.text()},triggerTemplate:function(a){return a.text()}},s),l=!!navigator.userAgent.match(/iP(hone|od|ad)/i),this.each((function(){var s,d,p,h,m,_,g;if(!(h=a(this)).hasClass("fancified")&&"SELECT"===h[0].tagName)return h.addClass("fancified"),h.css({width:1,height:1,display:"block",position:"absolute",top:0,left:0,opacity:0}),h.wrap('<div class="fancy-select">'),g=h.parent(),h.data("class")&&g.addClass(h.data("class")),g.append('<div class="trigger">'),l&&!c.forceiOS||g.append('<ul class="options">'),m=g.find(".trigger"),p=g.find(".options"),(d=h.prop("disabled"))&&g.addClass("disabled"),_=function(){var a;return a=c.triggerTemplate(h.find(":selected")),m.html(a)},h.on("blur.fs",(function(){if(m.hasClass("open"))return setTimeout((function(){return m.trigger("close.fs")}),120)})),m.on("close.fs",(function(){return m.removeClass("open"),p.removeClass("open")})),m.on("click.fs",(function(){var s;if(!d)if(m.toggleClass("open"),l&&!c.forceiOS){if(m.hasClass("open"))return h.focus()}else if(m.hasClass("open")&&((s=m.parent()).offsetParent(),s.offset().top+s.outerHeight()+p.outerHeight()+20>a(window).height()+a(window).scrollTop()?p.addClass("overflowing"):p.removeClass("overflowing")),p.toggleClass("open"),!l)return h.focus()})),h.on("enable",(function(){return h.prop("disabled",!1),g.removeClass("disabled"),d=!1,s()})),h.on("disable",(function(){return h.prop("disabled",!0),g.addClass("disabled"),d=!0}
1)),h.on("change.fs",(function(a){return a.originalEvent&&a.originalEvent.isTrusted?a.stopPropagation():_()})),h.on("keydown",(function(a){var s,l,c;if(c=a.which,(s=p.find(".hover")).removeClass("hover"),p.hasClass("open")){if(38===c?(a.preventDefault(),s.length&&s.index()>0?s.prev().addClass("hover"):p.find("li:last-child").addClass("hover")):40===c?(a.preventDefault(),s.length&&s.index()<p.find("li").length-1?s.next().addClass("hover"):p.find("li:first-child").addClass("hover")):27===c?(a.preventDefault(),m.trigger("click.fs")):13===c||32===c?(a.preventDefault(),s.trigger("click.fs")):9===c&&m.hasClass("open")&&m.trigger("close.fs"),(l=p.find(".hover")).length)return p.scrollTop(0),p.scrollTop(l.position().top-12)}else if(13===c||32===c||38===c||40===c)return a.preventDefault(),m.trigger("click.fs")})),p.on("click.fs","li",(function(s){var c;if(!(c=a(this)).is(".fs-disabled"))return h.val(c.data("raw-value")),l||h.trigger("blur.fs").trigger("focus.fs"),p.find(".selected").removeClass("selected"),c.addClass("selected"),m.addClass("selected"),h.val(c.data("raw-value")).trigger("change.fs").trigger("blur.fs").trigger("focus.fs")})),p.on("mouseenter.fs","li",(function(){var s;return s=a(this),p.find(".hover").removeClass("hover"),s.addClass("hover")})),p.on("mouseleave.fs","li",(function(){return p.find(".hover").removeClass("hover")})),s=function(){if(_(),!l||c.forceiOS)return h.find("option").each((function(s,l){var d;if(!(l=a(l)).prop("disabled")&&(l.val()||c.includeBlank))return d=c.optionTemplate(l),l.prop("selected")?p.append('<li data-raw-value="'+l.val()+'" class="selected">'+d+"</li>"):l.is(".disabled")?p.append('<li class="fs-disabled" data-raw-value="'+l.val()+'">'+d+"</li>"):p.append('<li data-raw-value="'+l.val()+'">'+d+"</li>")}))},h.on("update.fs",(function(){return g.find(".options").empty(),s()})),s()}))}}(jQuery),function(a){"use strict";var s='[data-toggle="dropdown"]',Dropdown=function(s){a(s).on("click.bs.dropdown",this.toggle)};function getParent(s){var l=s.attr("data-target");l||(l=(l=s.attr("href"))&&/#[A-Za-z]/.test(l)&&l.replace(/.*(?=#[^\s]*$)/,""));var c=l&&a(l);return c&&c.length?c:s.parent()}function clearMenus(l){l&&3===l.which||(a(".dropdown-backdrop").remove(),a(s).each((function(){var s=a(this),c=getParent(s),d={relatedTarget:this};c.hasClass("open")&&(l&&"click"==l.type&&/input|textarea/i.test(l.target.tagName)&&a.contains(c[0],l.target)||(c.trigger(l=a.Event("hide.bs.dropdown",d)),l.isDefaultPrevented()||(s.attr("aria-expanded","false"),c.removeClass("open").trigger(a.Event("hidden.bs.dropdown",d)))))})))}Dropdown.VERSION="3.3.6",Dropdown.prototype.toggle=function(s){var l=a(this);if(!l.is(".disabled, :disabled")){var c=getParent(l),d=c.hasClass("open");if(clearMenus(),!d){"ontouchstart"in document.documentElement&&!c.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",clearMenus);var p={relatedTarget:this};if(c.trigger(s=a.Event("show.bs.dropdown",p)),s.isDefaultPrevented())return;l.trigger("focus").attr("aria-expanded","true"),c.toggleClass("open").trigger(a.Event("shown.bs.dropdown",p))}return!1}},Dropdown.prototype.keydown=function(l){if(/(38|40|27|32)/.test(l.which)&&!/input|textarea/i.test(l.target.tagName)){var c=a(this);if(l.preventDefault(),l.stopPropagation(),!c.is(".disabled, :disabled")){var d=getParent(c),p=d.hasClass("open");if(!p&&27!=l.which||p&&27==l.which)return 27==l.which&&d.find(s).trigger("focus"),c.trigger("click");var h=d.find(".dropdown-menu li:not(.disabled):visible a");if(h.length){var m=h.index(l.target);38==l.which&&m>0&&m--,40==l.which&&m<h.length-1&&m++,~m||(m=0),h.eq(m).trigger("focus")}}}};var l=a.fn.dropdown;a.fn.dropdown=function Plugin(s){return this.each((function(){var l=a(this),c=l.data("bs.dropdown");c||l.data("bs.dropdown",c=new Dropdown(this)),"string"==typeof s&&c[s].call(l)}))},a.fn.dropdown.Constructor=Dropdown,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=l,this},a(document).on("click.bs.dropdown.data-api",clearMenus).on("click.bs.dropdown.data-api",".dropdown form",(function(a){a.stopPropagation()})).on("click.bs.dropdown.data-api",s,Dropdown.prototype.toggle).on("keydown.bs.dropdown.data-api",s,Dropdown.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",Dropdown.prototype.keydown)}(jQuery),app_shop.graphql||(app_shop.graphql={}),app_shop.graphql.login=async(a,s)=>{const l=JSON.stringify({query:`\n mutation {\n login(login: "${a}", password: "${s}") {\n status\n }\n }\n `});try{const a=await fetch(app_shop.urls.graphql,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:l});return await a.json()}catch(a){return console.error("GraphQL fetchDataShipping() Error:",a),!1}},app_shop.run((()=>{iaiGet.snippets((a=>{const{Snippets:{response:{items:s={}}={}}={}}=a||{};
1s&&Object.values(s).forEach((a=>{const{region:s,content:l}=a||{};if(!s||!l)return;const c=document.createElement("div");c.innerHTML=l;const d=[...c.childNodes];switch(s){case"head":d.forEach((a=>{if("SCRIPT"===a.tagName){const s=document.createElement("script");s.text=a.innerHTML,document.head.append(s)}else document.head.append(a)}));break;case"body_top":d.forEach((a=>{if("SCRIPT"===a.tagName){const s=document.createElement("script");s.text=a.innerHTML,document.body?.prepend(s)}else document.body?.prepend(a)}));break;default:d.forEach((a=>{if("SCRIPT"===a.tagName){const s=document.createElement("script");s.text=a.innerHTML,document.body?.append(s)}else document.body?.append(a)}))}}))}),{mobile:1===app_shop.vars.view,tablet:2===app_shop.vars.view,pc:app_shop.vars.view>2,request_uri:app_shop.vars.request_uri,additional_ajax:app_shop.vars.additional_ajax}),iaiGet.toplayersAndWidgets((a=>{const{ToplayersAndWidgets:{response:{items:s={}}={}}={}}=a||{};s&&Object.entries(s).forEach((([a,s])=>{if("script"===a){const a=document.createElement("script");return a.text=s,void document.body?.append(a)}const{content:l}=s||{};if(!l)return;const c=document.createElement("div");c.innerHTML=l;const d=[...c.getElementsByTagName("script")];d.forEach((a=>a.remove())),document.body?.append(...c.childNodes),d.forEach((a=>{const s=document.createElement("script");a.src?s.src=a.src:s.textContent=a.textContent,document.body?.append(s)}))}))}),{mobile:1===app_shop.vars.view,tablet:2===app_shop.vars.view,pc:app_shop.vars.view>2,request_uri:app_shop.vars.request_uri,additional_ajax:app_shop.vars.additional_ajax})}),"all","body"),app_shop.run((function(){app_shop.vars.cache_html?app_shop.fn.menuBasketCache(!0):app_shop.fn.menuBasketCache(!1),$(".topBasket__price").removeAttr("style")}),"all","body"),app_shop.run((function(){"undefined"!=typeof Modal&&Modal({element:document.getElementById("menu_notice")})}),"all","#menu_notice"),app_shop.run((function(){var triggerDialogShow=function(elem,triggerType){switch(triggerType){case"auto":$(elem.attr("data-dialog-content")).dialog({wrappContent:!0,beforeShow:eval(elem.attr("data-dialog-beforeShow"))()});break;case"click":elem.on("click",(function(){$(elem.attr("data-dialog-content")).dialog({wrappContent:!0,beforeShow:eval(elem.attr("data-dialog-beforeShow"))($(this))})}))}};$("[data-dialog-start]").each((function(){var a=$(this),s=a.attr("data-dialog-start");s.indexOf("|")>-1?$.each(s.split("|"),(function(s,l){triggerDialogShow(a,l)})):triggerDialogShow(a,s)}))}),"all","body"),app_shop.run((function(){app_shop.fn.setMobileClass()}),1,"body",!0),app_shop.run((function(){app_shop.fn.setTabletClass()}),2,"body",!0),app_shop.run((function(){$("[data-tablet-class]").each((function(){$(this).removeClass($(this).attr("data-tablet-class"))})),$("[data-mobile-class]").each((function(){$(this).removeClass($(this).attr("data-mobile-class"))})),$("html").removeClass("_mobile")}),[3,4],"body",!0),app_shop.run((function(){$("img.b-lazy").parents("a").addClass("loading"),app_shop.vars.bLazy=new Blazy({breakpoints:[{width:420,src:"data-src-small"}],success:function(a){$(a).parents(".loading").removeClass("loading"),$("#main_banner1 .main_slider.slick-slider").length&&($("#main_banner1 .main_slider").find(".slick-slide").height("auto"),$("#main_banner1 .main_slider").slick("setOption","","",!0))}}),$(".form-group .form-control, .f-group .f-control").on("change input focus blur",app_shop.fn.addFocused),setTimeout((()=>{$(".form-group .form-control, .f-group .f-control").each(app_shop.fn.addFocused)}),500),$(".f-group.--file .f-control").on("change",(function(){var a=$(this),s=a.siblings(".f-label");a.val().length?(s.addClass("--file"),s.attr("data-label")||s.attr("data-label",s.text()),s.text(a.val())):(s.removeClass("--file"),s.text(s.attr("data-label")))})),$(".drop_down_label").append(" <span>"),$(".drop_down_list > .active").each((function(){$(this).parents(".drop_down_wrapper").find(".drop_down_label span").html($(this).html())})),$(document).on("click touchstart",".drop_down_label",(function(){$(this).toggleClass("open_list"),$(this).next(".drop_down_list").slideToggle()})),$(document).on("click",".drop_down_list > *",(function(){$(this).parents(".drop_down_wrapper").find(".drop_down_label span").text($(this).text()),$(this).parents(".drop_down_wrapper").find(".drop_down_label").removeClass("open_list"),$(this).parents(".drop_down_list").slideUp()})),$("table.ui-responsive").each((function(){var a;a=$(this).find("thead th").length?$.map($(this).find("thead tr th"),(function(a,s){return $(a).text()})):$.map($(this).find("thead tr td"),(function(a,s){return $(a).text()})),$(this).find("tbody tr").each((function(){$(this).find("td:first").replaceWith((function(s,l){return a[0]?$("<th/>").html('<b class="ui-table-cell-label">'+a[0]+"</b>"+l):$("<th/>").html(l)}))})),$(this).find("tbody tr").each((function(){$(this).find("td").each((function(s){a[s+1]&&$(this).prepend('<b class="ui-table-cell-label">'+a[s+1]+"</b>")}))}))})),$(".align_row").iai_align(),$("body").append($("#alert_cover")),$("body").backTop({txt:'<i class="icon-up"></i>'});
1let a=window.visualViewport?.01*window.visualViewport.height:.01*window.innerHeight;document.documentElement.style.setProperty("--vh",`${a}px`),window.visualViewport?window.visualViewport.addEventListener("resize",(function(){a=.01*window.visualViewport.height,document.documentElement.style.setProperty("--vh",`${a}px`)})):window.addEventListener("resize",(()=>{a=.01*window.innerHeight,document.documentElement.style.setProperty("--vh",`${a}px`)}))}),"all","body"),app_shop.run((()=>{const a=document.querySelector('a[href="#changeCookie"]');a?.addEventListener("click",(a=>{a.preventDefault(),"function"==typeof prepareCookiesConfiguration&&prepareCookiesConfiguration()}))}),"all",'a[href="#changeCookie"]'),app_shop.run((function(){app_shop.fn.initDropdown()}),"all",".dropdown"),app_shop.run((function(){$("#menu_notice").dialog({wrappContent:"true"})}),"all",".menu_preolader_1"),app_shop.run((function(){$("a.orderdetails_info_cancel").removeAttr("onclick"),$("a.orderdetails_info_cancel").click((function(){return thisHref=$(this).attr("href"),$("#menu_notice > strong").html(txt_orderdetails_info_message),$("#menu_notice").dialog({wrappContent:"true"}),$("#menu_notice button.prepaid_confirm").click((function(){self.location.href=thisHref})),!1}))}),"all",".menu_preolader_2"),app_shop.run((function(){app_shop.fn.dropdown($(".s_paging__select"),"s_setting__",(function(a){app_shop.fn.clickDropdown(a,!0)}))}),"all",".s_paging"),app_shop.run((function(){$(document).on("change","input[type=file]",(function(){if(!(window.File&&window.FileReader&&window.FileList&&window.Blob))return!1;const a=this.files[0],{name:s,size:l,type:c}=a||{},[d]=s.split(".").reverse(),p=$(this).data("max_filesize"),h=p&&l<=Number(p),m=app_shop.vars.blacklist_mime&&app_shop.vars.blacklist_mime.includes(c),_=app_shop.vars.blacklist_extension&&app_shop.vars.blacklist_extension.includes(d);let g="";if(m||_&&window.Literals.alerts.fileType)g=window.Literals.alerts.fileType.format(s);else if(!h&&window.Literals.alerts.fileWeight&&p)g=window.Literals.alerts.fileWeight.format(s,(p/1048576).toFixed(2));else if("opinion_photo"===$(this).attr("name"))if("jpg"!==d&&window.Literals.alerts.acceptablePhotoFormats)g=window.Literals.alerts.acceptablePhotoFormats;else if(window.Literals.alerts.maxPhotoWeight){const s=2048,l=1536;app_shop.fn.loadImageFromInput(a).then((a=>{const{width:c,height:d}=a;(c>s||d>l)&&(g=window.Literals.alerts.maxPhotoWeight.format(`${s}x${l}`),$(this).val(""),Alertek.Start(g))})).catch((a=>console.error(a)))}return g?($(this).val(""),Alertek.Start(g),!1):void 0}))}),"all","input[type=file]",!0),app_shop.run((function(){app_shop.fn.appendAffiliateToURL()}),"all","body",!0),dataLayers.fn={impressionsArrayBuffor:[],productsInitialQuantities:{},intervalActive:!1,currency:app_shop.vars.id,productsWithDetails:[],calculateItemsValue:function(a,s){const l=a.reduce(((a,l)=>a+("points"===s?l.price_points:l.price)*l.quantity),0);return parseFloat(l.toFixed(2))},pushData:function(a,s="init"){let l;switch(s){case"init":dataLayers.global&&(l={pageType:dataLayers.global.pageType,userLogged:dataLayers.global.logged,userId:dataLayers.global.id});break;case"view_promotion":l={event:"view_promotion",ecommerce:{promotion_id:a.id,promotion_name:a.name,creative_name:a.creative,creative_slot:a.position}};break;case"select_promotion":l={event:"select_promotion",ecommerce:{promotion_id:a.id,promotion_name:a.name,creative_name:a.creative,creative_slot:a.position}};break;case"view_item_list":l={event:"view_item_list",ecommerce:{currency:this.currency,items:a}};break;case"select_item":l={event:"select_item",ecommerce:{currency:this.currency,items:a}};break;case"view_item":l={event:"view_item",ecommerce:{currency:this.currency,items:a}};break;case"add_to_wishlist":l={event:"add_to_wishlist",ecommerce:{items:a}};break;case"add_to_cart":l={event:"add_to_cart",ecommerce:{currency:this.currency,value:this.calculateItemsValue(a,"money"),value_points:this.calculateItemsValue(a,"points"),items:a}};break;case"remove_from_cart":l={event:"remove_from_cart",ecommerce:{currency:this.currency,value:this.calculateItemsValue(a,"money"),value_points:this.calculateItemsValue(a,"points"),items:a}};break;case"view_cart":l={event:"view_cart",ecommerce:{currency:this.currency,value:dataLayers.order.basketGrossValue,value_points:dataLayers.order.basketPointsUsedValue,coupon:dataLayers.order.coupon,items:a}};break;case"begin_checkout":l={event:"begin_checkout",ecommerce:{currency:this.currency,value:dataLayers.order.basketGrossValue,value_points:dataLayers.order.basketPointsUsedValue,coupon:dataLayers.order.coupon,items:a}};break;case"add_payment_info":l={event:"add_payment_info",ecommerce:{currency:this.currency,value:dataLayers.order.basketGrossValue,value_points:dataLayers.order.basketPointsUsedValue,coupon:dataLayers.order.coupon,payment_type:a.payment_type,items:a.items}};break;case"add_shipping_info":l={event:"add_shipping_info",ecommerce:{currency:this.currency,value:dataLayers.order.basketGrossValue,value_points:dataLayers.order.basketPointsUsedValue,coupon:dataLayers.order.coupon,shipping_tier:a.shipping_tier,items:a.items}};break;case"purchase":l={event:"purchase",ecommerce:{currency:this.currency,value:dataLayers.prepaid.value,value_points:dataLayers.prepaid.value_points,transaction_id:dataLayers.prepaid.transaction_id,coupon:dataLayers.prepaid.coupon,shipping:dataLayers.prepaid.shipping,shipping_tier:dataLayers.prepaid.deliveryMethod,tax:dataLayers.prepaid.tax,items:a}};break;case"refund":l={event:"refund",ecommerce:{currency:this.currency,...a}};break;case"custom_form_submit":l={event:"custom_form_submit",form_id:a.form_id};break;case"custom_form_error":l={event:"custom_form_error",form_id:a.form_id,error_message:a.error_message}}window.dataLayer=window.dataLayer||[],l&&l.event&&l.ecommerce&&window.dataLayer.push({ecommerce:null}),window.dataLayer.push(l)},periodicDataSend:function(){setInterval((function(){if(dataLayers.fn.impressionsArrayBuffor.length){const a=[...dataLayers.fn.impressionsArrayBuffor];dataLayers.fn.impressionsArrayBuffor.length=0,dataLayers.fn.pushData(a,"view_item_list")}}),3e3)},evViewItemList:function(a=".product[data-product_id]",s){callback=a=>{a.forEach((a=>
1{if(s?a:a.isIntersecting){let s=a.target.dataset;impressionData={item_id:s.product_id,item_name:s.product_name,item_brand:s.product_brand||"",index:s.product_position,item_category:s.product_category||"",item_category2:s.product_category2||"",item_category3:s.product_category3||"",item_category4:s.product_category4||"",item_list_name:s.item_list_name||s.list||"",item_variant:s.product_variant||"",item_availability:s.product_availability||"",price:s.product_price_points?0:s.product_price,points_cost:s.product_price_points?s.product_price_points:0,purchase_type:s.product_price_points?"loyalty_points":"cash",promotion_name:$.cookie("bannerClicked")||""},dataLayers.fn.impressionsArrayBuffor.push(impressionData),a.target.classList.add("seen"),c.unobserve(a.target),dataLayers.fn.intervalActive||(dataLayers.fn.intervalActive=!0,dataLayers.fn.periodicDataSend())}}))};let l=document.querySelectorAll(`${a}:not(.seen):not(.obs)`),c=new IntersectionObserver(callback,options={root:null,rootMargin:"0px",threshold:.9});l.forEach((a=>{a.classList.add("obs"),c.observe(a)}))},evViewCart:function(a=".basket__block:not(.--labels)"){const s=[];let l=[];null!==sessionStorage.getItem("checkoutProductsMissingDetails")&&(l=JSON.parse(sessionStorage.getItem("checkoutProductsMissingDetails"))),$(a).each((function(){let a=$(this).data();const c=l[a.product_id];let d={item_id:a.product_id,item_name:a.product_name,item_brand:a.product_brand||c?.item_brand||"",item_category:c?.item_category||"",item_category2:c?.item_category2||"",item_category3:c?.item_category3||"",item_category4:c?.item_category4||"",item_list_name:c?.item_list_name||"",item_variant:a.product_variant||"",item_availability:a.product_availability||"",price:a.product_price_points?0:a.product_price,quantity:a.product_quantity,points_cost:a.product_price_points?a.product_price_points:0,purchase_type:a.product_price_points?"loyalty_points":"cash",promotion_name:c?.promotion_name||""};s.push(d)})),dataLayers.fn.pushData(s,"view_cart")},getCheckoutProductsWithDetails:function(a,s){const l=[];return!a.length||s.length||a.forEach((function(a){const c=s[a.id];let d={item_id:a.id,item_name:a.data.name,item_brand:c?.item_brand||"",item_category:c?.item_category||"",item_category2:c?.item_category2||"",item_category3:c?.item_category3||"",item_category4:c?.item_category4||"",item_list_name:c?.item_list_name||"",item_variant:a.data.versionName||"",item_availability:a.data.availability||"",price:a.forPoints?0:a.worth.gross.value,quantity:a.quantity,points_cost:a.forPoints?a.worthPoints.value:0,purchase_type:a.forPoints?"loyalty_points":"cash",promotion_name:c?.promotion_name||""};l.push(d)})),l},evBeginCheckout:function(){const a=app_shop.fn.copModulesProducts.vars.products||[];let s=[];null!=sessionStorage.getItem("checkoutProductsMissingDetails")&&(s=JSON.parse(sessionStorage.getItem("checkoutProductsMissingDetails"))),this.productsWithDetails=this.getCheckoutProductsWithDetails(a,s)||[],dataLayers.fn.pushData(this.productsWithDetails,"begin_checkout")},evCompleteCheckout:function(a=".cop_buttons__button"){$(document).on("click",a,(function(){const a=dataLayers.fn.productsWithDetails,s=$(".cop_payments__item.--checked .cop_payments__name").text().trim(),l=$(".cop_deliveries__item.--checked .cop_delivery__name").text().trim();s&&dataLayers.fn.pushData({items:a,payment_type:s},"add_payment_info"),l&&dataLayers.fn.pushData({items:a,shipping_tier:l},"add_shipping_info")}))},evBannerView:function(a,s,l,c){if(!a||!s||!l||void 0===c)throw new Error("Missing required parameters for evBannerView event");const d={id:a,name:s,creative:l,position:c};dataLayers.fn.pushData(d,"view_promotion")},evBannerClick:function(a){$(document).on("click",a,(function(s){if(s.target.closest(".slick-arrow")||s.target.closest(".slick-dots"))return;const l=a,c=s.target.closest("[data-banner-id]")?.dataset.bannerId,d=s.target.closest("[data-banner-name]")?.dataset.bannerName,p=s.target.closest("[data-banner-position]")?.dataset.bannerPosition;if(!(c&&d&&l&&p))return void console.error("Missing required parameters for evBannerClick event");const h={id:c,name:d,creative:l,position:p};dataLayers.fn.pushData(h,"select_promotion")}))},evAddSelectItemTrigger:function(a=".product a:not(.wishlist__link)"){$(document).on("click",a,(function(a){let s=a.currentTarget.closest(".product");
1if(!s)return;let l=[{item_id:s.dataset.product_id,item_name:s.dataset.product_name,index:s.dataset.product_position,item_brand:s.dataset.product_brand||"",item_category:s.dataset.product_category||"",item_category2:s.dataset.product_category2||"",item_category3:s.dataset.product_category3||"",item_category4:s.dataset.product_category4||"",item_list_name:s.dataset.item_list_name||s.dataset.list||"",item_variant:s.dataset.product_variant||"",item_availability:s.dataset.product_availability,price:s.dataset.product_price,promotion_name:$.cookie("bannerClicked")||""}];dataLayers.fn.pushData(l,"select_item")}))},evViewItem:function(a="#projector_form"){let s=$(a).data(),l=[{item_id:s.product_id,item_name:s.product_name,index:s.product_position,item_brand:s.product_brand||"",item_category:s.product_category||"",item_category2:s.product_category2||"",item_category3:s.product_category3||"",item_category4:s.product_category4||"",item_list_name:s.item_list_name||s.list||"",item_variant:s.product_variant||"",item_availability:s.product_availability,price:s.product_price,promotion_name:$.cookie("bannerClicked")||""}];dataLayers.fn.pushData(l,"view_item")},evAddToWishlist:function(a){const s=[{item_id:a}];dataLayers.fn.pushData(s,"add_to_wishlist")},evAddToCart:function(a,s="icon_callback"){const getQuantity=(a,s)=>({icon_callback:1,projector_callback:parseInt($("#projector_number").val()),basketedit_quantity_update_callback:s.quantity}[a]||s.quantity||1);let l=[];var c;c=a,(Array.isArray(c)?c:[c]).forEach((a=>{const c={item_id:a.product_id,item_name:a.product_name,item_brand:a.product_brand||"",item_category:a.product_category||"",item_category2:a.product_category2||"",item_category3:a.product_category3||"",item_category4:a.product_category4||"",item_list_name:a.product_list_name||a.list||"",item_variant:a.product_variant||"",item_availability:a.product_availability||"",price:parseFloat(a.product_price)||0,price_points:parseFloat(a.price_points)||0,quantity:getQuantity(s,a),promotion_name:$.cookie("bannerClicked")||""};if(l.push(c),"basketedit_quantity_update_callback"===s)return;let d={};const p=sessionStorage.getItem("checkoutProductsMissingDetails");null!==p&&(d=JSON.parse(p)),d[`${c.item_id}`]={item_brand:c.item_brand,item_category:c.item_category,item_category2:c.item_category2,item_category3:c.item_category3,item_category4:c.item_category4,item_list_name:c.item_list_name,item_variant:c.item_variant,promotion_name:c.promotion_name},d=JSON.stringify(d),sessionStorage.setItem("checkoutProductsMissingDetails",d)})),dataLayers.fn.pushData(l,"add_to_cart")},evRemoveFromCart:function(a,s="basketedit_trash_icon"){let l=[];var c;c=a,(Array.isArray(c)?c:[c]).forEach((a=>{const c={item_id:a.product_id,item_name:a.product_name,item_brand:a.product_brand||"",item_category:a.product_category||"",item_category2:a.product_category2||"",item_category3:a.product_category3||"",item_category4:a.product_category4||"",item_list_name:a.product_list_name||a.list||"",item_variant:a.product_variant||"",item_availability:a.product_availability||"",price:parseFloat(a.product_price)||0,price_points:parseFloat(a.price_points)||0,quantity:a.quantity,promotion_name:$.cookie("bannerClicked")||""};if(l.push(c),"basketedit_quantity_update_callback"===s)return;let d={};const p=sessionStorage.getItem("checkoutProductsMissingDetails");null!==p&&(d=JSON.parse(p));const h=`${c.item_id}`;Object.prototype.hasOwnProperty.call(d,h)&&(delete d[h],sessionStorage.setItem("checkoutProductsMissingDetails",JSON.stringify(d)))})),dataLayers.fn.pushData(l,"remove_from_cart")},handlePurchaseEvent:function(){try{const a=dataLayers.prepaid.products||[];let s=[];null!==sessionStorage.getItem("checkoutProductsMissingDetails")&&(s=JSON.parse(sessionStorage.getItem("checkoutProductsMissingDetails"))),this.productsWithDetails=this.getCheckoutProductsWithDetails(a,s)||[];const l=dataLayers.orderCosts.brutto,c=dataLayers.orderCosts.netto,d=(parseFloat(l)-parseFloat(c)).toFixed(2);dataLayers.prepaid.tax=d,dataLayers.refundDetails.tax=d;const p=document.querySelector("#prepaid_delivery_list .ordered__name").textContent.trim();dataLayers.prepaid.deliveryMethod=p||"",dataLayers.fn.pushData(this.productsWithDetails,"purchase"),sessionStorage.removeItem("checkoutProductsMissingDetails")}catch(a){console.error(`DataLayers Error [fn:evPurchase]: ${a}`)}},evPurchase:function(){"undefined"==typeof orderComplete?window.addEventListener("purchase-event",(()=>{dataLayers.fn.handlePurchaseEvent()})):dataLayers.fn.handlePurchaseEvent()},evRefundOrder:function(){const a=dataLayers?.refundDetails;if(void 0===a)return!1;const s=document.querySelector(".prepaid_buttons__button.--cancel");
1if(!s)return console.error("evRefundOrder: orderCancelBtn not found!"),!1;s.addEventListener("click",(function(s){sessionStorage.setItem("refundDetails",JSON.stringify(a))}))},evFormSubmit:function(a){const s={form_id:a};dataLayers.fn.pushData(s,"custom_form_submit")},evFormError:function(a,s){const l={form_id:a,error_message:s};dataLayers.fn.pushData(l,"custom_form_error")},initDataLayers:function(){try{dataLayers.fn.pushData(),dataLayers.fn.evAddSelectItemTrigger(),dataLayers.fn.evBannerClick("#menu-top");switch(dataLayers.global.pageType){case"home":case"main":dataLayers.fn.evBannerClick("#main_banner1");break;case"product":case"projector":dataLayers.fn.evBannerClick(".headerBanner");break;case"search":dataLayers.fn.evViewItemList(".product[data-product_id]",!1),dataLayers.fn.evBannerClick(".headerBanner");break;case"basketedit":dataLayers.fn.evViewCart();break;case"place-order":default:break;case"prepaid":dataLayers.fn.evPurchase(),dataLayers.fn.evRefundOrder()}}catch(a){console.error(`DataLayers Error: ${a}`)}}},app_shop.run((function initDataLayers(){dataLayers.fn.initDataLayers()}),"all","body"),app_shop.run((function initDataLayersReturnPageEvents(){const a=sessionStorage.getItem("refundDetails");if(a){const s=JSON.parse(a);dataLayers.fn.pushData(s,"refund"),sessionStorage.removeItem("refundDetails")}}),"all","#return_sub_ordercancel_ok"),app_shop.run((function ProductContextCapture(){$("body").on("click","#search .product, .hotspot .product, .dailyPromotionHotspot .product, .qONjs .product, .search_result__item",(function(){const a=$(this).data("list");a&&sessionStorage.setItem("hotspot_list",a);const s=$(this).data("product_variant");s&&sessionStorage.setItem("product_variant",s)}))}),"all","body");let HOTSPOT_LIST="",PRODUCT_VARIANT="";app_shop.run((function ProductContextRestore(){null!==sessionStorage.getItem("hotspot_list")&&(HOTSPOT_LIST=sessionStorage.getItem("hotspot_list"),sessionStorage.removeItem("hotspot_list"),HOTSPOT_LIST+="-projector",$("#projector_form").attr("data-list",HOTSPOT_LIST)),null!==sessionStorage.getItem("product_variant")&&(PRODUCT_VARIANT=sessionStorage.getItem("product_variant"),sessionStorage.removeItem("product_variant"),PRODUCT_VARIANT+="-projector",$("#projector_form").attr("data-product_variant",PRODUCT_VARIANT))}),"all","#projector_form"),app_shop.run((function(){""!==HOTSPOT_LIST&&$("#projector_form").attr("data-list",HOTSPOT_LIST),""!==PRODUCT_VARIANT&&$("#projector_form").attr("data-product_variant",PRODUCT_VARIANT),dataLayers?.fn?.evViewItem?.()}),"all","#projector_form",!0),app_shop.vars.noindexLinkParts=["filter_producer=","filter_traits","filter_instock=","filter_pricerangenet=","filter_","text=","signin.php","blogbydate","bloglist","?selected_size=onesize","?query_id=","?lang=","?recommender_box_placement=","?rec=","?filter_","?service_category_id=","?comparers=","basketchange.php","basketedit.php","client-new.php","noproduct.php","product-stocks.php","product-compare.php","recommender_box=","blogbydate-","blog/2022","blog/2021","tra-pol-","/forpoints"],app_shop.fn.disableIndexingForSelectedLinkParts=a=>{const s=location.href;if(a.some((a=>s.includes(a)))){document.querySelectorAll('meta[name="robots"]:not([data-noedit])').forEach((a=>{a.setAttribute("content","noindex,follow")}))}},app_shop.run((function(){app_shop.fn.disableIndexingForSelectedLinkParts(app_shop.vars.noindexLinkParts)}),"all","body");class LoyaltyPartnerCampaignsService{apiUrl="https://s7.cosibella.pl/api/loyalty-program/partner-campaigns";async parseJsonResponse(a){let s=null;try{s=await a.json()}catch{}if(!a.ok)throw new Error(s?.message||`HTTP ${a.status}: ${a.statusText}`);return s}async fetchCampaigns(a){const s=new URLSearchParams({idosellStoreId:a}),l=await LOYALTY_PROGRAM_SERVICE.getAuthHeaders({Accept:"application/json"}),c=await LOYALTY_PROGRAM_SERVICE.fetchWithAuthRetry(`${this.apiUrl}?${s.toString()}`,{headers:l});return this.parseJsonResponse(c)}async redeemCampaign(a){const s=await LOYALTY_PROGRAM_SERVICE.getAuthHeaders({Accept:"application/json"}),l=await LOYALTY_PROGRAM_SERVICE.fetchWithAuthRetry(`${this.apiUrl}/${a}/redeem`,{method:"POST",headers:s});return this.parseJsonResponse(l)}}const LOYALTY_PARTNER_CAMPAIGNS_SERVICE=new LoyaltyPartnerCampaignsService;class LoyaltyProgramService{apiUrl="https://s7.cosibella.pl/api/loyalty-program";loyaltyDataCacheKeyPrefix="loyaltyData:";loyaltyDataCacheTtl=9e5;alwaysFreshPageTypes=new Set(["login","basketedit","client-rebates"]);shouldUseCacheForCurrentPage(a=[]){const s=dataLayers?.global?.pageType;return!this.alwaysFreshPageTypes.has(s)&&!a.includes(s)}async waitForClientSecurityToken(a=5e3,s=50){const l=Date.now()+a;for(;"string"!=typeof clientSecurityToken||!clientSecurityToken;){if(Date.now()>=l)return null;await new Promise((a=>setTimeout(a,s)))}return clientSecurityToken}async getAuthHeaders(a={}){const s=await this.waitForClientSecurityToken();return s||console.error("[Loyalty API] Missing clientSecurityToken."),{"x-client-token":s,...a}}extractClientSecurityTokenFromHtml(a){const s=a.match(/var\s+clientSecurityToken\s*=\s*['"]([^'"]*)['"]/);return s?s[1]:null}async refreshClientSecurityToken(){const a=await fetch(window.location.href,{credentials:"include"});if(!a.ok)throw new Error(`[Loyalty API] Failed to refresh clientSecurityToken: HTTP ${a.status}`);const s=await a.text(),l=this.extractClientSecurityTokenFromHtml(s);if(!l)throw new Error("[Loyalty API] Could not find clientSecurityToken in refreshed page HTML.");return window.clientSecurityToken=l,l}async fetchWithAuthRetry(a,{headers:s,...l}={}){const c=await fetch(a,{...l,headers:s});if(401!==c.status)return c;const{"x-client-token":d,...p}=s??{},h={"x-client-token":await this.refreshClientSecurityToken(),...p};return fetch(a,{...l,headers:h})}getLoyaltyDataCacheKey(a){return`${this.loyaltyDataCacheKeyPrefix}${a}`}storeLoyaltyDataInCache(a,s){if(!s?.acceptanceStatusUpdatedAt)return void this.clearCachedLoyaltyData(a);const l=this.getLoyaltyDataCacheKey(a),c={data:s,timestamp:Date.now()};try{localStorage.setItem(l,JSON.stringify(c))}catch(a){console.error("Failed to store loyalty data in localStorage:",a)}}clearCachedLoyaltyData(a){localStorage.removeItem(this.getLoyaltyDataCacheKey(a))}
1getCachedLoyaltyData(a){if(!a)return null;const s=this.getLoyaltyDataCacheKey(a);try{const a=localStorage.getItem(s);if(!a)return null;const l=JSON.parse(a),c=l?.timestamp&&Date.now()-l.timestamp<this.loyaltyDataCacheTtl;return l?.data&&c?l.data:null}catch(a){return console.warn("Failed to parse loyalty data from localStorage:",a),null}}async getLoyaltyData(a,{useCache:s=!0}={}){if(s){const s=this.getCachedLoyaltyData(a);if(s)return s}const l=await this.fetchClientLoyaltyDataFromApi(a);return l?(this.storeLoyaltyDataInCache(a,l),l):this.getCachedLoyaltyData(a)}async fetchClientLoyaltyDataFromApi(a){if(this.pendingLoyaltyDataFetches??=new Map,this.pendingLoyaltyDataFetches.has(a))return this.pendingLoyaltyDataFetches.get(a);const s=this.requestClientLoyaltyDataFromApi().finally((()=>{this.pendingLoyaltyDataFetches.delete(a)}));return this.pendingLoyaltyDataFetches.set(a,s),s}async requestClientLoyaltyDataFromApi(){const a=dataLayers?.global?.login,s=CURRENT_SHOP_ID;if(!a||!s)return console.error("[Loyalty API] Missing idosellLogin or idosellStoreId."),null;const l=new URLSearchParams({idosellLogin:a,idosellStoreId:s}),c=`${this.apiUrl}/client/me?${l.toString()}`;try{const a=await this.getAuthHeaders({Accept:"application/json"}),s=await this.fetchWithAuthRetry(c,{headers:a});if(!s.ok)throw new Error(`HTTP ${s.status}: ${s.statusText}`);const l=await s.json();if("number"!=typeof l?.points)throw new Error("[Loyalty API] Invalid loyalty payload: expected 'points' to be a number.");return l}catch(a){return"AbortError"===a.name?(console.error("[Loyalty API] Request was aborted."),null):(console.error("[Loyalty API] Failed to fetch client data:",a),null)}}async updateLoyaltyProgramTermsApi(a,s,l,c){const d=this.getCachedLoyaltyData(s);if(!0===a&&!0===d?.acceptanceStatus)throw new Error("[Loyalty API] Refusing to resend an agreements acceptance that matches the client's current status.");const p={status:a,idosellLogin:l,idosellStoreId:c},h=await this.waitForClientSecurityToken();if(!h)throw new Error("[Loyalty API] Refusing to send agreements update without a valid clientSecurityToken.");const m={"x-client-token":h,"Content-Type":"application/json"},_=await this.fetchWithAuthRetry(`${this.apiUrl}/client/agreements`,{method:"POST",headers:m,body:JSON.stringify(p)});if(!_.ok||200!==_.status)throw new Error(`HTTP error! status: ${_.status}`);return this.clearCachedLoyaltyData(s),_.json()}async fetchNumberOfPointsForAcceptance(a){const s=await fetch(`${this.apiUrl}/store/points?idosellStoreId=${a}`);if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return(await s.json()).numberOfPoints}async getNumberOfPointsForAcceptance(){if(!CURRENT_SHOP_ID)return void console.error("[Loyalty API] Shop ID not set!");const a=CURRENT_SHOP_ID;return new CustomCache("cache_loyalty_program_").getOrFetch("points-for-acceptance",(()=>this.fetchNumberOfPointsForAcceptance(a)),6e4)}async fetchSummaryPointsValue(a={}){const s=await this.getAuthHeaders({"Content-Type":"application/json"}),l=await this.fetchWithAuthRetry(`${this.apiUrl}/client/order-points-estimate`,{method:"POST",headers:s,body:JSON.stringify(a)});if(!l.ok||200!==l.status)throw new Error(`HTTP error! status: ${l.status}`);return l.json()}shouldHideSection(a,s){return!!a.getAttribute("data-hide-points-condition")&&(null===s||s<=0)}async reloadLoyaltyPointsSections(a){const s=document.querySelectorAll("[data-reload-points]");if(!s.length)return;const l=await this.getLoyaltyData(a,{useCache:this.shouldUseCacheForCurrentPage()}),c=l?.points??null;
1s.forEach((a=>{if(this.shouldHideSection(a,c))return void a.classList.add("hidden");const s=a.getAttribute("data-reload-points");if(!s)return;const l=a.querySelector(`#${s}`);l&&(l.textContent=null!==c?c:"0")}))}getLoyaltyClasses(){return new Map([["CosiFriend","loyalty-friend"],["CosiLover","loyalty-lover"],["CosiStar","loyalty-star"]])}}const LOYALTY_PROGRAM_SERVICE=new LoyaltyProgramService;app_shop.run((async function(){const a=dataLayers?.global?.id;a&&(await LOYALTY_PROGRAM_SERVICE.getLoyaltyData(a,{useCache:LOYALTY_PROGRAM_SERVICE.shouldUseCacheForCurrentPage()}),LOYALTY_PROGRAM_SERVICE.reloadLoyaltyPointsSections(a))}),"all","body");const POINTS_RECALCULATION_GRACE_PERIOD=12e4;class LoyaltyProgramTermsService{literals=window.Literals.loyaltyProgram;activeDialogClickListener=null;activeDialogClosingActionsListener=null;isPointsRecalculationGracePeriodOver(a){if(!a)return!0;const s=new Date(a).getTime();return!!Number.isNaN(s)||Date.now()-s>=POINTS_RECALCULATION_GRACE_PERIOD}getPointsRecalculationGracePeriodRemaining(a){if(this.isPointsRecalculationGracePeriodOver(a))return 0;const s=new Date(a).getTime();return Math.max(POINTS_RECALCULATION_GRACE_PERIOD-(Date.now()-s),0)}showAlert(a="info",s,l="",c){let d=`<h5>${s}</h5>`;l&&(d+=`<p>${l}</p>`),"success"===a?Alertek.Success(d,c):"error"===a?Alertek.Error(d,c):Alertek.Info(d,c)}subscribeToNewsletter(){const a=dataLayers.global.email;if(!a)return!1;const s="loyalty_newsletter_subscribe_frame",l=document.createElement("iframe");l.name=s,l.style.display="none",document.body.appendChild(l);const c=document.createElement("form");c.method="post",c.action="/settings.php",c.target=s,c.style.display="none";const d=document.createElement("input");d.name="mailing_action",d.value="add",c.appendChild(d);const p=document.createElement("input");return p.name="mailing_email",p.value=a,c.appendChild(p),document.body.appendChild(c),c.submit(),"function"==typeof makeRegister&&makeRegister(a,"loyalty-terms"),!0}async updateLoyaltyProgramTerms(a,s,l,c=!1){const d=dataLayers.global.id,p=dataLayers.global.login,h=CURRENT_SHOP_ID;if(d&&p&&h)try{const l=await LOYALTY_PROGRAM_SERVICE.updateLoyaltyProgramTermsApi(a,d,p,h),{loyaltyPointsSent:m}=l;let _="",g="",y="info",v=4e3;return a?(y="success",m?(_=this.literals.alertMessageAccepted,g=this.literals.alertDescriptionAcceptedAndPointsSent):(_=this.literals.alertMessageAccepted,g=this.literals.alertDescriptionAccepted)):s?(_=this.literals.alertMessageDeniedTitle,g=this.literals.alertMessageDeniedAndPointsRemoved,v=1e4):(_=this.literals.alertMessageDeniedTitle,g=this.literals.alertMessageDenied),this.showAlert(y,_,g,v),c&&this.subscribeToNewsletter(),app_shop.fn.reloadPage(v),!0}catch(a){throw this.showAlert("error",this.literals.termsError),new Error("[Loyalty API] Error updating loyalty program terms",{cause:a})}else console.error("[Loyalty API] updateLoyaltyProgramTerms missing params")}initDialog(a,s=null,l=!1,c=null,d=!0,p=!1,h=null,m="block",_=null){if(!a||"string"==typeof a&&!a.trim()||0===a.length)return void console.error("[Loyalty] Dialog tpl is empty");$("body").dialog({content:a,fixed:!1,fitToWindow:!1,animate:!0,width:375,background:"warning"===s?"#fff3cf":"var(--color-loyalty-friend)",wrapperClass:"dialog_wrapper_loyalty_program_terms",adaptiveHeight:!0,coverClosesDialog:!!d});let g=!1;const y=document.querySelector(".dialog_wrapper_loyalty_program_terms"),closeDialog=()=>{g=!0;const a=y?.querySelector("#dialog_close");a?.click()},addLoaderToDialog=()=>y?.classList.add("load-content"),scrollToDialog=()=>setTimeout((()=>y?.scrollIntoView({behavior:"smooth",block:"center"})),400);scrollToDialog();const v=y?.querySelector("#loyalty_program_terms_page_1"),b=y?.querySelector("#loyalty_program_terms_page_2"),toggleDialogPages=(a,s)=>{if(!a||!s)return void console.error("[Loyalty] toggleDialogPages don't have pages to toggle.");a.classList.toggle("hidden"),s.classList.toggle("hidden");const l=a.classList.contains("hidden");y.style.background=l?"#fff3cf":"var(--color-loyalty-friend)",scrollToDialog()};this.activeDialogClosingActionsListener&&(document.removeEventListener("click",this.activeDialogClosingActionsListener,!0),this.activeDialogClosingActionsListener=null),this.activeDialogClickListener&&(document.removeEventListener("click",this.activeDialogClickListener),this.activeDialogClickListener=null);const handleDialogClosingActions=()=>{this.activeDialogClosingActionsListener=async a=>{if(a.target.closest(".dialog_wrapper_loyalty_program_terms #dialog_close"))if(g)g=!1;else if(a.stopPropagation(),v?.classList.contains("hidden")){if("block"!==m)if("close"!==m){if("deny"===m)try{addLoaderToDialog(),await this.updateLoyaltyProgramTerms(!1,l,c)}catch(a){console.error("[Loyalty API] Error while denying terms on close: ",a.message)}finally{closeDialog()}}else closeDialog()}else toggleDialogPages(v,b)},document.addEventListener("click",this.activeDialogClosingActionsListener,!0)};this.activeDialogClickListener=async a=>{const s=a.target,d=s.closest("#loyalty_program_terms_accepted");if(d){const a=y?.querySelector("#loyalty_dialog_email_checkbox"),s=a?.checked??!1;try{d.disabled=!0,addLoaderToDialog(),await this.updateLoyaltyProgramTerms(!0,l,c,s)}catch(a){console.error("[Loyalty API] Error while accepting terms: ",a.message)}finally{closeDialog()}return}const p=s.closest(".dialog_wrapper_loyalty_program_terms #loyalty_program_terms_denied");if(p){if(!1===h&&null!==_)return void closeDialog();try{p.disabled=!0,addLoaderToDialog(),await this.updateLoyaltyProgramTerms(!1,l,c)}catch(a){console.error("Error while denying terms: ",a.message)}finally{closeDialog()}return}if(s.closest(".dialog_wrapper_loyalty_program_terms #loyalty_program_terms_close"))return void closeDialog();if(s.closest(".dialog_wrapper_loyalty_program_terms #loyalty_program_terms_back, .dialog_wrapper_loyalty_program_terms #loyalty_program_terms_non_accepted"))return void toggleDialogPages(v,b);const m=s.closest("#readMore");if(m){const a=y?.querySelectorAll("ul .d-none");a?.forEach((a=>a.classList.remove("d-none"))),m.remove();const s=y?.querySelector("#readMoreLanding");s?.classList.remove("d-none")}else;},document.addEventListener("click",this.activeDialogClickListener),p&&handleDialogClosingActions()}showAcceptanceDialog(a,s=null,l,c=null,d){const p=`\n <div id="loyalty_program_terms_page_1" class="loyalty_program_terms --page_1 d-flex flex-column align-items-center justify-content-center flex-wrap" data-analytics_region="loyalty join modal page1">\n <div class="loyalty_program_terms__image">\n <img src="/data/include/cms/CMS/program-lojalnosciowy/loyalty-program-2-hero-image.webp" alt="">\n <div class="loyalty_program_terms__image--logo">\n <i class="icon-cosiclub-filled"></i>\n </div>\n </div>\n <div class="loyalty_program_terms__content d-flex flex-column justify-content-between">\n <h3 class="font-6 font-700 uppercase">${this.literals.heroJoinCosiClub}!</h3>\n <p class="font-4">\n ${this.literals.heroCollectPoints}<br>\n ${this.literals.heroCollectPointsInitialBonus} <b>${l} ${this.literals.points}</b>\n </p>\n <div class="loyalty_program_terms__content_buttons d-flex flex-column">\n <button class="btn --solid --medium --secondary" id="loyalty_program_terms_accepted" data-analytics_title="join loyalty program">${this.literals.termsModalAcceptButton}</button>\n </div>\n <a class="font-2" href="${this.literals.termsLink}" target="_blank" data-analytics_title="go to loyalty terms">${this.literals.termsNote}</a>\n </div>\n </div>\n\n <div id="loyalty_program_terms_page_2" class="loyalty_program_terms --page_2 d-flex flex-column hidden" data-analytics_region="loyalty join modal page2">\n <div class="loyalty_program_terms__description d-flex flex-column">\n <i class="icon-info-custom --warning"></i>\n <h5 class="font-700">${this.literals.termsModalDenyTitle}</h5>\n </div>\n <div class="loyalty_program_terms__buttons d-flex flex-column">\n <button class="btn --solid --medium --secondary" id="loyalty_program_terms_back" data-analytics_title="back to page1">${this.literals.termsModalGetBackButton}</button>\n <button class="btn --solid --medium" id="loyalty_program_terms_denied" data-analytics_title="exit loyalty program">${this.literals.termsModalExitProgramButton}</button>\n </div>\n </div>\n `;this.initDialog(p,s,a,l,!0,!0,c,"deny",d)}showReturningAcceptanceDialog(a,s=null,l){const c=`\n <div id="loyalty_program_terms_page_1" class="loyalty_program_terms --page_1 d-flex flex-column align-items-center justify-content-center flex-wrap" data-analytics_region="loyalty returning modal page1">\n <div class="loyalty_program_terms__image">\n <img src="/data/include/cms/CMS/program-lojalnosciowy/loyalty-program-2-hero-image.webp" alt="">\n <div class="loyalty_program_terms__image--logo">\n <i class="icon-cosiclub-filled"></i>\n </div>\n </div>\n <div class="loyalty_program_terms__content d-flex flex-column justify-content-between">\n <h3 class="font-6 font-400 uppercase">\n ${this.literals.termsModalReturningTitle}\n </h3>\n <p class="font-3">\n ${this.literals.termsModalReturningDesc}\n </p>\n <p>${this.literals.termsModalReturningFaqTitle}</p>\n <ul class="ml-4">\n <li>${this.literals.termsModalReturningFaq1}</li>\n <li>${this.literals.termsModalReturningFaq2}</li>\n <li>${this.literals.termsModalReturningFaq3}</li>\n <li class="d-none">${this.literals.termsModalReturningFaq4}</li>\n <li class="d-none">${this.literals.termsModalReturningFaq5}</li>\n <li class="d-none">${this.literals.termsModalReturningFaq6}</li>\n <li class="d-none">${this.literals.termsModalReturningFaq7}</li>\n <li class="d-none">${this.literals.termsModalReturningFaq8}</li>\n </ul>\n\n <a id="readMoreLanding" class="ml-4 underline d-none" href="${this.literals.landingLink}" data-analytics_title="show more go to loyalty landing">${this.literals.seeMore}</a>\n <button type="button" id="readMore" class="underline text-left ml-4 p-0 cursor-pointer" data-analytics_title="show more">\n ${this.literals.seeMore}\n </button>\n\n ${a?`\n <sp
1an class="loyalty_program_terms__content_alert">\n <i class="icon-info-custom --black --small"></i>\n <b>${this.literals.important}</b><br>\n <b>${this.literals.termsModalWarningInfo1}</b><br>\n ${this.literals.termsModalWarningInfo2}\n </span>\n `:""}\n\n ${"0"===dataLayers.global.mailing?`\n <div>\n <div class="f-group --checkbox mb-1">\n <input type="checkbox" name="client_mailing" class="f-control --validate focused" id="loyalty_dialog_email_checkbox">\n <label class="f-label" for="loyalty_dialog_email_checkbox">${this.literals.inputLabelNewsletter}</label>\n </div>\n </div>\n `:""}\n\n <div class="loyalty_program_terms__content_buttons d-flex flex-column">\n <button class="btn --solid --medium --secondary" id="loyalty_program_terms_accepted" data-analytics_title="join loyalty program">${this.literals.termsModalAcceptButton}</button>\n <button class="btn --solid --medium" id="loyalty_program_terms_non_accepted" data-analytics_title="exit loyalty program">\n ${a?this.literals.termsModalDenyAndLosePointsButton:this.literals.termsModalDenyButton}\n </button>\n </div>\n <a class="font-2" href="${this.literals.termsLink}" target="_blank" data-analytics_title="go to loyalty terms">${this.literals.termsNote}</a>\n </div>\n </div>\n\n <div id="loyalty_program_terms_page_2" class="loyalty_program_terms --page_2 d-flex flex-column hidden" data-analytics_region="loyalty returning modal page2">\n <div class="loyalty_program_terms__description d-flex flex-column">\n <i class="icon-info-custom --warning"></i>\n <h5 class="font-700">${this.literals.termsModalWarningPageHeaderUserHavingPoints}</h5>\n <p class="font-600">${this.literals.termsModalWarningPageDescriptionUserHavingPoints}</p>\n <p class="font-700 text-error">${this.literals.termsModalWarningPageTypeWarningDescription2}</p>\n </div>\n <div class="loyalty_program_terms__buttons d-flex flex-column">\n <button class="btn --solid --medium --secondary" id="loyalty_program_terms_back" data-analytics_title="back to page1">${this.literals.termsModalGetBackButton}</button>\n <button class="btn --solid --medium" id="loyalty_program_terms_denied" data-analytics_title="exit loyalty program">${this.literals.termsModalRejectedButtonUserHavingPoints2}</button>\n </div>\n </div>\n `;this.initDialog(c,s,a,l,!1,!0,null,"close")}showExitProgramDialog(a){const s=`\n <div class="loyalty_program_terms --page_2 d-flex flex-column" data-analytics_region="loyalty exit modal">\n <div class="loyalty_program_terms__description d-flex flex-column">\n <i class="icon-info-custom --warning"></i>\n <h5 class="font-700">${this.literals.termsModalExitTitle}</h5>\n <p class="font-600">${this.literals.termsModalExitDescription} (${this.literals.currently} ${a} ${this.literals.pkt})</p>\n <p class="font-700 text-error">${this.literals.termsModalWarningPageTypeWarningDescription2}</p>\n </div>\n <div class="loyalty_program_terms__buttons d-flex flex-column">\n <button class="btn --solid --medium --secondary" id="loyalty_program_terms_close" data-analytics_title="close modal">${this.literals.termsModalStayButton}</button>\n <button class="btn --solid --medium" id="loyalty_program_terms_denied" data-analytics_title="exit loyalty program">${this.literals.termsModalRejectedButtonUserHavingPoints2}</button>\n </div>\n </div>\n `;this.initDialog(s,"warning")}setLoyaltyLevelBodyClass(a){if(!a)return;const s=document.getElementsByTagName("body");if(s)switch(a){case"CosiFriend":s[0]?.classList?.add("loyalty-friend");break;case"CosiLover":s[0]?.classList?.add("loyalty-lover");break;case"CosiStar":s[0]?.classList?.add("loyalty-star")}}removeSections(a){a&&a.forEach((a=>
1{document.querySelectorAll(a).forEach((a=>a.remove()))}))}setDisableClass(a){if(!a)return;a.forEach((a=>{document.querySelectorAll(a).forEach((a=>a.classList.add("--disabled-section")))}))}manageLoyaltySections(a){switch(a){case"new":default:break;case"not_registered":this.removeSections(["[data-loyalty-section-projector]","[data-loyalty-section-hero]","[data-loyalty-section-login-cosiclub]","[data-loyalty-section-login-affiliate]","[data-loyalty-section-login-referral]","[data-loyalty-section-login-special-offers]","[data-loyalty-section-login-partners]","[data-referral-section-projector]","[data-referral-section-prepaid]","[data-loyalty-section-basketedit-rebates-for-points]","[data-loyalty-section-debit]",".n67313_out"]);break;case"not_accepted":this.removeSections(["[data-loyalty-section-login-affiliate]","[data-loyalty-section-basketedit-rebates-for-points]","[data-loyalty-section-debit]"]),this.setDisableClass(["[data-loyalty-section-login-special-offers]","[data-loyalty-section-login-referral]","[data-referral-section-projector]","[data-referral-section-prepaid]",".n67313_out"])}}addLoyaltyProgramTermsCheckboxInBasketedit(a,s="desktop",l,c){const d=`\n <div class="f-group --checkbox">\n <input id="loyalty_program_terms_status_${s}" class="f-control focused" type="checkbox" name="loyalty_program_terms_status_${s}"> \n <label for="loyalty_program_terms_status_${s}" class="loyalty_program_terms__label f-label mr-0 mt-2 mb-2">${this.literals.termsBasketLabelGetPoints1_1} ${c}${this.literals.pkt} ${this.literals.termsBasketLabelGetPoints1_2} <a href="${this.literals.termsLink}">${this.literals.termsBasketLabelGetPoints2}</a></label>\n </div>\n `,p=document.createElement("div");p.innerHTML=d,a.appendChild(p);const h=a.querySelector(`#loyalty_program_terms_status_${s}`);h&&h.addEventListener("input",(async()=>{try{if(requestAnimationFrame((()=>{h.disabled=!0})),!h.checked)return;a.classList.add("load-content"),await this.updateLoyaltyProgramTerms(!0,l,c)}catch(a){console.error("[Loyalty API] Error while accepting terms: ",a.message)}finally{a.classList.remove("load-content"),requestAnimationFrame((()=>{h.disabled=!1}))}}))}setBasketeditPage(a,s=!1,l){if(!document.getElementById("Basket"))return;if(a||s)return;const c=document.querySelector(".basketedit_total .total__info"),d=document.querySelector(".basketedit_summary_container .basketedit_summary");c||d?(c&&this.addLoyaltyProgramTermsCheckboxInBasketedit(c,"desktop",a,l),d&&this.addLoyaltyProgramTermsCheckboxInBasketedit(d,"mobile",a,l)):console.error("[Loyalty] None of basketedit checkbox parent elements found.")}shouldPageBeOmitted(){const a=window.location.href;return["client-new","order1","order2","place-order","prepaid","orderdetails",this.literals.landingLink,this.literals.termsLink].some((s=>a.includes(s)))}
1async init(){try{const a=dataLayers.global.id;if(!a)return;const s=await LOYALTY_PROGRAM_SERVICE.getLoyaltyData(a,{useCache:LOYALTY_PROGRAM_SERVICE.shouldUseCacheForCurrentPage()});if(!s)return void console.error("[Loyalty API] Error initializing loyalty program terms: failed to fetch loyalty data.");if(s.isUnregistered)return console.log("[Loyalty] User is unregistered, loyalty program is removed."),void this.manageLoyaltySections("not_registered");const l=s.oldAcceptanceStatus,c=s.acceptanceStatus,d=s.acceptanceStatusUpdatedAt,p=s.points>0,h=s.loyaltyPointsSentForAcceptance,m=await LOYALTY_PROGRAM_SERVICE.getNumberOfPointsForAcceptance();if(l&&null===d)return console.log("[Loyalty] User is returning with accepted status before, loyalty program is disabled."),this.shouldPageBeOmitted()||this.showReturningAcceptanceDialog(p,null,m),void this.manageLoyaltySections("new");if(null===d)return console.log("[Loyalty] User doesn't have terms status yet, loyalty program is disabled."),this.shouldPageBeOmitted()||this.showAcceptanceDialog(p,null,m,c,d),void this.manageLoyaltySections("new");if(!1===c)return console.log("[Loyalty] User has not accepted terms, loyalty program is disabled."),this.manageLoyaltySections("not_accepted"),void this.setBasketeditPage(p,h,m);if(!0===c)return console.log("[Loyalty] User has terms accepted, loyalty program is operational."),void this.setLoyaltyLevelBodyClass(s.levelName)}catch(a){console.error("[Loyalty] Error initializing loyalty program terms: ",a)}}}const LOYALTY_PROGRAM_TERMS_SERVICE=new LoyaltyProgramTermsService;document.addEventListener("click",(a=>{a.target.closest(".--disabled-section")&&a.preventDefault()})),app_shop.run((function initLoyaltyProgramTermsService(){LOYALTY_PROGRAM_TERMS_SERVICE.init()}),"all","body"),app_shop.run((function savePromotionKeyToStorage(){const a=new URLSearchParams(window.location.search).get("promo_key");if(!a)return;new CustomCache("affiliate-program_").set("link_promotion",a,6048e5)}
1),"all","body"),app_shop.fn.generateAffiliateLink=async a=>{try{const{id:s,login:l,note:c}=dataLayers?.global||{},d=app_shop.fn.isUserInfluencer(c),p=app_shop.fn.buildAffiliateLink(a,d,{id:s,login:l,note:c}),h=d?null:app_shop.fn.getActiveLinkPromotionKey(),m=await app_shop.fn.generateLink(p,s,h);if(!m.data||!m.data.data||!m.data.data.link)throw new Error("Bad server response!");return m.data.data.link}catch(a){throw new Error(`Error while generating affiliate link: ${a.message}`,a)}},app_shop.fn.getActiveLinkPromotionKey=()=>new CustomCache("affiliate-program_").get("link_promotion"),app_shop.fn.generateLink=async(a,s,l)=>{const c={url:a,idosell_client_id:s,promo_key:l};return axios.post("https://s5.cosibella.pl/api/affiliate-program/link/generate",c)},app_shop.fn.buildAffiliateLink=function(a,s,l={}){if(!(a&&l&&l.id&&l.login&&null!=l.note))throw new Error("app_shop.fn.buildAffiliateLink: bad input data");const c=new URL(a,window.location.origin);return c.search="",c.searchParams.set("utm_source","affiliate_program"),c.searchParams.set("utm_medium",s?app_shop.fn.getEmployeeIdFromUserNote(l.note):"referral_program"),c.searchParams.set("utm_campaign",l.login),c.searchParams.set("affiliate",l.id),c.toString()},app_shop.fn.isUserInfluencer=a=>a.includes("###INFLUENCER###"),app_shop.fn.getEmployeeIdFromUserNote=a=>{const s=a.match(/###EMPLOYEE-(\w+)###/);return s?.[1]},app_shop.fn.copyUrlToClipboard=a=>{a&&(navigator.clipboard.writeText(a),Alertek.Success(window.Literals.affiliateProgram.generatorUrlCopySuccess))},app_shop.fn.handleClickCopyAffiliateLink=async a=>{try{a.classList.add("--loading");const s=a.getAttribute("data-link");if(!s)throw new Error("No link provided for copying");
1const l=await app_shop.fn.generateAffiliateLink(s);app_shop.fn.copyUrlToClipboard(l.shorten_url)}catch(a){console.error("app_shop.fn.handleClickCopyAffiliateLink: Error copying affiliate link:",a.message)}finally{setTimeout((()=>{a.classList.remove("--loading"),a.classList.add("--success")}),500),setTimeout((()=>{a.classList.remove("--success")}),1e3)}},app_shop.run((function handleGenerateLinkByButtonClick(){document.body.addEventListener("click",(a=>{const s=a.target;s.classList.contains("controls__button--copy")&&(a.preventDefault(),app_shop.fn.handleClickCopyAffiliateLink(s))}))}),"all","body"),app_shop.run((function asideToggler(){document.querySelector(".aside-toggler").addEventListener("click",(a=>{(document.documentElement.classList.contains("filters_open")||document.documentElement.classList.contains("sidebar_open")||document.documentElement.classList.contains("sorting_open"))&&document.documentElement.classList.remove("filters_open","sidebar_open","sorting_open")}))}),"all",".aside-toggler");var basketedit_productslist_init=function(){$("#basketedit_productslist td.productslist_product_quantity input[type=text]").each((function(){var a=$(this).parent().find(".delQuantity");$(this).val()==parseFloat($(this).attr("data-min_q"))?a.addClass("disabled"):a.removeClass("disabled")})),$("#basketedit_productslist textarea").blur((function(){var a=$(this).val().length,s=window.Literals.basketedit.commentsMaxCharLimit;a>s&&($(this).val($(this).val().substring(0,s)),Alertek.show_alert(window.Literals.basketedit.commentsMaxCharA+s+window.Literals.basketedit.commentsMaxCharB))})),$("#basketedit_productslist td.productslist_product_quantity input[type=text]").change((function(){Basketedit.number_check($(this));var a=$(this).parent().find(".delQuantity");$(this).val()==parseFloat($(this).attr("data-min_q"))?a.addClass("disabled"):a.removeClass("disabled")})),$(".productslist_quantity > input").on("click",(function(){if(1===app_shop.vars.view)return $(this).parent().parent().parent().parent().next().show(),$(this).parent().parent().parent().siblings(".productslist_product_toggler").children("a").addClass("open"),!1})),$(".productslist_quantity > input").on("input",(function(){1===app_shop.vars.view&&$(this).parent().parent().parent().parent().next().find("button.product_calculate").show()})),$(".productslist_quantity > input").on("change",(function(){1===app_shop.vars.view&&$(this).parent().parent().parent().parent().next().find("button.product_calculate").show()})),$(".basketedit_productslist a").click((function(){var a,s;switch($(this).attr("href")){case"#addComment":var l;return $(this).parents("tr").next().next().find("div.prodl_comment").length?l=$(this).parents("tr").next().next():$(this).parents("tr").next().find("div.prodl_comment").length&&(l=$(this).parents("tr").next()),l.find("div.prodl_comment").toggle(),l.find("div.prodl_comment_top").toggle(),!1;case"#clearComment":return $(this).prevAll("textarea").val(""),!1;case"#addQuantity":return app_shop.vars.view>1?(a=parseFloat(Basketedit.getValues($(this).parent().find("input[type=text]")).unit_sellby),s=parseFloat($(this).parent().find("input[type=text]").val())+a,$(this).parent().find("input[type=text]").val(s).change()):(a=parseFloat(Basketedit.getValues($(this).parent().parent().parent().prev().find("input[type=text]")).unit_sellby),s=parseFloat($(this).parent().parent().parent().prev().find("input[type=text]").val())+a,$(this).parent().parent().parent().prev().find("input[type=text]").val(s).change()),!1;case"#delQuantity":return app_shop.vars.view>1?(a=parseFloat(Basketedit.getValues($(this).parent().find("input[type=text]")).unit_sellby),s=parseFloat($(this).parent().find("input[type=text]").val())-a,$(this).parent().find("input[type=text]").val(s).change()):(a=parseFloat(Basketedit.getValues($(this).parent().parent().parent().prev().find("input[type=text]")).unit_sellby),s=parseFloat($(this).parent().parent().parent().prev().find("input[type=text]").val())-a,$(this).parent().parent().parent().prev().find("input[type=text]").val(s).change()),!1}}))};function change_link_compare(){$(".compare__item").each((function(){var a=$(this),s=a.data("link"),l=a.data("remove_link");1===app_shop.vars.view?a.attr("href",l):a.attr("href",s)}))}app_shop.run((function(){basketedit_productslist_init()}),"all",".basketedit_productslist"),app_shop.run((function(){$("div.categories-list_wrapper ul").show()}),4,"div.categories-list_wrapper",!0),app_shop.run((function(){$("div.categories-list_wrapper ul").show()}),3,"div.categories-list_wrapper",!0),app_shop.run((function(){$("div.categories-list_wrapper ul").show()}),2,"div.categories-list_wrapper",!0),app_shop.run((function(){$("div.categories-list_wrapper ul.categories-list_level2, div.categories-list_wrapper ul.categories-list_level3").hide(),$("span.more_categories").unbind().click((function(){$(this).toggleClass("open").next("ul").slideToggle()}))}),1,"div.categories-list_wrapper",!0),app_shop.run((function(){$(".cm").find("img.rwd-src").each((function(){$this=$(this),$this.attr("src",app_shop.fn.getRwdSrc($this))}))}),[1,2,3,4],"body"),app_shop.run((function compare_product_item(){change_link_compare()}),[1,2,3,4],".compare__item");var compare_product_item_class="compare__item btn --solid --icon-right icon-x",menu_compare_c
1ache=function(){iaiGet.comparers((function(a){var s=a.Comparers.response,l=s.attributes.count,c=s.product,d=[],p=[],h=[],m=[],_=[];for(var g in c)if(Object.prototype.hasOwnProperty.call(c,g)){var y=c[g];d.push(y.attributes.id),p.push(y.iconsmall),h.push(y.attributes.link),m.push(y.attributes.removelink),_.push(y.name)}var v=$("#menu_compare_product");v.find(".compare__sub").html("");for(var b=0;b<d.length;b++)v.find(".compare__sub").append('<a class="'+compare_product_item_class+'" href="'+m[b]+'" data-remove_link="'+m[b]+'" data-link="'+h[b]+'"><img src="'+p[b]+'" alt="'+_[b]+'"></a>');l>0&&v.show();var w=v.find(".compare__button.--remove");w.attr("href",w.attr("href").replace("###",d.join(","))),l>1&&v.find(".compare__buttons").show()}))};app_shop.run((function(){"undefined"!=typeof cache_html&&menu_compare_cache()}),"all","body"),app_shop.run((function initCustomBanners(){if(!app_shop.vars.SHOP_ID||!app_shop.vars.LANGUAGE_ID)return console.warn("CustomBanner: SHOP_ID or LANGUAGE_ID is not defined in global variables");document.querySelectorAll("[data-banner-custom-section-id]").forEach((a=>{const s=a.getAttribute("data-banner-custom-section-id");return new Banners(app_shop.vars.SHOP_ID,app_shop.vars.LANGUAGE_ID,null,"custom",`[data-banner-custom-section-id="${s}"]`,{},s).init()}))}),"all","body"),app_shop.fn.debounce=(a,s=500)=>{let l;return function(...c){clearTimeout(l),l=setTimeout((()=>a.apply(this,c)),s)}},app_shop.run((function(){$(".copyrights").text($(".copyrights").text().replace("2021",(new Date).getFullYear()))}),"all",".copyrights"),app_shop.run((function footerMenuLabel(){const setAutoOnEnd=a=>{a.addEventListener("transitionend",(s=>{"height"===s.propertyName&&(a.style.height="auto")}),{once:!0})};document.addEventListener("click",(a=>{const s=a.target.closest(".footer_menu__label");if(!s)return;if(app_shop?.vars?.view>2)return;a.preventDefault();const l=s.nextElementSibling;if(!l)return;!s.classList.contains("footer_menu__label--open")?(s.classList.add("footer_menu__label--open"),(a=>{a.style.height="auto";const s=a.scrollHeight+"px";a.style.height="0px",requestAnimationFrame((()=>{a.style.height=s})),setAutoOnEnd(a)})(l)):((a,s)=>{a.style.height=a.scrollHeight+"px",a.offsetHeight,a.style.height="0px",a.addEventListener("transitionend",(a=>{"height"===a.propertyName&&s.classList.remove("footer_menu__label--open")}),{once:!0})}
1)(l,s),(a=>{for(let s=a.parentElement;s;s=s.parentElement){const a=s.querySelector?.(":scope > .footer_menu__list");if(!a||"0px"===a.style.height||null===a.offsetParent)continue;const l=a.offsetHeight+"px";a.style.height="auto";const c=a.scrollHeight+"px";a.style.height=l,requestAnimationFrame((()=>{a.style.height=c})),setAutoOnEnd(a)}})(l)}),{passive:!1})}),"all",".footer_menu__label");const DEFAULT_HIDDEN_PRODUCT_IDS=["16604","16605","16608","16607"],HIDDEN_PRODUCTS_EXCLUDED_SELECTORS=["#projector_form",".basket__block",".pb_product"];app_shop.vars.hiddenProductIds=[...DEFAULT_HIDDEN_PRODUCT_IDS],app_shop.fn.hideHiddenProducts=function hideHiddenProducts(){const a=app_shop.vars.hiddenProductIds;if(!a.length)return;const s=HIDDEN_PRODUCTS_EXCLUDED_SELECTORS.map((a=>`:not(${a})`)).join("");document.querySelectorAll(`[data-product_id]:not(.--hidden-product-checked)${s}`).forEach((s=>{s.classList.add("--hidden-product-checked"),a.includes(String(s.getAttribute("data-product_id")))&&s.classList.add("d-none")}))},window.setHiddenProducts=function setHiddenProducts(a){const s=new Set([...DEFAULT_HIDDEN_PRODUCT_IDS,...(a||[]).map(String)]);app_shop.vars.hiddenProductIds=[...s],app_shop.fn.hideHiddenProducts()},app_shop.run((function watchHiddenProducts(){window.hiddenProductsQueue&&window.setHiddenProducts(window.hiddenProductsQueue),new MutationObserver(app_shop.fn.hideHiddenProducts).observe(document.body,{childList:!0,subtree:!0})}),"all","body");const productLiteral=(a,s,l=!1)=>{const getPrice=()=>""!==a.price.value&&"0.00"!==a.price.value?a.price.price_formatted:window.Literals.hotspot.pricePhone,c=`\n <div class="product col-12 col-sm-3 py-3 ${"grid"===s.type?"col-sm-6 col-md-4 col-lg-3":"list"===s.type||"list2"===s.type?"col-sm-12":""} ${"disable"===a.availability?"disabled":""}" data-list="${s.list||""}" data-section_name="${s.title}" data-product_id="${a.id}"\n data-product_name="${a.name}" data-product_position="${a.productPosition}"\n data-product_availability="${"disable"===a.availability?"Out of Stock":"order"===a.availability?"Order":"In Stock"}" data-product_category=""\n data-product_price="${getPrice()}" data-product_variant="${(()=>{let s=a.version;return Array.isArray(s)?s[0].attributes.name:""!==s.attributes.name?s.attributes.name:""})()}"\n data-product_brand="${a.firm}">\n <a class="product__icon d-flex justify-content-center align-items-center" data-product-id="${a.id}"\n href="${s.url_appendix?a.link+"?"+s.url_appendix:a.link}" title="${a.name}">\n <img src="${a.icon}"\n class="b-lazy" alt="${a.name}">\n <strong class="label_icons">${(()=>{const s={txt:""};return a.labels.forEach((a=>{a&&(s.txt+=`<span class="label ${a[0]}">${a[1]}</span>`)})),s.txt})()}</strong>\n </a>\n <h3>\n <a class="product__name" href="${s.url_appendix?a.link+"?"+s.url_appendix:a.link}" title="${a.name}">\n ${a.name}\n </a>\n </h3>\n <div class="product__prices" style="min-height: 27px;">\n ${a.price.maxprice&&"0.00"!==a.maxprice?`<del class="price --max">${a.price.maxprice_formatted}</del>`:""}\n <strong class="price">${getPrice()}</strong>\n </div>\n <div class="product__wishlist wishlist">\n <a class="wishlist__link "\n href="/basketchange.php?mode=2&product=${a.id}&number=1&size=uniw" rel="nofollow"\n title="${window.Literals.hotspot.addToWihslistTitle}" data-id="${a.id}" data-type="${a.sizeName}"\n tabindex="0">\n <i class="icon-heart-1"></i>\n </a>\n </div>\n <div class="product__controls controls">\n <form class="controls__form" action="/basketchange.php" method="post">\n <input type="hidden" name="product" value="${a.id}">\n <input type="hidden" name="mode" value="1">\n <input type="hidden" name="size" value="${a.sizeType}">\n <input type="hidden" name="number" value="${a.sellby}">\n ${(()=>{const s={literal:`<button type="submit" class="controls__button controls__button--buy"\n title="${window.Literals.hotspot.addToBasketTitle}">\n <i class="icon-bag d-md-none"></i>
1\n <span class="d-none d-md-inline">${window.Literals.hotspot.addToBasket}</span>\n </button>`};return"product_bundle"===a.type&&(s.literal=`<a href="${a.link}" class="controls__button controls__button--more" title="${window.Literals.hotspot.seeMore}">\n <span class="d-inline">${window.Literals.hotspot.seeMore}</span>\n </a>`),"disable"===a.availability&&(s.literal=`<button type="button" class="controls__button controls__button--availability" data-id="${a.id}" data-size="${a.sizeType}" title="Powiadom o dostÄpnoÅci">\n <span class="d-none d-md-inline">${window.Literals.hotspot.addProductNotification}</span>\n </button>`),l&&(s.literal=`<button type="button" class="controls__button controls__button--copy" data-id="${a.id}" title="${window.Literals.hotspot.copyLink}" data-link="${a.link}" data-analytics_title="copy referral program link hotspot ${a.id}">${window.Literals.hotspot.copyLink}</button>`),s.literal})()}\n </form>\n </div>\n </div>\n `;return c},clientHotspots=function(){const a=this;return this.config=[],this.skeletons=!!document.querySelectorAll(".cosiHotspot.skeleton").length&&document.querySelectorAll(".cosiHotspot.skeleton"),this.runCallbacks=a=>{wishlistAfterAjaxCallback(),$(a).hasClass("--perfectMatch")&&($(a).find(".product .label_icons").prepend(VirtualCosmetologist.getPerfectMatchLabel()),$(a).find(".product .label_icons .label.--ourChoice").hide());const s=$(a).hasClass("--affiliate");HotspotSlider({selector:".cosiHotspot.hotspot.--slider .products:not(.slick-initialized)",isAffiliateHotspot:s,callbackBefore:a=>{a.each((function hotspotSliderSetHeight(){$(this).on("init",(function(a){app_shop.fn.multiSlideAdaptiveHeight(this)})).on("beforeChange",(function(a,s,l){app_shop.fn.multiSlideAdaptiveHeight(this)})),$(this).find(".product__name").setHeight($(this)),$(this).find(".product__prices").setHeight($(this)),$(this).find(".product__note").setHeight($(this))}))}}),dataLayers.fn.evViewItemList(".cosiHotspot .product[data-product_id]",!1)},this.prepareConfig=()=>{a.skeletons&&[...a.skeletons].map(((s,l)=>{let c=`cosiHotspot${l+1}`;a.config[c]={...s.dataset},s.id=c}))},this.getSkeletonData=a=>{a.classList.add("preparing");return{...a.dataset}},this.skeletonInView=new IntersectionObserver((s=>{s.forEach((async s=>{if(s.isIntersecting){const l=s.target,c=a.getSkeletonData(l);a.addLoadingStatus(l);const d=await a.fetchProducts("/ajax/get.php",c.products);if(d){const p=await buildCustomHotspot(l,c,d);a.skeletonInView.unobserve(s.target),p&&(a.removeLoadingStatus(l),a.runCallbacks(l))}}}))})),this.addLoadingStatus=a=>{a.classList.add("load-content")},this.removeLoadingStatus=a=>{a.classList.remove("load-content","skeleton")},this.fetchProducts=async(a="/ajax/get.php",s)=>{const l={Product:{format:"json",params:{products:s}}};try{return(await fetch(a,{method:"POST",credentials:"same-origin",cache:"no-cache",headers:{Accept:"application/json, text/javascript","Content-Type":"application/x-www-form-urlencoded"},body:"request="+JSON.stringify(l)+"&getAjax=true"})).json()}catch(a){return console.error("AJAX fetchProducts() Error:",a),!1}},this.dynamicBuild=async s=>{const l=s,c=a.getSkeletonData(l);a.addLoadingStatus(l);const d=await a.fetchProducts("/ajax/get.php",c.products);if(d){const p=await buildCustomHotspot(l,c,d);a.skeletonInView.unobserve(s),p&&(a.removeLoadingStatus(l),a.runCallbacks(l))}},this.init=function(){a.skeletons&&(a.prepareConfig(),a.skeletons.forEach((function(s){a.skeletonInView.observe(s)})))},{init:this.init,dynamicBuild:this.dynamicBuild}},buildCustomHotspot=async function(a,s,l){const c=this,d=a;return this.modifySkeleton=()=>{d.classList.add("hotspot","mb-5",`--${s.type}`)},this.hotspotElements=()=>{let a=`\n <div class="headline">\n ${s.title&&""!==s.title?`<h2 class="headline__name">${s.title}</h2>`:""}\n ${s.subtitle&&""!==s.subtitle?`<span class="headline__subtitle">${s.subtitle}</span>`:""}\n </div>\n <div class="products d-flex flex-wrap --adaptive"></div>\n `;d.insertAdjacentHTML("afterbegin",a)},this.createHotspotProducts=()=>{[...l.Product.response.product].filter((a=>{const l=a.sizes.size.availability.attributes.status;return s.disable?"disable"!==l:l})).some(((a,l)=>{if(parseFloat(l)==parseFloat(s.maxprod))return!0;productData={link:a.attributes.link,id:a.attributes.id,name:a.name,icon:a.icon,iconSmall:a.icon_small,sellby:a.sizes.attributes.unit_sellby,sizeName:a.sizes.size.attributes.name,sizeType:a.sizes.size.attributes.type,availability:a.sizes.size.availability.attributes.status,labels:[!!a.attributes.new&&["--new",window.Literals.labels.new],!!a.attributes.promo&&["--promo",window.Literals.labels.promo],!!a.attributes.bestseller&&["--bestseller",window.Literals.labels.bestseller],!!a.attributes.discount&&["--discount",window.Literals.labels.discount],!!a.attributes.distinguished&&["--distinguished",window.Literals.labels.distinguished]],firm:a.firm.attributes.name,version:a.versions.version,category:a.category.attributes.name?a.category.attributes.name:"",type:a.attributes.product_type,price:a.price.attributes,traits:a.traits,productPosition:l+1};(a=>{const s=["--ourChoice","--eco","--exclusivity"],l=Array.isArray(a?.trait)?a.trait:a?.trait?[a.trait]:[];if(!l.length)return;
1["5387","9590","9589"].forEach(((a,c)=>{const d=l.find((s=>s?.attributes?.groupid===a));if(d){const a=d?.attributes?.groupdescription||"",l=s[c];productData.labels.push([l,a])}}));const c=l.find((a=>"34966"===a?.attributes?.groupid));if(c){const a=(a=>{if(!a||"string"!=typeof a)return"";const s=a.match(/^###(.+)###$/);return s?s[1].trim():""})(c?.attributes?.traitlongdescription||c?.attributes?.groupdescription||c?.attributes?.traitdescription||"");a&&productData.labels.push(["--custom-label",a])}})(productData.traits);const c=d.querySelector(".products"),p=d.classList.contains("--affiliate");c.insertAdjacentHTML("beforeend",productLiteral(productData,s,p))}))},this.buildHotspot=()=>{c.modifySkeleton(),c.hotspotElements(),c.createHotspotProducts()},this.buildHotspot(),!0};let clientHotspotsInstance=null;window.addEventListener("DOMContentLoaded",(function(){clientHotspotsInstance=new clientHotspots,clientHotspotsInstance.init()}));const getTopLevelDomain=a=>new URL(a).hostname.split(".").pop(),waitForSMApi=(a=1e4)=>new Promise(((s,l)=>{if(window.SMApi)return s(window.SMApi);const c=Date.now(),d=setInterval((()=>{window.SMApi?(clearInterval(d),s(window.SMApi)):Date.now()-c>a&&(clearInterval(d),l(new Error("SMApi timed out loading.")))}),100)})),showIAIHotspots=()=>{const a=document.querySelectorAll('[data-hotspot-provider="idosell"]');0!==a.length&&a.forEach((function(a){a.classList.remove("hidden")}))},prepareParamsForDifferentPageTypes=(a,s)=>{switch(a){case"product":{const a=dataLayers?.projector?.item_id;if(!a)return console.error("Custom hotspots: Product id not found"),!1;s.products=[{product:{id:a}}];break}case"search":{const a=new URLSearchParams(window.location.search).get("text");if(a)s.searchQuery=a;else{if(document.querySelectorAll(".breadcrumbs ol li:not(.bc-main) a, .breadcrumbs ol li:not(.bc-main) span").forEach(((a,l)=>{const c=a.textContent.trim();s.pageCategories+=(l>0?" > ":"")+c})),!s.pageCategories)return console.error("Custom hotspots: Categories not found"),!1}break}case"basketedit":{if(s.cartId=app_shop.fn.cookie.get("basket_id")||null,!s.cartId)return console.error("Custom hotspots: basket_id not set in cookie"),!1;const a=document.querySelectorAll(".basket__productslist [data-product-id]");if(a.length<1)return console.error("Custom hotspots: Products in basket not found"),!1;a.forEach((a=>{const l=a.dataset.productId,c=a.dataset.product_quantity;s.products.push({product:{id:l.toString()},quantity:c})}));break}}return s},createHotspot=(a,s,l,c)=>{a.innerHTML=`\n <div \n class="cosiHotspot --ai-hotspot skeleton --scrollSnap"\n data-products="${s.map((a=>a.id)).join(",")}"\n ${s[0].urlAppendix?`data-url_appendix="${s[0].urlAppendix}"`:""}\n data-disable="false"\n data-list="${c}_${l.hotspotType}"\n data-type="slider"\n data-title="${l.hotspotTitle?l.hotspotTitle:"undefined"}"\n data-maxprod="${l.pageSize}">\n </div>\n `,clientHotspotsInstance.dynamicBuild(a.firstElementChild)},fetchProductsFromGoogleRecommendations=async a=>{const{market:s,hotspotType:l,eventType:c,products:d,visitorId:p,userId:h,userAgent:m,pageSize:_,pageCategories:g,cartId:y,searchQuery:v}=a;try{const a="https://api.cosibella.pl/api/recommendation/",b=new
1URLSearchParams({market:s,hotspotType:l,eventType:c,visitorId:p,userId:h,userAgent:m,pageSize:_,pageCategories:g,cartId:y,searchQuery:v,products:JSON.stringify(d)}),w=await fetch(`${a}?${b.toString()}`),k=await w.json();return k.data?k.data.results:[]}catch(a){console.error("Custom hotspots: fetching err",a)}},hotspotHandlerGoogle=async(a,s,l)=>{const c={visitorId:l,userId:dataLayers.global.userId||"",userAgent:navigator.userAgent||"",hotspotType:"",eventType:"",pageSize:10,pageCategories:"",cartId:"",searchQuery:"",market:getTopLevelDomain(window.location.href),products:[]},d=prepareParamsForDifferentPageTypes(s,c);if(d)if(d.pageSize=a.dataset.maxprod?a.dataset.maxprod:10,d.hotspotType=a.dataset.hotspotType,d.hotspotType)if(d.hotspotTitle=a.dataset.hotspotTitle,d.hotspotTitle)if(d.eventType=a.dataset.eventType,d.eventType)try{const l=await fetchProductsFromGoogleRecommendations(d);if(!l||l.length<3)return console.warn("Custom hotspots Google: Not enough product recommendations"),!1;createHotspot(a,l,d,s)}catch(a){console.error("Custom hotspots Google: error",a)}else console.error("Custom hotspots Google: Event type not set");else console.error("Custom hotspots Google: Hotspot title not set");else console.error("Custom hotspots Google: Hotspot type not set");else console.error("Custom hotspots Google: Params for diff page types not retrieved")},hotspotHandlerSalesmanago=async(a,s)=>{const l={};if(l.hotspotStrategy=a.dataset.hotspotStrategy,l.hotspotStrategy)if(l.hotspotType=a.dataset.hotspotType,l.hotspotType)if(l.hotspotTitle=a.dataset.hotspotTitle,l.hotspotTitle)if(l.eventType=a.dataset.eventType,l.eventType){l.pageSize=a.dataset.maxprod?a.dataset.maxprod:10;try{const c={strategyId:l.hotspotStrategy,includeProductData:!1,maxItems:l.pageSize},d=await waitForSMApi();d.setAll(c);const p=(await d.execute("recommendation")).products;if(!p||p.length<3)return console.warn("Custom hotspots Salesmanago: Not enough product recommendations"),!1;createHotspot(a,p,l,s)}catch(a){console.error("Custom hotspots Salesmanago: error",a)}}else console.error("Custom hotspots Salesmanago: Event type not set");else console.error("Custom hotspots Salesmanago: Hotspot title not set");else console.error("Custom hotspots Salesmanago: Hotspot type not set");else console.error("Custom hotspots Salesmanago: Strategy ID not set")},initCustomHotspots=async a=>{const s=dataLayers.global.pageType?dataLayers.global.pageType:null;if(!s)return console.error("Custom hotspots: Page type not found");const l={google:l=>hotspotHandlerGoogle(l,s,a),salesmanago:a=>hotspotHandlerSalesmanago(a,s)};Object.entries(l).forEach((([a,s])=>{document.querySelectorAll(`[data-hotspot-provider="${a}"]`).forEach(s)}))};app_shop.run((async function(){const a=app_shop.fn.cookie.get("_ga")||null;a&&"undefined"!=typeof ARE_CUSTOM_HOTSPOTS_ACTIVE&&!0===ARE_CUSTOM_HOTSPOTS_ACTIVE?await initCustomHotspots(a):showIAIHotspots()}),"all","body",!0);const HotspotAjaxInit=function HotspotAjaxInit(a){const s=this;return this.params=a||{},this.vars={loaded:!1,hotspotElements:document.querySelectorAll("[data-ajaxload=true]")},this.fetchHotspots=async a=>{try{const s=await fetch(a);return await s.json()}catch(a){return console.error("AJAX fetchHotspots() Error:",a),!1}},this.hotspotInView=new IntersectionObserver((a=>{a.forEach((a=>{a.isIntersecting&&(s.vars.loaded||(s.getHotspot(),s.vars.loaded=!0),s.hotspotInView.unobserve(a.target))}))})),this.getHotspot=async()=>{let a="";document.querySelector(".projector_page")&&(a=document.getElementById("projector_product_hidden")&&document.getElementById("projector_product_hidden").value||document.getElementById("projector_form")&&document.getElementById("projector_form").getAttribute("data-product_id")||"");const l=[];document.querySelector(".basketedit_page")&&(document.querySelectorAll(".productslist_item").forEach((a=>{l.push(a.querySelector('input[name*="product"]').value)})),document.querySelectorAll(".basket__block[data-product-id]").forEach((a=>{l.push(a.querySelector('input[name*="product"]').value)})));const c=[...this.vars.hotspotElements].map((a=>a.getAttribute("id"))).join(","),d=`/ajax/hotspots.php?action=get-hotspots-html&zones-names=${c}&components=${c}
1&zones-types=${[...this.vars.hotspotElements].map((a=>a.getAttribute("data-pagetype"))).join(",")}&product=${a}&products=${l.join(";")}`;this.vars.hotspotElements.forEach((a=>{a.classList.add("load-content")}));const p=await this.fetchHotspots(d);p?(this.vars.hotspotElements.forEach((a=>{a.classList.remove("load-content")})),Object.keys(p).forEach((a=>{const l=document.getElementById(a);""!==p[a]?l&&(l.outerHTML=p[a]):l&&l.parentNode.removeChild(l),app_shop.vars.bLazy&&app_shop.vars.bLazy.revalidate(),s.afterOneHotspotCallback&&s.afterOneHotspotCallback(l)})),s.afterAllHotspotsCallback&&s.afterAllHotspotsCallback()):this.vars.hotspotElements.forEach((a=>{a.parentNode.removeChild(a)}))},this.init=()=>{const{afterOneHotspotCallback:a,afterAllHotspotsCallback:l}=this.params;this.afterOneHotspotCallback=a||!1,this.afterAllHotspotsCallback=l||!1,this.vars.hotspotElements.forEach((a=>{s.hotspotInView.observe(a)}))},this.init()},hotspotTabsInit=()=>{if(0===$(".hotspot").length||!document.documentElement.classList.contains("--hotspotsInTabs"))return!1;$(".hotspots__tabs").length&&$(".hotspots__tabs").append('<ul class="hotspots__menu --cleanList d-none d-sm-flex align-items-center justify-content-center"></ul>'),$(".hotspot").each((function(){const a=$(this),s=a.find(".headline__name").text(),l=a.find(".headline").attr("href")?a.find(".headline").attr("href"):"/search.html?text=+",c=a.attr("id");$(".hotspots__tabs .hotspots__menu").append(`\n\t\t\t<li class="hotspots__menu-item">\n\t\t\t\t<a href="${l}" target="_blank" class="hotspots__menu-link" data-id="${c}"}>\n\t\t\t\t\t${s}\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t`)})),$(".hotspots__tabs .hotspots__menu-item").first().addClass("hotspots__menu-item--active"),$(".hotspot").first().addClass("hotspot--active"),app_shop.vars.bLazy&&app_shop.vars.bLazy.revalidate(),$(document).on("click",".hotspots__tabs .hotspots__menu-item a",(function(a){a.preventDefault();const s=$(this),l=`#${s.attr("data-id")}`,c=$(l);$(".hotspots__tabs .hotspots__menu-item").removeClass("hotspots__menu-item--active"),s.parent().addClass("hotspots__menu-item--active"),$(".hotspot").removeClass("hotspot--active"),c.addClass("hotspot--active"),setTimeout((()=>{app_shop.vars.hotspot_slider.reset(),app_shop.vars.bLazy&&app_shop.vars.bLazy.revalidate()}),100)}))};app_shop.run((function(){$("[data-ajaxLoad]").length&&(app_shop.fn.hotspotAjaxInit=new HotspotAjaxInit({afterAllHotspotsCallback:()=>{$(".hotspot:not(.--list):not(.--slider)").each((function setHeightHotspot(){$(this).find(".product__name").setHeight($(this).find(".products")),$(this).find(".product__prices").setHeight($(this).find(".products")),$(this).find(".product__note").setHeight($(this).find(".products"))})),app_shop.vars.hotspot_slider=new HotspotSlider({selector:".hotspot.--slider .products:not(.slick-initialized)",callbackBefore:a=>{a.each((function hotspotSliderSetHeight(){$(this).on("init",(function(a){app_shop.fn.multiSlideAdaptiveHeight(this)})).on("beforeChange",(function(a,s,l){app_shop.fn.multiSlideAdaptiveHeight(this)})),$(this).find(".product__name").setHeight($(this)),$(this).find(".product__prices").setHeight($(this)),$(this).find(".product__note").setHeight($(this))}))}}),void 0!==wishlistAfterAjaxCallback&&wishlistAfterAjaxCallback(),void 0!==hotspotTabsInit&&hotspotTabsInit(),dataLayers.fn.evViewItemList(".hotspot .product[data-product_id]",!1)}}))}),"all","body",!0),app_shop.run((function(){$(".hotspot:not(.--list):not(.--slider)").each((function setHeightHotspot(){$(this).find(".product__name").setHeight($(this).find(".products")),$(this).find(".product__prices").setHeight($(this).find(".products")),$(this).find(".product__note").setHeight($(this).find(".products"))}))}),[1,2,3,4],".hotspot"),app_shop.run((function hotspotSlider(){app_shop.vars.hotspot_slider=new HotspotSlider({selector:".hotspot.--slider .products:not(.slick-initialized)",callbackBefore:a=>{a.each((function hotspotSliderSetHeight(){$(this).on("init",(function(a){app_shop.fn.multiSlideAdaptiveHeight(this)})).on("beforeChange",(function(a,s,l){app_shop.fn.multiSlideAdaptiveHeight(this)})),$(this).find(".product__name").setHeight($(this)),$(this).find(".product__prices").setHeight($(this)),$(this).find(".product__note").setHeight($(this))}))}})}),"all",".hotspot.--slider");const HotspotSlider=function HotspotSlider(a){return this.isSearchPage=$(".search_page").length,this.isProjectorPage=$(".projector").length,this.slides=a?.isAffiliateHotspot?1:this.isSearchPage||this.isProjectorPage?3:4,this.slidesToScroll=this.slides,this.params=a,this.defaults={prevArrow:'<a class="slider__arrow hotspot__arrow --prev" href=""><i class="icon-left"></i></a>',nextArrow:'<a class="slider__arrow hotspot__arrow --next" href=""><i class="icon-right"></i></a>',dotsClass:"hotspot__dots",arrows:!0,dots:!1,slidesToShow:this.slides,slidesToScroll:this.slidesToScroll,centerMode:!!a?.isAffiliateHotspot,centerPadding:!!a?.isAffiliateHotspot&&"300px",variableWidth:!!a?.isAffiliateHotspot,infinite:!!a?.isAffiliateHotspot,responsive:[{breakpoint:1200,settings:{slidesToShow:this.slides,slidesToScroll:this.slidesToScroll,infinite:!1,centerMode:!1,centerPadding:"0px",variableWidth:!1}},{breakpoint:979,settings:{slidesToShow:this.slides,slidesToScroll:this.slidesToScroll,infinite:!1,centerMode:!1,centerPadding:"0px",variableWidth:!1}},{breakpoint:757,settings:{slidesToShow:this.slides,slidesToScroll:this.slidesToScroll,swipeToSlide:!0,arrows:!1,dots:!0,infinite:!1,centerMode:!1,centerPadding:"0px",variableWidth:!1}},{breakpoint:550,settings:{slidesToShow:1,slidesToScroll:1,swipeToSlide:!0,arrows:!1,dots:!0,infinite:!1,centerMode:!1,centerPadding:"0px",variableWidth:!1}}]},this.init=()=>{const{selector:a,options:s,callbackBefore:l,callbackAfter:c}=this.params;this.settings=_objectSpread({},this.defaults,{},s),this.selector=a,this.slider=$(a),"function"==typeof l&&l(this.slider),this.slider.on("afterChange",(function slickAfterScroll(){app_shop.vars.bLazy&&app_shop.vars.bLazy.revalidate()})),this.slider.slick(this.settings),"function"==typeof c&&c(this.slider)},this.reset=()=>{this.slider&&this.slider.slick("unslick"),this.init(this.params)},this.destroy=()=>{this.slider&&this.slider.slick("unslick")},this.init()};app_shop.fn.multiSlideAdaptiveHeight=a=>{const s=[];let l=0;setTimeout((function setTimeoutMultiSlideAdaptiveHeight(){$(a).addClass("--adaptive"),$(".slick-track .slick-active",a).each((function sliderEachMultiSlideAdaptiveHeight(a){s[a]=$(this).outerHeight()}
1)),s.forEach((a=>{a>l&&(l=a)})),$(".slick-list",a).height(l)}),10)};const LOYALTY_HERO_LEVELS={CosiFriend:{nextLevelName:"CosiLover"},CosiLover:{nextLevelName:"CosiStar"},CosiStar:{nextLevelName:null}},LOYALTY_HERO_RECALCULATION_WARNING_MAX_VIEWS=3,LOYALTY_HERO_RECALCULATION_WARNING_CACHE_TTL=31536e6,loyaltyHeroRecalculationWarningCache=new CustomCache("cache_loyalty_hero_");function getRecalculationWarningCacheKey(a){return`recalculation-warning-views:${a}`}const LoyaltyHero={props:{areLocalStoresActive:{type:Boolean,default:!1}},data:()=>({loading:!0,data:null,numberOfPointsForAcceptance:0,literals:window.Literals.loyaltyProgram,warningDismissed:!1,recalculationWarningViews:0}),computed:{userId:()=>dataLayers?.global?.id,currentLevel(){return LOYALTY_HERO_LEVELS[this.data?.levelName]||null},levelName(){return this.data?.levelName||""},nextLevelName(){return this.currentLevel?.nextLevelName||""},percentToNextLevel(){return this.data?.percentToNextLevel??0},activeUserIsReturning(){return Boolean(this.userId)&&!0===this.data?.oldAcceptanceStatus&&null===this.data?.acceptanceStatusUpdatedAt},hasActiveLoyalty(){return Boolean(this.userId)&&!0===this.data?.acceptanceStatus},showRecalculationWarning(){return!0===this.data?.acceptanceStatus&&!this.warningDismissed&&this.recalculationWarningViews<=LOYALTY_HERO_RECALCULATION_WARNING_MAX_VIEWS},points(){return this.data?.points??0},userHasPoints(){return this.points>0},userAcceptanceStatusUpdatedAt(){return this.data?.acceptanceStatusUpdatedAt??null}},methods:{async fetchLoyaltyData(){if(!this.userId)return null;const a=LOYALTY_PROGRAM_SERVICE.shouldUseCacheForCurrentPage(["text"]);return LOYALTY_PROGRAM_SERVICE.getLoyaltyData(this.userId,{useCache:a})},async loadData(){this.loading=!0;try{this.data=await this.fetchLoyaltyData(),this.numberOfPointsForAcceptance=await LOYALTY_PROGRAM_SERVICE.getNumberOfPointsForAcceptance(),this.registerRecalculationWarningView()}finally{this.loading=!1}},dismissWarning(){this.warningDismissed=!0,this.userId&&loyaltyHeroRecalculationWarningCache.set(getRecalculationWarningCacheKey(this.userId),LOYALTY_HERO_RECALCULATION_WARNING_MAX_VIEWS+1,LOYALTY_HERO_RECALCULATION_WARNING_CACHE_TTL)},registerRecalculationWarningView(){if(!this.userId||!0!==this.data?.acceptanceStatus)return;const a=getRecalculationWarningCacheKey(this.userId),s=(loyaltyHeroRecalculationWarningCache.get(a)??0)+1;loyaltyHeroRecalculationWarningCache.set(a,s,LOYALTY_HERO_RECALCULATION_WARNING_CACHE_TTL),this.recalculationWarningViews=s},joinLoyaltyProgram(){window.popupModal?.closeAll(),!0===this.activeUserIsReturning?LOYALTY_PROGRAM_TERMS_SERVICE.showReturningAcceptanceDialog(this.userHasPoints,null,this.numberOfPointsForAcceptance):LOYALTY_PROGRAM_TERMS_SERVICE.showAcceptanceDialog(this.userHasPoints,null,this.numberOfPointsForAcceptance,this.hasActiveLoyalty,this.userAcceptanceStatusUpdatedAt)},renderBarcode(){const a=this.$refs.clientIdBarcode;a&&this.userId&&JsBarcode(a,this.userId,{height:40,displayValue:!1,background:"#FFFFFF",format:"CODE128"})}},async mounted(){await this.loadData(),this.hasActiveLoyalty&&(await this.$nextTick(),this.renderBarcode())},template:'\n <div class="loyalty-hero" data-analytics_region="loyalty hero" data-loyalty-section-hero="">\n <div v-if="showRecalculationWarning" id="menu_messages_warning" class="menu_messages_message" style="position: relative;">\n <div class="menu_messages_warning_sub">\n <p class="font-500">{{ literals.heroPointsRecalculation1 }} <a :href="literals.landingLink + \'#loyalty-conversions\'" class="underline" data-analytics_title="goto loyalty landing">{{ literals.heroPointsRecalculation2 }}</a></p>\n <i class="icon-close" style="position: absolute; top: 8px; right: 8px; cursor: pointer;" @click="dismissWarning"></i>\n </div>\n </div>\n\n <div class="loyalty-hero__wrapper shadow rounded-xs skeleton-block" style="min-height: 195px;" v-if="loading"></div>\n\n <div class="loyalty-hero__wrapper shadow rounded-xs" style="min-height: 195px;" v-else>\n <div class="loyalty-hero__info bg-loyalty" v-if="hasActiveLoyalty">\n <div class="d-flex justify-content-between d-md-block">\n <h2 class="font-4 font-md-5 mb-3 italic">{{ levelName }}</h2>\n <div class="login_menu_sub__punkty">\n <p class="uppercase">{{ literals.heroYourPoints }}: <b> {{ points }} {{ literals.pkt }}</b></p>\n </div>\n </div>\n\n <div v-if="nextLevelName">\n <div class="loyalty-hero__progress-bar mt
1-3 mb-2" v-if="percentToNextLevel > 0">\n <div class="loyalty-hero__progress-bar--fill" :style="{ width: percentToNextLevel + \'%\' }"></div>\n </div>\n <p class="font-2 font-md-3 mb-0">{{ literals.heroNextLevel }}: <b>{{ nextLevelName }}</b></p>\n </div>\n </div>\n\n <div class="loyalty-hero__info bg-loyalty" v-else>\n <div class="d-flex justify-content-between d-md-block">\n <p class="font-4 font-md-5">\n {{ literals.heroJoin }} <span class="font-600">{{ literals.heroCosiClub }}</span><br>\n <span v-if="!activeUserIsReturning">\n {{ literals.heroCollectPoints }}<br>\n {{ literals.heroCollectPointsInitialBonus }} <b>{{ numberOfPointsForAcceptance }} {{ literals.points }}</b>\n </span>\n </p>\n </div>\n\n <a v-if="!userId" href="/signin.php" class="btn --solid --secondary open_toplayer_login" data-analytics_title="login">{{ literals.login }}</a>\n\n <button v-else type="button" class="btn --solid --secondary mt-3" @click="joinLoyaltyProgram" data-analytics_title="join program">\n <span class="px-2">{{ literals.heroJoinCosiClub }}</span>\n </button>\n </div>\n\n <div class="loyalty-hero__image">\n <img src="/data/include/cms/CMS/program-lojalnosciowy/loyalty-program-2-hero-image.webp" alt="">\n <div class="loyalty-hero__image--logo">\n <i class="icon-cosiclub-filled"></i>\n </div>\n </div>\n </div>\n </div>\n\n <div class="loyalty-hero__corner d-flex flex-column align-items-center bg-loyalty shadow rounded-xs p-3 mb-3 d-md-none" v-if="hasActiveLoyalty && areLocalStoresActive">\n <div class="d-flex flex-column align-items-center p-3 w-full bg-white rounded-xs">\n <svg ref="clientIdBarcode" class="d-block rounded-xs"></svg>\n <p class="mt-2 mb-0">{{ literals.heroBarcodeLabel }}</p>\n </div>\n\n <a\n :href="literals.stacStoreDiscountLink"\n class="btn --solid --secondary w-full mt-3"\n data-analytics_title="goto loyalty corner codes landing"\n >\n {{ literals.heroCollectDiscountLocally }}\n </a>\n </div>\n '},loyaltyHeroRoot=document.querySelector("#loyalty-hero");function escapeHtml(a){return String(a??"").replace(/[&<>"']/g,(a=>{switch(a){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";default:return"'"}}))}function escapeHtmlWithLineBreaks(a){return escapeHtml(a).replace(/\n/g,"<br>")}loyaltyHeroRoot&&window.Vue&&Vue.createApp(LoyaltyHero,{areLocalStoresActive:"true"===loyaltyHeroRoot.dataset.areLocalStoresActive}).mount(loyaltyHeroRoot);const LOYALTY_PARTNERS_ERROR_LITERAL_KEYS={terms_not_accepted:"partnersErrorTermsNotAccepted",client_level_not_eligible:"partnersErrorLevelNotEligible",not_enough_points:"partnersErrorNotEnoughPoints",campaign_not_active:"partnersErrorCampaignNotActive",campaign_outside_redemption_window:"partnersErrorOutsideWindow",partner_code_already_claimed_for_campaign:"partnersErrorAlreadyClaimed",no_partner_codes_available:"partnersErrorNoCodesAvailable",no_partner_code_assigned_to_client:"partnersErrorNoCodesAvailable"},LoyaltyPartners={data:()=>({loading:!0,isUnregistered:!0,termsAccepted:!1,oldAcceptanceStatus:!1,acceptanceStatusUpdatedAt:null,points:0,numberOfPointsForAcceptance:0,campaigns:[],literals:window.Literals.loyaltyProgram,gracePeriodRefreshTimer:null,gracePeriodOverride:!1}),computed:{userId:()=>dataLayers?.global?.id,idosellStoreId:()=>CURRENT_SHOP_ID,activeUserIsReturning(){return Boolean(this.userId)&&!0===this.oldAcceptanceStatus&&null===this.acceptanceStatusUpdatedAt},hasActiveLoyalty(){return Boolean(this.userId)&&this.termsAccepted},userHasPoints(){return this.points>0},isRecalculationGracePeriodOver(){return this.gracePeriodOverride||LOYALTY_PROGRAM_TERMS_SERVICE.isPointsRecalculationGracePeriodOver(this.acceptanceStatusUpdatedAt)}},methods:{formatDiscount:a=>"FLAT"===a.discountType?`${a.discountValue} ${a.currency||""}`.trim():`-${a.discountValue}%`,formatDate:a=>a?new Date(a).toLocaleDateString("pl-PL",{timeZone:"UTC"}):"",logoUrl(a){const s=a.company?.logoUrl;return s?/^https?:\/\//i.test(s)?s:`${new URL(LOYALTY_PARTNER_CAMPAIGNS_SERVICE.apiUrl).origin}${s}`:""},partnerWebsiteUrl(a){const s=a.company?.website;return s&&/^https?:\/\//i.test(s)?s:""},async loadCampaigns(){this.loading=!0;try{const a=await LOYALTY_PROGRAM_SERVICE.getLoyaltyData(this.userId,{useCache:LOYALTY_PROGRAM_SERVICE.shouldUseCacheForCurrentPage(["text"])});
1if(this.isUnregistered=!this.userId||!1!==a?.isUnregistered,this.isUnregistered)return;this.termsAccepted=!0===a?.acceptanceStatus,this.oldAcceptanceStatus=!0===a?.oldAcceptanceStatus,this.acceptanceStatusUpdatedAt=a?.acceptanceStatusUpdatedAt??null,this.points=a?.points??0,this.numberOfPointsForAcceptance=await LOYALTY_PROGRAM_SERVICE.getNumberOfPointsForAcceptance(),this.campaigns=await LOYALTY_PARTNER_CAMPAIGNS_SERVICE.fetchCampaigns(this.idosellStoreId),this.scheduleRecalculationGracePeriodRefresh()}catch(a){console.error("[Loyalty] - error while loading partner campaigns",a)}finally{this.loading=!1}},scheduleRecalculationGracePeriodRefresh(){clearTimeout(this.gracePeriodRefreshTimer);const a=LOYALTY_PROGRAM_TERMS_SERVICE.getPointsRecalculationGracePeriodRemaining(this.acceptanceStatusUpdatedAt);a<=0||(this.gracePeriodRefreshTimer=setTimeout((()=>{this.gracePeriodOverride=!0}),a))},isCampaignLocked(a){return!this.termsAccepted||!this.isRecalculationGracePeriodOver||!1===a.eligible},async copyCode(a){await navigator.clipboard.writeText(a),Alertek.Success(this.literals.partnersCodeCopied)},detailDialogContent(a){const s=this.literals,l='<i class="icon-cosiclub-filled loyalty-partners__dialog-brand"></i>',c=escapeHtml(a.company?.name),d=this.partnerWebsiteUrl(a),p=d?`<br><a href="${escapeHtml(d)}" target="_blank" rel="noopener noreferrer" class="underline">${s.partnersWebsiteLink}</a>`:"",h=escapeHtmlWithLineBreaks(a.description)+p;return a.userCode?`\n <div class="loyalty-partners__dialog d-flex flex-column" data-analytics_region="loyalty partners modal has code">\n ${l}\n <h1 class="font-4">${c}</h1>\n <p class="font-3" style="white-space: pre-line;">${h}</p>\n <p class="font-3">${s.partnersYourCode}:</p>\n <button type="button" class="loyalty-partners__dialog-code font-3 font-700" data-loyalty-partners-dialog-copy="" data-analytics_title="copy code ${c}">\n ${escapeHtml(a.userCode.code)}\n <i class="icon-copy"></i>\n </button>\n <p class="font-2 mt-2">${s.partnersValidTo} ${this.formatDate(a.endsAt)}</p>\n </div>\n `:this.termsAccepted?!1!==a.eligible&&this.isRecalculationGracePeriodOver?a.codesAvailable?this.points<a.pointsCost?`\n <div class="loyalty-partners__dialog d-flex flex-column">\n ${l}\n <h1 class="font-4">${c}</h1>\n <p class="font-3" style="white-space: pre-line;">${h}</p>\n <p class="font-3 mt-2 font-600">${s.partnersErrorNotEnoughPoints}</p>\n </div>\n `:`\n <div class="loyalty-partners__dialog d-flex flex-column" data-analytics_region="loyalty partners modal redeem code">\n ${l}\n <h1 class="font-4">${c}</h1>\n <p class="font-3" style="white-space: pre-line;">${h}</p>\n <p class="font-3">${s.partnersRedeemButton} <b>${a.pointsCost} ${s.partnersPointsCost}</b> ${s.partnersOnCode} ${c}</p>\n <button type="button" class="btn --solid --secondary mt-2" data-loyalty-partners-dialog-redeem="" data-analytics_title="redeem code ${c}">\n ${s.partnersRedeemButton.toUpperCase()}\n </button>\n <p class="font-2 mt-2">${s.partnersValidTo} ${this.formatDate(a.endsAt)}</p>\n </div>\n `:`\n <div class="loyalty-partners__dialog d-flex flex-column">\n ${l}\n <h1 class="font-4">${c}</h1>\n <p class="font-3" style="white-space: pre-line;">${h}</p>\n <p class="font-3 mt-2 font-600">${s.partnersSoldOut}</p>\n </div>\n `:`\n <div class="loyalty-partners__dialog d-flex flex-column">\n ${l}\n <h1 class="font-4">${c}</h1>\n <p class="font-3" style="white-space: pre-line;">${h}</p>\n <p class="font-3 mt-2 font-600"><i class="icon-lock"></i> ${s.partnersLocked}</p>\n </div>\n `:`\n <div class="loyalty-partners__dialog d-flex flex-column">\n ${l}\n <h1 class="font-4">${c}</h1>\n <p class="font-3" style="white-space: pre-line;">${h}</p>\n <p class="font-3 mt-2"><i class="icon-lock"></i> ${s.partnersTermsNotAccepted}</p>\n <button type="button" class="btn --solid --secondary mt-2" data-loyalty-partners-dialog-join="" data-analytics_title="join program">\n ${s.heroJoinCosiClub}\n </button>\n </div>\n `},joinLoyaltyProgram(){window.popupModal?.closeAll(),!0===this.activeUserIsReturning?LOYALTY_PROGRAM_TERMS_SERVICE.showReturningAcceptanceDialog(this.userHasPoints,null,this.numberOfPointsForAcceptance):LOYALTY_PROGRAM_TERMS_SERVICE.showAcceptanceDialog(this.userHasPoints,null,this.numberOfPointsForAcceptance,this.hasActiveLoyalty,this.acceptanceStatusUpdatedAt)},bindDialogListeners(a,s){const l=a?.querySelector("[data-loyalty-partners-dialog-copy]");l?.addEventListener("click",(()=>this.copyCode(s.userCode.code)));const c=a?.querySelector("[data-loyalty-partners-dialog-join]");c?.addEventListener("click",(()=>this.joinLoyaltyProgram()));const d=a?.querySelector("[data-loyalty-partners-dialog-redeem]");if(!d)return;let p=!1;d.addEventListener("click",(async()=>
1{if(!p){p=!0,d.disabled=!0,a?.classList.add("load-content");try{const l=await LOYALTY_PARTNER_CAMPAIGNS_SERVICE.redeemCampaign(s.id);s.userCode={code:l.code,claimed:!0,claimedAt:null},LOYALTY_PROGRAM_SERVICE.clearCachedLoyaltyData(this.userId),LOYALTY_PROGRAM_SERVICE.reloadLoyaltyPointsSections(this.userId),a.querySelector("#dialog_wrapper_sub").innerHTML=this.detailDialogContent(s),this.bindDialogListeners(a,s)}catch(a){const s=LOYALTY_PARTNERS_ERROR_LITERAL_KEYS[a.message]||"partnersErrorGeneric";Alertek.Error(this.literals[s]),p=!1,d.disabled=!1}finally{a?.classList.remove("load-content")}}}))},openCampaignDialog(a){$("body").dialog({content:this.detailDialogContent(a),fixed:!1,fitToWindow:!1,animate:!0,width:375,wrapperClass:"dialog_wrapper_loyalty_partners",adaptiveHeight:!0,coverClosesDialog:!0});const s=document.querySelector(".dialog_wrapper_loyalty_partners");this.bindDialogListeners(s,a)}},async mounted(){await this.loadCampaigns()},unmounted(){clearTimeout(this.gracePeriodRefreshTimer)},template:'\n <div class="loyalty-partners" v-if="(!isUnregistered || loading) && (loading || campaigns.length)" data-analytics_region="loyalty partners">\n <h2 class="font-3 font-md-4 mb-3">{{ literals.partnersHeading }}</h2>\n\n <div class="loyalty-partners__list" v-if="loading">\n <div class="loyalty-partners__item shadow rounded-xs skeleton-block" style="min-height: 90px;" v-for="n in 3" :key="n"></div>\n </div>\n\n <div class="loyalty-partners__list" v-else-if="campaigns.length">\n <div\n v-for="campaign in campaigns"\n :key="campaign.id"\n role="button"\n tabindex="0"\n class="loyalty-partners__item"\n :class="{ \'--locked\': isCampaignLocked(campaign) && !campaign.userCode }"\n @click="openCampaignDialog(campaign)"\n @keydown.enter="openCampaignDialog(campaign)"\n :data-analytics_title="\'see more for \' + campaign.company?.name"\n >\n <div class="loyalty-partners__cell loyalty-partners__cell--left shadow rounded-xs">\n <i class="icon-cosiclub-filled loyalty-partners__brand"></i>\n\n <button\n v-if="campaign.userCode"\n type="button"\n class="loyalty-partners__code-value font-3"\n @click.stop="copyCode(campaign.userCode.code)"\n data-analytics_title="copy code"\n >\n {{ literals.partnersYourCode }}:<br>\n <code class="font-700">{{ campaign.userCode.code }}</code>\n <i class="icon-copy"></i>\n </button>\n\n <span v-else-if="isCampaignLocked(campaign)" class="loyalty-partners__points-pill bg-loyalty font-3">\n {{ campaign.pointsCost }} {{ literals.partnersPointsCost }} <i class="icon-lock"></i>\n </span>\n\n <p v-else-if="!campaign.codesAvailable" class="loyalty-partners__sold-out font-2">\n {{ literals.partnersSoldOut }}\n </p>\n\n <template v-else>\n <span class="loyalty-partners__points-pill bg-loyalty font-3">{{ campaign.pointsCost }} {{ literals.partnersPointsCost }}</span>\n <span class="loyalty-partners__redeem-link font-3 underline align-self-center" :data-loyalty_title="\'redeem code \' + campaign.company?.name">{{ literals.partnersRedeemButton }}</span>\n </template>\n </div>\n\n <div class="loyalty-partners__cell loyalty-partners__cell--right shadow rounded-xs">\n <div class="loyalty-partners__discount-row">\n <p class="loyalty-partners__discount font-700">{{ formatDiscount(campaign) }}</p>\n <img v-if="logoUrl(campaign)" :src="logoUrl(campaign)" :alt="campaign.company?.name" class="loyalty-partners__logo">\n </div>\n <p class="loyalty-partners__dates font-2">{{ literals.partnersValidTo }} {{ formatDate(campaign.endsAt) }}</p>\n <p class="loyalty-partners__dates font-2">{{ literals.partnersNumberOfCodesIsLimited }}</p>\n </div>\n </div>\n </div>\n </div>\n '},loyaltyPartnersRoot=document.querySelector("#loyalty-partners");loyaltyPartnersRoot&&window.Vue&&Vue.createApp(LoyaltyPartners).mount(loyaltyPartnersRoot),app_shop.fn.fetchExtraLoyaltyPoints=async function(a,s=1){a&&Array.isArray(a)&&0!==a.length||console.error("fetchExtraLoyaltyPoints: Invalid productIds array");try{return(await axios.post(`https://iai-app.cosibella-apps.pl/CSSA/api/ProductsProfitPoints/shops/${s}/products`,a,{headers:{"Content-Type":"application/json"}})).data||[]}catch(a){return console.error("Error fetching extra loyalty points:",a),null}},$(document).on("click","[data-banner-name]:not(.menu_button_wrapper)",(function(){const a=$(this).attr("data-banner-name");$.cookie("bannerClicked",a,{path:"/"})})),app_shop.run((function(){$(".search_page").length||$(".projector_page").length||$.cookie("bannerClicked",null),$(".search_page").length&&$(document).on("click",".menu a, #menu_categories2 a, .hotspot button, .hotspot a",(function(){$.cookie("bannerClicked",null)})),$(".projector_page").length&&$(document).on("click",".menu a, .hotspot button, .hotspot a, .firm_logo",(function(){$.cookie("bannerClicked",null)}))}),"all","body"),app_shop.run((function menuCategoriesInit(){document.querySelector(".navbar__toggler").addEventListener("click",(function(a){a.preventDefault(),document.documentElement.classList.add("sidebar_open")})),document.addEventListener("click",(function eventDelegation(a){if
1(a.target.closest(".navbar__link")&&app_shop.vars.view<3&&document.documentElement.classList.contains("sidebar_open")||a.target.closest(".navbar__link")&&document.documentElement.classList.contains("touch")){if(!a.target.nextElementSibling)return!0;if(a.target.classList.contains("navbar__link--producers"))return!0;if(app_shop.vars.view>2&&a.target.closest(".navbar__subnav"))return!0;app_shop.vars.view>2&&document.querySelectorAll(".navbar__link--open").forEach((s=>s!==a.target&&s.classList.remove("navbar__link--open"))),a.target.classList.toggle("navbar__link--open"),app_shop.vars.view<3&&$(a.target.nextElementSibling).slideToggle(),a.preventDefault()}return!1}))}),"all","#menu_categories"),app_shop.run((function removeInlineNavbarStyle(){document.querySelectorAll(".navbar__subnav, .navbar__subsubnav").forEach((a=>a.removeAttribute("style"))),document.querySelectorAll(".navbar__link--open").forEach((a=>a.classList.remove("navbar__link--open")))}),[3,4],"#menu_categories"),app_shop.run((function(){if("undefined"==typeof shopProducers)return!1;const a=("undefined"!=typeof disabledProducers&&disabledProducers.length>0?shopProducers.filter((a=>!disabledProducers.map((a=>a.toLowerCase().trim())).some((s=>s===a.name.toLowerCase().trim())))):shopProducers).map((a=>({...a,name:a.name.replace(" UA","")}))),s="/producers.php",l="#selectedProducers",c="#ourProducers",d="#onlyUs",p={producersList:window.Literals.producers.producersList,producersNavLabel:window.Literals.producers.producersNavLabel,showAll:window.Literals.producers.showAll},h=document.querySelector(`#menu_categories2 a[href="${s}"]`);if(!h)return!1;h.classList.add("navbar__link--producers");const m=h.nextElementSibling;m&&m.classList.add("navbar__subnav--hidden");const _=document.createElement("ul");_.classList.add("navbar__subnav"),_.classList.add("navbar__subnav--producers");const g=document.createElement("li");g.classList.add("navbar__item"),_.appendChild(g),m?m.parentNode.insertBefore(_,m.nextSibling):h.parentNode.appendChild(_);const y=["0","1","2","3","4","5","6","7","8","9"];let v=a.sort(((a,s)=>a.name.localeCompare(s.name,"pl",{sensitivity:"base"}))).reduce(((a,s)=>{let l=s.name[0].toLowerCase();return y.includes(l)&&(l="0-9"),a[l]?a[l].children.push(s):a[l]={group:l.toUpperCase(),children:[s]},a}),{}),b=Object.values(v);"0-9"===b[0].group&&b.push(b.shift());const w=b.map((a=>{const s=a.group;return`\n <div id="nav-producers_${s}" class="nav-producers__group mb-4">\n <span class="d-block nav-producers__group-name mb-2">${s}</span>\n <ul class="nav-producers__list">\n ${a.children.map((a=>taggedProducers&&taggedProducers?.includes(a.name)?`\n <li class="nav-producers__item mb-2">\n <a href="${a.link}" title="${a.name}" class="nav-producers__link d-flex align-items-center" data-name="${a.name}" data-analytics_title="${a.name}">${a.name} <img class="producer_leaf" src="/data/include/cms/producers_leaf.svg" alt=""/></a>\n </li>\n `:`\n <li class="nav-producers__item mb-2">\n <a href="${a.link}" title="${a.name}" class="nav-producers__link" data-name="${a.name}" data-analytics_title="${a.name}">${a.name}</a>\n </li>\n `)).join("")}\n </ul>\n </div>\n `})).join(""),k=b.map((a=>{const s=a.group;return`\n <li class="nav-letters__item">\n <a href="#nav-producers_${s}" class="nav-letters__link px-2 py-1" data-analytics_title="${s}">\n ${s}\n </a>\n </li>\n `})).join("");let L="";const C=document.querySelector(`#menu_categories2 a[href="${d}"]`);if(C){const a=C.nextElementSibling;a&&(L=a.outerHTML),L=`\n <div class="nav-producers__only-us nav-producers__block ${!C&&"d-none"}">\n <div class="nav-producers__name">${C.innerHTML.trim()}</div>\n ${L}\n </div>\n `}let S="";const A=document.querySelector(`#menu_categories2 a[href="${c}"]`);if(A){const a=A.nextElementSibling;a&&(S=a.outerHTML),S=`\n <div class="nav-producers__brands nav-producers__block ${!A&&"d-none"}">\n <div class="nav-producers__name">${A.innerHTML.trim()}</div>\n ${S}\n </div>\n `}let x="";const T=document.querySelector(`#menu_categories2 a[href="${l}"]`);if(T){const a=T.nextElementSibling;a&&(x=a.outerHTML),x=`\n <div class="nav-producers__selected ${!T&&"d-none"}">\n ${S}\n ${L}\n ${x}\n </div>\n `}const E=`\n <div class="navbar__producers nav-producers row">\n ${x}\n <div class="nav-producers__groups ${!T&&"nav-producers__groups--full"}">\n <div class="nav-producers__label mb-4">${p.producersList}</div>\n <div class="nav-producers__groups-sub" data-analytics_region="menu producers list">\n ${w}\n </div>\n </div>\n <div class="nav-producers__letters nav-letters" data-analytics_region="menu producers list letters">\n <div class="nav-producers__label mb-4">${p.producersNavLabel}</div>\n <ul class="nav-letters__list mb-3 mx-n3">\n ${k}\n </ul>\n <a href="${s}" class="btn nav-letters__button" data-analytics_title="menu producers list letters show all">${p.showAll} <i class="icon-right"></i></a>\n </div>\n </div>\n `;g.innerHTML=E;
1[...document.querySelectorAll(".nav-letters__link")].forEach((a=>{a.addEventListener("click",(function(a){a.preventDefault();const s=a.target.hash;$(".nav-producers__groups-sub").animate({scrollTop:$(".nav-producers__groups-sub").scrollTop()+$(s).position().top-60})}))}))}),"all","#menu_categories2"),app_shop.run((function searchResultsAppShop(){app_shop.fn.searchResults=new SearchResults({resultsLimit:6})}),"all","#menu_search");const searchTxt={};searchTxt.categories=window.Literals.searchAutocomplete.categories,searchTxt.cms=window.Literals.searchAutocomplete.cms,searchTxt.beforeProducer=window.Literals.searchAutocomplete.producers,searchTxt.beforeSeries=window.Literals.searchAutocomplete.series,searchTxt.showAll=window.Literals.searchAutocomplete.showAll,searchTxt.separator=" / ",SearchResults=function SearchResults(a){const s=this;return this.params=a||{},this.vars={typingTimer:"",doneTypingInterval:500},this.fetchData=async()=>{const a=this.searchInput.value;if(a.length<this.inputLengthToStartSearching)return!1;if(sessionStorage.getItem(`search_${a}`))return JSON.parse(sessionStorage.getItem(`search_${a}`));try{const s=await fetch(`/search.php?xmlType=typeahead&getProductXML=true&json=true&text=${a}&limit=${this.resultsLimit}`),l=await s.json();return sessionStorage.setItem(`search_${a}`,JSON.stringify(l)),l}catch(a){return console.error("AJAX fetchDataSearchResults() Error:",a),!1}},this.openResults=()=>{this.searchInput.closest("form").classList.add("--open"),this.resultsWrapper.scrollTop=0,document.documentElement.classList.add("--results-open"),document.querySelector("#container.main_page")&&document.documentElement.classList.add("--results-main-open")},this.closeResults=()=>{this.searchInput.closest("form").classList.remove("--open"),document.documentElement.classList.remove("--results-open"),document.querySelector("#container.main_page")&&document.documentElement.classList.remove("--results-main-open")},this.buildResult=async()=>{this.searchInput.closest("form").classList.add("--loading");const a=await this.fetchData();if(this.searchInput.closest("form").classList.remove("--loading"),this.resultsWrapper.innerHTML="",a){if(!Object.values(a).filter((a=>a.length)).length)return this.closeResults(),!1;if(this.openResults(),a.searchQueries&&a.searchQueries.length){const s=this.searchInput.value,l=new RegExp(s,"i");this.resultsWrapper.innerHTML+=`<div class="search_result__block --queries">${a.searchQueries.map((a=>`<a class="search_result__item --query"href="${a.link}">${a.name.replace(l,"<b>$&</b>")}</a>`)).join("")}</div>`}Object.keys(a).filter((a=>"searchQueries"!==a)).some((s=>a[s].length))&&(this.resultsWrapper.innerHTML+='<div class="search_result__block --others"></div>',a.products&&a.products.length&&(this.resultsWrapper.querySelector(".search_result__block.--others").innerHTML+=`<div class="search_result__sub --products">${a.products.map((a=>`<a class="search_result__item --product ${(app_shop.vars.hiddenProductIds||[]).some((s=>a.link.includes(s)))?"d-none":""}" href="${a.link}">\n <span class="search_result__icon">\n <img src="${a.icon_small}" alt="${a.name}"/>\n </span>\n <span class="search_result__name_wrapper">\n <span class="search_result__name">${a.name}</span>\n <span class="search_result__price">${s.nettoPrice?a.price.price_net_formatted:a.price.price_formatted}</span>\n </span>\n </a>`)).join("")}\n <button type="submit" class="btn --medium --solid --secondary d-md-none mt-4">${searchTxt.showAll}</button></div>`),(a.producers&&a.producers.length||a.series&&a.series.length||a.menuNodes&&a.menuNodes.length)&&(this.resultsWrapper.querySelector(".search_result__block.--others").innerHTML+=`<div class="search_result__sub --categories"><strong class="search_result__label">${searchTxt.categories}</strong><div class="search_result__items">${a.producers?a.producers.map((a=>`<a class="search_result__item --producer"href="${a.link}"><span class="search_result__name_label">${searchTxt.beforeProducer}</span><span class="search_result__name">${a.name}</span></a>`)).join(""):""}\n ${a.series?a.series.map((a=>`<a class="search_result__item --series"href="${a.link}"><span class="search_result__name_label">${searchTxt.beforeSeries}</span><span class="search_result__name">${a.name}</span></a>`)).join(""):""}\n ${a.menuNodes?a.menuNodes.map((a=>`<a class="search_result__item --menu"href="${a.link}"><span class="search_result__name">${a.bc?a.bc.item.map((a=>a.title)).join(searchTxt.separator):a.name}</span></a>`)).join(""):""}</div></div>`),a.cms&&a.cms.length&&(this.resultsWrapper.querySelector(".search_result__block.--others").innerHTML+=`<div class="search_result__sub --cms"><strong class="search_result__label">${searchTxt.cms}</strong><div class="search_result__items">${a.cms.map((a=>`<a class="search_result__item --cms"href="${a.link}"><span class="search_result__name">${a.name}</span></a>`)).join("")}</div></div>`))}else this.closeResults();return this.afterBuildResult&&this.afterBuildResult(a),!0},this.updateSearchInput=()=>{const a=s.resultsWrapper.querySelector(".search_result__item.--active .search_result__name")?s.resultsWrapper.querySelector(".search_result__item.--active .search_result__name").textContent:s.resultsWrapper.querySelector(".search_result__item.--active").textContent;s.searchInput.value=a},this.updateFocusElement=a=>{this.resultsWrapper.querySelectorAll(".search_result__item").forEach((a=>a.classList.remove("--active"))),a.classList.add("--active"),a.focus(),this.updateSearchInput()},this.initEvents=()=>{this.searchInput.addEventListener("keyup",(function searchInputChange(a){const l=a.which||a.keyCode||0;37!==l&&38!==l&&39!==l&&40!==l&&(clearTimeout(s.vars.typingTimer),s.vars.typingTimer=setTimeout(s.buildResult,s.vars.doneTypingInterval),document.querySelector("html._mobile:not(.sidebar_open):not(.--search-open) .main_page")&&window.scrollTo(0,0))}
1)),this.searchInput.addEventListener("keydown",(function searchInputChange(a){const l=a.which||a.keyCode||0;return 37===l||38===l||39===l||40===l||(clearTimeout(s.vars.typingTimer),s.searchInput.closest("form").classList.add("--focus"),!document.querySelector(".--search-open")||13!==l)||(a.preventDefault(),this.closest("form").submit(),!1)})),this.searchInput.addEventListener("focus",(function searchInputFocus(){this.closest("form").classList.add("--focus")})),document.addEventListener("scroll",(function documentScrollFunction(a){window.scrollY>0?document.documentElement.classList.add("--scroll-down"):document.documentElement.classList.remove("--scroll-down")})),document.querySelector(".search_result, .search_result__block").addEventListener("scroll",(function documentScrollFunction(){app_shop.vars.view<3&&document.activeElement.blur()})),document.addEventListener("keydown",(function eventDelegationKeyDown(a){if(s.searchInput.closest("form.--open.--focus")){const l=a.which||a.keyCode||0;if(37===l||38===l||39===l||40===l){a.preventDefault();const c=[...s.resultsWrapper.querySelectorAll(".search_result__item")],d=s.resultsWrapper.querySelector(".search_result__item.--query"),p=s.resultsWrapper.querySelector(".search_result__block.--others .search_result__item");switch(l){case 40:{const a=c.indexOf(s.resultsWrapper.querySelector(".search_result__item.--active"));a>-1&&c[a+1]?s.updateFocusElement(c[a+1]):s.updateFocusElement(c[0]);break}case 38:{const a=c.indexOf(s.resultsWrapper.querySelector(".search_result__item.--active"));a>-1&&c[a-1]?s.updateFocusElement(c[a-1]):s.updateFocusElement(c[c.length-1]),s.updateSearchInput();break}case 37:1!==app_shop.vars.view&&d&&p&&s.updateFocusElement(d);break;case 39:1!==app_shop.vars.view&&d&&p&&s.updateFocusElement(p);break;default:return!0}}else 13!==l&&s.searchInput.focus();return!1}})),document.addEventListener("click",(function eventDelegation(a){if(a.target.closest(".menu_search__mobile")&&(a.preventDefault(),document.documentElement.classList.add("--search-open"),s.searchInput.focus()),a.target.closest(".--search-open .menu_search__submit")&&(a.preventDefault(),document.documentElement.classList.remove("--search-open","--results-main-open")),a.target.closest(".menu_search__clear")&&(a.preventDefault(),s.searchInput.value="",s.searchInput.focus(),s.closeResults()),a.target.closest(".menu_search__submit")){0===document.querySelector(".menu_search__input").value.length&&app_shop.vars.view>2&&a.preventDefault()}return a.target.closest("header .navbar-toggler")&&document.documentElement.classList.remove("--results-main-open"),s.searchInput.closest("form").classList.contains("--focus")&&!s.searchInput.closest("form").contains(a.target)&&s.searchInput.closest("form").classList.remove("--focus"),!1}))},this.init=()=>{const{searchInput:a,resultsWrapper:s,resultsLimit:l,inputLengthToStartSearching:c,nettoPrice:d,afterBuildResult:p}=this.params;this.searchInput=a?document.querySelector(a):document.querySelector(".menu_search__input"),this.resultsWrapper=s?document.querySelector(s):document.querySelector(".search_result"),this.resultsLimit=l||"",this.inputLengthToStartSearching=c||4,this.nettoPrice=d||!1,this.afterBuildResult=p||!1,this.initEvents()},this.init()},app_shop.run((function asideSearchResultsInit(){const a=document.querySelector("#aside_search"),s=a.querySelector(".menu_search__input"),l=a.querySelector(".search_result"),c=new SearchResults({resultsLimit:6,searchInput:"#aside_search .menu_search__input",resultsWrapper:"#aside_search .search_result"});l.addEventListener("scroll",(function(){app_shop.vars.view<3&&document.activeElement.blur()})),a.querySelector(".menu_search__clear").addEventListener("click",(function(a){a.preventDefault(),a.stopPropagation(),s.value="",s.focus(),c.closeResults()}))}),"all","#aside_search"),app_shop.run((function(){$(document).on("click",".open_trigger, #menu_settings li:first-child .form-group:first-child > label",(function(){return $("#menu_settings form").toggleClass("active"),!1}))}),"all","#menu_settings"),app_shop.run((function(){$(document).on("submit",'form[action="/signin.php"]',(async function(a){a.preventDefault();const s=$(this),l=s.find(".signin_button"),c=s.find('input[name="login"]'),d=s.find('input[name="password"]');if(l.hasClass("--loading"))return!1;if(""==c.val()||""==d.val())return!1;l.addClass("--loading");const p=await app_shop.graphql.login(c.val(),d.val());if(void 0!==p.errors){const a=p.errors[0].message;return"account_login_disabled"===a?Alertek.Start(window.Literals.validation.accountLoginDisabled):"Too many requests"===a?Alertek.Start(window.Literals.validation.accountLoginTooManyRequests):Alertek.Start(window.Literals.validation.incorrectLoginData),l.removeClass("--loading"),!1}if($("#dialog_close").click(),dataLayers&&"product"===dataLayers.global.pageType){const a=new URL(window.location.href);a.searchParams.set("show_opinion","true"),window.history.replaceState(null,"",a.toString())}window.location.reload()}))}),"all","#login-toplayer"),function(a){const s="popupModalOverlay",l="popupModalOverlay--open",c="popupModal__content",d="popupModal__content--active";function getOverlay(){let l=a("."+s);return l.length||(l=a("<div/>",{class:s,"aria-hidden":"true"}).appendTo("body")),l}function closeAll(){a("."+d).each((function(){closeContent(a(this))}))}function openPopup(s){const p=getOverlay(),h=s.find("."+c).first();if(h.length){if(closeAll(),!h.data("popupPlaceholder")){const s=a("<span/>");h.after(s),h.data("popupPlaceholder",s)}!function ensureCloseBtn(s){s.length&&!s.find(".popupModal__close").length&&s.prepend(a("<button/>",{class:"popupModal__close",type:"button","aria-label":"Zamknij"}))}(h),p.append(h),h.addClass(d).attr("aria-hidden","false"),p.addClass(l).attr("aria-hidden","false"),a("html, body").addClass("is-popupModal-open")}}function closeContent(s){const c=getOverlay(),p=s.data("popupPlaceholder");s.removeClass(d).attr("aria-hidden","true"),p&&p.length&&(p.replaceWith(s),s.removeData("popupPlaceholder")),a("."+d).length||(c.removeClass(l).attr("aria-hidden","true"),a("html, body").removeClass("is-popupModal-open"))}window.popupModal={closeAll:closeAll},a(document).on("click",".popupModal__trigger",(function(s){s.preventDefault();const l=a(this).closest(".popupModal");l.length&&setTimeout((()=>
1openPopup(l)),0)})),a(document).on("click",".popupModal__close",(function(s){s.preventDefault(),closeContent(a(this).closest("."+c))})),a(document).on("click","."+s,(function(l){a(l.target).is("."+s)&&closeAll()})),a(document).on("keydown",(function(a){"Escape"===a.key&&closeAll()}))}(jQuery),app_shop.fn.categoryDivider=function categoryDivider(a){var s=a||".search_categoriesdescription_sub",l=$(s).children(),c=void 0!==app_shop.vars.categorySize?app_shop.vars.categorySize:512;return l.length>1&&!$(".search_categoriesdescription_next").length&&0!==c&&($.each(l,(function(a,l){var d=-1*(c-l.innerText.length);c-l.innerText.length<=0&&d>=c&&($(".search_categoriesdescription_next").length||$(s).after('<div class="search_categoriesdescription_next cm"><a class="show_description pt-2">'+window.Literals.readMore+"</a></div>"),$(l).appendTo(".search_categoriesdescription_next")),c-=l.innerText.length})),$(".search_categoriesdescription_next").after('<a class="hide_description pb-2">'+window.Literals.readLess+"</a>")),$(s).removeClass("skeleton"),!1},app_shop.run((function searchCategoryDescription(){app_shop.vars.view>=2&&(app_shop.fn.categoryDivider("#Navigation .navigation_desc"),$(document).on("click","a.show_description",(function(){return $(this).parent().addClass("expanded"),!1})))}),"all","#Navigation"),app_shop.run((function moveAfterSearchList(){1==app_shop.vars.view&&$("#content").append($("#Navigation .navigation_desc"))}),"all","#Navigation");var newsletter={txt:"",fill:function(a){""==a.val()&&a.val(newsletter.txt)},clear:function(a){""!=a.val()&&a.val()==newsletter.txt&&a.val("")},mode:function(a){$("#mailing_action_contact").val(a),"remove"==a?($('input[name="newsletter_consent"], input[name="mailing_name"]').removeClass("validate"),$("#newsletter_privacy_consent").find(".has-feedback").removeClass("has-error"),$('input[name="mailing_name"]').parent().removeClass("has-error"),$('input[name="mailing_name"]').siblings(".validate_message").html("")):"add"==a&&$('input[name="newsletter_consent"], input[name="mailing_name"]').addClass("validate")}};app_shop.run((function(){$("form.newsletter_form").find("input, textarea").on("input",(function(){clearTimeout(app_shop.formControl.timeHandle),obj=$(this),app_shop.formControl.timeHandle=setTimeout((function(){app_shop.formControl.validate(obj)}),500)})),$("#newsletter_button_remove").on("click",(function(){let a=""!=$("#mailing_email").val()?$("#mailing_email").val():dataLayers.global.email;return makeRemove(a),newsletter.mode("remove"),app_shop.formControl.checkForm($(this).parents("form"))})),$("#newsletter_button_add").on("click",(function(){let a=""!=$("#mailing_email").val()?$("#mailing_email").val():dataLayers.global.email;return makeRegister(a),newsletter.mode("add"),app_shop.formControl.checkForm($(this).parents("form"))}))}),"all","form.newsletter_form"),app_shop.run((function(){$("#newsletter form").on("submit",(async function(a){const s=$("#newsletter #newsletter__checkbox").is(":checked");s||$("#newsletter label.newsletter__pp-label").addClass("newsletter__pp-label--error");if(app_shop.formControl.checkForm($(this))&&s){let a=$("input[name='mailing_email']").val();return await makeRegister(a),!0}return a.preventDefault(),!1})),$("#newsletter").find("input").on("change",(function(){clearTimeout(app_shop.formControl.timeHandle),obj=$(this),app_shop.formControl.timeHandle=setTimeout((function(){app_shop.formControl.validate(obj)}),500)})),$("#newsletter #newsletter__checkbox").on("click",(function(){$("#newsletter label.newsletter__pp-label").removeClass("newsletter__pp-label--error")})),$("#newsletter button.add_newsletter").on("click",(function(){return app_shop.formControl.checkForm($(this).parents("form"))}))}),"all","#newsletter");const makeRegister=async(a,s=null)=>{if(!a)return!1;let l;const c=MAKE_REGISTER_WEBHOOK||"",d={"Content-Type":"application/json"};let p="none";void 0!==dataLayers.global.email&&"undefined"!==dataLayers.global.id&&dataLayers.global.email==a&&(p=dataLayers.global.id);const h=s||dataLayers?.global?.pageType||"none",m={user_key:$.cookie("__ca__chat")?$.cookie("__ca__chat"):"none",email:a,source:h,user_id:p};try{if(l=await $.ajax({url:c,type:"POST",headers:d,data:JSON.stringify(m),success:function(a){console.log("API call successful, response: "+a)},error:function(a){console.error("API call failed:",a)}}),l)return l}catch(a){return!1}},makeRemove=async a=>{if(!a)return!1;let s;const l={"Content-Type":"application/json"},c={email:a};try{if(s=await $.ajax({url:"https://hook.eu2.make.com/s0cyogqiuaaejexawdck1onuiao8gk9q",type:"POST",headers:l,data:JSON.stringify(c),success:function(a){console.log("API call successful, response: "+a)},error:function(a){console.error("API call failed:",a)}}),s)return s}catch(a){return!1}},Make=function Make(){const a=this,s=$("#cop_terms_mailing_checkbox").is(":checked"),l="makeRegisterAfterAccountCreated";return this.setClientNewFormSubmitState=function(){const a=$("#cop_terms_mailing_checkbox").is(":checked");let c=null;s!==a||a?(a&&(c={newsletter:"checked"}),a||(c={newsletter:"unchecked"})):c={newsletter:"uncheckedNoChange"},sessionStorage.setItem(l,JSON.stringify(c))},this.getClientNewFormSubmitState=function(){const a=sessionStorage.getItem(l);return a?JSON.parse(a):null},this.makeActionsAfterClientNewSubmit=function(){const s=a.getClientNewFormSubmitState();if(!s)return!1;if(void 0===dataLayers.global.email||""===dataLayers.global.id)return!1;const{newsletter:l}=s;switch(l){case"checked":makeRegister(dataLayers.global.email,"client-new");break;case"unchecked":makeRemove(dataLayers.global.email);break;case"uncheckedNoChange":break;default:console.error("Wrong status passed from NL Checkbox")}
1sessionStorage.removeItem("makeRegisterAfterAccountCreated")},{setClientNewFormSubmitState:a.setClientNewFormSubmitState,makeActionsAfterClientNewSubmit:a.makeActionsAfterClientNewSubmit}},makeIntegration=new Make;app_shop.run((function(){document.querySelector("html").classList.add("--no_sticky_header")}),"all","html"),app_shop.fn.fetchOpinionRating=async function(a){if(!a||!Array.isArray(a)||0===a.length)return console.error("Array is empty or not an array"),!1;try{const s=await axios.post("https://s5.cosibella.pl/api/opinion-service/opinions/rating",{productGroups:a});if(!(s&&s.data&&s.data.data&&s.data.data))throw new Error("Invalid server response structure");return s.data.data}catch(a){return console.error(a),!1}},app_shop.run((function previewPrepaidFile(){$("#prepaid_order_products .ordered-files ul li a").on("click",(function previewPrepaidFileClick(a){a.preventDefault();const s=$(this).attr("href");let l=new Image;return l.src=s,l.onload=function(){$(`<div id="ui-dialogimg"><img src="${s}"/></div>`).dialog({wrappContent:!0,fixed:!1,fitToWindow:!1,width:l.width>0&&l.width,afterCloseFn:function deleteDialogImg(){$("#ui-dialogimg").remove()}})},!1}))}),"all","#prepaid_order_products .ordered-files");const showNotificationToplayer=(a,s,l)=>{const c=`\n <div class="notification-toplayer d-flex flex-column">\n <input type="hidden" name="product" value="${a}" />\n <input type="hidden" name="size" value="${s}" />\n <input type="hidden" name="promotion-id" value="${l&&l.id?l.id:""}" />\n <input type="hidden" name="price-normal" value="${l&&l.priceNormal?l.priceNormal:""}" />\n <input type="hidden" name="price-discount" value="${l&&l.priceDiscount?l.priceDiscount:""}" />\n <input type="hidden" name="promo-date" value="${l&&l.promoDate?l.promoDate:""}" />\n <div class="form-group mb-0">\n <div class="has-feedback"> \n <input class="form-control validate" id="notification_email" name="email" type="text" data-validate="email" required="required"/>\n <label for="notification_email" class="f-label control-label">${window.Literals.availabilityNotify.insertEmail}</label>\n <span class="form-control-feedback"></span>\n </div>\n </div>\n <p class="notification-toplayer__info notification-toplayer__info--bg">${window.Literals.availabilityNotify.additionalInfo1}</p>\n <button name="mailing_action" value="add" data-promotion="${l?"true":""}" type="button" class="btn --solid --medium notification-toplayer__button" title="${window.Literals.availabilityNotify.notifyMe}">\n <span class="d-flex justify-content-center align-items-center">${l?window.Literals.dailyPromotion.notifyMe:window.Literals.availabilityNotify.notifyMe}</span>\n </button>\n <p class="notification-toplayer__info">${l?window.Literals.dailyPromotion.availabilityAdditionalInfo:window.Literals.availabilityNotify.additionalInfo2}</p>\n </div>\n `;$("body").dialog({content:c,fixed:!1,fitToWindow:!1,animate:!1,width:527,wrapperClass:"dialog_wrapper_notification_toplayer",adaptiveHeight:!0,txtCloseButton:"x"}),$(".notification-toplayer .validate").on("input",(function(){clearTimeout(app_shop.formControl.timeHandle),obj=$(this),app_shop.formControl.timeHandle=setTimeout((function(){app_shop.formControl.validate(obj)}),500)})),$("#availability_agreement").on("click",(function(){$(".notification-toplayer__agreements").removeClass("notification-toplayer__agreements--error")})),$(".notification-toplayer__button").on("click",(function(){const a=$(".notification-toplayer");if(!app_shop.formControl.checkValidateFields(a))return!1;const s={email:a.find('input[name="email"]').val(),product:a.find('input[name="product"]').val(),size:a.find('input[name="size"]').val(),promotionId:a.find('input[name="promotion-id"]').val(),price_normal:a.find('input[name="price-normal"]').val(),price_discount:a.find('input[name="price-discount"]').val(),promoDate:a.find('input[name="promo-date"]').val()};$(a).addClass("load-content"),""!==$(this).data("promotion")?signToPromotionNotification(s):signToProductAvailabilityNotification(s),$(a).removeClass("load-content")}))},signToProductAvailabilityNotification=a=>{const s={product:a.product,size:a.size,email:a.email,mode:2,phone:""};$.getJSON("/ajax/projector.php?action=set_product_observed",{...s}
1,(function(a){if("error"==a.status)switch(a.errdesc){case"mail":message=window.Literals.availabilityNotify.invalidEmail;break;case"limit":message=window.Literals.availabilityNotify.dayLimitExceeded;break;default:message=window.Literals.availabilityNotify.invalidEnteredData}else message=window.Literals.availabilityNotify.notifyAdded;Alertek.show_alert(message),$("#dialog_close").trigger("click")}))},getLanguage=()=>{if(!LANGUAGE_CODE)return"";return{pol:"pl",cze:"cz",slo:"sk",ger:"de",hun:"hu",lit:"lt",lav:"lv",ukr:"ua",rus:"ru",rum:"ro"}[LANGUAGE_CODE]},signToPromotionNotification=async a=>{const{email:s,promotionId:l,product:c,price_normal:d,price_discount:p,promoDate:h}=a;if(!(s&&c&&d&&p&&h))return console.error("Missing data");const m={product_info:{sku:c,price_normal:Number(d),price_discount:Number(p)},promotionId:l,email:s,promo_date:h.split(" ")[0],lang:getLanguage()};try{if(!(await fetch("https://hook.eu2.make.com/j2w17du3uckfwr540u1mnmdxrpat85zk",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m)})).ok)throw new Error("Failed to send data");Alertek.show_alert(window.Literals.dailyPromotion.notifyAdded),$("#dialog_close").trigger("click")}catch(a){console.error(a),Alertek.Error(window.Literals.dailyPromotion.notifyError)}};$(document).on("click",".controls__button--availability:not(.controls__button--stocks)",(function(){const a=$(this),s=a.data("id"),l=a.data("size")||"uniw",c={id:a.data("promotion-id")||null,priceNormal:a.data("price-normal")||null,priceDiscount:a.data("price-discount")||null,promoDate:a.data("promo-date")||null};showNotificationToplayer(s,l,c.id?c:null)}));let toBaskedLoadingHandler=!1;const toBasket=async(a,s,l,c)=>{if(toBaskedLoadingHandler)return!1;toBaskedLoadingHandler=!0;const d={success:"--success",loading:"--loading",error:"--error"},resetButtonState=()=>{Object.keys(d).forEach((a=>s.removeClass(d[a])))},setButtonState=a=>{resetButtonState(),s.addClass(d[a])},basketChange=async a=>{let s;try{if(s=await $.ajax({url:"/basketchange.php",data:a,type:"POST",dataType:"json"}),s)return s}catch(a){return!1}};if(0===a.length)return!1;setButtonState("loading");const p="points"===l?"1":"0";let h;for(const[s,l]of a.entries()){const c=`${l.serialize()}&getAjax=true&forpoints=${p}`,d=await basketChange(c);s===a.length-1&&(h=d)}if(h)return setButtonState("success"),(a=>{const s=$("#menu_basket");s.find(".badge").text(a.basket.productsNumber),s.find("strong").text(format_price(a.basket.worth,{mask:app_shop.vars.currency_format,currency:app_shop.vars.symbol,currency_space:app_shop.vars.currency_space,currency_before_price:app_shop.vars.currency_before_value})),app_shop.vars.shippingLimitFree=a.basket.shippingLimitFree,app_shop.vars.toShippingFree=a.basket.toShippingFree})(h),setTimeout((()=>{resetButtonState(),void 0!==c&&c()}),750),toBaskedLoadingHandler=!1,!1;setButtonState("error"),setTimeout(resetButtonState,1500),toBaskedLoadingHandler=!1},toBasketToplayer=(a,s=!1)=>{const l=a,c=[];l.forEach(((a,s)=>{const l=`\n <div class="toBasketToplayer__product product d-flex align-items-start mb-3 ${s>2?"hidden":""}">\n <a class="product__icon d-flex justify-content-center align-items-center" href="${a.link}" title="${a.name}">\n <img src="${a.icon}" class="b-lazy b-loaded" alt="${a.name}">\n </a>\n <a class="product__name" href="${a.link}" title="${a.name}">${a.name}</a>\n <div class="product__prices">\n <strong class="price">${a.price}</strong>\n ${void 0!==a.maxPrice&&""!==a.maxPrice.trim()?`<del class="price --max">${a.maxPrice}</del>`:""}\n </div>\n </div>\n `;c.push(l)}));const d=`\n <div id="toBasketToplayer" class="toBasketToplayer d-flex flex-column align-items-center">\n ${s?`<div id="product_unavailable" class="menu_messages_warning"><h3 class="return_label">${window.Literals.toBasket.unavailableProduct1} ${window.Literals.toBasket.unavailableProduct2}</h3></div>`:""}\n <div class="toBasketToplayer__headline headline mb-5"><span class="headline__name">${window.Literals.toBasket.headline}</span></div>\n ${c.join("")}\n ${l.length>3?`<a class="toBasketToplayer__showMore" href="#showMore">${window.Literals.toBasket.seeMore}</a>`:""}\n ${(()=>{let a="";try{if(void 0!==app_shop.vars.shippingLimitFree&&void 0!==app_shop.vars.toShippingFree){const s=format_price(app_shop.vars.toShippingFree,{mask:app_shop.vars.currency_format,currency:app_shop.vars.symbol,currency_space
1:app_shop.vars.currency_space,currency_before_price:app_shop.vars.currency_before_value}),l=100*(Number(app_shop.vars.shippingLimitFree)-Number(app_shop.vars.toShippingFree))/Number(app_shop.vars.shippingLimitFree);a=`\n <div class="toBasketToplayer__shippingWrapper">\n <div class="toBasketToplayer__shippingText mb-2">\n ${100===l?`${window.Literals.toBasket.shippingLimitA} <span class="--bold">${window.Literals.toBasket.shippingLimitB}</span>`:`${window.Literals.toBasket.shippingLimitC} <span class="--bold">${s}</span> ${window.Literals.toBasket.shippingLimitD}`}\n </div>\n <div class="toBasketToplayer__shippingRange">\n <span class="toBasketToplayer__shippingRangeSpan" style="width: ${l}%;"></span>\n </div>\n </div>\n `}return a}catch(a){return""}})()}\n <div class="toBasketToplayer__controls d-flex flex-column"> \n <a rel="nofollow" class="btn --solid --medium --secondary toBasketToplayer__button--close mb-3" href="#close">${window.Literals.toBasket.close}</a>\n ${"basketedit"===dataLayers?.global?.pageType?"":`<a rel="nofollow" class="btn --solid --medium toBasketToplayer__button--add" href="/basketedit.php?mode=1">${window.Literals.toBasket.goToCart}</a>`}\n </div>\n </div>\n `;$("body").dialog({content:d,fixed:!1,fitToWindow:!1,animate:!1,width:app_shop.vars.view<3?746:960,wrapperClass:"dialog_wrapper_toBasketToplayer",adaptiveHeight:!0,txtCloseButton:"x"}),$(document).on("click","#toBasketToplayer .toBasketToplayer__button--close",(function(){return $("#dialog_close").trigger("click"),!1})),$(document).on("click",".toBasketToplayer__showMore",(function(a){a.preventDefault();return $(this).addClass("hidden"),$("#toBasketToplayer .toBasketToplayer__product.hidden").removeClass("hidden")}))};$(document).on("click",".controls__button--buy",(function(a){a.preventDefault();const s=$(this),l=s.parents(".product"),c=l.data(),d=[{id:l.attr("data-product_id"),name:l.find(".product__name:not(.pb_additional .product__name)").text(),price:l.find("strong.price:not(.pb_additional strong.price)").text(),maxPrice:l.find("del.price.--max").text(),icon:l.find(".product__icon img").attr("src"),link:l.find(".product__icon").attr("href"),isVirtual:l.hasClass("--virtual")}],p=0!==s.parents(".controls__form").find(":input").length?s.parents(".controls__form").find(":input"):s.parents(".pb_button").find(":input");return toBasket([p],s,"normal",(()=>{toBasketToplayer(d),dataLayers.fn.evAddToCart(c,"icon_callback"),window.updateTemplateAfterBasketChange?.()})),!1})),$(document).on("click",".controls__button--buyMultiple",(function(a){a.preventDefault();const s=$(this);let l=[],c=[],d=[],p=!1;return s.parents(".products__form").find(".basket__product_checkbox").each((function(){if($(this).is(":checked")&&$(this).attr("data-unavailable")&&(p=!0),$(this).is(":checked")&&!$(this).attr("data-unavailable")){const a=$(this).parents(".product"),s={id:a.attr("data-product_id"),name:a.find(".product__name:not(.pb_additional .product__name)").text(),price:a.find("strong.price:not(.pb_additional strong.price)").text(),maxPrice:a.find("del.price.--max").text(),icon:a.find(".product__icon img").attr("src"),link:a.find(".product__icon").attr("href"),isVirtual:a.hasClass("--virtual")},p=a.data();c.push(p),l.push(s),d.push(a.find(".pb_button").find(":input"))}})),0===l.length||toBasket(d,s,"normal",(()=>{toBasketToplayer(l,p),dataLayers.fn.evAddToCart(c,"icon_callback")})),!1}));const addToWishlist=async(a,s)=>{let l;try{if(l=await $.ajax({url:"/basketchange.php",data:{getAjax:!0,mode:2,product:a,size:s},type:"POST",dataType:"json"}),l)return dataLayers.fn.evAddToWishlist?.(a),!0}catch(a){return!1}},removeFromWishlist=async(a,s)=>{let l;try{if(l=await $.ajax({url:"/basketchange.php",data:{getAjax:!0,mode:2,product:a,size:s,change:"empty"},type:"POST",dataType:"json"}),l)return!0}catch(a){return!1}};let toWishlistLoadingHandler=!1;const toWishlist=async a=>{if(toWishlistLoadingHandler)return!1;toWishlistLoadingHandler=!0;const s={icon:'<i class="icon-heart-fill"></i>',emptyIcon:'<i class="icon-heart-1"></i>',success:'<i class="icon-checkmark"></i>',loading:'<i class="icon-spin5 icon-spin"></i>',error:'<i class="icon-x"></i>',clickToAddTitle:window.Literals.wishlist.clickToAdd,clickToRemoveTitle:window.Literals.wishlist.clickToRemove,clickToAddText:window.Literals.wishlist.clickToAddText,clickToRemoveText:window.Literals.wishlist.clickToRemoveText},l=$(".menu_links__link--wishlist span"),c=Number(l.text()),d=a.parents(".wishlist").find(".wishlist__link"),p=d.next(".wishlist__sizes-wrapper"),h=a.hasClass("wishlist__link--active")||a.hasClass("wishlist__size--active"),m=a.hasClass("wishlist__size"),_=a.attr("data-id"),g=a.attr("data-type"),y=d.find(".wishlist__text").length;function addDynamicInfo(a,s){y?d.html(`${a} <span class="wishlist__text">${s}</span>`):d.html(a)}if(addDynamicInfo(s.loading,s.clickToRemoveText),d.addClass("disabled"),h){return await removeFromWishlist(_,g)&&(addDynamicInfo(s.success,s.clickToRemoveText),l.text(c-1),m&&(a.removeClass("wishlist__size--active"),a.attr("title",s.clickToAddTitle)),setTimeout((()=>{0===p.length||1===p.length&&0===p.find(".wishlist__size--active").length?(addDynamicInfo(s.emptyIcon,s.clickToAddText),d.removeClass("wishlist__link--active"),d.attr("title",s.clickToAddTitle)):(d.html(s.icon),d.addClass("wishlist__link--active"),d.attr("title",s.clickToRemoveTitle)),toWishlistLoadingHandler=!1,d.removeClass("disabled")}),1500)),!1}await addToWishlist(_,g)&&(addDynamicInfo(s.success,s.clickToRemoveText),l.text(c+1),m&&(a.addClass("wishlist__size--active"),a.attr("title",s.clickToRemoveTitle)),setTimeout((()=>{addDynamicInfo(s.icon,s.clickToRemoveText),d.addClass("wishlist__link--active"),d.attr("title",s.clickToRemoveTitle),toWishlistLoadingHandler=!1,d.removeClass("disabled")}),1500))};app_shop.run((function(){$(document).on("mouseenter",".no-touch .wishlist",(function(){$(this).find("> a").addClass("wishlist__link--open")})).on("mouseleave",".no-touch .wishlist",(function(){$(this).find("> a").removeClass("wishlist__link--open")})),$(document).on("click",".touch .wishlist",(function(){$(this).find("> a").toggleClass("wishlist__link--open")})),$(document).on("click",".wishlist__link",(function(){const a=$(this);return a.next().is(".wishlist__sizes-wrapper")?(app_shop.vars.view<3&&a.toggleClass("wishlist__link--open"),!1):(toWishlist(a),!1)})),$(document).on("click",".wishlist__size",(function(){const a=$(this);return toWishlist(a),!1}))}),"all","body");const wishlistProducts=[];
1iaiGet.wishlist((function(a){if(!a.Wishlist.response.attributes)return!1;const s=$("#menu_links_wishlist .menu_links__link--wishlist span"),l=a.Wishlist.response.attributes.count;s.text(l);const c=a.Wishlist.response.product;c&&c.forEach((a=>{const s=a.attributes.id,l=a.size.attributes.type;wishlistProducts.push({id:s,sizeType:l})}))}));const wishlistAfterAjaxCallback=()=>{wishlistProducts&&wishlistProducts.forEach((({id:a,sizeType:s})=>{let l;l="uniw"===s?$(`.wishlist__link[data-id="${a}"][data-type="${s}"]`):$(`.wishlist__size[data-id="${a}"][data-type="${s}"]`);const c=l.parents(".wishlist").find(".wishlist__link");l.hasClass("wishlist__size")&&(l.addClass("wishlist__size--active"),l.attr("title",window.Literals.wishlist.clickToRemove)),c.addClass("wishlist__link--active"),c.attr("title",window.Literals.wishlist.clickToRemove)}))};app_shop.run((function(){$(document).on("click",".step3d #return_go_next",(function(){if($(".step3d .order1_delitem_radio input").size()&&!$(".step3d .order1_delitem_radio input:checked").size())return Alertek.show_alert(window.Literals.rma.chooseShippingMethod),!1}))}),"all",".step3d #return_go_next"),app_shop.run((function(){$(document).on("click",".step3d div.return_delitem",(function(){$(".step3d div.return_delitem.active").removeClass("active"),$(this).addClass("active").find("input.order1_delitem_radio").prop("checked",!0)}))}),"all",".step3d div.return_delitem"),app_shop.run((function(){$("a.show_status").click((function(){return $("body").dialog({content:'<div style="text-align:left">'+$(this).next().html()+"</div>",fixed:!1,fitToWindow:!1}),$("<h2>"+$(this).text()+"</h2>").prependTo("#dialog_wrapper"),$('<div id="ui-dialog_button"><button class="btn --solid" onclick="$(\'#dialog_close\').click();">'+window.Literals.prepaid.closeWindow+"</button></div>").appendTo("#dialog_wrapper"),!1})),$("a.orderdetails_info_cancel").removeAttr("onclick"),$("a.orderdetails_info_cancel").click((function(){return thisHref=$(this).attr("href"),$("#menu_notice").dialog({wrappContent:"true"}),$("#menu_notice button.prepaid_confirm").click((function(){self.location.href=thisHref})),!1}))}),"all",".prepaid-buttons"),app_shop.run((function(){$(document).on("click","div.return_type.disabled_inpost",(function(){Alertek.show_alert(window.Literals.rma.phoneNumberIsRequired)}))}),"all","div.return_type.disabled_inpost"),app_shop.run((function(){$(document).on("click","div.return_type.choose_return_type:not(.disabled_inpost)",(function(){var a=$(this).find("input.return_type").val();$(this).addClass("current_method"),$(".return_type.choose_return_type.active").removeClass("active"),$(this).addClass("active").find("input.return_type").prop("checked",!0),$(".return_type.choose_return_type:not(.current_method) .return_methods_param > input, div.return_delitem_items:not(#delitem_item"+a+") .return_methods_param > input").prop("checked",!1),$("div.return_delivery_form, div.return_delitem_items").hide(),$("#delitem_item"+a).size()&&($("div.return_delivery_form, #delitem_item"+a).show(),$("#delitem_item"+a).find("div.return_delitem:first").click()),$(this).removeClass("current_method")}))}),"all","div.return_type.choose_return_type"),app_shop.run((function(){$(document).on("click",".step3 #return_go_next",(function(a){if($(".step3 div.return_type input").size()){if(!$(".step3 div.return_type input:checked").size())return a.preventDefault(),Alertek.show_alert(window.Literals.rma.chooseReturnMethod),!1;if($(".active .return_methods_param > input").length&&!$(".active .return_methods_param > input:checked").length)return a.preventDefault(),Alertek.show_alert(window.Literals.rma.selectParametrOfMethod),!1;$("div.progress_bar_wrapper").removeClass("pb_step3").addClass("pb_step4")}}))}),"all",".step3 #return_go_next"),app_shop.run((function(){$(document).on("click",".step3 div.return_delitem",(function(){$(".step3 div.return_delitem.active").removeClass("active"),$(this).addClass("active").find("input.order1_delitem_radio").prop("checked",!0),$(".step3 div.return_delitem:not(.active) .return_methods_param > input").prop("checked",!1)}))}),"all",".step3 div.return_delitem"),app_shop.run((function(){var a=!0;function confirmReturnParam(s){$("#ui-dialog").remove(),dialogHTML="",dialogHTML+='<div id="menu_notice" class="--rma"><strong>'+s.find(".return_confirmation_message").html()+"</strong></div>",$('<div id="ui-dialog">'+dialogHTML+"</div>
1").appendTo("body"),$("<h2>"+window.Literals.rma.doYouConfirm+"</h2>").prependTo("#menu_notice"),$("#ui-dialog").dialog({wrappContent:!0,fixed:!1,fitToWindow:!1,beforeShow:function(){$('<div id="ui-dialog_button"><button onclick="remove_param = false;$(\'#dialog_close\').click();">'+window.Literals.rma.confirm+"</button></div>").appendTo("#dialog_wrapper")},afterCloseFn:function(){a&&function unsetMethodParam(){$(".active .return_methods_param > input").prop("checked",!1)}(),a=!0}})}$(document).on("change",".return_methods_param > input",(function(){if($(this).parents().hasClass("disabled_inpost"))return $(this).prop("checked",!1),!1;$(this).prop("checked")&&$(this).parent().find(".return_confirmation_message").length&&confirmReturnParam($(this).parent())}))}),"all",".return_methods_param"),app_shop.run((function(){$(".return_type.active").click()}),"all",".return_type"),app_shop.run((function returnsOpenValidate(){$("#returns_open__number_input, #returns_open__email_input").on("input",(function returnsOpenValidateInput(){clearTimeout(app_shop.formControl.timeHandle);const a=$(this);app_shop.formControl.timeHandle=setTimeout((function returnsOpenValidateInputimeout(){app_shop.formControl.validate(a)}),500)})),$(".returns_open__button").on("click",(function returnsOpenValidateButton(){return app_shop.formControl.checkForm($(this).parents(".returns_open__form"))}))}),"all",".returns_open"),app_shop.run((function(){goNext=function(){var a=!1;return $("tr.productslist_item").each((function(){$(this).find(".productslist_product_action input:checked").size()&&0!=$(this).find('.productslist_product_quantity input[type="text"]').val()&&(a=!0)})),a},Basketedit.getValues=function(a){var s=a.parent(),l=s.find("input[name=data_amount]").val(),c=s.find("input[name=data_unit_sellby]").val(),d=s.find("input[name=data_unit]").val();return{precision:s.find("input[name=data_unit_precision]").val(),unit_sellby:c,unit:d,amount:l}},Basketedit.number_check=function(a,s=!0){var l=a,c=Basketedit.getValues(a),d=c.unit_sellby||1,p=c.unit,h=c.precision,m=c.amount,_=l.val();_=(_=parseFloat(_)).toFixed(6),_=parseFloat(_);var g=l.parents("tr.productslist_item").find("td.productslist_product_action input");if(s&&(_>0?g.prop("checked",!0):g.prop("checked",!1)),"1"==d)Math.round(_)>parseInt(m)&&isFinite(m)&&"-1"!=m?(Alertek.show_alert(window.Literals.rma.maxProductsToReturn+" "+m+" "+p),l.val(m)):l.val(Basketedit.roundNumber(Basketedit.if_isanumber(_,d),h));else if(h=parseInt(h),_>=parseInt(m)&&isFinite(m)&&"-1"!=m)Alertek.show_alert(window.Literals.rma.maxProductsToReturn+Basketedit.roundNumber(Math.floor(m/d)*d,h)+" "+p),l.val(Basketedit.roundNumber(Math.floor(m/d)*d,h));else{var y,v=Math.abs(Math.floor((_/d).toFixed(6)));y=v?parseFloat((v*d).toFixed(6))==_?(v*d).toFixed(h):v*d<_?((v+1)*d).toFixed(h):Math.abs((Math.ceil(_)*d).toFixed(h)):d,l.val(y)}},$(document).on("click","td.productslist_product_action input",(function(){var a=$(this).parents("tr.productslist_item").find('td.productslist_product_quantity input[type="text"]');if($(this).is(":checked")){var s=a.nextAll('input[name="data_unit_sellby"]').val();a.val(s),Basketedit.number_check(a,!1)}else a.val(0)})),$(".productslist_product_action input").not(":checked").size()?($(".step2 .select_all").html(window.Literals.rma.selectAllProducts),$(".step2 .select_all").removeClass("icon-minus").addClass("icon-plus")):($(".step2 .select_all").html(window.Literals.rma.deselectAllProducts),$(".step2 .select_all").removeClass("icon-plus").addClass("icon-minus")),$(document).on("click",".step2 .select_all",(function(){return $(".productslist_product_action input").not(":checked").size()?($(".productslist_product_action input").prop("checked",!0),$(".step2 .select_all").html(window.Literals.rma.deselectAllProducts),$(".step2 .select_all").removeClass("icon-plus").addClass("icon-minus")):($(".productslist_product_action input").prop("checked",!1),$(".step2 .select_all").html(window.Literals.rma.selectAllProducts),$(".step2 .select_all").removeClass("icon-minus").addClass("icon-plus")),$("td.productslist_product_action input").each((function(){var a=$(this).parents("tr.productslist_item").find('td.productslist_product_quantity input[type="text"]');if($(this).is(":checked")){var s=a.nextAll('input[name="data_unit_sellby"]').val();a.val(s),Basketedit.number_check(a,!1)}else a.val(0)})),!1})),$(document).on("click",".step2 #return_go_next",(function(){if(!goNext())return $(".rma_products_page").length?Alertek.show_alert(window.Literals.rma.selectProductsForComplain):Alertek.show_alert(window.Literals.rma.selectProductsToReturn),!1;$("div.progress_bar_wrapper").removeClass("pb_step2").addClass("pb_step3")})),$("tr.productslist_comment a.addMoreFiles").unbind().on("click",(function(){var a=$(this).parents(".prodl_comment_right").find("div.prodl_comment_foto").last();return a.after(a.clone()),a.next().find("input").val(""),!1}))}
1),"all",".returns_productslist"),app_shop.run((function(){$('.step5 [data-validation="bank_account"]').keyup()}),"all",'.step5 [data-validation="bank_account"]'),app_shop.run((function(){$(document).on("click",".step4a div.pickupl_return",(function(){$(".step4a div.pickupl_return").removeClass("active"),$(this).addClass("active").find("input").prop("checked",!0)}))}),"all",".step4a div.pickupl_return"),app_shop.run((function(){$(document).on("click",".step4a #return_go_next",(function(){if(!$(".step4a div.pickupl_return input:checked").size())return Alertek.show_alert("Wybierz adres punktu zwrotu"),!1;$("div.progress_bar_wrapper").removeClass("pb_step4").addClass("pb_step5")}))}),"all",".pickup_return_list_form .pickupl_return"),app_shop.run((function(){$(".rma_af_input").find("input, textarea").on("input",(function(){clearTimeout(app_shop.formControl.timeHandle),obj=$(this),app_shop.formControl.timeHandle=setTimeout((function(){app_shop.formControl.validate(obj)}),500)})),$(".rma_af_buttons > button").on("click",(function(){return app_shop.formControl.checkForm($(this).parents("form"))}))}),"all",".rma_added_files"),app_shop.run((function(){$(document).on("click",".step2 .saveQuantity",(function(){return $(".productslist_product_action input").prop("checked",!0),!1}))}),"all",".step2 .saveQuantity"),app_shop.run((function(){$(document).on("click",".step1 a.orders_more",(function(){return $(".step1").hide(),$(".step2").show(),!1}))}),"all",".step1 a.orders_more"),app_shop.run((function(){$(document).on("click",".step2 input.return_product",(function(){$(".step2 textarea.return_comment").toggle()}))}),"all",".step2 input.return_product"),app_shop.run((function(){$(document).on("click",".step5a div.return_form",(function(){$(".step5a div.return_form").removeClass("active"),$(this).addClass("active").find("input").prop("checked",!0),$(this).is("#disable_button")&&$("#disable_button input.return_form").val().length<3&&$("#return_go_next").prop("disabled","disabled").css("opacity","0.6")}))}),"all",".step5a div.return_form"),app_shop.run((function(){$(document).on("click","label.return_type",(function(){$("label.return_type.active").removeClass("active"),$(this).addClass("active")}))}),"all","label.return_type"),app_shop.run((function(){$("td.rma-remarks").each((function(){$(this).attr("colspan",$(".orders.table-stroke thead th").size()-1)}))}),"all","td.rma-remarks"),app_shop.run((function(){$("a.rma_attach_file").on("click",(function(){$(this).closest("form").find("div.rma_af_files").show(),$(this).hide()}))}),"all","a.rma_attach_file"),app_shop.run((function(){$((function(){$("#disable_button input.return_form").keyup((function(){$("#disable_button input.return_form").val().length<3?$("#return_go_next").prop("disabled","disabled").css("opacity","0.6"):$("#return_go_next").prop("disabled",!1).css("opacity","1")}))}))}),"all","#disable_button input.return_form"),app_shop.run((function rmaOpenValidate(){$("#rma_open__number_input, #rma_open__email_input").on("input",(function rmaOpenValidateInput(){clearTimeout(app_shop.formControl.timeHandle);const a=$(this);app_shop.formControl.timeHandle=setTimeout((function rmaOpenValidateInputimeout(){app_shop.formControl.validate(a)}),500)})),$(".rma_open__button").on("click",(function rmaOpenValidateButton(){return app_shop.formControl.checkForm($(this).parents(".rma_open__form"))}))}),"all",".rma_open"),app_shop.run((function(){$(".return_form").find("input, textarea").on("input",(function(){clearTimeout(app_shop.formControl.timeHandle),obj=$(this),app_shop.formControl.timeHandle=setTimeout((function(){app_shop.formControl.validate(obj)}),500)})),$(".step5 #return_go_next").on("click",(function(){if(!$(".return_form.form-control.validate").parent().is(".has-success")&&$(".return_form.form-control.validate").parents(".return_form").is(".active"))return app_shop.formControl.checkForm($(this).parents("form")),!1;$("div.progress_bar_wrapper").removeClass("pb_step5").addClass("pb_step6")}))}),"all",".return_form"),app_shop.run((function(){$(document).on("click",".step5 div.return_form",(function(){$(".step5 div.return_form").removeClass("active"),$(this).addClass("active").find("input").prop("checked",!0)}))}),"all",".step5 div.return_form"),app_shop.fn.fixed_scroll=(a,s)=>{let l=window.scrollY;const c=window;window.addEventListener("scroll",(function(d){c.scrollY>l&&c.scrollY>0?!a.classList.contains(s)&&a.classList.add(s):a.classList.contains(s)&&a.classList.remove(s),l=c.scrollY}))},app_shop.run((function(){app_shop.fn.fixed_scroll(document.querySelector("html"),"scroll")}),[1,2],"#container"),app_shop.run((function(){let a=null;$(".--scrollSnap").on("scroll",(function(){const s=$(this);clearTimeout(a),a=setTimeout((function timeHandleTimeoutFn(){s.find("img:not(.b-loaded)").length&&app_shop.vars.bLazy&&app_shop.vars.bLazy.revalidate()}),500)}))}),[1,2],".--scrollSnap",!0),app_shop.run((function redirectUserToBasketIfLoggedBySoMe(){-1==window.location.href.indexOf("client-new.html")&&(localStorage.getItem("userWantsToLoginFromBasketS
1oMe")&&app_shop.vars.logged&&(location.href=app_shop.urls.basket),localStorage.removeItem("userWantsToLoginFromBasketSoMe"))}),"all","body"),app_shop.run((function addEventListenerToSoMeButtonsInToplayer(){$(".login-toplayer__some-button").length&&$(".login-toplayer__some-button").click((function(a){a.preventDefault(),localStorage.setItem("userWantsToLoginFromBasketSoMe",!0),location.href=$(this).data("redirect")}))}),"all",".login-toplayer__some-button");const SinglePromotionProduct={data:()=>({product:null,loading:!1,countdown:{days:0,hours:0,minutes:0,seconds:0},countdownInterval:null,promotion:window.singlePromotionProduct||{},literals:window.Literals.specialPromotions}),computed:{promotionStartDate(){return this.promotion?.promotionStart?new Date(this.promotion.promotionStart):null},promotionEndDate(){return this.promotion?.promotionEnd?new Date(this.promotion.promotionEnd):null},hasValidPromotionDates(){return this.promotionStartDate instanceof Date&&!Number.isNaN(this.promotionStartDate.getTime())&&this.promotionEndDate instanceof Date&&!Number.isNaN(this.promotionEndDate.getTime())},isPromotionActive(){if(!this.hasValidPromotionDates)return!1;const a=new Date;return a>=this.promotionStartDate&&a<=this.promotionEndDate},isPromotionEnded(){if(!this.hasValidPromotionDates)return!1;return new Date>this.promotionEndDate},isProductAvailable(){return"In Stock"===this.product?.availability},oldPriceFormatted(){return this.product?.prices?.normalprice_formatted||""},discountedPriceFormatted(){return this.product?.prices?.worth_formatted||""},promotionTitle(){return this.promotion?.title||"Weekly Hot Deal"},discountLabel(){return this.promotion?.discount?`-${this.promotion.discount}% ${this.literals.off}`:""}},methods:{async fetchProductFromAjaxGet(a){const s={Product:{format:"json",params:{products:String(a)}}},l=await fetch("/ajax/get.php",{method:"POST",credentials:"same-origin",cache:"no-cache",headers:{Accept:"application/json, text/javascript","Content-Type":"application/x-www-form-urlencoded"},body:"request="+encodeURIComponent(JSON.stringify(s))+"&getAjax=true"});if(!l.ok)throw new Error(`Product request failed: ${l.status}`);const c=await l.json();if(c?.Product?.error)throw new Error("Error fetching product data");const d=c?.Product?.response?.product,p=Array.isArray(d)?d[0]:d;if(!p?.attributes?.id)throw new Error("Error, no product on this shop");return p},getProductSize(a){const s=a?.sizes?.size;return Array.isArray(s)?s[0]?.attributes?.type||s[0]?.attributes?.name||"uniw":s?.attributes?.type||s?.attributes?.name||"uniw"},getProductAvailability(a){const s=a?.sizes?.size;return Array.isArray(s)?s.some((a=>"enable"===a?.availability?.attributes?.status))?"In Stock":"Out of Stock":"enable"===s?.availability?.attributes?.status?"In Stock":"Out of Stock"},async loadProduct(){if(this.promotion?.productId){this.loading=!0;try{const a=await this.fetchProductFromAjaxGet(this.promotion.productId);this.product={id:a.attributes.id,name:a.name||"",brand:a.firm?.attributes?.name||"",link:a.attributes.link||"#",image:a.icon||a.icon_small||"",prices:a.price?.attributes||{},size:this.getProductSize(a),availability:this.getProductAvailability(a)}}catch(a){console.error("[SinglePromotionProduct] product error:",a),this.product=null}finally{this.loading=!1}}},startCountdown(){this.stopCountdown(),this.updateCountdown(),this.countdownInterval=setInterval((()=>{this.updateCountdown()}),1e3)},stopCountdown(){this.countdownInterval&&(clearInterval(this.countdownInterval),this.countdownInterval=null)},resetCountdown(){this.countdown.days=0,this.countdown.hours=0,this.countdown.minutes=0,this.countdown.seconds=0},updateCountdown(){if(!this.hasValidPromotionDates)return this.stopCountdown(),void this.resetCountdown();const a=new Date,s=this.promotionEndDate-a;if(s<=0)return this.stopCountdown(),void this.resetCountdown();this.countdown.days=Math.floor(s/864e5),this.countdown.hours=Math.floor(s%864e5/36e5),this.countdown.minutes=Math.floor(s%36e5/6e4),this.countdown.seconds=Math.floor(s%6e4/1e3)},formatNumber(a){const s=Number(a)||0;return s<10?`0${s}`:String(s)}},async mounted(){await this.loadProduct(),this.product&&this.isProductAvailable&&this.isPromotionActive&&this.startCountdown()},beforeDestroy(){this.stopCountdown()},beforeUnmount(){this.stopCountdown()},template:'\n <div \n class="single-promotion-product"\n :class="{ \n \'load-content\': loading,\n \'--active\': isPromotionActive,\n \'--ended\': isPromotionEnded\n }"\n v-if="product && isProductAvailable && isPromotionActive"\n data-list="single_promotion_product"\n :data-product_id="product.id"\n :data-product_name="product.name"\n :data-product_availability="product.availability"\n :data-product_price="product.prices.value"\n :data-product_brand="product.brand"\n >\n <div class="single-promotion-product__inner d-flex flex-column flex-md-row align-items-center justify-content-center col-12 rounded-lg mb-5">\n \n <p class="single-promotion-product__heading d-md-none m-0 text-center font-7 font-700">\n {{ promotionTitle }}\n </p>\n\n <div class="single-promotion-product__product-card d-flex flex-column align-items-center col-12 col-md-6 rounded-lg p-3 bg-white">\n <p class="single-promotion-product__heading d-none d-md-inline m-0 text-center font-7 font-700">\n {{ promotionTitle }}\n </p>\n\n <a\n class="single-promotion-product__image-link d-flex align-items-center justify-content-center"\n :href="product.link"\
1n :title="product.name"\n >\n <img\n class="single-promotion-product__image"\n :src="product.image"\n :alt="product.name"\n draggable="false"\n >\n </a>\n\n <div class="single-promotion-product__prices d-flex flex-row align-items-center">\n <strong class="single-promotion-product__price font-6 font-700 pr-2">\n {{ discountedPriceFormatted }} \n </strong>\n\n <del\n v-if="oldPriceFormatted"\n class="single-promotion-product__old-price font-5"\n >\n {{ oldPriceFormatted }}\n </del>\n </div>\n\n <p class="single-promotion-product__name m-0 text-center font-4 font-600">\n {{ product.name }}\n </p>\n\n <div\n v-if="discountLabel"\n class="single-promotion-product__discount d-flex align-items-center justify-content-center font-6 font-700 rounded-sm"\n >\n {{ discountLabel }}\n </div>\n </div>\n\n <div class="single-promotion-product__side d-flex flex-column align-self-stretch col-12 col-md-6 p-0">\n <div class="single-promotion-product__counter d-flex flex-column align-items-center justify-content-center col-12 rounded-lg p-2">\n <p class="single-promotion-product__counter-title m-0 font-3 font-5 font-600 pb-2">\n {{ literals.endsIn }}\n </p>\n\n <div class="single-promotion-product__counter-list d-flex flex-row justify-content-center">\n <div class="single-promotion-product__counter-item d-flex flex-column align-items-center">\n <span class="single-promotion-product__counter-number d-flex align-items-center justify-content-center --font-3 font-700 rounded-md">\n {{ formatNumber(countdown.days) }}\n </span>\n <p class="single-promotion-product__counter-label font-2 font-md-5 m-0 text-center">\n {{ literals.days }}\n </p>\n </div>\n\n <div class="single-promotion-product__counter-item d-flex flex-column align-items-center">\n <span class="single-promotion-product__counter-number d-flex align-items-center justify-content-center --font-3 font-700 rounded-md">\n {{ formatNumber(countdown.hours) }}\n </span>\n <p class="single-promotion-product__counter-label font-2 font-md-5 m-0 text-center">\n {{ literals.hours }}\n </p>\n </div>\n\n <div class="single-promotion-product__counter-item d-flex flex-column align-items-center">\n <span class="single-promotion-product__counter-number d-flex align-items-center justify-content-center --font-3 font-700 rounded-md">\n {{ formatNumber(countdown.minutes) }}\n </span>\n <p class="single-promotion-product__counter-label font-2 font-md-5 m-0 text-center">\n {{ literals.minutes }}\n </p>\n </div>\n\n <div class="single-promotion-product__counter-item d-flex flex-column align-items-center">
1\n <span class="single-promotion-product__counter-number d-flex align-items-center justify-content-center --font-3 font-700 rounded-md">\n {{ formatNumber(countdown.seconds) }}\n </span>\n <p class="single-promotion-product__counter-label font-2 font-md-5 m-0 text-center">\n {{ literals.seconds }}\n </p>\n </div>\n </div>\n </div>\n\n <button\n class="cms-buy easy-add-to-cart btn --solid --secondary --medium"\n :title="literals.addToBasketTitle"\n :data-product-id="product.id"\n >\n {{ literals.addToBasket }}\n </button>\n </div>\n </div>\n </div>\n '},singlePromotionProductRoot=document.querySelector("#single-promotion-product");singlePromotionProductRoot&&window.Vue&&Vue.createApp(SinglePromotionProduct).mount(singlePromotionProductRoot),app_shop.graphql||(app_shop.graphql={}),app_shop.graphql.getClientData=async()=>{const a=JSON.stringify({query:"query {\n\t\t\tclient {\n\t\t\t\tid\n\t\t\t\tlogin\n\t\t\t\tdeliveryAddresses {\n\t\t\t\t\tid\n\t\t\t\t\tcountry {\n\t\t\t\t\t\tid\n\t\t\t\t\t\tiso\n\t\t\t\t\t}\n\t\t\t\t\tused\n\t\t\t\t\teditable\n\t\t\t\t\tisDefault\n\t\t\t\t}\n\t\t\t\tsettingsAssociated {\n\t\t\t\t\tdefaultDeliveryAddressId\n\t\t\t\t}\n\t\t\t}\n }"});try{const s=await fetch(app_shop?.urls?.graphql||"/graphql/v1/",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:a});return await s.json()}catch(a){return console.error("AJAX getClientData() Error:",a),!1}};const toBasketRegionRestrictions=function toBasketRegionRestrictions(){const a=this;return this.vars={userRegion:null,storageUserRegionKey:"USER_REGION_ID",storageUserProductsKey:"USER_PRODUCTS",storageOnceOrderKey:"USER_ONCEORDER"},this.getUserRegion=async()=>{try{const s="true"==sessionStorage.getItem(a.vars.storageOnceOrderKey);if(s&&sessionStorage.setItem(a.vars.storageOnceOrderKey,!1),a.vars.userRegion=sessionStorage.getItem(a.vars.storageUserRegionKey),a.vars.userRegion&&!s)return a.vars.userRegion;if(!app_shop.vars.logged)return sessionStorage.getItem(a.vars.storageUserRegionKey);const l=await app_shop.graphql.getClientData(),c=l?.data?.client;if(!c)return!1;const d=c.deliveryAddresses.find((({isDefault:a})=>!0===a));return!!d&&(a.vars.userRegion=d.country.id,sessionStorage.setItem(a.vars.storageUserRegionKey,a.vars.userRegion),a.vars.userRegion)}catch(a){return console.error(a),!1}},this.getRegionName=s=>app_shop.vars.logged?toBasketRegionRestrictionsConfig.regionIds[a.vars.userRegion]||"":toBasketRegionRestrictionsConfig.regionIds[sessionStorage.getItem(a.vars.storageUserRegionKey)],this.setUserRegionSessionStorageKey=()=>{"onceorder"===document.getElementsByName("operation")[0].value?sessionStorage.setItem(a.vars.storageOnceOrderKey,!1):sessionStorage.setItem(a.vars.storageOnceOrderKey,!0),sessionStorage.setItem(a.vars.storageUserRegionKey,$("#client_region option").filter(":selected").attr("value"))},this.isBrandRestrictionsExists=s=>{try{const l=toBasketRegionRestrictionsConfig.brands.find((({name:a})=>a.toLowerCase()==s.toLowerCase()));if(!l)return!1;const{countries:c}=l,d=a.getRegionName();return!!c.includes(d)}catch(a){return console.error(a),!1}},this.renderBasketRestrictions=()=>{let s=!1;document.querySelectorAll(".basket__block").forEach((l=>{if(l.classList.contains("product--restricted"))return!1;const{product_brand:c}=l.dataset;if(!c)return!1;if(!a.isBrandRestrictionsExists(c))return!1;const d=document.createElement("span");d.classList.add("basket__restricted"),d.innerHTML=`${window.Literals.toBasket.regionRestricted}`,l.querySelector(".basket__item.--name").appendChild(d),l.classList.add("product--restricted"),s=!0})),s&&document.querySelector(".total__buttons").remove()},this.rerenderProjectorButtons=()=>{const s=document.querySelector("#projector_form");if(!s)return!1;if(s.classList.contains("product--restricted"))return!1;const{product_brand:l}=s.dataset;if(!l)return!1;if(!a.isBrandRestrictionsExists(l))return!1;s.querySelector("#projector_buy_section").innerHTML=`\n\t\t\t<span class="projector__restricted">${window.Literals.toBasket.regionRestricted}</span>\n\t\t`,s.classList.add("product--restricted")},this.rerenderToBasketButtons=()=>{document.querySelectorAll(".product").forEach((s=>{if(s.classList.contains("product--restricted"))return!1;const{product_brand:l}=s.dataset;if(!l)return!1;if(!a.isBrandRestrictionsExists(l))return!1;s.querySelector(".product__controls").innerHTML=`\n\t\t\t\t<span class="controls__restricted">${window.Literals.toBasket.regionRestricted}</span>\n\t\t\t`,s.classList.add("product--restricted")}))},this.collectAndStoreProductBrands=()=>{let s=[];$(".basket__block:not(.--labels)").each((function(){s.push($(this).data("product_brand"))})),sessionStorage.setItem(a.vars.storageUserProductsKey,s)},this.checkUserAtOrder=()=>{try{const s="true"==sessionStorage.getItem(a.vars.storageOnceOrderKey);let l=sessionStorage.getItem(a.vars.storageUserProductsKey).split(","),c=!1,d=!1;l.forEach((function(a,s){c=toBasketRegionRestrictionsConfig.brands.find((({name:s})=>s.toLowerCase()==a.toLowerCase()))})),Object.keys(toBasketRegionRestrictionsConfig.regionIds).includes(sessionStorage.getItem(a.vars.storageUserRegionKey))&&
1(d=!0),(s||c&&d)&&(window.location.href="/basketedit.php")}catch(a){console.log(a)}},this.init=async()=>{if("undefined"==typeof toBasketRegionRestrictionsConfig)return!1;const{brands:s}=toBasketRegionRestrictionsConfig;if(!s.length)return!1;if(!await a.getUserRegion())return!1;a.rerenderToBasketButtons(),document.querySelector("#projector_prices_wrapper")&&a.rerenderProjectorButtons(),document.querySelector("#Basket")&&a.renderBasketRestrictions()},{init:this.init,setUserRegionSessionStorageKey:this.setUserRegionSessionStorageKey,collectAndStoreProductBrands:this.collectAndStoreProductBrands,checkUserAtOrder:this.checkUserAtOrder}},toBasketRegionRestrictionsObj=new toBasketRegionRestrictions;function simple_tooltip(a,s,l){var c="",d="";$(document).on("mouseover",a,(function(){$(this).next().is(".tooltipContent")?c=$(this).next().html():$(this).prop("title")&&(c=$(this).prop("title"),$(this).removeAttr("title")),$("#"+s).remove(),clearTimeout(d),$("body").append("<div style='display:none;' class='"+s+"' id='"+s+"'><p></p></div>"),$("#"+s).hover((function(){clearTimeout(d)}),(function(){$("#"+s).remove()})),""!=c&&" "!=c&&"undefined"!=c&&($("#"+s).find("p").html(c),$("#"+s).fadeIn(400))})),$(document).on("mousemove",a,(function(a){var c,d,p=$(window).scrollTop(),h=$(window).width(),m=15;l||!1?(c=a.pageX-$("#"+s).outerWidth(!0)-m<=0?a.pageX+m:a.pageX-m-$("#"+s).outerWidth(!0),d=p+30>=a.pageY-$("#"+s).height()?p+m:a.pageY-$("#"+s).outerHeight(!0)-m):(c=h-30>=$("#"+s).width()+a.pageX?a.pageX+m:h-$("#"+s).width()-m,d=p+30>=a.pageY-$("#"+s).height()?p+m:a.pageY-$("#"+s).height()-m),$("#"+s).css({left:c,top:d})})),$(document).on("mouseout",a,(function(){$(this).next().is(".tooltipContent")||$(this).prop("title",c),d=setTimeout((function(){$("#"+s).remove()}),500)})),$(document).bind("touchstart",(function(l){0===$(l.target).closest("#"+s).length&&0===$(l.target).closest(a).length&&$("#"+s).length&&$("#"+s).remove()}))}app_shop.run((function(){toBasketRegionRestrictionsObj?.init()}),"all",".product"),app_shop.run((function(){toBasketRegionRestrictionsObj?.init()}),"all","#projector_prices_wrapper",!0),app_shop.run((function(){toBasketRegionRestrictionsObj?.init(),toBasketRegionRestrictionsObj?.collectAndStoreProductBrands(),$(".total__buttons .btn").on("click",(function(a){toBasketRegionRestrictionsObj?.collectAndStoreProductBrands()}))}),"all","#Basket"),app_shop.run((function(){toBasketRegionRestrictionsObj?.checkUserAtOrder()}),"all",".order1_page, place-order_page"),app_shop.run((function(){simple_tooltip(".showTip","n59581_tooltip_dictionary"),simple_tooltip("#contentcolumn_order1 .showTip_order1","n59581_tooltip"),simple_tooltip("#basketedit_productslist .showTip_basket","n59581_tooltip"),simple_tooltip("span.btn_note","n59581_instalment_note")}),"all","body"),app_shop.run((function(){$(".topbar .--cleanList").slick({infinite:!0,arrows:!0,prevArrow:`<a class="slider__arrow --prev" href="" aria-label="${window.Literals.aria.left}"><i class="icon-left"></i></a>`,nextArrow:`<a class="slider__arrow --next" href="" aria-label="${window.Literals.aria.right}"><i class="icon-right"></i></a>`,dots:!1,slidesToShow:1,slidesToScroll:1,autoplay:!0,speed:700,autoplaySpeed:2e3,vertical:!0}),$(".topbar .close").on("click",(function(){sessionStorage.setItem("topbar_closed","1"),$(".topbar").remove()})),sessionStorage.getItem("topbar_closed")&&$(".topbar").remove()}),"all",".topbar"),app_shop.run((function(){$(document).on("click",(function(a){$(a.target).hasClass("open_toplayer_login")&&(a.preventDefault(),window.popupModal?.closeAll(),$("#dialog_cover,#dialog_wrapper").remove(),$("body").removeClass("dialog_open"),$("body").dialog({content:$("#login-toplayer").clone(!0,!0),fixed:!0,fitToWindow:!1,animate:!1,width:440,wrapperClass:"dialog_wrapper_loginToplayer",adaptiveHeight:!0,txtCloseButton:"x"}),$(".dialog_wrapper_loginToplayer #dialog_close").appendTo(".dialog_wrapper_loginToplayer #dialog_wrapper_sub"),$(".dialog_wrapper_loginToplayer #login-toplayer").removeClass("hidden"),$(".dialog_wrapper_loginToplayer .form-group .form-control,.dialog_wrapper_loginToplayer .f-group .f-control").on("change input focus blur",app_shop.fn.addFocused),$(".service_item").on("click",(function(){$("body").addClass("load-content"),setTimeout((function(){$("body").removeClass("load-content")}),1e4)})))}
1))}),"all",".open_toplayer_login"),app_shop.run((function uiAccordion(){document.addEventListener("click",(function eventDelegation(a){if(a.target.closest(".ui-accordion__label")){a.preventDefault();const l=a.target,c=l.nextElementSibling;if(l.classList.contains("ui-accordion__label--open"))c.style.height="0px",c.addEventListener("transitionend",(()=>{l.classList.remove("ui-accordion__label--open")}),{once:!0});else{l.classList.add("ui-accordion__label--open"),c.style.height="auto";var s=c.clientHeight+"px";c.style.height="0px",setTimeout((()=>{c.style.height=s}),0)}}}))}),"all",".ui-accordion");const WK_Helper=function WK_Helper(){const a=this;return this.vars={storageKey:"COSME-RESULTS",version:"4",groupKey:19437},this.fetchProductsIds=async a=>{const s=JSON.stringify({query:`query {\n products(${a}) {\n results {\n resultCount\n resultPage\n currentPage\n limitPerPage\n }\n products {\n id\n }\n }\n }`});try{const a=await fetch(app_shop?.urls?.graphql||"/graphql/v1/",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:s});return await a.json()}catch(a){return console.error("AJAX fetchProductsIds() Error:",a),!1}},this.getPerfectMatchLabel=()=>{if("undefined"==typeof WK_SECTIONS_CONFIG)return"";const{perfectMatchLabel:a}=WK_SECTIONS_CONFIG.global;return`\n <span class="label --perfectMatch">${a}</span>\n `},this.setPerfectMatchLabel=s=>{if(!s)return!1;const l=a.getClientResults();if(!l)return!1;const c=l[0].categoryProductIds;if(s.classList.contains("search")){return s.querySelectorAll(".product:not(.product--loaded)").forEach((s=>{const{product_id:l}=s.dataset;c.includes(Number(l))&&(0===$(s).find(".label_icons").length&&$(s).find(".product__icon").append('<strong class="label_icons"></strong>'),$(s).find(".label_icons").append(a.getPerfectMatchLabel()),$(s).attr("data-list","label_perfect_match")),$(s).addClass("product--loaded")})),!1}if(s.classList.contains("projector")){const s=document.querySelector("#projector_product_hidden").value;return c.includes(Number(s))&&(0===$(".projector_labels").length&&$("#projector_productname").prepend('<strong class="projector_labels label_icons"></strong>'),0===$(".projector_labels").find(".label.--perfectMatch").length&&$(".projector_labels").append(a.getPerfectMatchLabel()),$("#projector_form").attr("data-list","label_perfect_match-projector")),!1}},this.getPageConfig=a=>{if("undefined"==typeof WK_SECTIONS_CONFIG)return!1;const s=WK_SECTIONS_CONFIG[a];return void 0!==s&&s},this.getRandomProducts=a=>{const{products:s,limit:l}=a;return s.sort((()=>.5-Math.random())).slice(0,l)},this.getClientResults=()=>{const s=localStorage.getItem(a.vars.storageKey);if(!s)return!1;const l=JSON.parse(s),{version:c}=l[0];return void 0!==c&&c===a.vars.version&&l},this.getProducts=(a=8)=>{const s=this.getClientResults();return!!s&&this.getRandomProducts({products:s[0].categoryProductIds,limit:a})},this.getCategoryProducts=async s=>{const{categoryId:l,limit:c=8}=s;if(!l)return!1;const d=this.getClientResults();if(!d)return!1;const p=d[0].params,h=d[0].selectedGroupTraits,m=Object.keys(p).map((s=>{const l=p[s].filter((l=>s==a.vars.groupKey&&h.includes(l.name)||s!=a.vars.groupKey)).map((a=>Number(a.value)));return{id:Number(s),values:l}})),_=JSON.stringify(m).replace(/"/g,""),g=await this.fetchProductsIds(`searchInput: {parameters: ${_}, navigation: ${Number(l)}}, settingsInput: {limit: 100}`);let{products:y}=g.data.products;const v=[];if(void 0!==y&&y&&y.length){const s=a.getRandomProducts({products:y,limit:c});v.push(...s)}const b=c-v.length;if(b>0){const s=Object.keys(p).map((s=>{const l=p[s].filter((l=>s==a.vars.groupKey&&!h.includes(l.name)||s!=a.vars.groupKey)).map((a=>Number(a.value)));return{id:Number(s),values:l}})),c=JSON.stringify(s).replace(/"/g,""),d=await this.fetchProductsIds(`searchInput: {parameters: ${c}, navigation: ${Number(l)}}, settingsInput: {limit: 50}`),{products:m}=d.data.products;if(void 0!==m&&m&&m.length){const s=a.getRandomProducts({products:m,missingProductsAmout:b});v.push(...s)}}return v||!1},this.hasCosmeProductsInCategory=async a=>{const s=this.getClientResults();if(!s)return!1;const l=s[0].params,c=Object.keys(l).map((a=>{const s=l[a].map((a=>Number(a.value)));return{id:Number(a),values:s}})),d=JSON.stringify(c).replace(/"/g,""),p=await this.fetchProductsIds(`searchInput: {parameters: ${d}, navigation: ${Number(a)}}, settingsInput: {limit: 1}`),{products:h}=p.data.products;return!!h},{getProducts:a.getProducts,getCategoryProducts:this.getCategoryProducts,hasCosmeProductsInCategory:this.hasCosmeProductsInCategory,getPageConfig:a.getPageConfig,getPerfectMatchLabel:a.getPerfectMatchLabel,getClientResults:a.getClientResults,setPerfectMatchLabel:a.setPerfectMatchLabel}},VirtualCosmetologist=new WK_Helper;
1document.addEventListener("click",(function(a){if(!a.target.closest('a[href*="open-zowie-chat"]'))return;a.preventDefault();const s=document.querySelector("zowie-widget"),l=s?.shadowRoot;if(!l)return void console.log("Zowie widget/shadowRoot nie jest dostÄpny");let c=l.querySelector(".chat-button__button");c||(c=[...l.querySelectorAll('button, [role="button"]')].find((a=>{const s=(a.getAttribute("aria-label")||"").toLowerCase(),l=(a.textContent||"").toLowerCase();return s.includes("chat")||l.includes("chat")}))),c?c.click():console.log("Nie znaleziono przycisku otwierajÄ
cego czat Zowie")}));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.