text: (function (factory) {
  
      if (typeof define === 'function' && define.amd) {
          define(['jquery'], factory);
      } else if (typeof exports === 'object') {
          module.exports = factory(require('jquery'));
      } else {
          factory(jQuery || Zepto);
      }
  
  }(function($) {
  
      $.fn.maskNumber = function(options) {
  
          var settings = $.extend({}, $.fn.maskNumber.defaults, options);
          settings = $.extend(settings, options);
          settings = $.extend(settings, this.data());
  
          this.keyup(function() {
              format(this, settings);
          });
          
          return this;
      };
  
      $.fn.maskNumber.defaults = {
          thousands: ",",
          decimal: ".",
          integer: false,
          allowNegative: false
      };
  
      function format(input, settings) {
          var inputValue = input.value;
          inputValue = removeNonDigits(inputValue, settings.allowNegative);
          if (!settings.integer) {
              inputValue = addDecimalSeparator(inputValue);
          }
          inputValue = addThousandSeparator(inputValue, settings);
          inputValue = removeLeftZeros(inputValue);
          applyNewValue(input, inputValue);
      }
      
      function removeNonDigits(value, allowNegative) {
          return ((allowNegative && value[0] === "-") ? "-" : "") + value.replace(/\D/g, "");
      }
      
      function addDecimalSeparator(value, settings) {
          value = value.replace(/(\d{2})$/, settings.decimal.concat("$1"));
          value = value.replace(/(\d+)(\d{3}, \d{2})$/g, "$1".concat(settings.thousands).concat("$2"));
          return value;
      }
      
      function addThousandSeparator(value, settings) {
          var totalThousandsPoints = (value.length - 3) / 3;
          var thousandsPointsAdded = 0;
          while (totalThousandsPoints > thousandsPointsAdded) {
              thousandsPointsAdded++;
              value = value.replace(/(\d+)(\d{3}.*)/, "$1".concat(settings.thousands).concat("$2"));
          }
          
          return value;
      }
      
      function removeLeftZeros(value) {
          return value.replace(/^(0)(\d)/g,"$2");
      }
      
      function applyNewValue(input, newValue) {
          if (input.value != newValue) {
              input.value = newValue;
          }
          $(input).trigger('change', input.value);
      }
  
  }));
  