$(function(){
    $.fn.jq_z_calculate=function(options){
        var settings={
            q_overall: null
            ,b_overall: 'li.overall span'
            ,b_hidden: 'td.qte input'
            //,b_current: '.abonnement .qte span'
            ,cartTable: 'div.container'
            ,prodParent: 'tr'
            ,singlePrice: 'td.unit-price span'
            ,totalPrice: 'td.total span'
            ,totalCart: 'li.total span.totalValue'
            ,add_to_cost: 'li.frais-report span'
            ,sousTotal: 'li.sous-total span'
            ,currentTva: 'li.tva span'
            ,tvaVal: 19.6
            ,sendQuerry: 'no_ajax'

        };
        if(options){
            $.extend(settings, options);
        }
        $.fn.extend({
            calculateAndFill:function(this_,settings){
                if((Number($(this_).find(settings.b_hidden).val())>settings.q_overall)&&settings.q_overall) $(this_).find(settings.b_hidden).val(settings.q_overall);
                var cur=Number($(this_).find(settings.b_hidden).val());
                if(cur==1){
                    $(this_).find('a.less').addClass('hide');
                }else{
                    $(this_).find('a.less').removeClass('hide');
                }
                if(cur==settings.q_overall){
                    $(this_).find('a.more').addClass('hide');
                }else{
                    $(this_).find('a.more').removeClass('hide');
                }
                //$(this_).find(settings.b_current).text(cur);
                $(this_).find(settings.b_overall).text(settings.q_overall-cur);
            },
            cartCalculation:function(settings){
                var total = 0;
  
                $(settings.cartTable+' '+settings.singlePrice).each(function (){
                    var unitPrice = Number($(this).html().replace(',', '.'));
                    var input = $(this).parents(settings.prodParent).find(settings.b_hidden);
                    var numOfUnits = Number(input.val());
                    if (isNaN(numOfUnits)) numOfUnits = 1;
                    if (numOfUnits < 1) numOfUnits = 1;
                    input.val(numOfUnits);
                    var price = unitPrice * numOfUnits;
                    if(settings.totalPrice) $(this).parents(settings.prodParent).find(settings.totalPrice).text(price.toFixed(2).toString().replace('.', ','));
                    total += price;
                });

                var tvaRes = 1+(settings.tvaVal/100);
                var withoutTva = total/tvaRes;
                var tva = total * (1-1/tvaRes);

                $(settings.cartTable+' '+settings.sousTotal).text(withoutTva.toFixed(2).toString().replace('.',','));
                $(settings.cartTable+' '+settings.currentTva).text(tva.toFixed(2).toString().replace('.',','));

                if(settings.add_to_cost&&total) total+=Number($(settings.cartTable+' '+settings.add_to_cost).text().replace(',', '.'));
                $(settings.cartTable+' '+settings.totalCart).text(total.toFixed(2).toString().replace('.',','));
            }
            /*
                ,updateCartCount:function(reply){
                   $('#bag_amount').text(reply.count);
                }
            */

        });
        //$(this).find(settings.b_current).before('<a class="less" href="#"><span><!--less--></span>&larr;</a>').after('<a class="more" href="#"><span><!--more--></span>&rarr;</a>');
        if(!settings.q_overall) $(settings.b_overall).parent().hide();
        $.fn.calculateAndFill(this,settings);
        if(settings.sendQuerry) $.fn.cartCalculation(settings);
        var currentElement=this;
        $(this).find('a.more').click(function(event){
            event.preventDefault();
            $(currentElement).find(settings.b_hidden).val(Number($(currentElement).find(settings.b_hidden).val())+1);
            $.fn.calculateAndFill(currentElement,settings);
            if(settings.sendQuerry){
                $.fn.cartCalculation(settings);
                if(settings.sendQuerry!='no_ajax') $.getJSON(
                    settings.sendQuerry,
                    {
                        id_sku: $(currentElement).find(settings.b_hidden).attr('name').split('-')[1],
                        count: $(currentElement).find(settings.b_hidden).val()
                        },
                    $.fn.updateCartCount()
                    );
            }
        });
        $(this).find('a.less').click(function(event){
            event.preventDefault();
            $(currentElement).find(settings.b_hidden).val(Number($(currentElement).find(settings.b_hidden).val())-1);
            $.fn.calculateAndFill(currentElement,settings);
            if(settings.sendQuerry){
                $.fn.cartCalculation(settings);
                if(settings.sendQuerry!='no_ajax') $.getJSON(
                    settings.sendQuerry,
                    {
                        id_sku: $(currentElement).find(settings.b_hidden).attr('name').split('-')[1],
                        count: $(currentElement).find(settings.b_hidden).val()
                        },
                    $.fn.updateCartCount()
                    );
            }
        });
		
    }
});
