Subversion Repositories Applications.papyrus

Rev

Rev 1318 | Rev 1987 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1318 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
dojo.provide("dojo.validate.common");
13
dojo.provide("dojo.validate.common");
12
dojo.require("dojo.regexp");
14
dojo.require("dojo.regexp");
13
dojo.validate.isText = function (value, flags) {
15
dojo.validate.isText = function (value, flags) {
14
	flags = (typeof flags == "object") ? flags : {};
16
	flags = (typeof flags == "object") ? flags : {};
15
	if (/^\s*$/.test(value)) {
17
	if (/^\s*$/.test(value)) {
16
		return false;
18
		return false;
17
	}
19
	}
18
	if (typeof flags.length == "number" && flags.length != value.length) {
20
	if (typeof flags.length == "number" && flags.length != value.length) {
19
		return false;
21
		return false;
20
	}
22
	}
21
	if (typeof flags.minlength == "number" && flags.minlength > value.length) {
23
	if (typeof flags.minlength == "number" && flags.minlength > value.length) {
22
		return false;
24
		return false;
23
	}
25
	}
24
	if (typeof flags.maxlength == "number" && flags.maxlength < value.length) {
26
	if (typeof flags.maxlength == "number" && flags.maxlength < value.length) {
25
		return false;
27
		return false;
26
	}
28
	}
27
	return true;
29
	return true;
28
};
30
};
29
dojo.validate.isInteger = function (value, flags) {
31
dojo.validate.isInteger = function (value, flags) {
30
	var re = new RegExp("^" + dojo.regexp.integer(flags) + "$");
32
	var re = new RegExp("^" + dojo.regexp.integer(flags) + "$");
31
	return re.test(value);
33
	return re.test(value);
32
};
34
};
33
dojo.validate.isRealNumber = function (value, flags) {
35
dojo.validate.isRealNumber = function (value, flags) {
34
	var re = new RegExp("^" + dojo.regexp.realNumber(flags) + "$");
36
	var re = new RegExp("^" + dojo.regexp.realNumber(flags) + "$");
35
	return re.test(value);
37
	return re.test(value);
36
};
38
};
37
dojo.validate.isCurrency = function (value, flags) {
39
dojo.validate.isCurrency = function (value, flags) {
38
	var re = new RegExp("^" + dojo.regexp.currency(flags) + "$");
40
	var re = new RegExp("^" + dojo.regexp.currency(flags) + "$");
39
	return re.test(value);
41
	return re.test(value);
40
};
42
};
41
dojo.validate._isInRangeCache = {};
43
dojo.validate._isInRangeCache = {};
42
dojo.validate.isInRange = function (value, flags) {
44
dojo.validate.isInRange = function (value, flags) {
43
	value = value.replace(dojo.lang.has(flags, "separator") ? flags.separator : ",", "", "g").replace(dojo.lang.has(flags, "symbol") ? flags.symbol : "$", "");
45
	value = value.replace(dojo.lang.has(flags, "separator") ? flags.separator : ",", "", "g").replace(dojo.lang.has(flags, "symbol") ? flags.symbol : "$", "");
44
	if (isNaN(value)) {
46
	if (isNaN(value)) {
45
		return false;
47
		return false;
46
	}
48
	}
47
	flags = (typeof flags == "object") ? flags : {};
49
	flags = (typeof flags == "object") ? flags : {};
48
	var max = (typeof flags.max == "number") ? flags.max : Infinity;
50
	var max = (typeof flags.max == "number") ? flags.max : Infinity;
49
	var min = (typeof flags.min == "number") ? flags.min : -Infinity;
51
	var min = (typeof flags.min == "number") ? flags.min : -Infinity;
50
	var dec = (typeof flags.decimal == "string") ? flags.decimal : ".";
52
	var dec = (typeof flags.decimal == "string") ? flags.decimal : ".";
51
	var cache = dojo.validate._isInRangeCache;
53
	var cache = dojo.validate._isInRangeCache;
52
	var cacheIdx = value + "max" + max + "min" + min + "dec" + dec;
54
	var cacheIdx = value + "max" + max + "min" + min + "dec" + dec;
53
	if (typeof cache[cacheIdx] != "undefined") {
55
	if (typeof cache[cacheIdx] != "undefined") {
54
		return cache[cacheIdx];
56
		return cache[cacheIdx];
55
	}
57
	}
56
	var pattern = "[^" + dec + "\\deE+-]";
58
	var pattern = "[^" + dec + "\\deE+-]";
57
	value = value.replace(RegExp(pattern, "g"), "");
59
	value = value.replace(RegExp(pattern, "g"), "");
58
	value = value.replace(/^([+-]?)(\D*)/, "$1");
60
	value = value.replace(/^([+-]?)(\D*)/, "$1");
59
	value = value.replace(/(\D*)$/, "");
61
	value = value.replace(/(\D*)$/, "");
60
	pattern = "(\\d)[" + dec + "](\\d)";
62
	pattern = "(\\d)[" + dec + "](\\d)";
61
	value = value.replace(RegExp(pattern, "g"), "$1.$2");
63
	value = value.replace(RegExp(pattern, "g"), "$1.$2");
62
	value = Number(value);
64
	value = Number(value);
63
	if (value < min || value > max) {
65
	if (value < min || value > max) {
64
		cache[cacheIdx] = false;
66
		cache[cacheIdx] = false;
65
		return false;
67
		return false;
66
	}
68
	}
67
	cache[cacheIdx] = true;
69
	cache[cacheIdx] = true;
68
	return true;
70
	return true;
69
};
71
};
70
dojo.validate.isNumberFormat = function (value, flags) {
72
dojo.validate.isNumberFormat = function (value, flags) {
71
	var re = new RegExp("^" + dojo.regexp.numberFormat(flags) + "$", "i");
73
	var re = new RegExp("^" + dojo.regexp.numberFormat(flags) + "$", "i");
72
	return re.test(value);
74
	return re.test(value);
73
};
75
};
74
dojo.validate.isValidLuhn = function (value) {
76
dojo.validate.isValidLuhn = function (value) {
75
	var sum, parity, curDigit;
77
	var sum, parity, curDigit;
76
	if (typeof value != "string") {
78
	if (typeof value != "string") {
77
		value = String(value);
79
		value = String(value);
78
	}
80
	}
79
	value = value.replace(/[- ]/g, "");
81
	value = value.replace(/[- ]/g, "");
80
	parity = value.length % 2;
82
	parity = value.length % 2;
81
	sum = 0;
83
	sum = 0;
82
	for (var i = 0; i < value.length; i++) {
84
	for (var i = 0; i < value.length; i++) {
83
		curDigit = parseInt(value.charAt(i));
85
		curDigit = parseInt(value.charAt(i));
84
		if (i % 2 == parity) {
86
		if (i % 2 == parity) {
85
			curDigit *= 2;
87
			curDigit *= 2;
86
		}
88
		}
87
		if (curDigit > 9) {
89
		if (curDigit > 9) {
88
			curDigit -= 9;
90
			curDigit -= 9;
89
		}
91
		}
90
		sum += curDigit;
92
		sum += curDigit;
91
	}
93
	}
92
	return !(sum % 10);
94
	return !(sum % 10);
93
};
95
};
94
 
96