/*!
 * jquery.inputmask.js
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Version: 3.3.11
 */

!(function (factory) {
  "function" == typeof define && define.amd
    ? define(["jquery", "./inputmask"], factory)
    : "object" == typeof exports
    ? (module.exports = factory(require("jquery"), require("./inputmask")))
    : factory(jQuery, window.Inputmask);
})(function ($, Inputmask) {
  return (
    void 0 === $.fn.inputmask &&
      ($.fn.inputmask = function (fn, options) {
        var nptmask,
          input = this[0];
        if ((void 0 === options && (options = {}), "string" == typeof fn))
          switch (fn) {
            case "unmaskedvalue":
              return input && input.inputmask
                ? input.inputmask.unmaskedvalue()
                : $(input).val();

            case "remove":
              return this.each(function () {
                this.inputmask && this.inputmask.remove();
              });

            case "getemptymask":
              return input && input.inputmask
                ? input.inputmask.getemptymask()
                : "";

            case "hasMaskedValue":
              return (
                !(!input || !input.inputmask) &&
                input.inputmask.hasMaskedValue()
              );

            case "isComplete":
              return !input || !input.inputmask || input.inputmask.isComplete();

            case "getmetadata":
              return input && input.inputmask
                ? input.inputmask.getmetadata()
                : void 0;

            case "setvalue":
              $(input).val(options),
                input &&
                  void 0 === input.inputmask &&
                  $(input).triggerHandler("setvalue");
              break;

            case "option":
              if ("string" != typeof options)
                return this.each(function () {
                  if (void 0 !== this.inputmask)
                    return this.inputmask.option(options);
                });
              if (input && void 0 !== input.inputmask)
                return input.inputmask.option(options);
              break;

            default:
              return (
                (options.alias = fn),
                (nptmask = new Inputmask(options)),
                this.each(function () {
                  nptmask.mask(this);
                })
              );
          }
        else {
          if ("object" == typeof fn)
            return (
              (nptmask = new Inputmask(fn)),
              void 0 === fn.mask && void 0 === fn.alias
                ? this.each(function () {
                    if (void 0 !== this.inputmask)
                      return this.inputmask.option(fn);
                    nptmask.mask(this);
                  })
                : this.each(function () {
                    nptmask.mask(this);
                  })
            );
          if (void 0 === fn)
            return this.each(function () {
              (nptmask = new Inputmask(options)).mask(this);
            });
        }
      }),
    $.fn.inputmask
  );
});
