/*
var currenyFormatter = new Intl.NumberFormat(I18nNumberFormatter_locale.replace('_', '-'), {
  style: 'currency',
  currency: I18nNumberFormatter_currency,
});
var numberFormatter = new Intl.NumberFormat(I18nNumberFormatter_locale.replace('_', '-'), {
  style: 'decimal',
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
});
class I18nNumberFormatter {
    static currencyFormatter(number) {
        return currenyFormatter.format(number);
    };
    static numberFormatter(number) {
        return numberFormatter.format(number);
    };
    static serverNumberFormatter(number) {
        // number = number+"";
        // number = number.replace(',', '');
        // number = number.replace('.', '');
        // number = parseFloat(parseInt(number))/100.0;
        // return number;

        var thousandSeparator = (1111).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, '');
        var decimalSeparator = (1.1).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, '');

        // var result = number + "";
        // result = result.replace(new RegExp('\\' + thousandSeparator, 'g'), '');

        number = number + "";

        var result = parseFloat(number
            .replace(new RegExp('\\' + thousandSeparator, 'g'), '')
            .replace(new RegExp('\\' + decimalSeparator), '.')
        );
        return result;
    };
};
$(document).ready(function() {

    (function ($) {
        var old_val = $.fn.val;
        $.fn.val = function(value){

            if (this.hasClass('number-input')) {
                if (value===undefined) {
                    if (typeof this.data('original-number') == 'undefined' && this.get(0) !== null) {
                        $(this).data('original-number', I18nNumberFormatter.serverNumberFormatter(this.get(0).value));
                    }

                    return $(this).data('original-number') + '';

                    return I18nNumberFormatter.serverNumberFormatter(old_val.apply(this, arguments));
                    //do something to get the values
                    return old_val.apply(this, arguments);
                }
                //setter
                else {
                    //do something with the value
                    $(this).data('original-number', arguments[0] + '');
                    arguments[0] = I18nNumberFormatter.numberFormatter(arguments[0]) + '';
                    return old_val.apply(this, arguments);

                    arguments[0] = I18nNumberFormatter.numberFormatter(I18nNumberFormatter.serverNumberFormatter(arguments[0]));
                    return old_val.apply(this, arguments);
                }
            }

            return old_val.apply(this, arguments);
        };
    })(jQuery);

    $(document).on('change', '.number-input', function() {
        $(this).data('original-number', I18nNumberFormatter.serverNumberFormatter(this.value));
    });    

    $('.number-input').each(function() {
        $(this).data('original-number', this.value);
        $(this).val(this.value);
        // $(this).val(I18nNumberFormatter.numberFormatter(this.value));
        // $(this).val($(this).val());

        var form = $(this).closest('form');
        if (typeof form != 'undefined') {
            form.append('<input type="hidden" class="_numberFormatter" name="_numberFormatter[]" value="'+$(this).attr('name')+'" />');
        }
    });



    $('form').submit(function(){
        // var thousandSeparator = (1111).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, '');
        // var decimalSeparator = (1.1).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, '');

        $('form').find('.number-input').each(function() {
            var value = $(this).val();

            // value = parseFloat(value
            //     .replace(new RegExp('\\' + thousandSeparator, 'g'), '')
            //     .replace(new RegExp('\\' + decimalSeparator), '.')
            // );
            this.value = value;
        });
    });
});
*/

'use strict';

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var currenyFormatter = new Intl.NumberFormat(I18nNumberFormatter_locale.replace('_', '-'), {
    style: 'currency',
    currency: I18nNumberFormatter_currency
});
var _numberFormatter = new Intl.NumberFormat(I18nNumberFormatter_locale.replace('_', '-'), {
    style: 'decimal',
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
});

var I18nNumberFormatter = function () {
    function I18nNumberFormatter() {
        _classCallCheck(this, I18nNumberFormatter);
    }

    _createClass(I18nNumberFormatter, null, [{
        key: 'currencyFormatter',
        value: function currencyFormatter(number) {
            return currenyFormatter.format(number);
        }
    }, {
        key: 'numberFormatter',
        value: function numberFormatter(number) {
            return _numberFormatter.format(number);
        }
    }, {
        key: 'serverNumberFormatter',
        value: function serverNumberFormatter(number) {
            // number = number+"";
            // number = number.replace(',', '');
            // number = number.replace('.', '');
            // number = parseFloat(parseInt(number))/100.0;
            // return number;

            var thousandSeparator = 1111 .toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, '');
            var decimalSeparator = 1.1.toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, '');

            // var result = number + "";
            // result = result.replace(new RegExp('\\' + thousandSeparator, 'g'), '');

            number = number + "";

            var result = parseFloat(number.replace(new RegExp('\\' + thousandSeparator, 'g'), '').replace(new RegExp('\\' + decimalSeparator), '.'));
            return result;
        }
    }]);

    return I18nNumberFormatter;
}();

$(document).ready(function () {

    (function ($) {
        var old_val = $.fn.val;
        $.fn.val = function (value) {

            if (this.hasClass('number-input')) {
                if (value === undefined) {
                    if (typeof this.data('original-number') == 'undefined' && this.get(0) !== null) {
                        $(this).data('original-number', I18nNumberFormatter.serverNumberFormatter(this.get(0).value));
                    }

                    return $(this).data('original-number') + '';

                    // return I18nNumberFormatter.serverNumberFormatter(old_val.apply(this, arguments));
                    // //do something to get the values
                    // return old_val.apply(this, arguments);
                }
                //setter
                else {
                        //do something with the value
                        $(this).data('original-number', arguments[0] + '');

                        if (!isNaN(arguments[0])) {
                            arguments[0] = I18nNumberFormatter.numberFormatter(arguments[0]) + '';
                        }

                        return old_val.apply(this, arguments);

                        // arguments[0] = I18nNumberFormatter.numberFormatter(I18nNumberFormatter.serverNumberFormatter(arguments[0]));
                        // return old_val.apply(this, arguments);
                    }
            }

            return old_val.apply(this, arguments);
        };
    })(jQuery);

    $(document).on('change', '.number-input', function () {
        $(this).data('original-number', I18nNumberFormatter.serverNumberFormatter(this.value));
    });

    $('.number-input').each(function () {
        $(this).data('original-number', this.value);
        $(this).val(this.value);
        // $(this).val(I18nNumberFormatter.numberFormatter(this.value));
        // $(this).val($(this).val());

        var form = $(this).closest('form');
        if (typeof form != 'undefined') {
            form.append('<input type="hidden" class="_numberFormatter" name="_numberFormatter[]" value="' + $(this).attr('name') + '" />');
        }
    });

    $('form').submit(function () {
        // var thousandSeparator = (1111).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, '');
        // var decimalSeparator = (1.1).toLocaleString(I18nNumberFormatter_locale.replace('_', '-')).replace(/1/g, '');

        $('form').find('.number-input').each(function () {
            var value = $(this).val();

            // value = parseFloat(value
            //     .replace(new RegExp('\\' + thousandSeparator, 'g'), '')
            //     .replace(new RegExp('\\' + decimalSeparator), '.')
            // );
            this.value = value;
        });
    });
});