text: /*
  Input Mask plugin extensions
  http://github.com/RobinHerbots/jquery.inputmask
  Copyright (c) 2010 - 2014 Robin Herbots
  Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
  Version: 0.0.0
  
  Optional extensions on the jquery.inputmask base
  */
  (function ($) {
      //extra definitions
      $.extend($.inputmask.defaults.definitions, {
          'A': {
              validator: "[A-Za-z]",
              cardinality: 1,
              casing: "upper" //auto uppercasing
          },
          '#': {
              validator: "[A-Za-z\u0410-\u044F\u0401\u04510-9]",
              cardinality: 1,
              casing: "upper"
          }
      });
      $.extend($.inputmask.defaults.aliases, {
          'url': {
              mask: "ir",
              placeholder: "",
              separator: "",
              defaultPrefix: "http://",
              regex: {
                  urlpre1: new RegExp("[fh]"),
                  urlpre2: new RegExp("(ft|ht)"),
                  urlpre3: new RegExp("(ftp|htt)"),
                  urlpre4: new RegExp("(ftp:|http|ftps)"),
                  urlpre5: new RegExp("(ftp:/|ftps:|http:|https)"),
                  urlpre6: new RegExp("(ftp://|ftps:/|http:/|https:)"),
                  urlpre7: new RegExp("(ftp://|ftps://|http://|https:/)"),
                  urlpre8: new RegExp("(ftp://|ftps://|http://|https://)")
              },
              definitions: {
                  'i': {
                      validator: function (chrs, buffer, pos, strict, opts) {
                          return true;
                      },
                      cardinality: 8,
                      prevalidator: (function () {
                          var result = [], prefixLimit = 8;
                          for (var i = 0; i < prefixLimit; i++) {
                              result[i] = (function () {
                                  var j = i;
                                  return {
                                      validator: function (chrs, buffer, pos, strict, opts) {
                                          if (opts.regex["urlpre" + (j + 1)]) {
                                              var tmp = chrs, k;
                                              if (((j + 1) - chrs.length) > 0) {
                                                  tmp = buffer.join('').substring(0, ((j + 1) - chrs.length)) + "" + tmp;
                                              }
                                              var isValid = opts.regex["urlpre" + (j + 1)].test(tmp);
                                              if (!strict && !isValid) {
                                                  pos = pos - j;
                                                  for (k = 0; k < opts.defaultPrefix.length; k++) {
                                                      buffer[pos] = opts.defaultPrefix[k]; pos++;
                                                  }
                                                  for (k = 0; k < tmp.length - 1; k++) {
                                                      buffer[pos] = tmp[k]; pos++;
                                                  }
                                                  return { "pos": pos };
                                              }
                                              return isValid;
                                          } else {
                                              return false;
                                          }
                                      }, cardinality: j
                                  };
                              })();
                          }
                          return result;
                      })()
                  },
                  "r": {
                      validator: ".",
                      cardinality: 50
                  }
              },
              insertMode: false,
              autoUnmask: false
          },
          "ip": { //ip-address mask
              mask: ["[[x]y]z.[[x]y]z.[[x]y]z.x[yz]", "[[x]y]z.[[x]y]z.[[x]y]z.[[x]y][z]"],
              definitions: {
                  'x': {
                      validator: "[012]",
                      cardinality: 1,
                      definitionSymbol: "i"
                  },
                  'y': {
                      validator: function (chrs, buffer, pos, strict, opts) {
                          if (pos - 1 > -1 && buffer[pos - 1] != ".")
                              chrs = buffer[pos - 1] + chrs;
                          else chrs = "0" + chrs;
                          return new RegExp("2[0-5]|[01][0-9]").test(chrs);
                      },
                      cardinality: 1,
                      definitionSymbol: "i"
                  },
                  'z': {
                      validator: function (chrs, buffer, pos, strict, opts) {
                          if (pos - 1 > -1 && buffer[pos - 1] != ".") {
                              chrs = buffer[pos - 1] + chrs;
                              if (pos - 2 > -1 && buffer[pos - 2] != ".") {
                                  chrs = buffer[pos - 2] + chrs;
                              } else chrs = "0" + chrs;
                          } else chrs = "00" + chrs;
                          return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs);
                      },
                      cardinality: 1,
                      definitionSymbol: "i"
                  }
              }
          }
      });
  })(jQuery);
  