jQuery.noConflict();
jQuery(document).ready(function($) {
    // This function implements the autofill zipcode/area from Posten Norge
    $("input[name^='autofill-posten']").each(function() {
        var fields = $(this).attr('value').split(':');
        if (fields.length == 2) {
            var inputField = $("input[name='"+fields[0]+"']");
            $.data(inputField, 'outputElement', {element: "input[name='"+fields[1]+"']"});

            inputField.bind('keyup', function() {
                if ($(this).val().length == 4) {
                    $.getJSON('http://fraktguide.bring.no/fraktguide/postalCode.json?pnr='+ $(this).val() +'&callback=?',
                        function(data){
                            $($.data(inputField, 'outputElement').element).val(data.result);
                        }
                    );
                } else {
                    $($.data(inputField, 'outputElement').element).val();
                }
            });
        }
    });        
    
    /**
     * Autosum Design Pilot budget fields
     */
    $('div.subtotal').each(function() {
        var name = $(this).attr('id').replace(/subtotal-/, '');
        var nameSplit = name.split('-');
        var elementCount = nameSplit[nameSplit.length-1];
        nameSplit.pop();
        for (var i = 1; i <= elementCount; i++) {
            var elementName = nameSplit.join('-') + '-' + i;
            $('input[name=' + elementName + ']').bind('keyup', function() {
                sumBudgets();
            });
        }
    });
    sumBudgets();
});

function sumBudgets() {
    (function($) {
        var grandTotal = 0;
        var columnTotals = new Array();
        for (var i = 0; i < $('div.subtotal').length; i++) {
            columnTotals.push(i);
            columnTotals[i] = 0;
        }
        $('div.subtotal').each(function() {
            var name = $(this).attr('id').replace(/subtotal-/, '');
            var nameSplit = name.split('-');
            var elementCount = nameSplit[nameSplit.length-1];
            nameSplit.pop();
            var value = 0;
            for (var i = 1; i <= elementCount; i++) {
                var elementName = nameSplit.join('-') + '-' + i;
                var val = parseInt($('input[name=' + elementName + ']').val());
                val = (isNaN(val)) ? 0 : val;
                value += val;
                columnTotals[i-1] += val;
            }
            $(this).html(value);
            grandTotal += value;
        });
        $('#grandtotal').html(grandTotal);
        for (var j = 0; j < columnTotals.length; j++) {
            $('#total-' + (j+1)).html(columnTotals[j]);
        }
    })(jQuery);
}
