var WL_Validation = {
	notEmpty : function(f) {
		if (f.value) {
			return true;
		} else {
			return _WL_Validation_NOT_EMPTY;
		}
	},
	empty : function(f) {
		return f.value ? false : true;
	},
	anyChecked : function(f) {
		for (var k = 0; k < f.length; k++) {
			if ($type(f[k]) == 'element' && f[k].checked) return true;
		}
		return _WL_Validation_ANY_CHECKED;
	},
	email : function(f) {
		if (/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(f.value)) {
			return true;
		} else {
			return _WL_Validation_EMAIL;
		}
	},
	selectNotFirst : function(f) {
		if (f.selectedIndex < 1) {
			return _WL_Validation_ANY_CHECKED;
		} else {
			return true;
		}
	},
	password : function(f) {
		var v = f.value;
		if (v.length < _WL_Validation_PASSWORD_MIN_LENGTH) return _WL_Validation_PASSWORD_LENGTH;
		return true;
		/*var upper = false, number = false, lower = false;
		for (var i = 0; i < v.length; i++) {
			var c = v.charCodeAt(i);
			if (c >= 65 && c <= 90) {
				upper = true;
			} else if (c >= 97 && c <= 122) {
				lower = true;
			} else if (c >= 48 && c <= 57) {
				number = true;
			}
		}
		if (!upper) {
			return _WL_Validation_PASSWORD_UPPERS;
		} else if (!lower) {
			return _WL_Validation_PASSWORD_LOWERS;
		} else if (!number) {
			return _WL_Validation_PASSWORD_NUMBERS;
		} else {
			return true;
		}*/
	},
	date : function(f) {
		var v = f.value;
		var ms = v.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);
		if (ms) {
			var d = Number(ms[1]), m = Number(ms[2]), y = Number(ms[3]);
			if (d < 1 || d > 31) return _WL_Validation_DATE_DAY;
			if (m < 1 || m > 12) return _WL_Validation_DATE_MONTH;
			if (m == 2) {
				if (y % 4 == 0) {
					if (d > 29) return _WL_Validation_DATE_DAY;
				} else {
					if (d > 28) return _WL_Validation_DATE_DAY;
				}
			} else if (m == 4 || m == 6 || m == 9) {
				if (d > 30) return _WL_Validation_DATE_DAY;
			}
			return true;
		} else {
			return _WL_Validation_DATE_FORMAT;
		}
	},

	and : function(f, funcs) {
		for (var i = 0; i < funcs.length; i++) {
			var r = funcs[i](f);
			if (r !== true) return r;
		}
		return true;
	},
	or : function(f, funcs) {
		var res = false;
		for (var i = 0; i < funcs.length; i++) {
			var r = funcs[i](f);
			if (r === true) {
				return true;
			} else {
				if (res === false) res = r;
			}
		}
		return res;
	}
};