PageSourceSearch

https://erecepty24.pl/wp-content/cache/perfmatters/erecepty24.pl/m…62bd511b683d.dsp-cart.min.js?ver=1790721900

js erecepty24.pl collected 2026-10-02 14:14:37 UTC 41,056 bytes, 69 lines download raw bytes

1var DSP=DSP||{};(function($){const PRODUCT_IDS={WIZYTA:60387,KONSULTACJA:60381,L4:85030,LECZENIE_BOLU:60731,LECZENIE_OTYLOSCI:60728,ANTYKONCEPCJA:61059};const PAGES={WIZYTA:'/wizyta',KONSULTACJA:'/konsultacja-z-lekarzem'};DSP.cart={messageTimeout:null,cartInitialized:!1,cartContents:null,cartFetchPromise:null,init:function(){if(this.cartInitialized)return;this.cartInitialized=!0;this.initializeCart();this.bindFormHandlers()},bindFormHandlers:function(){const self=this;$('.drug-form').on('submit',function(e){e.preventDefault();const $drugForm=$(this);self.addToCartFromForm($drugForm)});$('.ankieta-medyczna').on('submit',function(e){e.preventDefault();const $ankietaForm=$(this);self.processAnkietaForm($ankietaForm)});$('.drug-form-submit').on('click',function(e){e.preventDefault();const $form=$(this).closest('form');$form.submit()});$('.ankieta-form-submit').on('click',function(e){e.preventDefault();const $form=$(this).closest('form');$form.submit()})},processAnkietaForm:function($form){if(!$form||!$form.length){return Promise.reject('Invalid form')}
2var $submitButton=$form.find('.ankieta-form-submit');if($form.data('submitting')){return Promise.resolve()}
3$form.data('submitting',!0);$submitButton.prop('disabled',!0).addClass('loading');if(!$submitButton.find('.spinner-wrapper').length){var spinnerHtml='<div class="spinner-wrapper"><svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>.spinner_5nOS{transform-origin:center;animation:spinner_sEAn .75s infinite linear}@keyframes spinner_sEAn{100%{transform:rotate(360deg)}}</style><path d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z" opacity=".25"/><path d="M10.72,19.9a8,8,0,0,1-6.5-9.79A7.77,7.77,0,0,1,10.4,4.16a8,8,0,0,1,9.49,6.52A1.54,1.54,0,0,0,21.38,12h.13a1.37,1.37,0,0,0,1.38-1.54,11,11,0,1,0-12.7,12.39A1.54,1.54,0,0,0,12,21.34h0A1.47,1.47,0,0,0,10.72,19.9Z" class="spinner_5nOS"/></svg></div>';$submitButton.append(spinnerHtml);$submitButton.find('.spinner-wrapper svg path').css('fill','#fff')}
4var ankietaData={dla_kogo:$form.find('.radio-group-for-whom input:checked').val()||'Dla mnie',dolegliwosci:$form.find('.textarea-symptoms textarea').val(),ciaza:$form.find('.radio-pregnancy input:checked').val()==='Tak'?'Tak':'Nie',choroby:$form.find('.radio-conditions input:checked').val()==='Tak'?'Tak':'Nie',choroby_szczegoly:$form.find('.textarea-conditions-details textarea').val(),operacje:$form.find('.radio-operations input:checked').val()==='Tak'?'Tak':'Nie',operacje_szczegoly:$form.find('.textarea-operations-details textarea').val(),alergie:$form.find('.radio-allergies input:checked').val()==='Tak'?'Tak':'Nie',alergie_szczegoly:$form.find('.textarea-allergies textarea').val(),leki:$form.find('.radio-medications input:checked').val()==='Tak'?'Tak':'Nie',leki_szczegoly:$form.find('.textarea-medications-details textarea').val(),historia_leku:$form.find('.radio-drug-history input:checked').val()==='Tak'?'Tak':'Nie'};var dokumentacjaInput=$form.find('.documentation-upload input[type="text"]');if(dokumentacjaInput.length&&dokumentacjaInput.val()){ankietaData.dokumentacja=dokumentacjaInput.val()}
5$.ajax({url:dsp_ajax.ajax_url,type:'POST',data:{action:'dsp_process_ankieta_form',nonce:dsp_ajax.nonce,ankieta_data:JSON.stringify(ankietaData)},success:(response)=>{if(response.success&&response.data&&response.data.redirect_url){window.location.href=response.data.redirect_url}else{this.showErrorMessage('Wystąpił błąd podczas przetwarzania ankiety.')}},error:()=>{this.showErrorMessage('Wystąpił błąd podczas przetwarzania ankiety.')},complete:()=>{this.resetFormState($form,$submitButton)}})},initializeCart:function(){if($('.wizyta-column__cart').length===0){$('.drug-form, .form-konsultacja').first().after('<div class="wizyta-column__cart"></div>')}
6this.initializeNoticeContainer($('.drug-form, .form-konsultacja').first());this.bindEvents();this.fetchAndUpdateCart().then(()=>{$(document).trigger('dsp_cart_ready',[this.cartContents])});this.initCheckoutButton();this.initTabsHandling();this.handlePageSpecificCart();$(document).on('dsp_request_cart_update',()=>{this.fetchAndUpdateCart()})},initializeNoticeContainer:function($form){if($('.cart-notice').length===0){$form.after('<div class="cart-notice"></div>')}
7if($('.form-limit-notice').length===0){$form.after('<p class="form-limit-notice" style="display:none;">Możesz wybrać do 3 różnych leków</p>')}},bindEvents:function(){var self=this;$('.wizyta-column__cart').on('click','.remove-item.remove-all',function(e){e.preventDefault();var $button=$(this);var cartItemKey=$button.data('cart-item-key');self.removeFromCart(cartItemKey,$button)});$('.wizyta-column__cart').on('click','.remove-drug',function(e){e.preventDefault();var $button=$(this);var cartKey=$button.data('cart-key');var drugIndex=$button.data('drug-index');self.removeDrugFromCart(cartKey,drugIndex,$button)});$('.radio-visit-type input').on('change',function(){var $form=$(this).closest('form');var visitType=$(this).val();if(visitType==='Recepta na inny lek'){$form.find('.drug-form-select, .drug-dose-select, .drug-packaging-select, .drug-quantity-input').show().find('input').prop('disabled',!1)}else{$form.find('.drug-form-select, .drug-dose-select, .drug-packaging-select, .drug-quantity-input').hide().find('input').prop('disabled',!0)}})},addToCartFromForm:function($form){var self=this;var $submitButton=$form.find('.drug-form-submit, .ankieta-form-submit, .medical-form-submit');return new Promise(function(resolve,reject){if($form.data('submitting')){resolve({success:!0,message:'Already processing'});return}
8$form.data('submitting',!0);$submitButton.prop('disabled',!0).addClass('loading');var $spinner=$('<div class="spinner-wrapper"><svg class="spinner-dark" width="20" height="20" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-dasharray="31.416" stroke-dashoffset="31.416"><animate attributeName="stroke-dasharray" dur="2s" values="0 31.416;15.708 15.708;
80 31.416" repeatCount="indefinite"/><animate attributeName="stroke-dashoffset" dur="2s" values="0;-15.708;-31.416" repeatCount="indefinite"/></circle></svg></div>');$submitButton.append($spinner);var data=self.prepareFormData($form);self.performAddToCart(data,$form,$submitButton,function(response){if(response.data&&response.data.cart_contents){Object.entries(response.data.cart_contents).forEach(([key,item])=>{if(item.drugs&&Array.isArray(item.drugs)){}})}
9self.resetFormState($form,$submitButton);var path=window.location.pathname;var shouldRedirect=!1;var normalizedPath=path.replace(/\/$/,'');if(normalizedPath==='/l4'||normalizedPath==='/antykoncepcja'||normalizedPath==='/leczenie-otylosci'||normalizedPath==='/konsultacja-z-lekarzem'||normalizedPath==='/tabletka-dzien-po'||normalizedPath==='/antykoncepcja-kwalifikacja'||normalizedPath==='/antykoncepcja-odnowienie'||normalizedPath==='/otylosc'){if(!($form.hasClass('drug-form')&&$form.hasClass('simple-drug-form'))){shouldRedirect=!0}}
10if(shouldRedirect){var checkoutUrl=(response&&response.data&&(response.data.redirect_url||response.data.checkout_url))?(response.data.redirect_url||response.data.checkout_url):(dsp_ajax.checkout_url||'');if(checkoutUrl){window.location.href=checkoutUrl;return}
11self.processCheckout($submitButton);return}
12if($form.hasClass('form-antykoncepcja-kwalifikacja')||$form.hasClass('form-antykoncepcja-odnowienie')||$form.hasClass('form-otylosc')||$form.hasClass('form-tabletka-dzien-po')||$form.hasClass('form-zwolnienie-lekarskie-l4')||$form.hasClass('form-antykoncepcja-transgraniczna')){var fallbackCheckoutUrl=(response&&response.data&&(response.data.redirect_url||response.data.checkout_url))?(response.data.redirect_url||response.data.checkout_url):(dsp_ajax.checkout_url||'');if(fallbackCheckoutUrl){window.location.href=fallbackCheckoutUrl;return}
13self.processCheckout($submitButton);return}
14resolve(response)},function(error){reject(error)})})},prepareFormData:function($form){var data={security:dsp_ajax.nonce};var dla_kogo=$form.find('.radio-group-for-whom input:checked').val()||'Dla mnie';data.dla_kogo=dla_kogo;if($form.hasClass('form-konsultacja')||$form.hasClass('konsultacja-ankieta')||$form.hasClass('form-l4')||$form.hasClass('form-antykoncepcja-kwalifikacja')||$form.hasClass('form-antykoncepcja-odnowienie')||$form.hasClass('form-otylosc')||$form.hasClass('form-tabletka-dzien-po')||$form.hasClass('form-zwolnienie-lekarskie-l4')||$form.hasClass('form-antykoncepcja-transgraniczna')){data.action='dsp_add_to_cart';data.product_type='konsultacja';data.current_path=window.location.pathname;if($form.hasClass('konsultacja-ankieta')){data.rodzaj_wizyty='Konsultacja z ankietą';var ankietaData={dolegliwosci:$form.find('.textarea-symptoms textarea').val()||'',ciaza:$form.find('.radio-pregnancy input:checked').val()||'Nie',choroby:$form.find('.radio-conditions input:checked').val()||'Nie',choroby_szczegoly:$form.find('.textarea-conditions-details textarea').val()||'',operacje:$form.find('.radio-operations input:checked').val()||'Nie',operacje_szczegoly:$form.find('.textarea-operations-details textarea').val()||'',alergie:$form.find('.radio-allergies input:checked').val()||'Nie',alergie_szczegoly:$form.find('.textarea-allergies textarea').val()||'',leki:$form.find('.radio-medications input:checked').val()||'Nie',leki_szczegoly:$form.find('.textarea-medications-details textarea').val()||'',historia_leku:$form.find('.radio-drug-history input:checked').val()||'Nie',dokumentacja:$form.find('.documentation-upload input[type="text"]').val()||'[]'};var hasAnkietaData=!1;for(var key in ankietaData){if(ankietaData[key]&&ankietaData[key]!==''&&ankietaData[key]!=='Nie'&&ankietaData[key]!=='[]'){hasAnkietaData=!0;break}}
15if(hasAnkietaData){data.ankieta_data=JSON.stringify(ankietaData)}}else if($form.hasClass('form-l4')){data.rodzaj_wizyty='Konsultacja L4';data.product_id=PRODUCT_IDS.L4;var ankietaData={dolegliwosci:$form.find('.textarea-symptoms textarea').val()||'',ciaza:$form.find('.radio-pregnancy input:checked').val()||'Nie',choroby:$form.find('.radio-conditions input:checked').val()||'Nie',choroby_szczegoly:$form.find('.textarea-conditions-detail
15s textarea').val()||'',operacje:$form.find('.radio-operations input:checked').val()||'Nie',operacje_szczegoly:$form.find('.textarea-operations-details textarea').val()||'',alergie:$form.find('.radio-allergies input:checked').val()||'Nie',alergie_szczegoly:$form.find('.textarea-allergies textarea').val()||'',leki:$form.find('.radio-medications input:checked').val()||'Nie',leki_szczegoly:$form.find('.textarea-medications-details textarea').val()||'',historia_leku:$form.find('.radio-drug-history input:checked').val()||'Nie',dokumentacja:$form.find('.documentation-upload input[type="text"]').val()||'[]'};var hasAnkietaData=!1;for(var key in ankietaData){if(ankietaData[key]&&ankietaData[key]!==''&&ankietaData[key]!=='Nie'&&ankietaData[key]!=='[]'){hasAnkietaData=!0;break}}
16if(hasAnkietaData){data.ankieta_data=JSON.stringify(ankietaData)}}else if($form.hasClass('form-antykoncepcja-kwalifikacja')||$form.hasClass('form-antykoncepcja-odnowienie')||$form.hasClass('form-otylosc')||$form.hasClass('form-tabletka-dzien-po')||$form.hasClass('form-zwolnienie-lekarskie-l4')||$form.hasClass('form-antykoncepcja-transgraniczna')){data.product_type='konsultacja';if($form.hasClass('form-antykoncepcja-kwalifikacja')){data.product_id=78438;data.rodzaj_wizyty='Antykoncepcja - kwalifikacja'}else if($form.hasClass('form-tabletka-dzien-po')){data.product_id=78441;data.rodzaj_wizyty='Antykoncepcja - tabletka dzień po'}else if($form.hasClass('form-antykoncepcja-odnowienie')){data.product_id=78444;data.rodzaj_wizyty='Antykoncepcja - odnowienie recepty'}else if($form.hasClass('form-otylosc')){data.product_id=60728;data.rodzaj_wizyty='Leczenie otyłości'}else if($form.hasClass('form-zwolnienie-lekarskie-l4')){data.product_id=PRODUCT_IDS.L4;data.rodzaj_wizyty='E-zwolnienie'}else if($form.hasClass('form-antykoncepcja-transgraniczna')){data.product_id=85041;data.rodzaj_wizyty='Recepta na antykoncepcję transgraniczna'}
17var medicalFormData=this.collectMedicalFormData($form);if(Object.keys(medicalFormData).length>0){data.medical_form_data=JSON.stringify(medicalFormData)}}else{data.rodzaj_wizyty='Dobór leczenia'}}else if($form.hasClass('drug-form')||$form.hasClass('simple-drug-form')){if($form.hasClass('drug-form')&&!$form.find('input[name^="field_250["]').length){data.action='dsp_add_drug_to_cart';var drugName=$form.find('.drug-search-input').val();var quantity=parseInt($form.find('.drug-quantity-input input').val())||1;var drugForm=$form.find('.drug-form-select .hidden-input').val()||'';var drugDose=$form.find('.drug-dose-select .hidden-input').val()||'';var drugPackaging=$form.find('.drug-packaging-select .hidden-input').val()||'';data.drug={name:drugName,quantity:quantity,form:drugForm,dose:drugDose,packaging:drugPackaging};if(drugName==='Nie znaleziono leku, dodaj go ręcznie > Klikając tutaj <'){var $symptomsField=$form.find('.textarea-symptoms textarea');if($symptomsField.length===0){$symptomsField=$form.find('.textarea-symptoms input, .textarea-symptoms [name*="dolegliwosci"], .textarea-symptoms [name*="symptoms"]')}
18data.drug.dolegliwosci=$symptomsField.length>0?$symptomsField.val():'';var $otherDrugField=$form.find('.other-drug-input input');if($otherDrugField.length===0){$otherDrugField=$form.find('[name="other_drug_name"], #other-drug-name')}
19var otherDrugValue=$otherDrugField.length>0?$otherDrugField.val():'';if(otherDrugValue&&otherDrugValue.trim()!==''){data.drug.name=otherDrugValue.trim();data.drug.is_custom_drug=!0}
20data.drug.form='';data.drug.dose='';data.drug.packaging='';$form.find('.drug-form-select .hidden-input').remove();$form.find('.drug-dose-select .hidden-input').remove();$form.find('.drug-packaging-select .hidden-input').remove()}}else{data.action='dsp_add_drug_to_cart';data.drugs=[];$form.find('input[name^="field_250["]').each(function(){var $drugNameField=$(this);var drugName=$drugNameField.val().trim();if(drugName){var repeatIndex=$drugNameField.attr('name').match(/\[(\d+)\]/)[1];var $quantityField=$form.find('input[name="field_251['+repeatIndex+']"]');var quantity=parseInt($quantityField.val())||1;var drugData={name:drugName,quantity:quantity};data.drugs.push(drugData)}});if(data.drugs.length>0){data.drug=data.drugs[0]}
21if($form.hasClass('simple-drug-form')){var ankietaData={dolegliwosci:$form.find('.textarea-symptoms textarea').val()||'',ciaza:$form.find('.radio-pregnancy input:checked').val()||'Nie',choroby:$form.find('.radio-conditions input:checked').val()||'Nie',choroby_szczegoly:$form.find('.textarea-conditions-detail
21s textarea').val()||'',operacje:$form.find('.radio-operations input:checked').val()||'Nie',operacje_szczegoly:$form.find('.textarea-operations-details textarea').val()||'',alergie:$form.find('.radio-allergies input:checked').val()||'Nie',alergie_szczegoly:$form.find('.textarea-allergies textarea').val()||'',leki:$form.find('.radio-medications input:checked').val()||'Nie',leki_szczegoly:$form.find('.textarea-medications-details textarea').val()||'',historia_leku:$form.find('.radio-drug-history input:checked').val()||'Nie',dokumentacja:$form.find('.documentation-upload input[type="text"]').val()||'[]'};var hasAnkietaData=!1;for(var key in ankietaData){if(ankietaData[key]&&ankietaData[key]!==''&&ankietaData[key]!=='Nie'&&ankietaData[key]!=='[]'){hasAnkietaData=!0;break}}
22if(hasAnkietaData){data.ankieta_data=JSON.stringify(ankietaData)}}}}
23return data},collectMedicalFormData:function($form){var fields={};var order=[];var controlSelector='input, select, textarea';var skippedTypes=['hidden','button','submit','reset','file','image'];$form.find('[class*="pole-"]').each(function(){var element=this;var $element=$(element);var classMatch=($element.attr('class')||'').match(/pole-([a-zA-Z0-9-]+)/);if(!classMatch){return}
24var fieldName=classMatch[1];var $controls;if($element.is(controlSelector)){$controls=$element}else{$controls=$element.find(controlSelector).filter(function(){return skippedTypes.indexOf((this.type||'').toLowerCase())===-1&&$(this).closest('[class*="pole-"]')[0]===element})}
25if(!fields[fieldName]){fields[fieldName]={label:'',values:[]};order.push(fieldName)}
26var field=fields[fieldName];if(!field.label){field.label=$element.attr('nazwa-pola')||$controls.filter('[nazwa-pola]').first().attr('nazwa-pola')||''}
27$controls.each(function(){var $control=$(this);var type=(this.type||'').toLowerCase();var value;if(type==='radio'||type==='checkbox'){value=this.checked?$control.val():''}else{value=$control.val()}
28var values=Array.isArray(value)?value:[value];for(var i=0;i<values.length;i++){var single=values[i]==null?'':String(values[i]);if(single!==''&&field.values.indexOf(single)===-1){field.values.push(single)}}})});var medicalFormData={};for(var i=0;i<order.length;i++){var name=order[i];if(fields[name].values.length>0){medicalFormData[name]={value:fields[name].values.join(', '),label:fields[name].label||name}}}
29return medicalFormData},performAddToCart:function(data,$form,$submitButton,resolve,reject){var self=this;$.ajax({type:'POST',url:dsp_ajax.ajax_url,data:data,success:function(response){if(response.success){self.showSuccessMessage('Dodano do koszyka');self.updateAfterCartModification(response.data.cart_contents);resolve(response)}else{self.resetFormState($form,$submitButton);reject(response.data.message||'Wystąpił błąd podczas dodawania do koszyka.')}},error:function(xhr,status,error){self.resetFormState($form,$submitButton);reject('Wystąpił błąd podczas dodawania do koszyka.')}})},resetFormState:function($form,$submitButton){$form.data('submitting',!1);$submitButton.prop('disabled',!1).removeClass('loading').find('.spinner-wrapper').remove();$form.find('.drug-quantity-input input').val('1');$form.find('.drug-search-input').val('');$form.find('.drug-search-results').hide();DSP.utils.resetSelectFields($form)},canAddDrugToCart:function(drugName,quantity){return new Promise(function(resolve,reject){$.ajax({url:dsp_ajax.ajax_url,type:'POST',data:{action:'dsp_check_cart_limits',security:dsp_ajax.nonce,drug_name:drugName,quantity:quantity},success:function(response){if(response.success){resolve(response.data.can_add)}else{reject('Failed to check cart limits')}},error:function(){reject('Failed to check cart limits')}})})},removeFromCart:function(cartItemKey,$button){var self=this;if(!$button.find('.spinner-wrapper').length){var spinnerHtml='<div class="spinner-wrapper" style="display: inline-block; width: 16px; height: 16px; vertical-align: middle;"><svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>.spinner_5nOS{transform-origin:center;animation:spinner_sEAn .75s infinite linear}@keyframes spinner_sEAn{100%{transform:rotate(360deg)}}</style><path d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z" opacity=".25"/><path d="M10.72,19.9a8,8,0,0,1-6.5-9.79A7.77,7.77,0,0,1,10.4,4.16a8,8,0,0,1,9.49,6.52A1.54,1.54,0,0,0,21.38,12h.13a1.37,1.37,0,0,0,1.38-1.54,11,11,0,1,0-12.7,12.39A1.54,1.54,0,0,0,12,21.34h0A1.47,1.47,0,0,0,10.72,19.9Z" class="spinner_5nOS"/></svg></div>';$button.prop('disabled',!0).addClass('loading').append(spinnerHtml);$button.find('.spinner-wrapper svg').addClass('spinner-white')}
30$.ajax({url:dsp_ajax.ajax_url,type:'POST',data:{action:'dsp_remove_from_cart',security:dsp_ajax.nonce,cart_item_key:cartItemKey},success:function(response){if(response.success){self.updateAfterCartModification(response.data.cart_contents);if(!response.data.cart_contents||Object.keys(response.data.cart_contents).length===0){self.switchToTab('drug-form')}}else{self.showErrorMessage('Nie udało się usunąć produktu z koszyka.')}},error:function(jqXHR,textStatus,errorThrown){self.showErrorMessage('Nie udało się usunąć produktu z koszyka.')},complete:function(){$button.prop('disabled',!1).removeClass('loading').find('.spinner-wrapper').remove()}})},showSuccessMessage:function(message){DSP.notifications.showNotice(message,'success')},showErrorMessage:function(message){var $notifications=$('.form-notifications');$notifications.html('<div class="wsf-alert wsf-alert-danger">'+message+'</div>');$notifications.show();$('html, body').animate({scrollTop:$notifications.offset().top-100},500)},renderCart:function(cartContents){var $cartContainer=$('.wizyta-column__cart');if(!$cartContainer.length){return}
31$cartContainer.empty();if(!cartContents||Object.keys(cartContents).length===0){$cartContainer.append('<p>Koszyk jest pusty</p>');return}
32var $cartList=$('<ul class="cart-items"></ul>');
32Object.entries(cartContents).forEach(([key,item])=>{if(!item.dla_kogo){return}
33var $cartItem=$('<li class="cart-item"></li>');var $drugList=$('<ul class="drug-list"></ul>');if(item.drugs&&Array.isArray(item.drugs)){item.drugs.forEach((drug,index)=>{var $drugItem=$('<li class="drug-item"></li>');var drugDetails='';if(drug.form||drug.dose||drug.packaging){drugDetails=`${drug.quantity} x ${drug.name}${drug.form ? ', ' + drug.form : ''}${drug.dose ? ', ' + drug.dose : ''}${drug.packaging ? ', ' + drug.packaging : ''}`}else{drugDetails=`${drug.quantity} x ${drug.name}`}
34$drugItem.append(`<p><strong>${drugDetails}</strong></p>`);$drugItem.append(`<button class="remove-drug" data-cart-key="${key}" data-drug-index="${index}">Usuń</button>`);$drugList.append($drugItem)})}
35$cartItem.append($drugList);let priceDisplay='';if(item.product_id===PRODUCT_IDS.WIZYTA||item.product_id===PRODUCT_IDS.KONSULTACJA||item.product_id===PRODUCT_IDS.L4||item.product_id===PRODUCT_IDS.LECZENIE_BOLU||item.product_id===PRODUCT_IDS.LECZENIE_OTYLOSCI||item.product_id===85030||item.product_id===85041){priceDisplay=`<p class="cart-item-price">${item.price_html || '<span class="amount">0.00 zł</span>'}</p>`}
36$cartItem.append(priceDisplay);let productHeader='';if(DSP_CART_DATA.PRODUCT_HEADINGS[item.product_id]){productHeader=`<p class="cart-item-type"><strong>${DSP_CART_DATA.PRODUCT_HEADINGS[item.product_id]}</strong></p>`;$cartItem.prepend(productHeader)}
37$cartItem.append(`<button class="remove-item remove-all" data-cart-item-key="${key}">Usuń wszystko</button>`);$cartList.append($cartItem)});$cartContainer.append($cartList);var subtotal=this.calculateSubtotal(cartContents);var $totalPrice=$('<div class="cart-total-price"></div>');this.updateTotalPriceDisplay($totalPrice,subtotal);$cartContainer.append($totalPrice);this.updateCheckoutButtonState(cartContents)},updateCheckoutButtonState:function(cartContents){var $checkoutButton=$('#btn-checkout');var isCartEmpty=Object.keys(cartContents).length===0;$checkoutButton.prop('disabled',isCartEmpty);if(!isCartEmpty){var self=this;this.getCartTotals(function(totals){var finalPrice=totals.total||0;var formattedPrice=finalPrice.toFixed(2).replace('.',',');var newText=`Zamawiam i płacę - ${formattedPrice} zł`;if(DSP&&DSP.log){DSP.log('cart','Updating checkout button text to:',newText)}
38$checkoutButton.text(newText)})}else{if(DSP&&DSP.log){DSP.log('cart','Cart is empty, setting checkout button to default text')}
39$checkoutButton.text('Zamawiam i płacę')}},updateTotalPriceDisplay:function($element,subtotal){var self=this;this.getCartTotals(function(totals){var hasDiscount=totals.discount_total>0;var appDiscount=parseFloat(totals.app_discount||0);var otherDiscount=Math.max(0,(parseFloat(totals.discount_total||0)-appDiscount));var finalPrice=(typeof totals.total!=='undefined'&&totals.total!==null)?totals.total:subtotal;var displaySum=totals.total_before_discount||(totals.subtotal+(totals.positive_fees||0));if(hasDiscount){var discountRows='';if(appDiscount>0){discountRows+=`<div style="color: #16a34a;">Rabat w aplikacji: <strong>-${appDiscount.toFixed(2).replace('.', ',')} zł</strong></div>`}
40if(otherDiscount>0){discountRows+=`<div style="color: #e74c3c;">Rabat: <strong>-${otherDiscount.toFixed(2).replace('.', ',')} zł</strong></div>`}
41$element.html(`
42                        <div>Suma: <strong>${displaySum.toFixed(2).replace('.', ',')} zł</strong></div>
43                        ${discountRows}
44                        <div><strong>Łączna cena: ${finalPrice.toFixed(2).replace('.', ',')} zł</strong></div>
45                    `)}else{if(totals.positive_fees>0){$element.html(`
46                            <div>Konsultacja: <strong>${totals.subtotal.toFixed(2).replace('.', ',')} zł</strong></div>
47                            <div>Opłaty dodatkowe: <strong>${totals.positive_fees.toFixed(2).replace('.', ',')} zł</strong></div>
48                            <div><strong>Łączna cena: ${finalPrice.toFixed(2).replace('.', ',')} zł</strong></div>
49                        `)}else{$element.html(`<strong>Łączna cena: ${finalPrice.toFixed(2).replace('.', ',')} zł</strong>`)}}})},getCartTotals:function(callback){$.ajax({url:dsp_ajax.ajax_url,type:'POST',data:{action:'dsp_get_cart_totals',security:dsp_ajax.nonce},success:function(response){if(response.success){callback(response.data)}else{callback({total:0,discount_total:0,subtotal:0})}},error:function(){callback({total:0,discount_total:0,subtotal:0})}})},checkFormStateWithContents:function(cartContents){var uniqueDrugs=0;var totalQuantity=0;var dla_kogo=$('.radio-group-for-whom input:checked').val()||'Dla mnie';var wizytaItem=null;$.each(cartContents,function(key,item){if(item.product_id===PRODUCT_IDS.WIZYTA&&item.dla_kogo===dla_kogo&&item.drugs){wizytaItem=item;return!1}});if(wizytaItem&&wizytaItem.drugs){uniqueDrugs=wizytaItem.drugs.length}
50var $form=$('.drug-form');var $submitButton=$form.find('.drug-form-submit');var $limitNotice=$('.form-limit-notice');if($limitNotice.length===0){$limitNotice=$('<p class="form-limit-notice" style="display:none;">Możesz wybrać do 3 różnych leków, maksymalnie 3 opakowania każdego</p>');$form.append($limitNotice)}
51if(uniqueDrugs>=3){this.disableSubmitButton($submitButton);$limitNotice.show();$submitButton.prop('disabled',!0);$submitButton.addClass('wsf-button--disabled');$submitButton.attr('title','Osiągnięto limit 3 leków')}else{this.enableSubmitButton($submitButton);$limitNotice.hide();$submitButton.prop('disabled',!1);$submitButton.removeClass('wsf-button--disabled');$submitButton.removeAttr('title')}
52this.updateQuantityFieldState()},updateCheckoutFieldsWithContents:function(cartContents){var hasInnyLek=!1;$.each(cartContents,function(key,item){if(item.drug_name==='Nie znaleziono leku, dodaj go ręcznie > Klikając tutaj <'){hasInnyLek=!0;return!1}})},updateFormStateFromCartContents:function(cartContents){var dlaDzieckaExists=!1;$.each(cartContents,function(key,item){if(item.dla_kogo==='Dla dziecka'){dlaDzieckaExists=!0;return!1}});if(dlaDzieckaExists){$('.radio-group-for-whom input[value="Dla dziecka"]').prop('checked',!0);$('.radio-group-for-whom input[value="Dla mnie"]').prop('checked',!1)}else{$('.radio-group-for-whom input[value="Dla mnie"]').prop('checked',!0);$('.radio-group-for-whom input[value="Dla dziecka"]').prop('checked',!1)}},updateQuantityFieldState:function(){var $quantityField=$('.drug-quantity-input input');var $drugNameField=$('.drug-search-input');var drugName=$drugNameField.val();$quantityField.prop('disabled',!1).removeClass('disabled-field')},disableSubmitButton:function($button){$button.prop('disabled',!0).addClass('wsf-button--disabled')},enableSubmitButton:function($button){$button.prop('disabled',!1).removeClass('wsf-button--disabled')},initCheckoutButton:function(){var self=this;$('#btn-checkout').text('Zamawiam i płacę');$('#btn-checkout').on('click',function(e){e.preventDefault();var $button=$(this);$button.prop('disabled',!0).addClass('loading');if(!$button.find('.spinner-wrapper').length){var spinnerHtml='<div class="spinner-wrapper"><svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>.spinner_5nOS{transform-origin:center;animation:spinner_sEAn .75s infinite linear}@keyframes spinner_sEAn{100%{transform:rotate(360deg)}}</style><path d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z" opacity=".25"/><path d="M10.72,19.9a8,8,0,0,1-6.5-9.79A7.77,7.77,0,0,1,10.4,4.16a8,8,0,0,1,9.49,6.52A1.54,1.54,0,0,0,21.38,12h.13a1.37,1.37,0,0,0,1.38-1.54,11,11,0,1,0-12.7,12.39A1.54,1.54,0,0,0,12,21.34h0A1.47,1.47,0,0,0,10.72,19.9Z" class="spinner_5nOS"/></svg></div>';$button.append(spinnerHtml);$button.find('.spinner-wrapper svg').addClass('spinner-white')}
53self.processCheckout($button)})},processCheckout:function($button){var self=this;$.ajax({url:dsp_ajax.ajax_url,type:'POST',data:{action:'dsp_process_checkout',security:dsp_ajax.nonce},success:function(response){if(response.success){window.location.href=response.data.checkout_url}else{self.showErrorMessage(response.data.message||'An error occurred during checkout.');self.enableCheckoutButton($button)}},error:function(){self.showErrorMessage('An error occurred. Please try again.');self.enableCheckoutButton($button)}})},enableCheckoutButton:function($button){$button.prop('disabled',!1).removeClass('loading');$button.find('.spinner-wrapper').remove()},getCartContents:function(){var self=this;if(this.cartFetchPromise){return this.cartFetchPromise}
54this.cartFetchPromise=new Promise(function(resolve,reject){$.ajax({url:dsp_ajax.ajax_url,type:'POST',data:{action:'dsp_get_cart',security:dsp_ajax.nonce},success:function(response){if(response.success){self.cartContents=response.data.cart_contents;resolve(self.cartContents)}else{reject('Failed to fetch cart contents')}},error:function(error){reject('Failed to fetch cart contents')},complete:function(){self.cartFetchPromise=null}})});return this.cartFetchPromise},updateFormState:function(){var $form=$('.drug-form')},hideErrorMessage:function(){$('.form-error').hide()},checkFormState:function(){var $form=$('.drug-form');var drugName=$form.find('.drug-search-wrapper input').val();var quantity=parseInt($form.find('.drug-quantity-input input').val())||0;var dla_kogo=$form.find('.radio-group-for-whom input:checked').val()||'Dla mnie';var drugForm=$form.find('.drug-form-select select').val();var drugDose=$form.find('.drug-dose-select select').val();var drugPackaging=$form.find('.drug-packaging-select select').val();$.ajax({url:dsp_ajax.ajax_url,type:'POST',async:!1,data:{action:'dsp_check_cart_limits',security:dsp_ajax.nonce,drug_name:drugName,quantity:quantity,dla_kogo:dla_kogo,drug_form:drugForm,drug_dose:drugDose,drug_packaging:drugPackaging},success:function(response){if(response.success){var $submitButton=$form.find('.drug-form-submit');var $limitNotice=$('.form-limit-notice');if(response.data.can_add){$submitButton.prop('disabled',!1).removeClass('wsf-button--disabled');$limitNotice.hide()}else{$submitButton.prop('disabled',!0).addClass('wsf-button--disabled');$limitNotice.show();if(response.data.message){DSP.notifications.showNotice(response.data.message,'error')}}}}})},validateCartLimits:function(drugName,quantity,dla_kogo,drugForm,drugDose,drugPackaging){var cartContents=this.getCartContents();var drugsByRecipient={'Dla mnie':[],'Dla dziecka':[]};var totalDrugs={'Dla mnie':0,'Dla dziecka':0};
54Object.values(cartContents).forEach(function(item){if(item.drugs&&Array.isArray(item.drugs)){item.drugs.forEach(function(drug){if(item.dla_kogo){drugsByRecipient[item.dla_kogo].push(drug);totalDrugs[item.dla_kogo]++}})}});if(totalDrugs[dla_kogo]>=3){var existingDrug=drugsByRecipient[dla_kogo].find(function(drug){return drug.name===drugName&&drug.form===drugForm&&drug.dose===drugDose&&drug.packaging===drugPackaging});if(!existingDrug){return{valid:!1,message:'Możesz wybrać maksymalnie 3 różne leki dla jednej osoby.'}}}
55var existingQuantity=0;drugsByRecipient[dla_kogo].forEach(function(drug){if(drug.name===drugName&&drug.form===drugForm&&drug.dose===drugDose&&drug.packaging===drugPackaging){existingQuantity+=parseInt(drug.quantity)||0}});var newQuantity=existingQuantity+parseInt(quantity);if(newQuantity>3){return{valid:!1,message:'Możesz zamówić maksymalnie 3 opakowania tego leku.'}}
56return{valid:!0}},validateQuantityField:function($quantityField){var quantity=parseInt($quantityField.val());var drugName=$quantityField.closest('form').find('.drug-search-input').val();if(drugName){var validation=this.validateCartLimits(drugName,quantity);if(!validation.valid){$quantityField.val(1);DSP.notifications.showNotice(validation.message,'error')}}},handlePageSpecificCart:function(){if(window.location.pathname.endsWith('/konsultacja-z-lekarzem')){this.renderCart=function(){return};return}},updateNextButtonState:function(){var $nextButton=$('#btn-dalej');var cartItemCount=Object.keys(DSP.cart.items).length;if($nextButton.length){if(cartItemCount>0){$nextButton.prop('disabled',!1).removeClass('disabled')}else{$nextButton.prop('disabled',!0).addClass('disabled')}}},renderCartItem:function(item){var displayName=item.drug_name;if(item.drug_name==='Nie znaleziono leku, dodaj go ręcznie > Klikając tutaj <'&&item.inny_lek){displayName=item.inny_lek}
57var details=[];if(item.drug_name!=='Nie znaleziono leku, dodaj go ręcznie > Klikając tutaj <'){if(item.form)details.push(item.form);
57if(item.dose)details.push(item.dose);if(item.packaging)details.push(item.packaging);}
58var detailsText=details.length>0?' ('+details.join(', ')+')':'';return $('<li>').append($('<span>').text(displayName+detailsText),$('<button>').addClass('remove-item').attr('data-product-id',item.product_id).text('×'))},testSingleProductCart:function(productType='wizyta'){var testData={action:'dsp_test_single_product_cart',security:dsp_ajax.nonce,product_type:productType,dla_kogo:'Dla mnie'};if(productType==='wizyta'){testData.drug={name:'Test Drug',form:'tabletki',dose:'100mg',packaging:'30 tabletek',quantity:2}}else{testData.rodzaj_wizyty='Dobór leczenia'}
59$.ajax({url:dsp_ajax.ajax_url,type:'POST',data:testData,success:function(response){if(response.success){DSP.notifications.showNotice('Test successful: '+response.data.message,'success')}else{DSP.notifications.showNotice('Test failed: '+response.data.message,'error')}},error:function(xhr,status,error){DSP.notifications.showNotice('Test error: '+error,'error')}})},testAddDrugToCart:function(){var testDrug={name:'Another Test Drug',form:'syrop',dose:'250mg',packaging:'100ml',quantity:1};$.ajax({url:dsp_ajax.ajax_url,type:'POST',data:{action:'dsp_add_drug_to_cart',security:dsp_ajax.nonce,drug:testDrug},success:function(response){if(response.success){DSP.notifications.showNotice('Test successful: '+response.data.message,'success')}else{DSP.notifications.showNotice('Test failed: '+response.data.message,'error')}},error:function(xhr,status,error){DSP.notifications.showNotice('Test error: '+error,'error')}})},testCartFunctionality:function(){var self=this;DSP.notifications.showNotice('Cart clearing disabled - test function simplified','info')},verifyCartStructure:function(cart){var adultItem=null;var childItem=null;var valid=!0;var errors=[];Object.values(cart).forEach(function(item){if(item.dla_kogo==='Dla mnie'){if(adultItem){errors.push('Multiple adult items found');valid=!1}
60adultItem=item}else if(item.dla_kogo==='Dla dziecka'){if(childItem){errors.push('Multiple child items found');valid=!1}
61childItem=item}});if(adultItem){if(!adultItem.drugs||!Array.isArray(adultItem.drugs)){errors.push('Adult item missing drugs array');valid=!1}else if(adultItem.drugs.length!==3){errors.push('Adult item should have exactly 3 drugs');valid=!1}
62var innyLekFound=!1;adultItem.drugs.forEach(function(drug){if(drug.name==='Nie znaleziono leku, dodaj go ręcznie > Klikając tutaj <'){innyLekFound=!0;if(!drug.inny_lek){errors.push('Nie znaleziono leku, dodaj go ręcznie > Klikając tutaj < missing inny_lek field');valid=!1}}});if(!innyLekFound){errors.push('No Nie znaleziono leku, dodaj go ręcznie > Klikając tutaj < found in adult item');valid=!1}}else{errors.push('No adult item found');valid=!1}
63if(childItem){if(!childItem.drugs||!Array.isArray(childItem.drugs)){errors.push('Child item missing drugs array');valid=!1}else if(childItem.drugs.length!==1){errors.push('Child item should have exactly 1 drug');valid=!1}}else{errors.push('No child item found');valid=!1}
64return valid},removeDrugFromCart:function(cartKey,drugIndex,$button){var self=this;if(!$button.find('.spinner-wrapper').length){var spinnerHtml='<div class="spinner-wrapper" style="display: inline-block; width: 16px; height: 16px; vertical-align: middle;"><svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>.spinner_5nOS{transform-origin:center;animation:spinner_sEAn .75s infinite linear}@keyframes spinner_sEAn{100%{transform:rotate(360deg)}}</style><path d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z" opacity=".25"/><path d="M10.72,19.9a8,8,0,0,1-6.5-9.79A7.77,7.77,0,0,1,10.4,4.16a8,8,0,0,1,9.49,6.52A1.54,1.54,0,0,0,21.38,12h.13a1.37,1.37,0,0,0,1.38-1.54,11,11,0,1,0-12.7,12.39A1.54,1.54,0,0,0,12,21.34h0A1.47,1.47,0,0,0,10.72,19.9Z" class="spinner_5nOS"/></svg></div>';$button.prop('disabled',!0).addClass('loading').append(spinnerHtml);$button.find('.spinner-wrapper svg').addClass('spinner-white')}
65$.ajax({url:dsp_ajax.ajax_url,type:'POST',data:{action:'dsp_remove_drug_from_cart',security:dsp_ajax.nonce,cart_key:cartKey,drug_index:drugIndex},success:function(response){if(response.success&&response.data&&response.data.cart_contents){self.updateAfterCartModification(response.data.cart_contents)}else{self.showErrorMessage('Nie udało się usunąć leku z koszyka.')}},error:function(jqXHR,textStatus,errorThrown){self.showErrorMessage('Nie udało się usunąć leku z koszyka.')},complete:function(){$button.prop('disabled',!1).removeClass('loading').find('.spinner-wrapper').remove()}})},initTabsHandling:function(){var self=this;$('.tab-button').on('click',function(e){e.preventDefault();var $this=$(this);if($this.hasClass('disabled')){return}
66var targetTab=$this.data('tab');if(targetTab==='ankieta'){var isEmpty=!self.cartContents||Object.keys(self.cartContents).length===0;if(!isEmpty){self.switchToTab(targetTab)}}else{self.switchToTab(targetTab)}});$('#btn-dalej').on('click',function(e){e.preventDefault();if(!$(this).hasClass('disabled')){self.switchToTab('ankieta')}});this.updateTabButtonStates()},switchToTab:function(tabName){$('.content-drug-form, .content-ankieta-medyczna').hide();if(tabName==='drug-form'){$('.content-drug-form').show()}else if(tabName==='ankieta'){$('.content-ankieta-medyczna').show()}
67$('.tab-button').removeClass('active');$('.tab-button[data-tab="'+tabName+'"]').addClass('active');window.scrollTo({top:0,behavior:'smooth'})},updateTabButtonStates:function(){var self=this;var isEmpty=!this.cartContents||Object.keys(this.cartContents).length===0;var $nextButton=$('#btn-dalej');if($nextButton.length){if(isEmpty){$nextButton.prop('disabled',!0).addClass('disabled');$nextButton.css({'opacity':'0.6','cursor':'not-allowed','background-color':'#e0e0e0','border':'1px solid #ccc','pointer-events':'none'})}else{$nextButton.prop('disabled',!1).removeClass('disabled');$nextButton.removeAttr('style')}}
68var $ankietaTab=$('.tab-button[data-tab="ankieta"]');if(isEmpty){$ankietaTab.addClass('disabled').css({'opacity':'0.5','cursor':'not-allowed','pointer-events':'none'});if($ankietaTab.hasClass('active')){self.switchToTab('drug-form')}}else{$ankietaTab.removeClass('disabled');$ankietaTab.removeAttr('style')}},updateAfterCartModification:function(newContents){this.cartContents=newContents;this.renderCart(newContents);this.checkFormStateWithContents(newContents);this.updateCheckoutFieldsWithContents(newContents);this.updateFormStateFromCartContents(newContents);this.updateTabButtonStates();var $totalPrice=$('.cart-total-price');if($totalPrice.length){var subtotal=this.calculateSubtotal(newContents);this.updateTotalPriceDisplay($totalPrice,subtotal)}
69$(document).trigger('dsp_cart_updated',[newContents])},calculateSubtotal:function(cartContents){var subtotal=0;
69Object.values(cartContents).forEach(item=>{if(item.product_id===PRODUCT_IDS.WIZYTA||item.product_id===PRODUCT_IDS.KONSULTACJA||item.product_id===PRODUCT_IDS.L4||item.product_id===PRODUCT_IDS.LECZENIE_BOLU||item.product_id===PRODUCT_IDS.LECZENIE_OTYLOSCI||item.product_id===85030||item.product_id===85041){const price=parseFloat(item.price||'0');if(!isNaN(price)){subtotal+=price}}});return subtotal},isCartEmpty:function(){return!this.cartContents||Object.keys(this.cartContents).length===0},getCurrentCartContents:function(){return this.cartContents},fetchAndUpdateCart:function(){var self=this;return this.getCartContents().then(function(cartContents){self.renderCart(cartContents);self.updateCheckoutButtonState(cartContents);self.updateFormState(cartContents);self.checkFormStateWithContents(cartContents);self.updateCheckoutFieldsWithContents(cartContents);self.updateFormStateFromCartContents(cartContents);self.updateTabButtonStates();$(document).trigger('dsp_cart_updated',[cartContents]);return cartContents})},};$(document).ready(function(){DSP.cart.init()})})(jQuery)

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.