var PaymentSlipSwiss = (function ($) {

    var me = {

        storage: {},
        
        init: function () {
            me.storage.$table = $('table#paymentslip_swiss').DataTable();
            me.storage.$editFieldset = $('#address-edit-fieldset');
            me.storage.$editFieldset.hide();

            $(document).on('click', '.edit-address-button', function (e) {
                e.preventDefault();
                var $button = $(this);
                var addressId = $button.data('address');
                me.editAddress(addressId);
            });

            $(document).on('click', '#save-address-button', function (e) {
                e.preventDefault();
                me.saveAddress();
            });
        },

        editAddress: function (addressId) {
            me.storage.$editFieldset.show();
            $.ajax({
                url: 'index.php?module=paymentslip_swiss&action=list&cmd=ajax-edit',
                type: 'POST',
                dataType: 'json',
                data: {
                    address: addressId
                },
                success: function (data) {
                    $('#customer-address').val(data.address);
                    $('#customer-esr-number').val(data.customer_esr_number);
                }
            });
        },

        saveAddress: function () {
            var addressId = $('#customer-address').val();
            var customerEsrNumber = $('#customer-esr-number').val();

            $.ajax({
                url: 'index.php?module=paymentslip_swiss&action=list&cmd=ajax-save',
                type: 'POST',
                dataType: 'json',
                data: {
                    address: addressId,
                    customerEsrNumber: customerEsrNumber
                },
                success: function () {
                    me.storage.$editFieldset.hide();
                    me.reloadDataTable();
                },
                error: function (jqXHR) {
                    alert('Hoppla. Beim Speichern ist etwas schief gelaufen: ' + jqXHR.responseJSON.error);
                }
            });

        },

        reloadDataTable: function () {
            me.storage.$table.draw();
        }
    };
    
    return {
        init: me.init
    }
    
})(jQuery);

$(document).ready(PaymentSlipSwiss.init);