(function($){
"use strict";
if(! String.prototype.getDecimals){
String.prototype.getDecimals=function(){
var num=this,
match=('' + num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
if(! match){
return 0;
}
return Math.max(0,(match[1] ? match[1].length:0) -(match[2] ? +match[2]:0));
}}
$.extend($.goalThemeCore, {
qty_init: function(){
var self=this;
$(document).on('updated_wc_div', function(){
self.refresh_quantity_increments();
});
$(document.body).on('cart_page_refreshed', function(){
self.refresh_quantity_increments();
});
self.refresh_quantity_increments();
self.qty_action();
},
qty_action: function(){
$(document).on('click', '.plus, .minus', function(){
var $qty=$(this).closest('.quantity').find('.qty'),
currentVal=parseFloat($qty.val()),
max=parseFloat($qty.attr('max')),
min=parseFloat($qty.attr('min')),
step=$qty.attr('step');
if(! currentVal||currentVal===''||currentVal==='NaN') currentVal=0;
if(max===''||max==='NaN') max='';
if(min===''||min==='NaN') min=0;
if(step==='any'||step===''||step===undefined||parseFloat(step)==='NaN') step=1;
if($(this).is('.plus')){
if(max&&(currentVal >=max)){
$qty.val(max);
}else{
$qty.val(( currentVal + parseFloat(step)).toFixed(step.getDecimals()));
}}else{
if(min&&(currentVal <=min)){
$qty.val(min);
}else if(currentVal > 0){
$qty.val(( currentVal - parseFloat(step)).toFixed(step.getDecimals()));
}}
$qty.trigger('change');
});
},
refresh_quantity_increments: function (){
$('div.quantity:not(.buttons_added), td.quantity:not(.buttons_added)').addClass('buttons_added').append('<input type="button" value="+" class="plus" />').prepend('<input type="button" value="-" class="minus" />');
}});
$.goalThemeExtensions.quantity_increment=$.goalThemeCore.qty_init;
})(jQuery);