/* cartShop JS */ console.log('Test'); document.addEventListener('click', function(e) { let el = e.target; if(el.closest('#to-order')) $set('a.to-order').click(); if(el.closest('cart button')) cartCount(el.closest('cart button')); if(el.closest('dir.selection li')) selectForm(el.closest('dir.selection li')); if(el.closest('#gopay close')) payOnlineAbort(); }); document.addEventListener('change', function(e) { let el = e.target; if(el.closest('cart input')) cartCount(el.closest('cart input')); if(el.closest('div.order input')) cacheData(el.closest('div.order input')); }); function cartCount(el) { console.log(el); let id = $on(el.closest('[id]')).attr('id'); let basket = el.closest('cart'); let order = basket.querySelector('input'); let type = $on(basket).attr('type'); let count = Number(order.value); if(basket.querySelector('.good-params')) var params = basket.querySelector('.good-params').innerText; if(!el.closest('#cartShop')) var bi = basket.querySelector('button.plus i'); if(el.closest('button')) { if(el.closest('button.plus')) count = count+1; if(el.closest('button.minus')) count = count-1; if(el.closest('button.delete')) { count = 0; el.closest('li').classList.add('del'); setTimeout(() => { el.closest('li').remove(); }, 500); } } if(el.closest('#cartShop') && !el.closest('button.delete') && count == 0) count = 1; else if(count < 0) count = 0; if(count == 0) { basket.querySelector('button.minus').classList.add('none'); basket.classList.remove('incart'); if(bi) { bi.classList.remove('mdi-cart-plus'); bi.classList.add('mdi-cart'); } } else { basket.querySelector('button.minus').classList.remove('none'); basket.classList.add('incart'); if(bi) { bi.classList.remove('mdi-cart'); bi.classList.add('mdi-cart-plus'); } } order.value = count; let data = 'type='+type+';id='+id+';count='+count; if(params) data += ';params='+params; if(el.closest('#cartShop') && $set('section cart[id="'+id+'"]')) { let mirror = $set('section cart[id="'+id+'"]'); mirror.querySelector('input').value = count; if(count == 0) { mirror.querySelector('button.minus').classList.add('none'); mirror.classList.remove('incart'); var bi = mirror.querySelector('button.plus i'); if(bi) { bi.classList.remove('mdi-cart-plus'); bi.classList.add('mdi-cart'); } } } $on('dialog').load('.shopCart,count', {'data': data}).then(function(res) { let ci = $on('basket'); res = JSON.parse(res); console.log(res); $set('#inbasket').setAttribute('items', res['count']); changeSumm(res['subtotal'], $set('#inbasket i')); if($set('.cartInfo')) { $set('.cartInfo span.items').innerText = res['count']; changeSumm(res['subtotal'], $set('.cartInfo span.total')); } if(el.closest('li').querySelector('span.qsumm')) { changeSumm(res['summ'], el.closest('li').querySelector('span.qsumm')); } if(res['count'] && ci.classList.contains('mdi-cart-outline')) { ci.classList.remove('mdi-cart-outline'); ci.classList.add('mdi-cart'); } if(!res['count'] && ci.classList.contains('mdi-cart')) { ci.classList.remove('mdi-cart'); ci.classList.add('mdi-cart-outline'); } if(!res['count'] && $set('#cartShop')) { $set('order').setAttribute('class','hide show-in'); setTimeout(() => { $set('order').innerHTML = ''; $set('order').removeAttribute('class'); }, 500); } }); }; function changeSumm(num, elem) { console.log(num); const time = 50; let newprice = num; let summ = elem.innerText.replace(/[^.\d]/g,''); num = Number(num.replace(/[^.\d]/g,'')); summ = Number(summ); if(num > summ) { let step = Number((num-summ).toFixed(2) / time); let interval = setInterval(() => { summ = Number(summ + step); if(summ >= num) { clearInterval(interval); elem.innerHTML = newprice; } else { var dec = summ.toFixed(2).split('.'); elem.innerHTML = dec[0]+'.'+dec[1]+''; } }, 1); } else { let step = Number((summ-num).toFixed(2) / time); let interval = setInterval(() => { summ = Number(summ - step); if(summ <= num) { clearInterval(interval); elem.innerHTML = newprice; } else { var dec = summ.toFixed(2).split('.'); elem.innerHTML = dec[0]+'.'+dec[1]+''; } }, 1); } }; function selectForm(el) { let dir = el.closest('dir'); if(dir.querySelector('li.select')) dir.querySelector('li.select').classList.remove('select'); el.closest('li').classList.add('select'); let text = el.closest('li').innerText; let $val = text; dir.querySelector('div.value').innerText = text; if(el.closest('li').getAttribute('value')) $val = el.closest('li').getAttribute('value'); dir.closest('div.row').querySelector('input').value = $val; if(dir.getAttribute('id') == 'deliverytype') { $load('', {'event': '.shopCart,order,cache', 'data': 'delivery='+$val}).then(function(req) { var res = JSON.parse(req); $set('div.order-info span.total').innerText = res['total']; $set('div.order-info span.delivery').innerText = res['delivery']; }); if($val == 'booking' || $val == 'inmarket' || $val == 'supply-self') { $set('.deliveryto').style = 'display: none'; } else { $set('.deliveryto').style = ''; } } if(dir.getAttribute('id') == 'paytype') { $load('', {'event': '.shopCart,order,cache', 'data': 'paytype='+$val}); if($val == 'payonline') { let form = $set('.order form'); $set('.order #send').style = 'display: none'; data = {'event': '.shopCart,liqpay', 'data': ''}; for(var i = 0; i < form.elements.length; i++) { data['data'] += ';'+form.elements[i].name+'='+encodeURIComponent(form.elements[i].value); } $load('', data).then(function(res) { res = JSON.parse(res); if(res['body']) { $set('#res').innerHTML = res['body']; $set('#res > div').classList.add('hide','show-in'); $set('#gopay').innerHTML = ''; setTimeout(() => { payOnlineAbort(); }, 5000); } else { $set('#gopay').innerHTML = res; if($set('#gopay form')) $set('#gopay form').removeAttribute('target'); } show(); }); } else { $set('.order #send').style = ''; $set('.order #gopay').innerHTML = ''; } } }; function payOnlineAbort() { $set('dir#paytype div.value').innerHTML = $set('dir#paytype').getAttribute('field'); $set('dir#paytype li.select').classList.remove('select'); $set('div.order input[name="paytype"]').setAttribute('value',''); $set('#res').innerHTML = ''; $set('.order #send').style = ''; }; function cacheData(el) { let data = {'event': '.shopCart,order,cache', 'data': 'key='+el.name+';val='+el.value}; $load('', data); }; endOrder = function(res) { show(); if(!$set('#res div[id]')) return; let notic = $set('#res div[id]'); let end = notic.getAttribute('id'); if(end == 'err' || end == 'wrong') { setTimeout(() => { notic.classList.add('hide'); }, 5000); setTimeout(() => { notic.remove(); }, 5500); } else if(end == 'ok') { setTimeout(() => { if(notic.getAttribute('reload')) location = notic.getAttribute('reload'); else location.reload(); }, 5000); } }