/* 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);