var BASKET_TOTAL; var TOTAL_COUNT = {}; var ITEM_PRICES = {}; var ITEM_OIDS = []; var SHIPPING_PRICE = null; var ITEMS_TOTAL = 0; var COUPON_DISCOUNT = 0; var PMClass; var CodeXHR; var CodeData; TOTAL_COUNT["VOJHGDDV"] = parseInt("1"); ITEM_PRICES["VOJHGDDV"] = parseFloat("59.99"); ITEM_OIDS.push("VOJHGDDV"); try { document.getElementById("add-1-VOJHGDDV").addEventListener("click", function(){ var ac = document.getElementById("amount_VOJHGDDV"), at = document.getElementById("total_VOJHGDDV"), oid = ac.getAttribute("data-oid"), v = parseInt(ac.value), itemPrice = parseFloat(ac.getAttribute("data-price")); if(!v) v = 0; v += 1; ac.value = v; at.innerHTML = (v * itemPrice).toFixed(2).replace('.',','); TOTAL_COUNT[oid] = v; RECALC_TOTAL(true); dataLayer.push({ 'event': 'addToCart', 'ecommerce': { 'currencyCode': 'PLN', 'add': { 'products': [{ 'name': 'Calominal', 'id': 'VOJHGDDV', 'price': '59.99', 'brand': 'Aflofarm Farmacja Polska Sp. z o.o.', 'category': 'suplementy-diety', 'variant': '60 tabletek', 'quantity': 1 }] } } }); }); document.getElementById("deduct-1-VOJHGDDV").addEventListener("click", function(){ var ac = document.getElementById("amount_VOJHGDDV"), at = document.getElementById("total_VOJHGDDV"), oid = ac.getAttribute("data-oid"), v = parseInt(ac.value), itemPrice = parseFloat(ac.getAttribute("data-price"));; if(!v) v=0; if(v === 0) return; v -= 1; ac.value = v; at.innerHTML = (v * itemPrice).toFixed(2).replace('.',','); TOTAL_COUNT[oid] = v; RECALC_TOTAL(true); dataLayer.push({ 'event': 'removeFromCart', 'ecommerce': { 'currencyCode': 'PLN', 'remove': { 'products': [{ 'name': 'Calominal', 'id': 'VOJHGDDV', 'price': '59.99', 'brand': 'Aflofarm Farmacja Polska Sp. z o.o.', 'category': 'suplementy-diety', 'variant': '60 tabletek', 'quantity': 1 }] } } }); }); } catch(e) { console.error(e) } function RECALC_TOTAL(reprocess_shipping){ var oid; if(!reprocess_shipping) reprocess_shipping = false; ITEMS_TOTAL = 0; for(var i=0; i < ITEM_OIDS.length; i++){ oid = ITEM_OIDS[i]; if(TOTAL_COUNT[oid]) ITEMS_TOTAL += TOTAL_COUNT[oid] * ITEM_PRICES[oid]; } if(CodeData) process_code(); //przemielić metody dostawy if(reprocess_shipping) REPROCESS_SHIPPING(ITEMS_TOTAL); document.getElementById("co_produkty").innerHTML = ITEMS_TOTAL.toFixed(2).replace('.',','); document.getElementById("co_dostawa").innerHTML = SHIPPING_PRICE !== null ? SHIPPING_PRICE.toFixed(2).replace('.',',') : "-"; document.getElementById("co_total").innerHTML = SHIPPING_PRICE !== null ? (ITEMS_TOTAL + SHIPPING_PRICE - COUPON_DISCOUNT).toFixed(2).replace('.',',') : "-"; } function REPROCESS_SHIPPING(ITEMS_TOTAL){ var s_radios = document.querySelectorAll("#shipping input[type=radio]"), so, vmin, vmax, oid; //reset shippingu var allShippingElements = document.querySelectorAll("#shipping div.radio"); for (var i = 0; i < allShippingElements.length; ++i) { allShippingElements[i].classList.add("hidden"); } //ITEMS_TOTAL for (var i = 0; i < s_radios.length; ++i) { so = s_radios[i]; vmin = parseFloat(so.getAttribute('data-kosz-min')); vmax = parseFloat(so.getAttribute('data-kosz-max')); oid = so.getAttribute('data-oid'); if(ITEMS_TOTAL >= vmin && ITEMS_TOTAL < vmax) { document.getElementById('cn_' + oid).classList.remove("hidden"); } } } document.getElementById("id_dostawa_do_firmy").addEventListener("click", function(){ if(this.checked){ document.getElementById("fv_block").style.display = "block"; } else { document.getElementById("fv_block").style.display = "none"; } }); document.getElementById("id_rules_accepted").addEventListener("change", function(){ var re = document.getElementById('rules_error'); if(this.checked){ if(re) re.classList.add('hidden'); } else { if(re) re.classList.remove('hidden'); } }); var allShipingRadios = document.querySelectorAll("#shipping input[type=radio]") for (var i = 0; i < allShipingRadios.length; ++i) { allShipingRadios[i].addEventListener("change", function() { SHIPPING_PRICE = parseFloat(this.getAttribute("data-cena")); var platnosci = this.getAttribute("data-platnosci"), idriver = this.getAttribute("data-idriver"), pids = platnosci.split(","), tp , pelement, allElementsm, pid_count, pid_container; if(idriver == 'paczkomaty.paczkomaty_V1'){ document.getElementById("paczkomaty_picker").style.display = "block"; if(!PMClass) PMClass = new Paczkomaty("id_kod","id_paczkomaty_plugin"); } else { document.getElementById("paczkomaty_picker").style.display = "none"; } if(document.getElementById('shipping_error')) document.getElementById('shipping_error').remove() var allPaymentElements = document.querySelectorAll("#payment div.radio"); for (var i = 0; i < allPaymentElements.length; ++i) { allPaymentElements[i].classList.add("hidden"); allPaymentElements[i].querySelector("input[type=radio]").checked = false; } pid_count = 0; for(var i=0; i < pids.length; i++){ if(document.getElementById("holder_pay_" + pids[i])){ pid_count += 1; pid_container = document.getElementById("holder_pay_" + pids[i]); pid_container.classList.remove("hidden"); } } if(pid_count == 1){ pid_container.querySelector("input[type=radio]").checked = true; if(document.getElementById('payment_error')) document.getElementById('payment_error').remove() } RECALC_TOTAL(); }); } //usuwanie bledu var allPaymentElements = document.querySelectorAll("#payment div.radio input"); for (var i = 0; i < allPaymentElements.length; ++i) { allPaymentElements[i].addEventListener("change", function() { if(this.checked && document.getElementById('payment_error')) document.getElementById('payment_error').remove() }); } RECALC_TOTAL(true); var Pdata; var Paczkomaty = (function () { function Paczkomaty(kodFieldId, selectFieldPrefix) { this.kodFieldId = kodFieldId; this.selectFieldPrefix = selectFieldPrefix; this.fieldList = ['name', 'postcode', 'street', 'buildingnumber', 'town', 'latitude', 'longitude', 'distance', 'paymenttype', 'locationdescription']; this.pole_kodu = document.getElementById(kodFieldId); this.pole_kodu.addEventListener('keyup', this.kodChanged.bind(this)); this.pole_kodu.addEventListener('change', this.kodChanged.bind(this)); this.select = document.getElementById(selectFieldPrefix + '-wybor'); this.select.addEventListener('change', this.selectPackmachine.bind(this)); this.select.classList.remove('form-control'); var pole_nazwy = document.getElementById(selectFieldPrefix + '-name'); if (pole_nazwy.value) { this.LoadedValue = pole_nazwy.value; } var option = document.createElement("option"); option.text = "Podaj kod pocztowy aby pobrać paczkomaty !"; option.value = null; this.select.add(option); if (this.pole_kodu.value) { this.kodChanged(); } } Paczkomaty.prototype.kodChanged = function () { var KodPocztowyReg = /[0-9]{2}-[0-9]{3}/g; if (KodPocztowyReg.test(this.pole_kodu.value)) this.findNearest(this.pole_kodu.value); }; Paczkomaty.prototype.XHRhandler = function () { if (this.XHR.status == 200) { this.loadData(this.parseResponse(this.XHR.responseText)); } else { } }; Paczkomaty.prototype.loadData = function (JSONObj) { var tmpData; this.PMData = []; Pdata = JSONObj; for (var _i = 0, JSONObj_1 = JSONObj; _i < JSONObj_1.length; _i++) { var m = JSONObj_1[_i]; tmpData = {}; for (var _a = 0, _b = this.fieldList; _a < _b.length; _a++) { var f = _b[_a]; tmpData[f] = m[f]; } this.PMData.push(tmpData); } this.cleanSelect(); this.fillSelect(); }; Paczkomaty.prototype.parseResponse = function (responseText) { return JSON.parse(responseText); }; Paczkomaty.prototype.findNearest = function (postcode) { this.XHR = new XMLHttpRequest(); this.XHR.onload = this.XHRhandler.bind(this); this.XHR.open("GET", "https://fpe-sklep.pl/findnearestmachines?postcode=" + postcode); this.XHR.send(); }; Paczkomaty.prototype.cleanSelect = function () { while (this.select.options.length > 0) { this.select.remove(0); } }; Paczkomaty.prototype.fillSelect = function () { for (var _i = 0, _a = this.PMData; _i < _a.length; _i++) { var pd = _a[_i]; var option = document.createElement("option"); option.text = [pd.name, '-', pd.street, pd.buildingnumber, '-', pd.locationdescription].join(" "); option.value = pd.name; this.select.add(option); } if (this.LoadedValue) { this.select.value = this.LoadedValue; this.LoadedValue = null; } this.selectPackmachine(); }; Paczkomaty.prototype.selectPackmachine = function () { var pv = this.select.value, pditem; for (var _i = 0, _a = this.PMData; _i < _a.length; _i++) { var pd = _a[_i]; if (pv == pd.name) { pditem = pd; } } for (var _b = 0, _c = this.fieldList; _b < _c.length; _b++) { var f = _c[_b]; document.getElementById(this.selectFieldPrefix + '-' + f).value = pditem[f]; } }; return Paczkomaty; }()); /* Obsługa kodów */ document.getElementById('co_code_add_button').addEventListener('click', function(){ var co_add = document.getElementById('co_code_add'); var co_code_add_box = document.getElementById('co_code_add_box'); co_add.classList.add('zoomOut'); setTimeout(function(){ co_code_add_box.classList.add('zoomIn'); co_add.classList.add('hidden'); co_code_add_box.classList.remove('hidden'); }, 1000); }); function co_code_add_box_spinner(){ document.getElementById('co_code_add_box_button').classList.add('hidden'); document.getElementById('co_code_add_box_please_wait').classList.remove('hidden'); document.getElementById('id_discount_code').readOnly = true; } function co_code_add_box_button(){ document.getElementById('co_code_add_box_button').classList.remove('hidden'); document.getElementById('co_code_add_box_please_wait').classList.add('hidden'); document.getElementById('id_discount_code').readOnly = false; } function show_co_code_add_box_error(error_details){ var co_code_add_box_error_cnt = document.getElementById('co_code_add_box_error'); co_code_add_box_error_cnt.classList.remove('hidden'); co_code_add_box_error_cnt.classList.add('zoomIn'); co_code_add_box_error_cnt.innerHTML = error_details; setTimeout(function(){ co_code_add_box_error_cnt.classList.remove('zoomIn'); }, 1000); } function show_co_code_add_box_clear_error(){ var co_code_add_box_error_cnt = document.getElementById('co_code_add_box_error'); if(co_code_add_box_error_cnt.classList.contains('hidden')) return; co_code_add_box_error_cnt.classList.add('zoomOut'); co_code_add_box_error_cnt.innerHTML = ''; setTimeout(function(){ co_code_add_box_error_cnt.classList.add('hidden'); co_code_add_box_error_cnt.classList.remove('zoomOut'); }, 200); } document.getElementById('co_code_add_box_button').addEventListener('click', function(event){ event.preventDefault(); check_discount_data(); }); function process_code(){ //wołamy to po dodaniu kodu. tak więc powrót do formularza albo pokazanie. var co_code_added = document.getElementById('co_code_added'), co_code_add_box = document.getElementById('co_code_add_box'), co_code_added_code = document.getElementById('co_code_added_code'), co_code_added_discount = document.getElementById('co_code_added_discount'); //brak kodu - reset widgetu - do dofiukania if(!CodeData){ co_code_add_box.classList.remove('hidden'); co_code_added.classList.add('hidden'); return; } COUPON_DISCOUNT = 0; co_code_added_code.innerHTML = CodeData.code; co_code_add_box.classList.add('hidden'); co_code_added.classList.remove('hidden'); switch(CodeData.discount_value_type){ case 'percentage': var cBase = (CodeData.discount_value / 100); COUPON_DISCOUNT = (ITEMS_TOTAL * cBase).toFixed(2) break; case 'monetary': var cBase = parseFloat(CodeData.discount_value); COUPON_DISCOUNT = cBase.toFixed(2) break; } co_code_added_discount.innerHTML = COUPON_DISCOUNT.replace('.',','); } function process_discount_data(){ var codeResponse; if (CodeXHR.status == 200) { //parse try { codeResponse = JSON.parse(CodeXHR.responseText); if(codeResponse.success){ show_co_code_add_box_clear_error(); CodeData = codeResponse.data; RECALC_TOTAL(); } else { CodeData = null; process_code(); RECALC_TOTAL(); show_co_code_add_box_error(codeResponse.message); } co_code_add_box_button(); } catch(e) { show_co_code_add_box_error('Wystąpił błąd podczas przetwarzania odpowiedzi z serwera. ' + e.message); co_code_add_box_button(); } } else { show_co_code_add_box_error('Wystąpił błąd podczas ładowania odpowiedzi z serwera. Status odpowiedzi: ' + CodeXHR.statusText); co_code_add_box_button(); } } function check_discount_data(){ var discount_code = document.getElementById('id_discount_code').value; if(!discount_code){ show_co_code_add_box_error('Musisz podać kod rabatowy'); return; } show_co_code_add_box_clear_error(); co_code_add_box_spinner(); CodeXHR = new XMLHttpRequest(); CodeXHR.onload = process_discount_data; CodeXHR.onerror = process_discount_data; CodeXHR.onabort = process_discount_data; CodeXHR.open("GET", "https://fpe-sklep.pl/coupon/BLLOISIE/?code=" + discount_code, true); CodeXHR.send(); }