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