(function ($){
function init(){
window.addEventListener('load', function (){
setupProductQuantities();
quantityChange();
setupQuickView();
});
$(document).ajaxComplete(function (){
setupProductQuantities();
quantityChange();
});
}
function setupQuickView(){
var quickViews=document.querySelectorAll('.wpbf-woo-quick-view');
if(!quickViews.length) return;
[].slice.call(quickViews).forEach(function (quickView){
var maxWait=3000;
var currentWait=0;
quickView.addEventListener('click', waitForQuickViewReponse);
function waitForQuickViewReponse(){
if(!document.querySelector('.wpbf-woo-quick-view-modal-content .type-product')){
if(currentWait <=maxWait){
setTimeout(function (){
waitForQuickViewReponse();
currentWait +=300;
}, 300);
}}else{
setupProductQuantitiesOnQuickView();
}}
});
}
function setupProductQuantitiesOnQuickView(){
var quantities=document.querySelectorAll('.wpbf-woo-quick-view-modal-content .quantity');
if(!quantities.length) return;
[].slice.call(quantities).forEach(function (quantity){
setupProductQuantity(quantity);
});
}
function setupProductQuantities(){
var quantities;
quantities=document.querySelectorAll('.quantity');
if(!quantities.length) return;
[].slice.call(quantities).forEach(function (quantity){
setupProductQuantity(quantity);
});
}
function setupProductQuantity(quantity){
var qty=quantity.querySelector('.qty');
var decrease=quantity.querySelector('.wpbf-qty-decrease');
var increase=quantity.querySelector('.wpbf-qty-increase');
if(!qty||!decrease||!increase) return;
qty.parentNode.classList.add('wpbf-quantity');
}
function quantityChange(){
$(document).off("click", ".wpbf-qty-control").on("click", ".wpbf-qty-control", function(){
var qty=$(this).parent().find('.qty');
var val=parseFloat(qty.val());
var max=parseFloat(qty.attr("max"));
var min=parseFloat(qty.attr("min"));
var step=parseFloat(qty.attr("step"));
if($(this).is(".wpbf-qty-increase")){
if(val===max) return false;
if(isNaN(val)){
qty.val(step);
}else if(val + step > max){
qty.val(max);
}else{
qty.val(val + step);
}}else{
if(val===min) return false;
if(isNaN(val)){
qty.val(min);
}else if(val - step < min){
qty.val(min);
}else{
qty.val(val - step);
}}
qty.val(Math.round(qty.val() * 100) / 100);
qty.trigger("change");
});
}
init();
})(jQuery);