/*
 * DRSGB Debt Calculator
 *
 * Copyright 2009, Jamiedia Internet, http://www.jamiedia.co.uk
 *
 */

(function($) {
    
    $.fn.debtCalculator = function() {
        return this.each(function() {
            var el = $(this);
            var income = el.find('.income input');
            var totalIncome = el.find('.total-income input');
            var expenditure = el.find('.expenditure input');
            var totalExpenditure = el.find('.total-expenditure input');
            var debtsOwed = el.find('.debts dd.middle input.amount');
            var debtsPayments = el.find('.debts dd.last input.amount');
            var totalDebtsOwed = $('dd.totalDebts input.amount');
            var totalDebtsPayments = $('dd.totalPayments input.amount');
            
            var disposableIncome = el.find('.summary input.income');
            var creditorsPayments = el.find('.summary .payments');
            var creditorsOwed = el.find('.summary .owed');
            
            var summary = el.find('.summary input');
            
            // Bind auto formatters
            el.find('input.amount').bind('blur', function() {
                var e = $(this);
                var val = e.val();
                
                val = parseFloat(val);
                if (isNaN(val))
                    val = 0;
                
                e.val(Number(val).toFixed(2));
            });
            
            // Bind total income calculator
            income.bind('blur', function() {
                var total = 0;
                
                income.each(function() {
                    var val = $(this).val();
                    
                    if (val !== '')
                        total += parseFloat(val);
                });
                
                totalIncome.val(Number(total).toFixed(2));
                disposableIncome.val(Number(totalIncome.val() - totalExpenditure.val()).toFixed(2));
            });
            
            // Bind total expenditure calculator
            expenditure.bind('blur', function() {
                var total = 0;
                
                expenditure.each(function() {
                    var val = $(this).val();
                    
                    if (val !== '')
                        total += parseFloat(val);
                });
                
                totalExpenditure.val(Number(total).toFixed(2));
                disposableIncome.val(Number(totalIncome.val() - totalExpenditure.val()).toFixed(2));
            });
            
            // Bind total debts owed calculator
            debtsOwed.bind('blur', function() {
                var totalOwed = 0;
                
                debtsOwed.each(function() {
                    var el = $(this);
                    var val = parseFloat(el.val());
                    
                    if (!isNaN(val)) {
                        totalOwed += val;
                    }
                });
                
                totalOwed = Number(totalOwed).toFixed(2);
                totalDebtsOwed.val(totalOwed);
                creditorsOwed.val(totalOwed);
            });
            
            // Bind total payments calculator
            debtsPayments.bind('blur', function() {
                var totalPayments = 0;
                
                debtsPayments.each(function() {
                    var el = $(this);
                    var val = parseFloat(el.val());
                    
                    if (!isNaN(val)) {
                        totalPayments += val;
                    }
                });
                
                totalPayments = Number(totalPayments).toFixed(2);
                totalDebtsPayments.val(totalPayments);
                creditorsPayments.val(totalPayments);
            });
        });
    };
    
    $(document).ready(function() {
        $('.debt-calculator').debtCalculator();
    });
})(jQuery);