/* *
 * 阿飞表单验证类
 *
 * @Author : AFei $
 * @Date : $
 * @Id : $
 * @Version : $
*/
var Validator = function(name){
	this.formName = name;
	this.errMsg = new Array();
	/* *
	 * 检查用户是否输入了内容
	 *
	 * @param : controlId 表单元素的ID
	 * @param : msg       错误提示信息
	*/
	this.required = function(controlId, msg){
		var obj = document.forms[this.formName].elements[controlId];
		if (typeof(obj) == "undefined" || Utils.trim(obj.value) == ""){
			this.addError(msg);
		}
	};
	
	this.validate = function(controlId, regular, requiredMsg, regularMsg){
		if (this.getValue(controlId) == ''){
			this.addError(requiredMsg);
		}else{
			this.isRegular(controlId, regular, regularMsg)
		}
	}
	
	this.getValue = function(controlId){
		var obj = document.forms[this.formName].elements[controlId];
		if (typeof(obj) == "undefined"){
			return "";
		}else{
			return Utils.trim(obj.value);
		}
	};
	
	this.getRadio = function(controlId){
		var key = "";
		var obj = document.forms[this.formName].elements[controlId];
		for(var i = 0; i < obj.length; i++){
			if(obj[i].checked == true){
				key = obj[i].value;
			}
		}
		return key;
	};
	
	this.getCheckbox = function(controlId){
		var key = false;
		var obj = document.forms[this.formName].elements[controlId];
		if(obj.checked == true){
			key = true;
		}
		return key;
	};
	
	this.IIS = function(controlId){
		var obj = document.forms[this.formName].elements[controlId];
		obj.value = Utils.trim(obj.value);
		if (obj.value == ""){
			return true;
		}else{
			return false;
		}
	};
	
	/* *
	 * 检查用户输入的是否为合法的邮件地址
	 *
	 * @param : controlId 表单元素的ID
	 * @param : msg       错误提示信息
	 * @param : required  是否必须
	*/
	this.isEmail = function(controlId, msg, required){
		var obj = document.forms[this.formName].elements[controlId];
		obj.value = Utils.trim(obj.value);
		if (!required && obj.value == ""){
			return;
		}
		if (!Utils.isEmail(obj.value)){
			this.addError(msg);
		}
	};
	
	/* *
	 * 检查两个表单元素的值是否相等
	 *
	 * @param : fstControl 表单元素的ID
	 * @param : sndControl 表单元素的ID
	 * @param : msg        错误提示信息
	*/
	this.isEqual = function(fstControl, sndControl, msg){
		var fstObj = document.forms[this.formName].elements[fstControl];
		var sndObj = document.forms[this.formName].elements[sndControl];
		if (fstObj != null && sndObj != null){
			if (fstObj.value == '' || fstObj.value != sndObj.value){
				this.addError(msg);
			}
		}
	};
	
	/* *
	 * 检查前一个表单元素是否大于后一个表单元素
	 *
	 * @param : fstControl 表单元素的ID
	 * @param : sndControl 表单元素的ID
	 * @param : msg        错误提示信息
	*/
	this.isGT = function(fstControl, sndControl, msg){
		var fstObj = document.forms[this.formName].elements[fstControl];
		var sndObj = document.forms[this.formName].elements[sndControl];
		if (fstObj != null && sndObj != null){
			if (Utils.isNumeric(fstObj.value) && Utils.isNumeric(sndObj.value)){
				var v1 = parseFloat(fstObj.value) + 0;
				var v2 = parseFloat(sndObj.value) + 0;
			}else{
				var v1 = fstObj.value;
				var v2 = sndObj.value;
			}
			if (v1 <= v2) this.addError(msg);
		}
	};
	
	/* *
	 * 检查输入的内容是否是一个数字
	 *
	 * @param : controlId 表单元素的ID
	 * @param : msg       错误提示信息
	 * @param : required  是否必须
	*/
	this.isNumeric = function(controlId, msg, required){
		var obj = document.forms[this.formName].elements[controlId];
		obj.value = Utils.trim(obj.value);
		if (obj.value == '' && !required){
			return;
		}else{
			if (!Utils.isNumeric(obj.value)){
				this.addError(msg);
			}
		}
	};
	
	/* *
	 * 检查输入的内容是否是一个整数
	 *
	 * @param : controlId 表单元素的ID
	 * @param : msg       错误提示信息
	 * @param : required  是否必须
	*/
	this.isInt = function(controlId, msg, required){
		var obj = document.forms[this.formName].elements[controlId];
		obj.value = Utils.trim(obj.value);
		if (obj.value == '' && !required){
			return;
		}else{
			if (!Utils.isInt(obj.value)){
				this.addError(msg);
			}
		}
	};
	
	/* *
	 * 检查输入的内容是否是"2006-11-12 12:00:00"格式
	 *
	 * @param : controlId 表单元素的ID
	 * @param : msg       错误提示信息
	 * @param : required  是否必须
	*/
	this.isTime = function(controlId, msg, required){
		var obj = document.forms[this.formName].elements[controlId];
		obj.value = Utils.trim(obj.value);
		if (obj.value == '' && !required){
			return;
		}else{
			if (!Utils.isTime(obj.value)){
				this.addError(msg);
			}
		}
	};
	
	/* *
	 * 检查用户输入的是否为合法的长度
	 *
	 * @param : controlId 表单元素的ID
	 * @param : minVal    最小值
	 * @param : maxVal    最大值
	 * @param : msg       错误提示信息
	*/
	this.isBetween = function(controlId, minVal, maxVal, msg){
		var obj = document.forms[this.formName].elements[controlId];
		obj.value = Utils.trim(obj.value);
		if (typeof(obj) != "undefined" && obj.value != ""){
			if (Utils.len(obj.value) < minVal || Utils.len(obj.value) > maxVal){
				this.addError(msg);
			}
		}
	};
	
	/* *
	 * 检查用户输入的是否为合法的内容
	 *
	 * @param : controlId 表单元素的ID
	 * @param : reg       正则
	 * @param : msg       错误提示信息
	*/
	this.isRegular = function(controlId, reg, msg){
		var obj = document.forms[this.formName].elements[controlId];
		obj.value = Utils.trim(obj.value);
		if (typeof(obj) != "undefined" && obj.value != ""){
			if (!Utils.isRegular(obj.value, reg)){
				this.addError(msg);
			}
		}
	};
	
	this.isPassed = function(){
		if (this.errMsg.length > 0){
			var msg = "";
			for (i = 0; i < this.errMsg.length; i++){
				msg += "- " + this.errMsg[i] + "\n";
			}
			alert(msg);
			return false;
		}else{
			return true;
		}
	};
	
	/* *
	 * 增加一个错误信息
	 *
	 * @param : str
	*/
	this.addError = function(str){
		this.errMsg.push(str);
	}
}