/* 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);
}
}