浏览代码

further fix the numeric alias

Robin Herbots 9 年之前
父节点
当前提交
c30d47b8c3
共有 43 个文件被更改,包括 4903 次插入4854 次删除
  1. 2 9
      .editorconfig
  2. 43 18
      .eslintrc
  3. 3 0
      CHANGELOG.md
  4. 1 1
      Gruntfile.js
  5. 4 3
      README.md
  6. 1 1
      bower.json
  7. 1 1
      component.json
  8. 1 1
      composer.json
  9. 6 1
      dist/inputmask/inputmask.date.extensions.js
  10. 1 1
      dist/inputmask/inputmask.dependencyLib.jquery.js
  11. 1 1
      dist/inputmask/inputmask.extensions.js
  12. 8 12
      dist/inputmask/inputmask.js
  13. 20 30
      dist/inputmask/inputmask.numeric.extensions.js
  14. 1 1
      dist/inputmask/inputmask.phone.extensions.js
  15. 1 1
      dist/inputmask/inputmask.regex.extensions.js
  16. 1 1
      dist/inputmask/jquery.inputmask.js
  17. 32 41
      dist/jquery.inputmask.bundle.js
  18. 2 2
      dist/min/inputmask/inputmask.date.extensions.min.js
  19. 1 1
      dist/min/inputmask/inputmask.dependencyLib.jquery.min.js
  20. 1 1
      dist/min/inputmask/inputmask.extensions.min.js
  21. 3 3
      dist/min/inputmask/inputmask.min.js
  22. 2 2
      dist/min/inputmask/inputmask.numeric.extensions.min.js
  23. 1 1
      dist/min/inputmask/inputmask.phone.extensions.min.js
  24. 1 1
      dist/min/inputmask/inputmask.regex.extensions.min.js
  25. 1 1
      dist/min/inputmask/jquery.inputmask.min.js
  26. 4 4
      dist/min/jquery.inputmask.bundle.min.js
  27. 186 184
      extra/dependencyLibs/inputmask.dependencyLib.jqlite.js
  28. 343 341
      extra/dependencyLibs/inputmask.dependencyLib.js
  29. 45 45
      extra/phone-codes/phone-be.js
  30. 186 181
      extra/phone-codes/phone-nl.js
  31. 599 599
      js/inputmask.date.extensions.js
  32. 12 12
      js/inputmask.dependencyLib.jquery.js
  33. 107 107
      js/inputmask.extensions.js
  34. 2404 2398
      js/inputmask.js
  35. 546 559
      js/inputmask.numeric.extensions.js
  36. 67 67
      js/inputmask.phone.extensions.js
  37. 19 19
      js/inputmask.regex.extensions.js
  38. 71 71
      js/jquery.inputmask.js
  39. 1 1
      package.json
  40. 2 2
      qunit/config.js
  41. 6 5
      qunit/tests_dynamic.js
  42. 165 124
      qunit/tests_numeric.js
  43. 1 0
      qunit/tests_paste.js

+ 2 - 9
.editorconfig

@@ -4,13 +4,6 @@ root = true
 insert_final_newline = true
 charset = utf-8
 trim_trailing_whitespace = true
-
-[*.js]
 indent_style = tab
-
-[*.json]
-indent_style = space
-indent_size = 2
-
-[*.md]
-trim_trailing_whitespace = false
+indent_size = 4
+tab_width = 4

+ 43 - 18
.eslintrc

@@ -1,14 +1,22 @@
 {
   "rules": {
-    "consistent-return": [1],
-    "curly": [2, "multi-line"],
-    "eol-last": [0],
-    "eqeqeq": [2, "smart"],
+    "consistent-return": [
+      1
+    ],
+    "curly": [
+      2,
+      "multi-line"
+    ],
+    "eol-last": [
+      0
+    ],
+    "eqeqeq": [
+      2,
+      "smart"
+    ],
     "indent": [
       1,
-      "tab", {
-        "SwitchCase": 1
-      }
+      "tab"
     ],
     "quotes": [
       1,
@@ -19,21 +27,38 @@
       1,
       "except-parens"
     ],
-    "new-cap": [0],
-    "no-empty": [0],
-    "no-loop-func": [0],
-    "no-underscore-dangle": [0],
-    "no-unused-vars": [2, {
-      "vars": "all",
-      "args": "none"
-    }],
+    "new-cap": [
+      0
+    ],
+    "no-empty": [
+      0
+    ],
+    "no-loop-func": [
+      0
+    ],
+    "no-underscore-dangle": [
+      0
+    ],
+    "no-unused-vars": [
+      2,
+      {
+        "vars": "all",
+        "args": "none"
+      }
+    ],
     "no-use-before-define": [
       2,
       "nofunc"
     ],
-    "no-shadow": [0],
-    "semi-spacing": [1],
-    "strict": [0]
+    "no-shadow": [
+      0
+    ],
+    "semi-spacing": [
+      1
+    ],
+    "strict": [
+      0
+    ]
   },
   "env": {
     "browser": true

+ 3 - 0
CHANGELOG.md

@@ -13,6 +13,9 @@ All notable changes to this project will be documented in this file.
 - patchValueProperty - enable native value property patch on IE10/IE11
 
 ### Fixed
+- Lost zero while replacing a digit in group #1202
+- RadixFocus problem #686
+- Can not change integer part when it is "0" #1192
 - "[object Object]" value after `$element.inputmask('setvalue', '')` call #1208
 - Paste does not work properly when using numericInput #1195
 - error occurs in safari 9.0.3 (11601.4.4) #1191

+ 1 - 1
Gruntfile.js

@@ -12,7 +12,7 @@ module.exports = function(grunt) {
 	function createUglifyConfig(path) {
 		function stripModuleLoaders(src, dst) {
 			var srcFile = grunt.file.read(src);
-			srcFile = srcFile.replace(new RegExp("\\(function\\(factory\\)[\\s\\S]*\\(function\\(\\$"), "(function($");
+			srcFile = srcFile.replace(new RegExp("\\(function\\s?\\(factory\\)[\\s\\S]*\\(function\\s?\\(\\$"), "(function ($");
 			if (src.indexOf("extensions") === -1 && src.indexOf("jquery.inputmask") === -1) {
 				srcFile = srcFile.replace(new RegExp("\\}\\)\\);[\\s]*$"), "})(jQuery);");
 			} else srcFile = srcFile.replace(new RegExp("\\}\\)\\);[\\s]*$"), "})(jQuery, Inputmask);");

+ 4 - 3
README.md

@@ -591,7 +591,8 @@ var isValid = Inputmask.isValid("23/03/1973", { alias: "dd/mm/yyyy"});
 
 ## Options:
 ### placeholder
-Change the mask placeholder
+Change the mask placeholder.
+Default: "_"
 
 ```javascript
 $(document).ready(function(){
@@ -891,7 +892,7 @@ $(document).ready(function(){
 ### rightAlign
 Align the input to the right
 
-By setting the rightAlign you can specify to right align an inputmask. This is only applied in combination op the numericInput option or the dir-attribute. Default is true.  
+By setting the rightAlign you can specify to right align an inputmask. This is only applied in combination op the numericInput option or the dir-attribute. Default is true.
 
 ```javascript
 $(document).ready(function(){
@@ -953,7 +954,7 @@ Hook to alter the clear behavior in the stripValidPositions<br>Args => maskset,
 Hook to postValidate the result from isValid.  Usefull for validating the entry as a whole.  Args => buffer, currentResult, opts<br>Return => true|false
 
 ### staticDefinitionSymbol
-The staticDefinitionSymbol option is used to indicate that the static entries in the mask can match a certain definition.  Especially usefull with alternators so that static element in the mask can match another alternation.  
+The staticDefinitionSymbol option is used to indicate that the static entries in the mask can match a certain definition.  Especially usefull with alternators so that static element in the mask can match another alternation.
 
 In the example below we mark the spaces as a possible match for the "i" definition.  By doing so the mask can alternate to the second mask even when we typed already "12 3".
 

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "jquery.inputmask",
-  "version": "3.2.8-11",
+  "version": "3.2.8-15",
   "main": [
     "./dist/inputmask/inputmask.js"
   ],

+ 1 - 1
component.json

@@ -2,7 +2,7 @@
   "name": "jquery_inputmask",
   "repository": "robinherbots/jquery.inputmask",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
-  "version": "3.2.8-11",
+  "version": "3.2.8-15",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "main": "./dist/jquery.inputmask.bundle.js",
   "scripts": [

+ 1 - 1
composer.json

@@ -1,7 +1,7 @@
 {
   "name": "robinherbots/jquery.inputmask",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
-  "version": "3.2.8-11",
+  "version": "3.2.8-15",
   "type": "library",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "homepage": "http://robinherbots.github.io/jquery.inputmask",

+ 6 - 1
dist/inputmask/inputmask.date.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.2.8-11
+* Version: 3.2.8-15
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
@@ -90,6 +90,11 @@
                     var maxxYear = maxYearPrefix + maxYearPostfix;
                     return minyear > maxxYear ? minyear : maxxYear;
                 }
+                if (currentyear >= minyear && maxyear >= currentyear) {
+                    for (var currentYearPrefix = currentyear.toString().slice(0, 2); currentYearPrefix + hint > maxyear; ) currentYearPrefix--;
+                    var currentYearAndHint = currentYearPrefix + hint;
+                    return minyear > currentYearAndHint ? minyear : currentYearAndHint;
+                }
                 return currentyear;
             },
             onKeyDown: function(e, buffer, caretPos, opts) {

+ 1 - 1
dist/inputmask/inputmask.dependencyLib.jquery.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.2.8-11
+* Version: 3.2.8-15
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery")) : factory(jQuery);

+ 1 - 1
dist/inputmask/inputmask.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.2.8-11
+* Version: 3.2.8-15
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

文件差异内容过多而无法显示
+ 8 - 12
dist/inputmask/inputmask.js


文件差异内容过多而无法显示
+ 20 - 30
dist/inputmask/inputmask.numeric.extensions.js


+ 1 - 1
dist/inputmask/inputmask.phone.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.2.8-11
+* Version: 3.2.8-15
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 1 - 1
dist/inputmask/inputmask.regex.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.2.8-11
+* Version: 3.2.8-15
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 1 - 1
dist/inputmask/jquery.inputmask.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.2.8-11
+* Version: 3.2.8-15
 */
 !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);

文件差异内容过多而无法显示
+ 32 - 41
dist/jquery.inputmask.bundle.js


文件差异内容过多而无法显示
+ 2 - 2
dist/min/inputmask/inputmask.date.extensions.min.js


+ 1 - 1
dist/min/inputmask/inputmask.dependencyLib.jquery.min.js

@@ -3,6 +3,6 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.2.8-11
+* Version: 3.2.8-15
 */
 !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return window.dependencyLib=a,a});

文件差异内容过多而无法显示
+ 1 - 1
dist/min/inputmask/inputmask.extensions.min.js


文件差异内容过多而无法显示
+ 3 - 3
dist/min/inputmask/inputmask.min.js


文件差异内容过多而无法显示
+ 2 - 2
dist/min/inputmask/inputmask.numeric.extensions.min.js


文件差异内容过多而无法显示
+ 1 - 1
dist/min/inputmask/inputmask.phone.extensions.min.js


文件差异内容过多而无法显示
+ 1 - 1
dist/min/inputmask/inputmask.regex.extensions.min.js


文件差异内容过多而无法显示
+ 1 - 1
dist/min/inputmask/jquery.inputmask.min.js


文件差异内容过多而无法显示
+ 4 - 4
dist/min/jquery.inputmask.bundle.min.js


+ 186 - 184
extra/dependencyLibs/inputmask.dependencyLib.jqlite.js

@@ -1,225 +1,227 @@
 /*
-Input Mask plugin dependencyLib
-http://github.com/RobinHerbots/jquery.inputmask
-Copyright (c) 2010 -  Robin Herbots
-Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-*/
-(function(factory) {
-		if (typeof define === "function" && define.amd) {
-			define(["jqlite"], factory);
-		} else if (typeof exports === "object") {
-			module.exports = factory(require("jqlite"));
-		} else {
-			factory(jQuery);
-		}
+ Input Mask plugin dependencyLib
+ http://github.com/RobinHerbots/jquery.inputmask
+ Copyright (c) 2010 -  Robin Herbots
+ Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
+ */
+(function (factory) {
+	if (typeof define === "function" && define.amd) {
+		define(["jqlite"], factory);
+	} else if (typeof exports === "object") {
+		module.exports = factory(require("jqlite"));
+	} else {
+		factory(jQuery);
 	}
-	(function($) {
-		// Use a stripped-down indexOf as it's faster than native
-		// http://jsperf.com/thor-indexof-vs-for/5
-		function indexOf(list, elem) {
-			var i = 0,
-				len = list.length;
-			for (; i < len; i++) {
-				if (list[i] === elem) {
-					return i;
-				}
+}
+(function ($) {
+	// Use a stripped-down indexOf as it's faster than native
+	// http://jsperf.com/thor-indexof-vs-for/5
+	function indexOf(list, elem) {
+		var i = 0,
+			len = list.length;
+		for (; i < len; i++) {
+			if (list[i] === elem) {
+				return i;
 			}
-			return -1;
-		}
-		var class2type = {},
-			classTypes = "Boolean Number String Function Array Date RegExp Object Error".split(" ");
-		for (var nameNdx = 0; nameNdx < classTypes.length; nameNdx++) {
-			class2type["[object " + classTypes[nameNdx] + "]"] = classTypes[nameNdx].toLowerCase();
 		}
+		return -1;
+	}
 
-		function type(obj) {
-			if (obj == null) {
-				return obj + "";
-			}
-			// Support: Android<4.0, iOS<6 (functionish RegExp)
-			return typeof obj === "object" || typeof obj === "function" ?
-				class2type[class2type.toString.call(obj)] || "object" :
-				typeof obj;
-		}
+	var class2type = {},
+		classTypes = "Boolean Number String Function Array Date RegExp Object Error".split(" ");
+	for (var nameNdx = 0; nameNdx < classTypes.length; nameNdx++) {
+		class2type["[object " + classTypes[nameNdx] + "]"] = classTypes[nameNdx].toLowerCase();
+	}
 
-		function isWindow(obj) {
-			return obj != null && obj === obj.window;
+	function type(obj) {
+		if (obj == null) {
+			return obj + "";
 		}
+		// Support: Android<4.0, iOS<6 (functionish RegExp)
+		return typeof obj === "object" || typeof obj === "function" ?
+		class2type[class2type.toString.call(obj)] || "object" :
+			typeof obj;
+	}
 
-		function isArraylike(obj) {
-			// Support: iOS 8.2 (not reproducible in simulator)
-			// `in` check used to prevent JIT error (gh-2145)
-			// hasOwn isn't used here due to false negatives
-			// regarding Nodelist length in IE
-			var length = "length" in obj && obj.length,
-				ltype = type(obj);
+	function isWindow(obj) {
+		return obj != null && obj === obj.window;
+	}
 
-			if (ltype === "function" || isWindow(obj)) {
-				return false;
-			}
+	function isArraylike(obj) {
+		// Support: iOS 8.2 (not reproducible in simulator)
+		// `in` check used to prevent JIT error (gh-2145)
+		// hasOwn isn't used here due to false negatives
+		// regarding Nodelist length in IE
+		var length = "length" in obj && obj.length,
+			ltype = type(obj);
 
-			if (obj.nodeType === 1 && length) {
-				return true;
-			}
+		if (ltype === "function" || isWindow(obj)) {
+			return false;
+		}
 
-			return ltype === "array" || length === 0 ||
-				typeof length === "number" && length > 0 && (length - 1) in obj;
+		if (obj.nodeType === 1 && length) {
+			return true;
 		}
-		$.inArray = function(elem, arr, i) {
-			return arr == null ? -1 : indexOf(arr, elem, i);
-		};
-		$.isFunction = function(obj) {
-			return type(obj) === "function";
-		};
-		$.isArray = Array.isArray;
-		$.isPlainObject = function(obj) {
-			// Not plain objects:
-			// - Any object or value whose internal [[Class]] property is not "[object Object]"
-			// - DOM nodes
-			// - window
-			if (type(obj) !== "object" || obj.nodeType || isWindow(obj)) {
-				return false;
-			}
 
-			if (obj.constructor && !class2type.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) {
-				return false;
-			}
+		return ltype === "array" || length === 0 ||
+			typeof length === "number" && length > 0 && (length - 1) in obj;
+	}
 
-			// If the function hasn't returned already, we're confident that
-			// |obj| is a plain object, created by {} or constructed with new Object
-			return true;
-		};
-		$.extend = function() {
-			var options, name, src, copy, copyIsArray, clone,
-				target = arguments[0] || {},
-				i = 1,
-				length = arguments.length,
-				deep = false;
-
-			// Handle a deep copy situation
-			if (typeof target === "boolean") {
-				deep = target;
-
-				// Skip the boolean and the target
-				target = arguments[i] || {};
-				i++;
-			}
+	$.inArray = function (elem, arr, i) {
+		return arr == null ? -1 : indexOf(arr, elem, i);
+	};
+	$.isFunction = function (obj) {
+		return type(obj) === "function";
+	};
+	$.isArray = Array.isArray;
+	$.isPlainObject = function (obj) {
+		// Not plain objects:
+		// - Any object or value whose internal [[Class]] property is not "[object Object]"
+		// - DOM nodes
+		// - window
+		if (type(obj) !== "object" || obj.nodeType || isWindow(obj)) {
+			return false;
+		}
 
-			// Handle case when target is a string or something (possible in deep copy)
-			if (typeof target !== "object" && !$.isFunction(target)) {
-				target = {};
-			}
+		if (obj.constructor && !class2type.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) {
+			return false;
+		}
 
-			// Extend jQuery itself if only one argument is passed
-			if (i === length) {
-				target = this;
-				i--;
-			}
+		// If the function hasn't returned already, we're confident that
+		// |obj| is a plain object, created by {} or constructed with new Object
+		return true;
+	};
+	$.extend = function () {
+		var options, name, src, copy, copyIsArray, clone,
+			target = arguments[0] || {},
+			i = 1,
+			length = arguments.length,
+			deep = false;
+
+		// Handle a deep copy situation
+		if (typeof target === "boolean") {
+			deep = target;
+
+			// Skip the boolean and the target
+			target = arguments[i] || {};
+			i++;
+		}
 
-			for (; i < length; i++) {
-				// Only deal with non-null/undefined values
-				if ((options = arguments[i]) != null) {
-					// Extend the base object
-					for (name in options) {
-						src = target[name];
-						copy = options[name];
-
-						// Prevent never-ending loop
-						if (target === copy) {
-							continue;
-						}
+		// Handle case when target is a string or something (possible in deep copy)
+		if (typeof target !== "object" && !$.isFunction(target)) {
+			target = {};
+		}
 
-						// Recurse if we're merging plain objects or arrays
-						if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {
-							if (copyIsArray) {
-								copyIsArray = false;
-								clone = src && $.isArray(src) ? src : [];
+		// Extend jQuery itself if only one argument is passed
+		if (i === length) {
+			target = this;
+			i--;
+		}
 
-							} else {
-								clone = src && $.isPlainObject(src) ? src : {};
-							}
+		for (; i < length; i++) {
+			// Only deal with non-null/undefined values
+			if ((options = arguments[i]) != null) {
+				// Extend the base object
+				for (name in options) {
+					src = target[name];
+					copy = options[name];
+
+					// Prevent never-ending loop
+					if (target === copy) {
+						continue;
+					}
 
-							// Never move original objects, clone them
-							target[name] = $.extend(deep, clone, copy);
+					// Recurse if we're merging plain objects or arrays
+					if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {
+						if (copyIsArray) {
+							copyIsArray = false;
+							clone = src && $.isArray(src) ? src : [];
 
-							// Don't bring in undefined values
-						} else if (copy !== undefined) {
-							target[name] = copy;
+						} else {
+							clone = src && $.isPlainObject(src) ? src : {};
 						}
+
+						// Never move original objects, clone them
+						target[name] = $.extend(deep, clone, copy);
+
+						// Don't bring in undefined values
+					} else if (copy !== undefined) {
+						target[name] = copy;
 					}
 				}
 			}
+		}
 
-			// Return the modified object
-			return target;
-		};
-		$.each = function(obj, callback) {
-			var value, i = 0;
-
-			if (isArraylike(obj)) {
-				for (var length = obj.length; i < length; i++) {
-					value = callback.call(obj[i], i, obj[i]);
-					if (value === false) {
-						break;
-					}
+		// Return the modified object
+		return target;
+	};
+	$.each = function (obj, callback) {
+		var value, i = 0;
+
+		if (isArraylike(obj)) {
+			for (var length = obj.length; i < length; i++) {
+				value = callback.call(obj[i], i, obj[i]);
+				if (value === false) {
+					break;
 				}
-			} else {
-				for (i in obj) {
-					value = callback.call(obj[i], i, obj[i]);
-					if (value === false) {
-						break;
-					}
+			}
+		} else {
+			for (i in obj) {
+				value = callback.call(obj[i], i, obj[i]);
+				if (value === false) {
+					break;
 				}
 			}
+		}
 
-			return obj;
-		};
-		$.map = function(elems, callback) {
-			var value,
-				i = 0,
-				length = elems.length,
-				isArray = isArraylike(elems),
-				ret = [];
-
-			// Go through the array, translating each of the items to their new values
-			if (isArray) {
-				for (; i < length; i++) {
-					value = callback(elems[i], i);
-
-					if (value != null) {
-						ret.push(value);
-					}
+		return obj;
+	};
+	$.map = function (elems, callback) {
+		var value,
+			i = 0,
+			length = elems.length,
+			isArray = isArraylike(elems),
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if (isArray) {
+			for (; i < length; i++) {
+				value = callback(elems[i], i);
+
+				if (value != null) {
+					ret.push(value);
 				}
+			}
 
-				// Go through every key on the object,
-			} else {
-				for (i in elems) {
-					value = callback(elems[i], i);
+			// Go through every key on the object,
+		} else {
+			for (i in elems) {
+				value = callback(elems[i], i);
 
-					if (value != null) {
-						ret.push(value);
-					}
+				if (value != null) {
+					ret.push(value);
 				}
 			}
+		}
 
-			// Flatten any nested arrays
-			return [].concat(ret);
-		};
-		$.data = function(elem, name, data) {
-			return $(elem).data(name, data);
-		};
-		$.Event = $.Event || function CustomEvent(event, params) {
+		// Flatten any nested arrays
+		return [].concat(ret);
+	};
+	$.data = function (elem, name, data) {
+		return $(elem).data(name, data);
+	};
+	$.Event = $.Event || function CustomEvent(event, params) {
 			params = params || {
-				bubbles: false,
-				cancelable: false,
-				detail: undefined
-			};
+					bubbles: false,
+					cancelable: false,
+					detail: undefined
+				};
 			var evt = document.createEvent("CustomEvent");
 			evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
 			return evt;
-		}
-		$.Event.prototype = window.Event.prototype;
+		};
+	$.Event.prototype = window.Event.prototype;
 
-		window.dependencyLib = $;
-		return $;
-	}));
+	window.dependencyLib = $;
+	return $;
+}));

+ 343 - 341
extra/dependencyLibs/inputmask.dependencyLib.js

@@ -1,422 +1,424 @@
 /*
-Input Mask plugin dependencyLib
-http://github.com/RobinHerbots/jquery.inputmask
-Copyright (c) 2010 -  Robin Herbots
-Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-*/
-(function(factory) {
-		if (typeof define === "function" && define.amd) {
-			define(factory);
-		} else if (typeof exports === "object") {
-			module.exports = factory();
-		} else {
-			factory();
-		}
+ Input Mask plugin dependencyLib
+ http://github.com/RobinHerbots/jquery.inputmask
+ Copyright (c) 2010 -  Robin Herbots
+ Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
+ */
+(function (factory) {
+	if (typeof define === "function" && define.amd) {
+		define(factory);
+	} else if (typeof exports === "object") {
+		module.exports = factory();
+	} else {
+		factory();
 	}
-	(function() {
-
-		//helper functions
-
-		// Use a stripped-down indexOf as it's faster than native
-		// http://jsperf.com/thor-indexof-vs-for/5
-		function indexOf(list, elem) {
-			var i = 0,
-				len = list.length;
-			for (; i < len; i++) {
-				if (list[i] === elem) {
-					return i;
-				}
+}
+(function () {
+
+	//helper functions
+
+	// Use a stripped-down indexOf as it's faster than native
+	// http://jsperf.com/thor-indexof-vs-for/5
+	function indexOf(list, elem) {
+		var i = 0,
+			len = list.length;
+		for (; i < len; i++) {
+			if (list[i] === elem) {
+				return i;
 			}
-			return -1;
 		}
+		return -1;
+	}
 
-		var class2type = {},
-			classTypes = "Boolean Number String Function Array Date RegExp Object Error".split(" ");
-		for (var nameNdx = 0; nameNdx < classTypes.length; nameNdx++) {
-			class2type["[object " + classTypes[nameNdx] + "]"] = classTypes[nameNdx].toLowerCase();
-		}
+	var class2type = {},
+		classTypes = "Boolean Number String Function Array Date RegExp Object Error".split(" ");
+	for (var nameNdx = 0; nameNdx < classTypes.length; nameNdx++) {
+		class2type["[object " + classTypes[nameNdx] + "]"] = classTypes[nameNdx].toLowerCase();
+	}
 
-		function type(obj) {
-			if (obj == null) {
-				return obj + "";
-			}
-			// Support: Android<4.0, iOS<6 (functionish RegExp)
-			return typeof obj === "object" || typeof obj === "function" ?
-				class2type[class2type.toString.call(obj)] || "object" :
-				typeof obj;
+	function type(obj) {
+		if (obj == null) {
+			return obj + "";
 		}
+		// Support: Android<4.0, iOS<6 (functionish RegExp)
+		return typeof obj === "object" || typeof obj === "function" ?
+		class2type[class2type.toString.call(obj)] || "object" :
+			typeof obj;
+	}
+
+	function isWindow(obj) {
+		return obj != null && obj === obj.window;
+	}
 
-		function isWindow(obj) {
-			return obj != null && obj === obj.window;
+	function isArraylike(obj) {
+		// Support: iOS 8.2 (not reproducible in simulator)
+		// `in` check used to prevent JIT error (gh-2145)
+		// hasOwn isn't used here due to false negatives
+		// regarding Nodelist length in IE
+		var length = "length" in obj && obj.length,
+			ltype = type(obj);
+
+		if (ltype === "function" || isWindow(obj)) {
+			return false;
 		}
 
-		function isArraylike(obj) {
-			// Support: iOS 8.2 (not reproducible in simulator)
-			// `in` check used to prevent JIT error (gh-2145)
-			// hasOwn isn't used here due to false negatives
-			// regarding Nodelist length in IE
-			var length = "length" in obj && obj.length,
-				ltype = type(obj);
+		if (obj.nodeType === 1 && length) {
+			return true;
+		}
 
-			if (ltype === "function" || isWindow(obj)) {
-				return false;
-			}
+		return ltype === "array" || length === 0 ||
+			typeof length === "number" && length > 0 && (length - 1) in obj;
+	}
 
-			if (obj.nodeType === 1 && length) {
-				return true;
-			}
+	function isValidElement(elem) {
+		return elem instanceof Element;
+	}
 
-			return ltype === "array" || length === 0 ||
-				typeof length === "number" && length > 0 && (length - 1) in obj;
+	function DependencyLib(elem) {
+		if (elem instanceof DependencyLib) {
+			return elem;
 		}
-
-		function isValidElement(elem) {
-			return elem instanceof Element;
+		if (!(this instanceof DependencyLib)) {
+			return new DependencyLib(elem);
 		}
-
-		function DependencyLib(elem) {
-			if (elem instanceof DependencyLib) {
-				return elem;
-			}
-			if (!(this instanceof DependencyLib)) {
-				return new DependencyLib(elem);
-			}
-			if (elem !== undefined && elem !== null && elem !== window) {
-				this[0] = elem.nodeName ? elem : (elem[0] !== undefined && elem[0].nodeName ? elem[0] : document.querySelector(elem));
-				if (this[0] !== undefined && this[0] !== null) {
-					this[0].eventRegistry = this[0].eventRegistry || {};
-				}
+		if (elem !== undefined && elem !== null && elem !== window) {
+			this[0] = elem.nodeName ? elem : (elem[0] !== undefined && elem[0].nodeName ? elem[0] : document.querySelector(elem));
+			if (this[0] !== undefined && this[0] !== null) {
+				this[0].eventRegistry = this[0].eventRegistry || {};
 			}
 		}
+	}
 
-		DependencyLib.prototype = {
-			on: function(events, handler) {
-				if (isValidElement(this[0])) {
-					var eventRegistry = this[0].eventRegistry,
-						elem = this[0];
-
-					function addEvent(ev, namespace) {
-						//register domevent
-						if (elem.addEventListener) { // all browsers except IE before version 9
-							elem.addEventListener(ev, handler, false);
-						} else if (elem.attachEvent) { // IE before version 9
-							elem.attachEvent("on" + ev, handler);
-						}
-						eventRegistry[ev] = eventRegistry[ev] || {};
-						eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];
-						eventRegistry[ev][namespace].push(handler);
-					}
-					var _events = events.split(" ");
-					for (var endx = 0; endx < _events.length; endx++) {
-						var nsEvent = _events[endx].split("."),
-							ev = nsEvent[0],
-							namespace = nsEvent[1] || "global";
-						addEvent(ev, namespace);
+	DependencyLib.prototype = {
+		on: function (events, handler) {
+			if (isValidElement(this[0])) {
+				var eventRegistry = this[0].eventRegistry,
+					elem = this[0];
+
+				function addEvent(ev, namespace) {
+					//register domevent
+					if (elem.addEventListener) { // all browsers except IE before version 9
+						elem.addEventListener(ev, handler, false);
+					} else if (elem.attachEvent) { // IE before version 9
+						elem.attachEvent("on" + ev, handler);
 					}
+					eventRegistry[ev] = eventRegistry[ev] || {};
+					eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];
+					eventRegistry[ev][namespace].push(handler);
 				}
-				return this;
-			},
-			off: function(events, handler) {
-				if (isValidElement(this[0])) {
-					var eventRegistry = this[0].eventRegistry,
-						elem = this[0];
-
-					function removeEvent(ev, namespace, handler) {
-						if (ev in eventRegistry === true) {
-							//unbind to dom events
-							if (elem.removeEventListener) { // all browsers except IE before version 9
-								elem.removeEventListener(ev, handler, false);
-							} else if (elem.detachEvent) { // IE before version 9
-								elem.detachEvent("on" + ev, handler);
-							}
-							if (namespace === "global") {
-								for (var nmsp in eventRegistry[ev]) {
-									eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1);
-								}
-							} else {
-								eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);
+
+				var _events = events.split(" ");
+				for (var endx = 0; endx < _events.length; endx++) {
+					var nsEvent = _events[endx].split("."),
+						ev = nsEvent[0],
+						namespace = nsEvent[1] || "global";
+					addEvent(ev, namespace);
+				}
+			}
+			return this;
+		},
+		off: function (events, handler) {
+			if (isValidElement(this[0])) {
+				var eventRegistry = this[0].eventRegistry,
+					elem = this[0];
+
+				function removeEvent(ev, namespace, handler) {
+					if (ev in eventRegistry === true) {
+						//unbind to dom events
+						if (elem.removeEventListener) { // all browsers except IE before version 9
+							elem.removeEventListener(ev, handler, false);
+						} else if (elem.detachEvent) { // IE before version 9
+							elem.detachEvent("on" + ev, handler);
+						}
+						if (namespace === "global") {
+							for (var nmsp in eventRegistry[ev]) {
+								eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1);
 							}
+						} else {
+							eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);
 						}
 					}
+				}
 
-					function resolveNamespace(ev, namespace) {
-						var evts = [],
-							hndx, hndL;
-						if (ev.length > 0) {
-							if (handler === undefined) {
-								for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) {
-									evts.push({
-										ev: ev,
-										namespace: namespace && namespace.length > 0 ? namespace : "global",
-										handler: eventRegistry[ev][namespace][hndx]
-									});
-								}
-							} else {
+				function resolveNamespace(ev, namespace) {
+					var evts = [],
+						hndx, hndL;
+					if (ev.length > 0) {
+						if (handler === undefined) {
+							for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) {
 								evts.push({
 									ev: ev,
 									namespace: namespace && namespace.length > 0 ? namespace : "global",
-									handler: handler
+									handler: eventRegistry[ev][namespace][hndx]
 								});
 							}
-						} else if (namespace.length > 0) {
-							for (var evNdx in eventRegistry) {
-								for (var nmsp in eventRegistry[evNdx]) {
-									if (nmsp === namespace) {
-										if (handler === undefined) {
-											for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) {
-												evts.push({
-													ev: evNdx,
-													namespace: nmsp,
-													handler: eventRegistry[evNdx][nmsp][hndx]
-												});
-											}
-										} else {
+						} else {
+							evts.push({
+								ev: ev,
+								namespace: namespace && namespace.length > 0 ? namespace : "global",
+								handler: handler
+							});
+						}
+					} else if (namespace.length > 0) {
+						for (var evNdx in eventRegistry) {
+							for (var nmsp in eventRegistry[evNdx]) {
+								if (nmsp === namespace) {
+									if (handler === undefined) {
+										for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) {
 											evts.push({
 												ev: evNdx,
 												namespace: nmsp,
-												handler: handler
+												handler: eventRegistry[evNdx][nmsp][hndx]
 											});
 										}
+									} else {
+										evts.push({
+											ev: evNdx,
+											namespace: nmsp,
+											handler: handler
+										});
 									}
 								}
 							}
 						}
-
-						return evts;
 					}
 
-					var _events = events.split(" ");
-					for (var endx = 0; endx < _events.length; endx++) {
-						var nsEvent = _events[endx].split("."),
-							offEvents = resolveNamespace(nsEvent[0], nsEvent[1]);
-						for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) {
-							removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);
-						}
+					return evts;
+				}
+
+				var _events = events.split(" ");
+				for (var endx = 0; endx < _events.length; endx++) {
+					var nsEvent = _events[endx].split("."),
+						offEvents = resolveNamespace(nsEvent[0], nsEvent[1]);
+					for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) {
+						removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);
 					}
 				}
-				return this;
-			},
-			trigger: function(events /* , args... */ ) {
-				if (isValidElement(this[0])) {
-					var eventRegistry = this[0].eventRegistry,
-						elem = this[0];
-					var _events = typeof events === "string" ? events.split(" ") : [events.type];
-					for (var endx = 0; endx < _events.length; endx++) {
-						var nsEvent = _events[endx].split("."),
-							ev = nsEvent[0],
-							namespace = nsEvent[1] || "global";
-						if (document !== undefined && namespace === "global") {
-							//trigger domevent
-							var evnt, i, params = {
-								bubbles: false,
-								cancelable: true,
-								detail: Array.prototype.slice.call(arguments, 1)
-							};
-							// The custom event that will be created
-							if (document.createEvent) {
-								try {
-									evnt = new CustomEvent(ev, params);
-								} catch (e) {
-									evnt = document.createEvent("CustomEvent");
-									evnt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
-								}
-								if (events.type) DependencyLib.extend(evnt, events);
-								elem.dispatchEvent(evnt);
-							} else {
-								evnt = document.createEventObject();
-								evnt.eventType = ev;
-								if (events.type) DependencyLib.extend(evnt, events);
-								elem.fireEvent("on" + evnt.eventType, evnt);
+			}
+			return this;
+		},
+		trigger: function (events /* , args... */) {
+			if (isValidElement(this[0])) {
+				var eventRegistry = this[0].eventRegistry,
+					elem = this[0];
+				var _events = typeof events === "string" ? events.split(" ") : [events.type];
+				for (var endx = 0; endx < _events.length; endx++) {
+					var nsEvent = _events[endx].split("."),
+						ev = nsEvent[0],
+						namespace = nsEvent[1] || "global";
+					if (document !== undefined && namespace === "global") {
+						//trigger domevent
+						var evnt, i, params = {
+							bubbles: false,
+							cancelable: true,
+							detail: Array.prototype.slice.call(arguments, 1)
+						};
+						// The custom event that will be created
+						if (document.createEvent) {
+							try {
+								evnt = new CustomEvent(ev, params);
+							} catch (e) {
+								evnt = document.createEvent("CustomEvent");
+								evnt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
 							}
-						} else if (eventRegistry[ev] !== undefined) {
-							arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]);
-							if (namespace === "global") {
-								for (var nmsp in eventRegistry[ev]) {
-									for (i = 0; i < eventRegistry[ev][nmsp].length; i++) {
-										eventRegistry[ev][nmsp][i].apply(elem, arguments);
-									}
-								}
-							} else {
-								for (i = 0; i < eventRegistry[ev][namespace].length; i++) {
-									eventRegistry[ev][namespace][i].apply(elem, arguments);
+							if (events.type) DependencyLib.extend(evnt, events);
+							elem.dispatchEvent(evnt);
+						} else {
+							evnt = document.createEventObject();
+							evnt.eventType = ev;
+							if (events.type) DependencyLib.extend(evnt, events);
+							elem.fireEvent("on" + evnt.eventType, evnt);
+						}
+					} else if (eventRegistry[ev] !== undefined) {
+						arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]);
+						if (namespace === "global") {
+							for (var nmsp in eventRegistry[ev]) {
+								for (i = 0; i < eventRegistry[ev][nmsp].length; i++) {
+									eventRegistry[ev][nmsp][i].apply(elem, arguments);
 								}
 							}
+						} else {
+							for (i = 0; i < eventRegistry[ev][namespace].length; i++) {
+								eventRegistry[ev][namespace][i].apply(elem, arguments);
+							}
 						}
 					}
 				}
-				return this;
-			}
-		};
-
-		//static
-		DependencyLib.isFunction = function(obj) {
-			return type(obj) === "function";
-		};
-		DependencyLib.noop = function() {};
-		DependencyLib.isArray = Array.isArray;
-		DependencyLib.inArray = function(elem, arr, i) {
-			return arr == null ? -1 : indexOf(arr, elem, i);
-		};
-		DependencyLib.valHooks = undefined;
-
-
-		DependencyLib.isPlainObject = function(obj) {
-			// Not plain objects:
-			// - Any object or value whose internal [[Class]] property is not "[object Object]"
-			// - DOM nodes
-			// - window
-			if (type(obj) !== "object" || obj.nodeType || isWindow(obj)) {
-				return false;
 			}
+			return this;
+		}
+	};
+
+	//static
+	DependencyLib.isFunction = function (obj) {
+		return type(obj) === "function";
+	};
+	DependencyLib.noop = function () {
+	};
+	DependencyLib.isArray = Array.isArray;
+	DependencyLib.inArray = function (elem, arr, i) {
+		return arr == null ? -1 : indexOf(arr, elem, i);
+	};
+	DependencyLib.valHooks = undefined;
+
+
+	DependencyLib.isPlainObject = function (obj) {
+		// Not plain objects:
+		// - Any object or value whose internal [[Class]] property is not "[object Object]"
+		// - DOM nodes
+		// - window
+		if (type(obj) !== "object" || obj.nodeType || isWindow(obj)) {
+			return false;
+		}
 
-			if (obj.constructor && !class2type.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) {
-				return false;
-			}
+		if (obj.constructor && !class2type.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) {
+			return false;
+		}
 
-			// If the function hasn't returned already, we're confident that
-			// |obj| is a plain object, created by {} or constructed with new Object
-			return true;
-		};
-
-		DependencyLib.extend = function() {
-			var options, name, src, copy, copyIsArray, clone,
-				target = arguments[0] || {},
-				i = 1,
-				length = arguments.length,
-				deep = false;
-
-			// Handle a deep copy situation
-			if (typeof target === "boolean") {
-				deep = target;
-
-				// Skip the boolean and the target
-				target = arguments[i] || {};
-				i++;
-			}
+		// If the function hasn't returned already, we're confident that
+		// |obj| is a plain object, created by {} or constructed with new Object
+		return true;
+	};
+
+	DependencyLib.extend = function () {
+		var options, name, src, copy, copyIsArray, clone,
+			target = arguments[0] || {},
+			i = 1,
+			length = arguments.length,
+			deep = false;
+
+		// Handle a deep copy situation
+		if (typeof target === "boolean") {
+			deep = target;
+
+			// Skip the boolean and the target
+			target = arguments[i] || {};
+			i++;
+		}
 
-			// Handle case when target is a string or something (possible in deep copy)
-			if (typeof target !== "object" && !DependencyLib.isFunction(target)) {
-				target = {};
-			}
+		// Handle case when target is a string or something (possible in deep copy)
+		if (typeof target !== "object" && !DependencyLib.isFunction(target)) {
+			target = {};
+		}
 
-			// Extend jQuery itself if only one argument is passed
-			if (i === length) {
-				target = this;
-				i--;
-			}
+		// Extend jQuery itself if only one argument is passed
+		if (i === length) {
+			target = this;
+			i--;
+		}
 
-			for (; i < length; i++) {
-				// Only deal with non-null/undefined values
-				if ((options = arguments[i]) != null) {
-					// Extend the base object
-					for (name in options) {
-						src = target[name];
-						copy = options[name];
-
-						// Prevent never-ending loop
-						if (target === copy) {
-							continue;
-						}
+		for (; i < length; i++) {
+			// Only deal with non-null/undefined values
+			if ((options = arguments[i]) != null) {
+				// Extend the base object
+				for (name in options) {
+					src = target[name];
+					copy = options[name];
+
+					// Prevent never-ending loop
+					if (target === copy) {
+						continue;
+					}
 
-						// Recurse if we're merging plain objects or arrays
-						if (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy)))) {
-							if (copyIsArray) {
-								copyIsArray = false;
-								clone = src && DependencyLib.isArray(src) ? src : [];
+					// Recurse if we're merging plain objects or arrays
+					if (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy)))) {
+						if (copyIsArray) {
+							copyIsArray = false;
+							clone = src && DependencyLib.isArray(src) ? src : [];
 
-							} else {
-								clone = src && DependencyLib.isPlainObject(src) ? src : {};
-							}
+						} else {
+							clone = src && DependencyLib.isPlainObject(src) ? src : {};
+						}
 
-							// Never move original objects, clone them
-							target[name] = DependencyLib.extend(deep, clone, copy);
+						// Never move original objects, clone them
+						target[name] = DependencyLib.extend(deep, clone, copy);
 
-							// Don't bring in undefined values
-						} else if (copy !== undefined) {
-							target[name] = copy;
-						}
+						// Don't bring in undefined values
+					} else if (copy !== undefined) {
+						target[name] = copy;
 					}
 				}
 			}
+		}
 
-			// Return the modified object
-			return target;
-		};
+		// Return the modified object
+		return target;
+	};
 
-		DependencyLib.each = function(obj, callback) {
-			var value, i = 0;
+	DependencyLib.each = function (obj, callback) {
+		var value, i = 0;
 
-			if (isArraylike(obj)) {
-				for (var length = obj.length; i < length; i++) {
-					value = callback.call(obj[i], i, obj[i]);
-					if (value === false) {
-						break;
-					}
+		if (isArraylike(obj)) {
+			for (var length = obj.length; i < length; i++) {
+				value = callback.call(obj[i], i, obj[i]);
+				if (value === false) {
+					break;
 				}
-			} else {
-				for (i in obj) {
-					value = callback.call(obj[i], i, obj[i]);
-					if (value === false) {
-						break;
-					}
+			}
+		} else {
+			for (i in obj) {
+				value = callback.call(obj[i], i, obj[i]);
+				if (value === false) {
+					break;
 				}
 			}
+		}
 
-			return obj;
-		};
-		DependencyLib.map = function(elems, callback) {
-			var value,
-				i = 0,
-				length = elems.length,
-				isArray = isArraylike(elems),
-				ret = [];
-
-			// Go through the array, translating each of the items to their new values
-			if (isArray) {
-				for (; i < length; i++) {
-					value = callback(elems[i], i);
-
-					if (value != null) {
-						ret.push(value);
-					}
+		return obj;
+	};
+	DependencyLib.map = function (elems, callback) {
+		var value,
+			i = 0,
+			length = elems.length,
+			isArray = isArraylike(elems),
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if (isArray) {
+			for (; i < length; i++) {
+				value = callback(elems[i], i);
+
+				if (value != null) {
+					ret.push(value);
 				}
+			}
 
-				// Go through every key on the object,
-			} else {
-				for (i in elems) {
-					value = callback(elems[i], i);
+			// Go through every key on the object,
+		} else {
+			for (i in elems) {
+				value = callback(elems[i], i);
 
-					if (value != null) {
-						ret.push(value);
-					}
+				if (value != null) {
+					ret.push(value);
 				}
 			}
+		}
 
-			// Flatten any nested arrays
-			return [].concat(ret);
-		};
+		// Flatten any nested arrays
+		return [].concat(ret);
+	};
 
-		DependencyLib.data = function(owner, key, value) {
-			if (value === undefined) {
-				return owner.__data ? owner.__data[key] : null;
-			} else {
-				owner.__data = owner.__data || {};
-				owner.__data[key] = value;
-			}
-		};
+	DependencyLib.data = function (owner, key, value) {
+		if (value === undefined) {
+			return owner.__data ? owner.__data[key] : null;
+		} else {
+			owner.__data = owner.__data || {};
+			owner.__data[key] = value;
+		}
+	};
 
-		DependencyLib.Event = function CustomEvent(event, params) {
-			params = params || {
+	DependencyLib.Event = function CustomEvent(event, params) {
+		params = params || {
 				bubbles: false,
 				cancelable: false,
 				detail: undefined
 			};
-			var evt = document.createEvent("CustomEvent");
-			evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
-			return evt;
-		}
-		DependencyLib.Event.prototype = window.Event.prototype;
+		var evt = document.createEvent("CustomEvent");
+		evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
+		return evt;
+	}
+	DependencyLib.Event.prototype = window.Event.prototype;
 
-		window.dependencyLib = DependencyLib;
-		return DependencyLib;
-	}));
+	window.dependencyLib = DependencyLib;
+	return DependencyLib;
+}));

+ 45 - 45
extra/phone-codes/phone-be.js

@@ -1,47 +1,47 @@
 [
-    { "mask": "+32(53)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Aalst (Alost)" },
-    { "mask": "+32(3)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Antwerpen (Anvers)" },
-    { "mask": "+32(63)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Arlon" },
-    { "mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ath" },
-    { "mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Brugge (Bruges)" },
-    { "mask": "+32(2)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Brussel/Bruxelles (Brussels)" },
-    { "mask": "+32(71)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Charleroi" },
-    { "mask": "+32(60)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Chimay" },
-    { "mask": "+32(83)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ciney" },
-    { "mask": "+32(52)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dendermonde" },
-    { "mask": "+32(13)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Diest" },
-    { "mask": "+32(82)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dinant" },
-    { "mask": "+32(86)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Durbuy" },
-    { "mask": "+32(89)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Genk" },
-    { "mask": "+32(9)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Gent (Gand)" },
-    { "mask": "+32(11)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Hasselt" },
-    { "mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Herentals" },
-    { "mask": "+32(85)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Huy (Hoei)" },
-    { "mask": "+32(64)##-##-##", "cc": "BE", "cd": "Belgium", "city": "La Louvière" },
-    { "mask": "+32(16)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Leuven (Louvain)" },
-    { "mask": "+32(61)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Libramont" },
-    { "mask": "+32(4)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Liège (Luik)" },
-    { "mask": "+32(15)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mechelen (Malines)" },
-    { "mask": "+32(46#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" },
-    { "mask": "+32(47#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" },
-    { "mask": "+32(48#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" },
-    { "mask": "+32(49#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" },
-    { "mask": "+32(461)8#-##-##", "cc": "BE", "cd": "Belgium", "city": "GSM-R (NMBS)" },
-    { "mask": "+32(65)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mons (Bergen)" },
-    { "mask": "+32(81)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Namur (Namen)" },
-    { "mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nieuwpoort (Nieuport)" },
-    { "mask": "+32(54)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ninove" },
-    { "mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nivelles (Nijvel)" },
-    { "mask": "+32(59)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Oostende (Ostende)" },
-    { "mask": "+32(51)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Roeselare (Roulers)" },
-    { "mask": "+32(55)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ronse" },
-    { "mask": "+32(80)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Stavelot" },
-    { "mask": "+32(12)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tongeren (Tongres)" },
-    { "mask": "+32(69)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tounai" },
-    { "mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Turnhout" },
-    { "mask": "+32(87)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Verviers" },
-    { "mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Veurne" },
-    { "mask": "+32(19)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wareme" },
-    { "mask": "+32(10)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wavre (Waver)" },
-    { "mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Zeebrugge" }
+	{"mask": "+32(53)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Aalst (Alost)"},
+	{"mask": "+32(3)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Antwerpen (Anvers)"},
+	{"mask": "+32(63)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Arlon"},
+	{"mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ath"},
+	{"mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Brugge (Bruges)"},
+	{"mask": "+32(2)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Brussel/Bruxelles (Brussels)"},
+	{"mask": "+32(71)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Charleroi"},
+	{"mask": "+32(60)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Chimay"},
+	{"mask": "+32(83)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ciney"},
+	{"mask": "+32(52)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dendermonde"},
+	{"mask": "+32(13)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Diest"},
+	{"mask": "+32(82)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dinant"},
+	{"mask": "+32(86)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Durbuy"},
+	{"mask": "+32(89)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Genk"},
+	{"mask": "+32(9)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Gent (Gand)"},
+	{"mask": "+32(11)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Hasselt"},
+	{"mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Herentals"},
+	{"mask": "+32(85)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Huy (Hoei)"},
+	{"mask": "+32(64)##-##-##", "cc": "BE", "cd": "Belgium", "city": "La Louvière"},
+	{"mask": "+32(16)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Leuven (Louvain)"},
+	{"mask": "+32(61)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Libramont"},
+	{"mask": "+32(4)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Liège (Luik)"},
+	{"mask": "+32(15)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mechelen (Malines)"},
+	{"mask": "+32(46#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones"},
+	{"mask": "+32(47#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones"},
+	{"mask": "+32(48#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones"},
+	{"mask": "+32(49#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones"},
+	{"mask": "+32(461)8#-##-##", "cc": "BE", "cd": "Belgium", "city": "GSM-R (NMBS)"},
+	{"mask": "+32(65)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mons (Bergen)"},
+	{"mask": "+32(81)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Namur (Namen)"},
+	{"mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nieuwpoort (Nieuport)"},
+	{"mask": "+32(54)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ninove"},
+	{"mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nivelles (Nijvel)"},
+	{"mask": "+32(59)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Oostende (Ostende)"},
+	{"mask": "+32(51)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Roeselare (Roulers)"},
+	{"mask": "+32(55)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ronse"},
+	{"mask": "+32(80)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Stavelot"},
+	{"mask": "+32(12)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tongeren (Tongres)"},
+	{"mask": "+32(69)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tounai"},
+	{"mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Turnhout"},
+	{"mask": "+32(87)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Verviers"},
+	{"mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Veurne"},
+	{"mask": "+32(19)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wareme"},
+	{"mask": "+32(10)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wavre (Waver)"},
+	{"mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Zeebrugge"}
 ]

+ 186 - 181
extra/phone-codes/phone-nl.js

@@ -1,184 +1,189 @@
 [
-    { "mask": "+31-10-###-####", "cc": "NL", "cd": "Netherlands", "city": "Rotterdam" },
-    { "mask": "+31-111-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zierikzee" },
-    { "mask": "+31-113-###-###", "cc": "NL", "cd": "Netherlands", "city": "Goes" },
-    { "mask": "+31-114-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hulst" },
-    { "mask": "+31-115-###-###", "cc": "NL", "cd": "Netherlands", "city": "Terneuzen" },
-    { "mask": "+31-117-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oostburg" },
-    { "mask": "+31-118-###-###", "cc": "NL", "cd": "Netherlands", "city": "Middelburg" },
-    { "mask": "+31-13-###-####", "cc": "NL", "cd": "Netherlands", "city": "Tilburg" },
-    { "mask": "+31-14-###-####", "cc": "NL", "cd": "Netherlands", "city": "Intern gebruik door KPN" },
-    { "mask": "+31-15-###-####", "cc": "NL", "cd": "Netherlands", "city": "Delft" },
-    { "mask": "+31-161-###-###", "cc": "NL", "cd": "Netherlands", "city": "Rijen" },
-    { "mask": "+31-162-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oosterhout" },
-    { "mask": "+31-164-###-###", "cc": "NL", "cd": "Netherlands", "city": "Bergen op Zoom" },
-    { "mask": "+31-165-###-###", "cc": "NL", "cd": "Netherlands", "city": "Roosendaal" },
-    { "mask": "+31-166-###-###", "cc": "NL", "cd": "Netherlands", "city": "Tholen" },
-    { "mask": "+31-167-###-###", "cc": "NL", "cd": "Netherlands", "city": "Steenbergen" },
-    { "mask": "+31-168-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zevenbergen" },
-    { "mask": "+31-172-###-###", "cc": "NL", "cd": "Netherlands", "city": "Alphen aan den Rijn" },
-    { "mask": "+31-174-###-###", "cc": "NL", "cd": "Netherlands", "city": "Naaldwijk" },
-    { "mask": "+31-180-###-###", "cc": "NL", "cd": "Netherlands", "city": "Krimpen aan den IJsel" },
-    { "mask": "+31-181-###-###", "cc": "NL", "cd": "Netherlands", "city": "Spijkenisse" },
-    { "mask": "+31-182-###-###", "cc": "NL", "cd": "Netherlands", "city": "Gouda" },
-    { "mask": "+31-183-###-###", "cc": "NL", "cd": "Netherlands", "city": "Gorinchem" },
-    { "mask": "+31-184-###-###", "cc": "NL", "cd": "Netherlands", "city": "Sliedrecht" },
-    { "mask": "+31-186-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oud-Beijerland" },
-    { "mask": "+31-187-###-###", "cc": "NL", "cd": "Netherlands", "city": "Middelharnis" },
-    { "mask": "+31-20-###-####", "cc": "NL", "cd": "Netherlands", "city": "Amsterdam" },
-    { "mask": "+31-222-###-###", "cc": "NL", "cd": "Netherlands", "city": "Den Burg" },
-    { "mask": "+31-223-###-###", "cc": "NL", "cd": "Netherlands", "city": "Den Helder" },
-    { "mask": "+31-224-###-###", "cc": "NL", "cd": "Netherlands", "city": "Schagen" },
-    { "mask": "+31-226-###-###", "cc": "NL", "cd": "Netherlands", "city": "Noord-Scharwoude" },
-    { "mask": "+31-227-###-###", "cc": "NL", "cd": "Netherlands", "city": "Middenmeer" },
-    { "mask": "+31-228-###-###", "cc": "NL", "cd": "Netherlands", "city": "Enkhuizen" },
-    { "mask": "+31-229-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hoorn" },
-    { "mask": "+31-23-###-####", "cc": "NL", "cd": "Netherlands", "city": "Haarlem" },
-    { "mask": "+31-24-###-####", "cc": "NL", "cd": "Netherlands", "city": "Nijmegen" },
-    { "mask": "+31-251-###-###", "cc": "NL", "cd": "Netherlands", "city": "Beverwijk" },
-    { "mask": "+31-252-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hillegom" },
-    { "mask": "+31-255-###-###", "cc": "NL", "cd": "Netherlands", "city": "IJmuiden" },
-    { "mask": "+31-26-###-####", "cc": "NL", "cd": "Netherlands", "city": "Arnhem" },
-    { "mask": "+31-294-###-###", "cc": "NL", "cd": "Netherlands", "city": "Weesp" },
-    { "mask": "+31-297-###-###", "cc": "NL", "cd": "Netherlands", "city": "Uithoorn" },
-    { "mask": "+31-299-###-###", "cc": "NL", "cd": "Netherlands", "city": "Purmerend" },
-    { "mask": "+31-30-###-####", "cc": "NL", "cd": "Netherlands", "city": "Utrecht" },
-    { "mask": "+31-313-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dieren" },
-    { "mask": "+31-314-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doetinchem" },
-    { "mask": "+31-315-###-###", "cc": "NL", "cd": "Netherlands", "city": "Terborg" },
-    { "mask": "+31-316-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zevenaar" },
-    { "mask": "+31-317-###-###", "cc": "NL", "cd": "Netherlands", "city": "Wageningen" },
-    { "mask": "+31-318-###-###", "cc": "NL", "cd": "Netherlands", "city": "Ede" },
-    { "mask": "+31-320-###-###", "cc": "NL", "cd": "Netherlands", "city": "Lelystad" },
-    { "mask": "+31-321-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dronten" },
-    { "mask": "+31-33-###-####", "cc": "NL", "cd": "Netherlands", "city": "Amersfoort" },
-    { "mask": "+31-341-###-###", "cc": "NL", "cd": "Netherlands", "city": "Harderwijk" },
-    { "mask": "+31-342-###-###", "cc": "NL", "cd": "Netherlands", "city": "Barneveld" },
-    { "mask": "+31-343-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doorn" },
-    { "mask": "+31-344-###-###", "cc": "NL", "cd": "Netherlands", "city": "Tiel" },
-    { "mask": "+31-294-###-###", "cc": "NL", "cd": "Netherlands", "city": "Weesp" },
-    { "mask": "+31-297-###-###", "cc": "NL", "cd": "Netherlands", "city": "Uithoorn" },
-    { "mask": "+31-299-###-###", "cc": "NL", "cd": "Netherlands", "city": "Purmerend" },
-    { "mask": "+31-30-###-####", "cc": "NL", "cd": "Netherlands", "city": "Utrecht" },
-    { "mask": "+31-313-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dieren" },
-    { "mask": "+31-314-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doetinchem" },
-    { "mask": "+31-315-###-###", "cc": "NL", "cd": "Netherlands", "city": "Terborg" },
-    { "mask": "+31-316-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zevenaar" },
-    { "mask": "+31-317-###-###", "cc": "NL", "cd": "Netherlands", "city": "Wageningen" },
-    { "mask": "+31-318-###-###", "cc": "NL", "cd": "Netherlands", "city": "Ede" },
-    { "mask": "+31-320-###-###", "cc": "NL", "cd": "Netherlands", "city": "Lelystad" },
-    { "mask": "+31-321-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dronten" },
-    { "mask": "+31-33-###-####", "cc": "NL", "cd": "Netherlands", "city": "Amersfoort" },
-    { "mask": "+31-341-###-###", "cc": "NL", "cd": "Netherlands", "city": "Harderwijk" },
-    { "mask": "+31-342-###-###", "cc": "NL", "cd": "Netherlands", "city": "Barneveld" },
-    { "mask": "+31-343-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doorn" },
-    { "mask": "+31-344-###-###", "cc": "NL", "cd": "Netherlands", "city": "Tiel" },
-    { "mask": "+31-345-###-###", "cc": "NL", "cd": "Netherlands", "city": "Culemborg" },
-    { "mask": "+31-346-###-###", "cc": "NL", "cd": "Netherlands", "city": "Maarssen" },
-    { "mask": "+31-347-###-###", "cc": "NL", "cd": "Netherlands", "city": "Vianen" },
-    { "mask": "+31-348-###-###", "cc": "NL", "cd": "Netherlands", "city": "Woerden" },
-    { "mask": "+31-35-###-####", "cc": "NL", "cd": "Netherlands", "city": "Hilversum" },
-    { "mask": "+31-36-###-####", "cc": "NL", "cd": "Netherlands", "city": "Almere" },
-    { "mask": "+31-38-###-####", "cc": "NL", "cd": "Netherlands", "city": "Zwolle" },
-    { "mask": "+31-40-###-####", "cc": "NL", "cd": "Netherlands", "city": "Eindhoven" },
-    { "mask": "+31-411-###-###", "cc": "NL", "cd": "Netherlands", "city": "Boxtel" },
-    { "mask": "+31-412-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oss" },
-    { "mask": "+31-413-###-###", "cc": "NL", "cd": "Netherlands", "city": "Veghel" },
-    { "mask": "+31-416-###-###", "cc": "NL", "cd": "Netherlands", "city": "Waalwijk" },
-    { "mask": "+31-418-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zaltbommel" },
-    { "mask": "+31-43-###-####", "cc": "NL", "cd": "Netherlands", "city": "Maastricht" },
-    { "mask": "+31-45-###-####", "cc": "NL", "cd": "Netherlands", "city": "Heerlen" },
-    { "mask": "+31-46-###-####", "cc": "NL", "cd": "Netherlands", "city": "Sittard" },
-    { "mask": "+31-475-###-###", "cc": "NL", "cd": "Netherlands", "city": "Roermond" },
-    { "mask": "+31-478-###-###", "cc": "NL", "cd": "Netherlands", "city": "Venray" },
-    { "mask": "+31-481-###-###", "cc": "NL", "cd": "Netherlands", "city": "Bemmel" },
-    { "mask": "+31-485-###-###", "cc": "NL", "cd": "Netherlands", "city": "Cuijk" },
-    { "mask": "+31-486-###-###", "cc": "NL", "cd": "Netherlands", "city": "Grave" },
-    { "mask": "+31-487-###-###", "cc": "NL", "cd": "Netherlands", "city": "Druten" },
-    { "mask": "+31-488-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zetten" },
-    { "mask": "+31-492-###-###", "cc": "NL", "cd": "Netherlands", "city": "Helmond" },
-    { "mask": "+31-493-###-###", "cc": "NL", "cd": "Netherlands", "city": "Deurne" },
-    { "mask": "+31-495-###-###", "cc": "NL", "cd": "Netherlands", "city": "Weert" },
-    { "mask": "+31-497-###-###", "cc": "NL", "cd": "Netherlands", "city": "Eersel" },
-    { "mask": "+31-499-###-###", "cc": "NL", "cd": "Netherlands", "city": "Best" },
-    { "mask": "+31-50-###-####", "cc": "NL", "cd": "Netherlands", "city": "Groningen" },
-    { "mask": "+31-511-###-###", "cc": "NL", "cd": "Netherlands", "city": "Feanw�lden" },
-    { "mask": "+31-512-###-###", "cc": "NL", "cd": "Netherlands", "city": "Drachten" },
-    { "mask": "+31-513-###-###", "cc": "NL", "cd": "Netherlands", "city": "Heerenveen" },
-    { "mask": "+31-514-###-###", "cc": "NL", "cd": "Netherlands", "city": "Balk" },
-    { "mask": "+31-515-###-###", "cc": "NL", "cd": "Netherlands", "city": "Sneek" },
-    { "mask": "+31-516-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oosterwolde" },
-    { "mask": "+31-517-###-###", "cc": "NL", "cd": "Netherlands", "city": "Franeker" },
-    { "mask": "+31-518-###-###", "cc": "NL", "cd": "Netherlands", "city": "St Annaparochie" },
-    { "mask": "+31-519-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dokkum" },
-    { "mask": "+31-521-###-###", "cc": "NL", "cd": "Netherlands", "city": "Steenwijk" },
-    { "mask": "+31-522-###-###", "cc": "NL", "cd": "Netherlands", "city": "Meppel" },
-    { "mask": "+31-523-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dedemsvaart" },
-    { "mask": "+31-524-###-###", "cc": "NL", "cd": "Netherlands", "city": "Coevorden" },
-    { "mask": "+31-525-###-###", "cc": "NL", "cd": "Netherlands", "city": "Elburg" },
-    { "mask": "+31-527-###-###", "cc": "NL", "cd": "Netherlands", "city": "Emmeloord" },
-    { "mask": "+31-528-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hoogeveen" },
-    { "mask": "+31-529-###-###", "cc": "NL", "cd": "Netherlands", "city": "Ommen" },
-    { "mask": "+31-53-###-####", "cc": "NL", "cd": "Netherlands", "city": "Enschede" },
-    { "mask": "+31-541-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oldenzaal" },
-    { "mask": "+31-543-###-###", "cc": "NL", "cd": "Netherlands", "city": "Winterswijk" },
-    { "mask": "+31-544-###-###", "cc": "NL", "cd": "Netherlands", "city": "Groenlo" },
-    { "mask": "+31-545-###-###", "cc": "NL", "cd": "Netherlands", "city": "Neede" },
-    { "mask": "+31-546-###-###", "cc": "NL", "cd": "Netherlands", "city": "Almelo" },
-    { "mask": "+31-547-###-###", "cc": "NL", "cd": "Netherlands", "city": "Goor" },
-    { "mask": "+31-548-###-###", "cc": "NL", "cd": "Netherlands", "city": "Rijssen" },
-    { "mask": "+31-55-###-####", "cc": "NL", "cd": "Netherlands", "city": "Apeldoorn" },
-    { "mask": "+31-561-###-###", "cc": "NL", "cd": "Netherlands", "city": "Wolvega" },
-    { "mask": "+31-562-###-###", "cc": "NL", "cd": "Netherlands", "city": "West-Terschelling" },
-    { "mask": "+31-566-###-###", "cc": "NL", "cd": "Netherlands", "city": "Jirnsum" },
-    { "mask": "+31-570-###-###", "cc": "NL", "cd": "Netherlands", "city": "Deventer" },
-    { "mask": "+31-571-###-###", "cc": "NL", "cd": "Netherlands", "city": "Twello" },
-    { "mask": "+31-572-###-###", "cc": "NL", "cd": "Netherlands", "city": "Raalte" },
-    { "mask": "+31-573-###-###", "cc": "NL", "cd": "Netherlands", "city": "Lochem" },
-    { "mask": "+31-575-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zutphen" },
-    { "mask": "+31-577-###-###", "cc": "NL", "cd": "Netherlands", "city": "Uddel" },
-    { "mask": "+31-578-###-###", "cc": "NL", "cd": "Netherlands", "city": "Epe" },
-    { "mask": "+31-58-###-####", "cc": "NL", "cd": "Netherlands", "city": "Leeuwarden" },
-    { "mask": "+31-591-###-###", "cc": "NL", "cd": "Netherlands", "city": "Emmen" },
-    { "mask": "+31-592-###-###", "cc": "NL", "cd": "Netherlands", "city": "Assen" },
-    { "mask": "+31-593-###-###", "cc": "NL", "cd": "Netherlands", "city": "Beilen" },
-    { "mask": "+31-594-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zuidhorn" },
-    { "mask": "+31-595-###-###", "cc": "NL", "cd": "Netherlands", "city": "Warffum" },
-    { "mask": "+31-596-###-###", "cc": "NL", "cd": "Netherlands", "city": "Appingedam" },
-    { "mask": "+31-597-###-###", "cc": "NL", "cd": "Netherlands", "city": "Winschoten" },
-    { "mask": "+31-598-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hoogezand" },
-    { "mask": "+31-599-###-###", "cc": "NL", "cd": "Netherlands", "city": "Stadskanaal" },
-    { "mask": "+31-70-###-####", "cc": "NL", "cd": "Netherlands", "city": "Den Haag" },
-    { "mask": "+31-71-###-####", "cc": "NL", "cd": "Netherlands", "city": "Leiden" },
-    { "mask": "+31-72-###-####", "cc": "NL", "cd": "Netherlands", "city": "Alkmaar" },
-    { "mask": "+31-73-###-####", "cc": "NL", "cd": "Netherlands", "city": "'s-Hertogenbosch" },
-    { "mask": "+31-74-###-####", "cc": "NL", "cd": "Netherlands", "city": "Hengelo" },
-    { "mask": "+31-75-###-####", "cc": "NL", "cd": "Netherlands", "city": "Zaandam" },
-    { "mask": "+31-76-###-####", "cc": "NL", "cd": "Netherlands", "city": "Breda" },
-    { "mask": "+31-77-###-####", "cc": "NL", "cd": "Netherlands", "city": "Venlo" },
-    { "mask": "+31-78-###-####", "cc": "NL", "cd": "Netherlands", "city": "Dordrecht" },
-    { "mask": "+31-79-###-####", "cc": "NL", "cd": "Netherlands", "city": "Zoetermeer" },
+	{"mask": "+31-10-###-####", "cc": "NL", "cd": "Netherlands", "city": "Rotterdam"},
+	{"mask": "+31-111-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zierikzee"},
+	{"mask": "+31-113-###-###", "cc": "NL", "cd": "Netherlands", "city": "Goes"},
+	{"mask": "+31-114-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hulst"},
+	{"mask": "+31-115-###-###", "cc": "NL", "cd": "Netherlands", "city": "Terneuzen"},
+	{"mask": "+31-117-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oostburg"},
+	{"mask": "+31-118-###-###", "cc": "NL", "cd": "Netherlands", "city": "Middelburg"},
+	{"mask": "+31-13-###-####", "cc": "NL", "cd": "Netherlands", "city": "Tilburg"},
+	{"mask": "+31-14-###-####", "cc": "NL", "cd": "Netherlands", "city": "Intern gebruik door KPN"},
+	{"mask": "+31-15-###-####", "cc": "NL", "cd": "Netherlands", "city": "Delft"},
+	{"mask": "+31-161-###-###", "cc": "NL", "cd": "Netherlands", "city": "Rijen"},
+	{"mask": "+31-162-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oosterhout"},
+	{"mask": "+31-164-###-###", "cc": "NL", "cd": "Netherlands", "city": "Bergen op Zoom"},
+	{"mask": "+31-165-###-###", "cc": "NL", "cd": "Netherlands", "city": "Roosendaal"},
+	{"mask": "+31-166-###-###", "cc": "NL", "cd": "Netherlands", "city": "Tholen"},
+	{"mask": "+31-167-###-###", "cc": "NL", "cd": "Netherlands", "city": "Steenbergen"},
+	{"mask": "+31-168-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zevenbergen"},
+	{"mask": "+31-172-###-###", "cc": "NL", "cd": "Netherlands", "city": "Alphen aan den Rijn"},
+	{"mask": "+31-174-###-###", "cc": "NL", "cd": "Netherlands", "city": "Naaldwijk"},
+	{"mask": "+31-180-###-###", "cc": "NL", "cd": "Netherlands", "city": "Krimpen aan den IJsel"},
+	{"mask": "+31-181-###-###", "cc": "NL", "cd": "Netherlands", "city": "Spijkenisse"},
+	{"mask": "+31-182-###-###", "cc": "NL", "cd": "Netherlands", "city": "Gouda"},
+	{"mask": "+31-183-###-###", "cc": "NL", "cd": "Netherlands", "city": "Gorinchem"},
+	{"mask": "+31-184-###-###", "cc": "NL", "cd": "Netherlands", "city": "Sliedrecht"},
+	{"mask": "+31-186-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oud-Beijerland"},
+	{"mask": "+31-187-###-###", "cc": "NL", "cd": "Netherlands", "city": "Middelharnis"},
+	{"mask": "+31-20-###-####", "cc": "NL", "cd": "Netherlands", "city": "Amsterdam"},
+	{"mask": "+31-222-###-###", "cc": "NL", "cd": "Netherlands", "city": "Den Burg"},
+	{"mask": "+31-223-###-###", "cc": "NL", "cd": "Netherlands", "city": "Den Helder"},
+	{"mask": "+31-224-###-###", "cc": "NL", "cd": "Netherlands", "city": "Schagen"},
+	{"mask": "+31-226-###-###", "cc": "NL", "cd": "Netherlands", "city": "Noord-Scharwoude"},
+	{"mask": "+31-227-###-###", "cc": "NL", "cd": "Netherlands", "city": "Middenmeer"},
+	{"mask": "+31-228-###-###", "cc": "NL", "cd": "Netherlands", "city": "Enkhuizen"},
+	{"mask": "+31-229-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hoorn"},
+	{"mask": "+31-23-###-####", "cc": "NL", "cd": "Netherlands", "city": "Haarlem"},
+	{"mask": "+31-24-###-####", "cc": "NL", "cd": "Netherlands", "city": "Nijmegen"},
+	{"mask": "+31-251-###-###", "cc": "NL", "cd": "Netherlands", "city": "Beverwijk"},
+	{"mask": "+31-252-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hillegom"},
+	{"mask": "+31-255-###-###", "cc": "NL", "cd": "Netherlands", "city": "IJmuiden"},
+	{"mask": "+31-26-###-####", "cc": "NL", "cd": "Netherlands", "city": "Arnhem"},
+	{"mask": "+31-294-###-###", "cc": "NL", "cd": "Netherlands", "city": "Weesp"},
+	{"mask": "+31-297-###-###", "cc": "NL", "cd": "Netherlands", "city": "Uithoorn"},
+	{"mask": "+31-299-###-###", "cc": "NL", "cd": "Netherlands", "city": "Purmerend"},
+	{"mask": "+31-30-###-####", "cc": "NL", "cd": "Netherlands", "city": "Utrecht"},
+	{"mask": "+31-313-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dieren"},
+	{"mask": "+31-314-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doetinchem"},
+	{"mask": "+31-315-###-###", "cc": "NL", "cd": "Netherlands", "city": "Terborg"},
+	{"mask": "+31-316-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zevenaar"},
+	{"mask": "+31-317-###-###", "cc": "NL", "cd": "Netherlands", "city": "Wageningen"},
+	{"mask": "+31-318-###-###", "cc": "NL", "cd": "Netherlands", "city": "Ede"},
+	{"mask": "+31-320-###-###", "cc": "NL", "cd": "Netherlands", "city": "Lelystad"},
+	{"mask": "+31-321-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dronten"},
+	{"mask": "+31-33-###-####", "cc": "NL", "cd": "Netherlands", "city": "Amersfoort"},
+	{"mask": "+31-341-###-###", "cc": "NL", "cd": "Netherlands", "city": "Harderwijk"},
+	{"mask": "+31-342-###-###", "cc": "NL", "cd": "Netherlands", "city": "Barneveld"},
+	{"mask": "+31-343-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doorn"},
+	{"mask": "+31-344-###-###", "cc": "NL", "cd": "Netherlands", "city": "Tiel"},
+	{"mask": "+31-294-###-###", "cc": "NL", "cd": "Netherlands", "city": "Weesp"},
+	{"mask": "+31-297-###-###", "cc": "NL", "cd": "Netherlands", "city": "Uithoorn"},
+	{"mask": "+31-299-###-###", "cc": "NL", "cd": "Netherlands", "city": "Purmerend"},
+	{"mask": "+31-30-###-####", "cc": "NL", "cd": "Netherlands", "city": "Utrecht"},
+	{"mask": "+31-313-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dieren"},
+	{"mask": "+31-314-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doetinchem"},
+	{"mask": "+31-315-###-###", "cc": "NL", "cd": "Netherlands", "city": "Terborg"},
+	{"mask": "+31-316-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zevenaar"},
+	{"mask": "+31-317-###-###", "cc": "NL", "cd": "Netherlands", "city": "Wageningen"},
+	{"mask": "+31-318-###-###", "cc": "NL", "cd": "Netherlands", "city": "Ede"},
+	{"mask": "+31-320-###-###", "cc": "NL", "cd": "Netherlands", "city": "Lelystad"},
+	{"mask": "+31-321-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dronten"},
+	{"mask": "+31-33-###-####", "cc": "NL", "cd": "Netherlands", "city": "Amersfoort"},
+	{"mask": "+31-341-###-###", "cc": "NL", "cd": "Netherlands", "city": "Harderwijk"},
+	{"mask": "+31-342-###-###", "cc": "NL", "cd": "Netherlands", "city": "Barneveld"},
+	{"mask": "+31-343-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doorn"},
+	{"mask": "+31-344-###-###", "cc": "NL", "cd": "Netherlands", "city": "Tiel"},
+	{"mask": "+31-345-###-###", "cc": "NL", "cd": "Netherlands", "city": "Culemborg"},
+	{"mask": "+31-346-###-###", "cc": "NL", "cd": "Netherlands", "city": "Maarssen"},
+	{"mask": "+31-347-###-###", "cc": "NL", "cd": "Netherlands", "city": "Vianen"},
+	{"mask": "+31-348-###-###", "cc": "NL", "cd": "Netherlands", "city": "Woerden"},
+	{"mask": "+31-35-###-####", "cc": "NL", "cd": "Netherlands", "city": "Hilversum"},
+	{"mask": "+31-36-###-####", "cc": "NL", "cd": "Netherlands", "city": "Almere"},
+	{"mask": "+31-38-###-####", "cc": "NL", "cd": "Netherlands", "city": "Zwolle"},
+	{"mask": "+31-40-###-####", "cc": "NL", "cd": "Netherlands", "city": "Eindhoven"},
+	{"mask": "+31-411-###-###", "cc": "NL", "cd": "Netherlands", "city": "Boxtel"},
+	{"mask": "+31-412-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oss"},
+	{"mask": "+31-413-###-###", "cc": "NL", "cd": "Netherlands", "city": "Veghel"},
+	{"mask": "+31-416-###-###", "cc": "NL", "cd": "Netherlands", "city": "Waalwijk"},
+	{"mask": "+31-418-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zaltbommel"},
+	{"mask": "+31-43-###-####", "cc": "NL", "cd": "Netherlands", "city": "Maastricht"},
+	{"mask": "+31-45-###-####", "cc": "NL", "cd": "Netherlands", "city": "Heerlen"},
+	{"mask": "+31-46-###-####", "cc": "NL", "cd": "Netherlands", "city": "Sittard"},
+	{"mask": "+31-475-###-###", "cc": "NL", "cd": "Netherlands", "city": "Roermond"},
+	{"mask": "+31-478-###-###", "cc": "NL", "cd": "Netherlands", "city": "Venray"},
+	{"mask": "+31-481-###-###", "cc": "NL", "cd": "Netherlands", "city": "Bemmel"},
+	{"mask": "+31-485-###-###", "cc": "NL", "cd": "Netherlands", "city": "Cuijk"},
+	{"mask": "+31-486-###-###", "cc": "NL", "cd": "Netherlands", "city": "Grave"},
+	{"mask": "+31-487-###-###", "cc": "NL", "cd": "Netherlands", "city": "Druten"},
+	{"mask": "+31-488-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zetten"},
+	{"mask": "+31-492-###-###", "cc": "NL", "cd": "Netherlands", "city": "Helmond"},
+	{"mask": "+31-493-###-###", "cc": "NL", "cd": "Netherlands", "city": "Deurne"},
+	{"mask": "+31-495-###-###", "cc": "NL", "cd": "Netherlands", "city": "Weert"},
+	{"mask": "+31-497-###-###", "cc": "NL", "cd": "Netherlands", "city": "Eersel"},
+	{"mask": "+31-499-###-###", "cc": "NL", "cd": "Netherlands", "city": "Best"},
+	{"mask": "+31-50-###-####", "cc": "NL", "cd": "Netherlands", "city": "Groningen"},
+	{"mask": "+31-511-###-###", "cc": "NL", "cd": "Netherlands", "city": "Feanw�lden"},
+	{"mask": "+31-512-###-###", "cc": "NL", "cd": "Netherlands", "city": "Drachten"},
+	{"mask": "+31-513-###-###", "cc": "NL", "cd": "Netherlands", "city": "Heerenveen"},
+	{"mask": "+31-514-###-###", "cc": "NL", "cd": "Netherlands", "city": "Balk"},
+	{"mask": "+31-515-###-###", "cc": "NL", "cd": "Netherlands", "city": "Sneek"},
+	{"mask": "+31-516-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oosterwolde"},
+	{"mask": "+31-517-###-###", "cc": "NL", "cd": "Netherlands", "city": "Franeker"},
+	{"mask": "+31-518-###-###", "cc": "NL", "cd": "Netherlands", "city": "St Annaparochie"},
+	{"mask": "+31-519-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dokkum"},
+	{"mask": "+31-521-###-###", "cc": "NL", "cd": "Netherlands", "city": "Steenwijk"},
+	{"mask": "+31-522-###-###", "cc": "NL", "cd": "Netherlands", "city": "Meppel"},
+	{"mask": "+31-523-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dedemsvaart"},
+	{"mask": "+31-524-###-###", "cc": "NL", "cd": "Netherlands", "city": "Coevorden"},
+	{"mask": "+31-525-###-###", "cc": "NL", "cd": "Netherlands", "city": "Elburg"},
+	{"mask": "+31-527-###-###", "cc": "NL", "cd": "Netherlands", "city": "Emmeloord"},
+	{"mask": "+31-528-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hoogeveen"},
+	{"mask": "+31-529-###-###", "cc": "NL", "cd": "Netherlands", "city": "Ommen"},
+	{"mask": "+31-53-###-####", "cc": "NL", "cd": "Netherlands", "city": "Enschede"},
+	{"mask": "+31-541-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oldenzaal"},
+	{"mask": "+31-543-###-###", "cc": "NL", "cd": "Netherlands", "city": "Winterswijk"},
+	{"mask": "+31-544-###-###", "cc": "NL", "cd": "Netherlands", "city": "Groenlo"},
+	{"mask": "+31-545-###-###", "cc": "NL", "cd": "Netherlands", "city": "Neede"},
+	{"mask": "+31-546-###-###", "cc": "NL", "cd": "Netherlands", "city": "Almelo"},
+	{"mask": "+31-547-###-###", "cc": "NL", "cd": "Netherlands", "city": "Goor"},
+	{"mask": "+31-548-###-###", "cc": "NL", "cd": "Netherlands", "city": "Rijssen"},
+	{"mask": "+31-55-###-####", "cc": "NL", "cd": "Netherlands", "city": "Apeldoorn"},
+	{"mask": "+31-561-###-###", "cc": "NL", "cd": "Netherlands", "city": "Wolvega"},
+	{"mask": "+31-562-###-###", "cc": "NL", "cd": "Netherlands", "city": "West-Terschelling"},
+	{"mask": "+31-566-###-###", "cc": "NL", "cd": "Netherlands", "city": "Jirnsum"},
+	{"mask": "+31-570-###-###", "cc": "NL", "cd": "Netherlands", "city": "Deventer"},
+	{"mask": "+31-571-###-###", "cc": "NL", "cd": "Netherlands", "city": "Twello"},
+	{"mask": "+31-572-###-###", "cc": "NL", "cd": "Netherlands", "city": "Raalte"},
+	{"mask": "+31-573-###-###", "cc": "NL", "cd": "Netherlands", "city": "Lochem"},
+	{"mask": "+31-575-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zutphen"},
+	{"mask": "+31-577-###-###", "cc": "NL", "cd": "Netherlands", "city": "Uddel"},
+	{"mask": "+31-578-###-###", "cc": "NL", "cd": "Netherlands", "city": "Epe"},
+	{"mask": "+31-58-###-####", "cc": "NL", "cd": "Netherlands", "city": "Leeuwarden"},
+	{"mask": "+31-591-###-###", "cc": "NL", "cd": "Netherlands", "city": "Emmen"},
+	{"mask": "+31-592-###-###", "cc": "NL", "cd": "Netherlands", "city": "Assen"},
+	{"mask": "+31-593-###-###", "cc": "NL", "cd": "Netherlands", "city": "Beilen"},
+	{"mask": "+31-594-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zuidhorn"},
+	{"mask": "+31-595-###-###", "cc": "NL", "cd": "Netherlands", "city": "Warffum"},
+	{"mask": "+31-596-###-###", "cc": "NL", "cd": "Netherlands", "city": "Appingedam"},
+	{"mask": "+31-597-###-###", "cc": "NL", "cd": "Netherlands", "city": "Winschoten"},
+	{"mask": "+31-598-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hoogezand"},
+	{"mask": "+31-599-###-###", "cc": "NL", "cd": "Netherlands", "city": "Stadskanaal"},
+	{"mask": "+31-70-###-####", "cc": "NL", "cd": "Netherlands", "city": "Den Haag"},
+	{"mask": "+31-71-###-####", "cc": "NL", "cd": "Netherlands", "city": "Leiden"},
+	{"mask": "+31-72-###-####", "cc": "NL", "cd": "Netherlands", "city": "Alkmaar"},
+	{"mask": "+31-73-###-####", "cc": "NL", "cd": "Netherlands", "city": "'s-Hertogenbosch"},
+	{"mask": "+31-74-###-####", "cc": "NL", "cd": "Netherlands", "city": "Hengelo"},
+	{"mask": "+31-75-###-####", "cc": "NL", "cd": "Netherlands", "city": "Zaandam"},
+	{"mask": "+31-76-###-####", "cc": "NL", "cd": "Netherlands", "city": "Breda"},
+	{"mask": "+31-77-###-####", "cc": "NL", "cd": "Netherlands", "city": "Venlo"},
+	{"mask": "+31-78-###-####", "cc": "NL", "cd": "Netherlands", "city": "Dordrecht"},
+	{"mask": "+31-79-###-####", "cc": "NL", "cd": "Netherlands", "city": "Zoetermeer"},
 
-    { "mask": "+31-61-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers" },
-    { "mask": "+31-62-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers" },
-    { "mask": "+31-63-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers" },
-    { "mask": "+31-64-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers" },
-    { "mask": "+31-65-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers" },
-    { "mask": "+31-68-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers" },
-    { "mask": "+31-69-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers" },
-    { "mask": "+31-66-###-####", "cc": "NL", "cd": "Netherlands", "city": "Semafonie" },
-    { "mask": "+31-670-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex" },
-    { "mask": "+31-671-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex" },
-    { "mask": "+31-672-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex" },
-    { "mask": "+31-673-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex" },
-    { "mask": "+31-674-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex" },
-    { "mask": "+31-675-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex" },
-    { "mask": "+31-676-###-###", "cc": "NL", "cd": "Netherlands", "city": "Inbelnummers van internetproviders" },
-    { "mask": "+31-800-###-###", "cc": "NL", "cd": "Netherlands", "city": "Gratis informatienummers" },
-    { "mask": "+31-82-###-####", "cc": "NL", "cd": "Netherlands", "city": "Virtual Private Network" },
-    { "mask": "+31-88-###-####", "cc": "NL", "cd": "Netherlands", "city": "Bedrijfsnummers" },
-    { "mask": "+31-900-###-###", "cc": "NL", "cd": "Netherlands", "city": "Betaalde informatienummers" },
-    { "mask": "+31-906-###-###", "cc": "NL", "cd": "Netherlands", "city": "Betaalde informatienummers" },
-    { "mask": "+31-909-###-###", "cc": "NL", "cd": "Netherlands", "city": "Betaalde informatienummers" },
-    { "mask": "+31-91-###-####", "cc": "NL", "cd": "Netherlands", "city": "Plaatsonafhankelijk netnummer, geschikt voor beeldtelefonie of lijnen met verhoogde kwaliteit" }
+	{"mask": "+31-61-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
+	{"mask": "+31-62-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
+	{"mask": "+31-63-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
+	{"mask": "+31-64-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
+	{"mask": "+31-65-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
+	{"mask": "+31-68-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
+	{"mask": "+31-69-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
+	{"mask": "+31-66-###-####", "cc": "NL", "cd": "Netherlands", "city": "Semafonie"},
+	{"mask": "+31-670-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
+	{"mask": "+31-671-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
+	{"mask": "+31-672-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
+	{"mask": "+31-673-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
+	{"mask": "+31-674-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
+	{"mask": "+31-675-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
+	{"mask": "+31-676-###-###", "cc": "NL", "cd": "Netherlands", "city": "Inbelnummers van internetproviders"},
+	{"mask": "+31-800-###-###", "cc": "NL", "cd": "Netherlands", "city": "Gratis informatienummers"},
+	{"mask": "+31-82-###-####", "cc": "NL", "cd": "Netherlands", "city": "Virtual Private Network"},
+	{"mask": "+31-88-###-####", "cc": "NL", "cd": "Netherlands", "city": "Bedrijfsnummers"},
+	{"mask": "+31-900-###-###", "cc": "NL", "cd": "Netherlands", "city": "Betaalde informatienummers"},
+	{"mask": "+31-906-###-###", "cc": "NL", "cd": "Netherlands", "city": "Betaalde informatienummers"},
+	{"mask": "+31-909-###-###", "cc": "NL", "cd": "Netherlands", "city": "Betaalde informatienummers"},
+	{
+		"mask": "+31-91-###-####",
+		"cc": "NL",
+		"cd": "Netherlands",
+		"city": "Plaatsonafhankelijk netnummer, geschikt voor beeldtelefonie of lijnen met verhoogde kwaliteit"
+	}
 ]

文件差异内容过多而无法显示
+ 599 - 599
js/inputmask.date.extensions.js


+ 12 - 12
js/inputmask.dependencyLib.jquery.js

@@ -1,13 +1,13 @@
-(function(factory) {
-		if (typeof define === "function" && define.amd) {
-			define(["jquery"], factory);
-		} else if (typeof exports === "object") {
-			module.exports = factory(require("jquery"));
-		} else {
-			factory(jQuery);
-		}
+(function (factory) {
+	if (typeof define === "function" && define.amd) {
+		define(["jquery"], factory);
+	} else if (typeof exports === "object") {
+		module.exports = factory(require("jquery"));
+	} else {
+		factory(jQuery);
 	}
-	(function($) {
-		window.dependencyLib = $;
-		return $;
-	}));
+}
+(function ($) {
+	window.dependencyLib = $;
+	return $;
+}));

+ 107 - 107
js/inputmask.extensions.js

@@ -1,120 +1,120 @@
 /*
-Input Mask plugin extensions
-http://github.com/RobinHerbots/jquery.inputmask
-Copyright (c) 2010 -  Robin Herbots
-Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 0.0.0-dev
+ Input Mask plugin extensions
+ http://github.com/RobinHerbots/jquery.inputmask
+ Copyright (c) 2010 -  Robin Herbots
+ Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
+ Version: 0.0.0-dev
 
-Optional extensions on the jquery.inputmask base
-*/
-(function(factory) {
-		if (typeof define === "function" && define.amd) {
-			define(["inputmask.dependencyLib", "inputmask"], factory);
-		} else if (typeof exports === "object") {
-			module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask"));
-		} else {
-			factory(window.dependencyLib || jQuery, window.Inputmask);
-		}
+ Optional extensions on the jquery.inputmask base
+ */
+(function (factory) {
+	if (typeof define === "function" && define.amd) {
+		define(["inputmask.dependencyLib", "inputmask"], factory);
+	} else if (typeof exports === "object") {
+		module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask"));
+	} else {
+		factory(window.dependencyLib || jQuery, window.Inputmask);
 	}
-	(function($, Inputmask) {
-		//extra definitions
-		Inputmask.extendDefinitions({
-			"A": {
-				validator: "[A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
-				cardinality: 1,
-				casing: "upper" //auto uppercasing
+}
+(function ($, Inputmask) {
+	//extra definitions
+	Inputmask.extendDefinitions({
+		"A": {
+			validator: "[A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
+			cardinality: 1,
+			casing: "upper" //auto uppercasing
+		},
+		"&": { //alfanumeric uppercasing
+			validator: "[0-9A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
+			cardinality: 1,
+			casing: "upper"
+		},
+		"#": { //hexadecimal
+			validator: "[0-9A-Fa-f]",
+			cardinality: 1,
+			casing: "upper"
+		}
+	});
+	Inputmask.extendAliases({
+		"url": {
+			definitions: {
+				"i": {
+					validator: ".",
+					cardinality: 1
+				}
 			},
-			"&": { //alfanumeric uppercasing
-				validator: "[0-9A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
-				cardinality: 1,
-				casing: "upper"
+			mask: "(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",
+			insertMode: false,
+			autoUnmask: false
+		},
+		"ip": { //ip-address mask
+			mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
+			definitions: {
+				"i": {
+					validator: function (chrs, maskset, pos, strict, opts) {
+						if (pos - 1 > -1 && maskset.buffer[pos - 1] !== ".") {
+							chrs = maskset.buffer[pos - 1] + chrs;
+							if (pos - 2 > -1 && maskset.buffer[pos - 2] !== ".") {
+								chrs = maskset.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
+				}
 			},
-			"#": { //hexadecimal
-				validator: "[0-9A-Fa-f]",
-				cardinality: 1,
-				casing: "upper"
+			onUnMask: function (maskedValue, unmaskedValue, opts) {
+				return maskedValue;
 			}
-		});
-		Inputmask.extendAliases({
-			"url": {
-				definitions: {
-					"i": {
-						validator: ".",
-						cardinality: 1
-					}
-				},
-				mask: "(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",
-				insertMode: false,
-				autoUnmask: false
+		},
+		"email": {
+			//https://en.wikipedia.org/wiki/Domain_name#Domain_name_space
+			//https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names
+			//should be extended with the toplevel domains at the end
+			mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}[.-{1,63}][.-{1,63}][.-{1,63}]",
+			greedy: false,
+			onBeforePaste: function (pastedValue, opts) {
+				pastedValue = pastedValue.toLowerCase();
+				return pastedValue.replace("mailto:", "");
 			},
-			"ip": { //ip-address mask
-				mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
-				definitions: {
-					"i": {
-						validator: function(chrs, maskset, pos, strict, opts) {
-							if (pos - 1 > -1 && maskset.buffer[pos - 1] !== ".") {
-								chrs = maskset.buffer[pos - 1] + chrs;
-								if (pos - 2 > -1 && maskset.buffer[pos - 2] !== ".") {
-									chrs = maskset.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
-					}
+			definitions: {
+				"*": {
+					validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~\-]",
+					cardinality: 1,
+					casing: "lower"
 				},
-				onUnMask: function(maskedValue, unmaskedValue, opts) {
-					return maskedValue;
+				"-": {
+					validator: "[0-9A-Za-z\-]",
+					cardinality: 1,
+					casing: "lower"
 				}
 			},
-			"email": {
-				//https://en.wikipedia.org/wiki/Domain_name#Domain_name_space
-				//https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names
-				//should be extended with the toplevel domains at the end
-				mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}[.-{1,63}][.-{1,63}][.-{1,63}]",
-				greedy: false,
-				onBeforePaste: function(pastedValue, opts) {
-					pastedValue = pastedValue.toLowerCase();
-					return pastedValue.replace("mailto:", "");
-				},
-				definitions: {
-					"*": {
-						validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~\-]",
-						cardinality: 1,
-						casing: "lower"
-					},
-					"-": {
-						validator: "[0-9A-Za-z\-]",
-						cardinality: 1,
-						casing: "lower"
-					}
+			onUnMask: function (maskedValue, unmaskedValue, opts) {
+				return maskedValue;
+			}
+		},
+		"mac": {
+			mask: "##:##:##:##:##:##"
+		},
+		"vin": {
+			//https://en.wikipedia.org/wiki/Vehicle_identification_number
+			// see issue #1199
+			mask: "V{8}vV{4}9{4}",
+			definitions: {
+				'V': {
+					validator: "[A-HJ-NPR-Za-hj-npr-z\\d]",
+					cardinality: 1,
+					casing: "upper"
 				},
-				onUnMask: function(maskedValue, unmaskedValue, opts) {
-					return maskedValue;
+				'v': {
+					validator: "[Xx\\d]",
+					cardinality: 1,
+					casing: "upper"
 				}
 			},
-			"mac": {
-				mask: "##:##:##:##:##:##"
-			},
-			"vin": {
-				//https://en.wikipedia.org/wiki/Vehicle_identification_number
-				// see issue #1199
-				mask: "V{8}vV{4}9{4}",
-				definitions: {
-					'V': {
-						validator: "[A-HJ-NPR-Za-hj-npr-z\\d]",
-						cardinality: 1,
-						casing: "upper"
-					},
-					'v': {
-						validator: "[Xx\\d]",
-						cardinality: 1,
-						casing: "upper"
-					}
-				},
-				clearIncomplete: true,
-				autoUnmask: true
-			}
-		});
-		return Inputmask;
-	}));
+			clearIncomplete: true,
+			autoUnmask: true
+		}
+	});
+	return Inputmask;
+}));

文件差异内容过多而无法显示
+ 2404 - 2398
js/inputmask.js


文件差异内容过多而无法显示
+ 546 - 559
js/inputmask.numeric.extensions.js


+ 67 - 67
js/inputmask.phone.extensions.js

@@ -1,78 +1,78 @@
 /*
-Input Mask plugin extensions
-http://github.com/RobinHerbots/jquery.inputmask
-Copyright (c) 2010 -  Robin Herbots
-Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 0.0.0-dev
+ Input Mask plugin extensions
+ http://github.com/RobinHerbots/jquery.inputmask
+ Copyright (c) 2010 -  Robin Herbots
+ Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
+ Version: 0.0.0-dev
 
-Phone extension.
-When using this extension make sure you specify the correct url to get the masks
+ Phone extension.
+ When using this extension make sure you specify the correct url to get the masks
 
  $(selector).inputmask("phone", {
-                url: "Scripts/jquery.inputmask/phone-codes/phone-codes.json",
-                onKeyValidation: function () { //show some metadata in the console
-                    console.log($(this).inputmask("getmetadata")["cd"]);
-                }
-  });
+ url: "Scripts/jquery.inputmask/phone-codes/phone-codes.json",
+ onKeyValidation: function () { //show some metadata in the console
+ console.log($(this).inputmask("getmetadata")["cd"]);
+ }
+ });
 
 
-*/
-(function(factory) {
-		if (typeof define === "function" && define.amd) {
-			define(["jquery", "inputmask"], factory);
-		} else if (typeof exports === "object") {
-			module.exports = factory(require("jquery"), require("./inputmask"));
-		} else {
-			factory(window.dependencyLib || jQuery, window.Inputmask);
-		}
+ */
+(function (factory) {
+	if (typeof define === "function" && define.amd) {
+		define(["jquery", "inputmask"], factory);
+	} else if (typeof exports === "object") {
+		module.exports = factory(require("jquery"), require("./inputmask"));
+	} else {
+		factory(window.dependencyLib || jQuery, window.Inputmask);
 	}
-	(function($, Inputmask) {
-		Inputmask.extendAliases({
-			"phone": {
-				url: "phone-codes/phone-codes.js",
-				countrycode: "",
-				phoneCodeCache: {},
-				mask: function(opts) {
-					if (opts.phoneCodeCache[opts.url] === undefined) {
-						var maskList = [];
-						opts.definitions["#"] = opts.definitions["9"];
-						$.ajax({
-							url: opts.url,
-							async: false,
-							type: "get",
-							dataType: "json",
-							success: function(response) {
-								maskList = response;
-							},
-							error: function(xhr, ajaxOptions, thrownError) {
-								alert(thrownError + " - " + opts.url);
-							}
-						});
-
-						opts.phoneCodeCache[opts.url] = maskList.sort(function(a, b) {
-							return (a.mask || a) < (b.mask || b) ? -1 : 1;
-						});
-					}
-					return opts.phoneCodeCache[opts.url];
-				},
-				keepStatic: false,
-				nojumps: true,
-				nojumpsThreshold: 1,
-				onBeforeMask: function(value, opts) {
-					var processedValue = value.replace(/^0{1,2}/, "").replace(/[\s]/g, "");
-					if (processedValue.indexOf(opts.countrycode) > 1 || processedValue.indexOf(opts.countrycode) === -1) {
-						processedValue = "+" + opts.countrycode + processedValue;
-					}
+}
+(function ($, Inputmask) {
+	Inputmask.extendAliases({
+		"phone": {
+			url: "phone-codes/phone-codes.js",
+			countrycode: "",
+			phoneCodeCache: {},
+			mask: function (opts) {
+				if (opts.phoneCodeCache[opts.url] === undefined) {
+					var maskList = [];
+					opts.definitions["#"] = opts.definitions["9"];
+					$.ajax({
+						url: opts.url,
+						async: false,
+						type: "get",
+						dataType: "json",
+						success: function (response) {
+							maskList = response;
+						},
+						error: function (xhr, ajaxOptions, thrownError) {
+							alert(thrownError + " - " + opts.url);
+						}
+					});
 
-					return processedValue;
+					opts.phoneCodeCache[opts.url] = maskList.sort(function (a, b) {
+						return (a.mask || a) < (b.mask || b) ? -1 : 1;
+					});
 				}
+				return opts.phoneCodeCache[opts.url];
 			},
-			"phonebe": {
-				alias: "phone",
-				url: "phone-codes/phone-be.js",
-				countrycode: "32",
-				nojumpsThreshold: 4
+			keepStatic: false,
+			nojumps: true,
+			nojumpsThreshold: 1,
+			onBeforeMask: function (value, opts) {
+				var processedValue = value.replace(/^0{1,2}/, "").replace(/[\s]/g, "");
+				if (processedValue.indexOf(opts.countrycode) > 1 || processedValue.indexOf(opts.countrycode) === -1) {
+					processedValue = "+" + opts.countrycode + processedValue;
+				}
+
+				return processedValue;
 			}
-		});
-		return Inputmask;
-	}));
+		},
+		"phonebe": {
+			alias: "phone",
+			url: "phone-codes/phone-be.js",
+			countrycode: "32",
+			nojumpsThreshold: 4
+		}
+	});
+	return Inputmask;
+}));

+ 19 - 19
js/inputmask.regex.extensions.js

@@ -1,23 +1,23 @@
 /*
-Input Mask plugin extensions
-http://github.com/RobinHerbots/jquery.inputmask
-Copyright (c) 2010 -  Robin Herbots
-Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 0.0.0-dev
+ Input Mask plugin extensions
+ http://github.com/RobinHerbots/jquery.inputmask
+ Copyright (c) 2010 -  Robin Herbots
+ Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
+ Version: 0.0.0-dev
 
-Regex extensions on the jquery.inputmask base
-Allows for using regular expressions as a mask
-*/
-(function(factory) {
-		if (typeof define === "function" && define.amd) {
-			define(["inputmask.dependencyLib", "inputmask"], factory);
-		} else if (typeof exports === "object") {
-			module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask"));
-		} else {
-			factory(window.dependencyLib || jQuery, window.Inputmask);
-		}
+ Regex extensions on the jquery.inputmask base
+ Allows for using regular expressions as a mask
+ */
+(function (factory) {
+	if (typeof define === "function" && define.amd) {
+		define(["inputmask.dependencyLib", "inputmask"], factory);
+	} else if (typeof exports === "object") {
+		module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask"));
+	} else {
+		factory(window.dependencyLib || jQuery, window.Inputmask);
 	}
-	(function($, Inputmask) {
+}
+(function ($, Inputmask) {
 	Inputmask.extendAliases({ // $(selector).inputmask("Regex", { regex: "[0-9]*"}
 		"Regex": {
 			mask: "r",
@@ -28,12 +28,12 @@ Allows for using regular expressions as a mask
 			//Thx to https://github.com/slevithan/regex-colorizer for the tokenizer regex
 			tokenizer: /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,
 			quantifierFilter: /[0-9]+[^,]/,
-			isComplete: function(buffer, opts) {
+			isComplete: function (buffer, opts) {
 				return new RegExp(opts.regex).test(buffer.join(""));
 			},
 			definitions: {
 				"r": {
-					validator: function(chrs, maskset, pos, strict, opts) {
+					validator: function (chrs, maskset, pos, strict, opts) {
 						var cbuffer = maskset.buffer.slice(),
 							bufferStr,
 							regexPart = "",

+ 71 - 71
js/jquery.inputmask.js

@@ -6,84 +6,84 @@
  * Version: 0.0.0-dev
  */
 
-(function(factory) {
-		if (typeof define === "function" && define.amd) {
-			define(["jquery", "inputmask"], factory);
-		} else if (typeof exports === "object") {
-			module.exports = factory(require("jquery"), require("./inputmask"));
-		} else {
-			factory(jQuery, window.Inputmask);
-		}
+(function (factory) {
+	if (typeof define === "function" && define.amd) {
+		define(["jquery", "inputmask"], factory);
+	} else if (typeof exports === "object") {
+		module.exports = factory(require("jquery"), require("./inputmask"));
+	} else {
+		factory(jQuery, window.Inputmask);
 	}
-	(function($, Inputmask) {
-		if ($.fn.inputmask === undefined) {
-			//jquery plugin
-			$.fn.inputmask = function(fn, options) {
-				var nptmask, input = this[0];
-				if (options === undefined) options = {};
-				if (typeof fn === "string") {
-					switch (fn) {
-						case "unmaskedvalue":
-							return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val();
-						case "remove":
-							return this.each(function() {
-								if (this.inputmask) this.inputmask.remove();
-							});
-						case "getemptymask":
-							return input && input.inputmask ? input.inputmask.getemptymask() : "";
-						case "hasMaskedValue": //check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value
-							return input && input.inputmask ? input.inputmask.hasMaskedValue() : false;
-						case "isComplete":
-							return input && input.inputmask ? input.inputmask.isComplete() : true;
-						case "getmetadata": //return mask metadata if exists
-							return input && input.inputmask ? input.inputmask.getmetadata() : undefined;
-						case "setvalue":
-							$(input).val(options);
+}
+(function ($, Inputmask) {
+	if ($.fn.inputmask === undefined) {
+		//jquery plugin
+		$.fn.inputmask = function (fn, options) {
+			var nptmask, input = this[0];
+			if (options === undefined) options = {};
+			if (typeof fn === "string") {
+				switch (fn) {
+					case "unmaskedvalue":
+						return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val();
+					case "remove":
+						return this.each(function () {
+							if (this.inputmask) this.inputmask.remove();
+						});
+					case "getemptymask":
+						return input && input.inputmask ? input.inputmask.getemptymask() : "";
+					case "hasMaskedValue": //check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value
+						return input && input.inputmask ? input.inputmask.hasMaskedValue() : false;
+					case "isComplete":
+						return input && input.inputmask ? input.inputmask.isComplete() : true;
+					case "getmetadata": //return mask metadata if exists
+						return input && input.inputmask ? input.inputmask.getmetadata() : undefined;
+					case "setvalue":
+						$(input).val(options);
+						if (input && input.inputmask !== undefined) {
+							$(input).triggerHandler("setvalue");
+						}
+						break;
+					case "option":
+						if (typeof options === "string") {
 							if (input && input.inputmask !== undefined) {
-								$(input).triggerHandler("setvalue");
+								return input.inputmask.option(options);
 							}
-							break;
-						case "option":
-							if (typeof options === "string") {
-								if (input && input.inputmask !== undefined) {
-									return input.inputmask.option(options);
+						} else {
+							return this.each(function () {
+								if (this.inputmask !== undefined) {
+									return this.inputmask.option(options);
 								}
-							} else {
-								return this.each(function() {
-									if (this.inputmask !== undefined) {
-										return this.inputmask.option(options);
-									}
-								});
-							}
-							break;
-						default:
-							options.alias = fn;
-							nptmask = new Inputmask(options);
-							return this.each(function() {
-								nptmask.mask(this);
 							});
-					}
-				} else if (typeof fn == "object") {
-					nptmask = new Inputmask(fn);
-					if (fn.mask === undefined && fn.alias === undefined) {
-						return this.each(function() {
-							if (this.inputmask !== undefined) {
-								return this.inputmask.option(fn);
-							} else nptmask.mask(this);
-						});
-					} else {
-						return this.each(function() {
+						}
+						break;
+					default:
+						options.alias = fn;
+						nptmask = new Inputmask(options);
+						return this.each(function () {
 							nptmask.mask(this);
 						});
-					}
-				} else if (fn === undefined) {
-					//look for data-inputmask atributes
-					return this.each(function() {
-						nptmask = new Inputmask(options);
+				}
+			} else if (typeof fn == "object") {
+				nptmask = new Inputmask(fn);
+				if (fn.mask === undefined && fn.alias === undefined) {
+					return this.each(function () {
+						if (this.inputmask !== undefined) {
+							return this.inputmask.option(fn);
+						} else nptmask.mask(this);
+					});
+				} else {
+					return this.each(function () {
 						nptmask.mask(this);
 					});
 				}
-			};
-		}
-		return $.fn.inputmask;
-	}));
+			} else if (fn === undefined) {
+				//look for data-inputmask atributes
+				return this.each(function () {
+					nptmask = new Inputmask(options);
+					nptmask.mask(this);
+				});
+			}
+		};
+	}
+	return $.fn.inputmask;
+}));

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "jquery.inputmask",
-  "version": "3.2.8-11",
+  "version": "3.2.8-15",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
   "main": "./dist/inputmask/jquery.inputmask.js",
   "files": [

+ 2 - 2
qunit/config.js

@@ -4,8 +4,8 @@ require.config({
 		"jquery": "../node_modules/jquery/dist/jquery",
 		"jqlite": "../node_modules/jqlite/jqlite",
 		"qunit": "../node_modules/qunitjs/qunit/qunit",
-		"inputmask.dependencyLib": "../dist/inputmask/inputmask.dependencyLib.jquery",
-		// "inputmask.dependencyLib": "../extra/dependencyLibs/inputmask.dependencyLib",
+		// "inputmask.dependencyLib": "../dist/inputmask/inputmask.dependencyLib.jquery",
+		"inputmask.dependencyLib": "../extra/dependencyLibs/inputmask.dependencyLib",
 		// "inputmask.dependencyLib": "../extra/dependencyLibs/inputmask.dependencyLib.jqlite",
 		"inputmask": "../dist/inputmask/inputmask"
 		// "inputmask": "../js/inputmask"

+ 6 - 5
qunit/tests_dynamic.js

@@ -325,22 +325,23 @@ define([
 				}
 			}
 		}).mask(testmask);
-		$("#testmask").blur();
+		testmask.blur();
 		setTimeout(function() {
 			assert.equal(document.getElementById("testmask").inputmask._valueGet(), "V-AA", "Result " + document.getElementById("testmask").inputmask._valueGet());
 			done();
 		}, 0);
 	});
 
-	qunit.test("email mask - johnsmith@ma.us.delta-corp.com - ResidualEnvy", function(assert) {
+	qunit.test("email mask - some.body@mail.com - delete before @", function(assert) {
 		var $fixture = $("#qunit-fixture");
 		$fixture.append('<input type="text" id="testmask" />');
 		var testmask = document.getElementById("testmask");
 		Inputmask("email").mask(testmask);
 
 		testmask.focus();
-		$("#testmask").Type("johnsmith@ma.us.delta-corp.com");
-		testmask.blur();
-		assert.equal(testmask.value, "johnsmith@ma.us.delta-corp.com", "Result " + testmask.value);
+		$("#testmask").Type("some.body@mail.com");
+		$.caret(testmask, 9);
+		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
+		assert.equal(testmask.value, "some.body@ail.com", "Result " + testmask.value);
 	});
 });

文件差异内容过多而无法显示
+ 165 - 124
qunit/tests_numeric.js


+ 1 - 0
qunit/tests_paste.js

@@ -267,6 +267,7 @@ define([
 		$("#testmask").paste("000.02");
 
 		setTimeout(function() {
+			$(testmask).trigger("blur");
 			equal(testmask.value, "$ 0.02", "Result " + testmask.value);
 			start();
 			$("#testmask").remove();