/* 检查参数 */
function parameterChecker(type, obj){
	var value = obj.value;
	parameterChecker.msg = "输入格式错误";
	var re = /[\\\']/g;
	if(re.test(value) == true){
		parameterChecker.msg = "含有非法字符（\\'等等)";
		return false;
	}
	return eval("is" + type + "Parameter(obj)");
}
/* 检查是否是整数	*/
function isIntegerParameter(obj){
//	alert("isIntegerParameter test: " + obj.value);
	var MAX_INTEGER = 2147483647;
	var MIN_INTEGER = -2147483648;
	var value = obj.value;
	var re = /^[\+\-]?\d+$/;
	var re2 = /^0\d+/;
	if(re.test(value) == false)
		return false;
	if(re2.test(value) == true)
		return false;
	var a = parseInt(obj.value);
	if(a<MIN_INTEGER || a > MAX_INTEGER){
		parameterChecker.msg = "数值越界";
		return false;
	}
	return true;
}

function isIDParameter(obj){
	return isIntegerParameter(obj);
}

/* 检查是否是金额	*/
function isMoneyTest(value){
	var r1 = /^[\+\-]?\d+$/;
	var r2 = /^[\+\-]?\d{1,3}(,\d{3})*\.\d*$/;
	var r3 = /^[\+\-]?\d+\.\d*$/;
	var r4 = /^[\+\-]?\d\.\d*$/;
	if(r1.test(value)==false && r2.test(value)==false && r3.test(value)==false && r4.test(value)==false)
		return false;
	return true;
}
function isBigDecimalParameter(obj){
//	alert("isBigDecimalParameter test: " + obj.value);
	var value = obj.value;
	var MAX_VALUE = 1e16;
	var MIN_VALUE = -1e16;

	if(isMoneyTest(value) == false)
		return false;
		
	var a = parseFloat(obj.value.replace(/,/g, ""));
	if(a < MIN_VALUE || a > MAX_VALUE){
		parameterChecker.msg = "超过金额最大范围";
		return false;
	}
	return true;
}

function isFormatDecimalParameter(obj){
//	alert("isBigDecimalParameter test: " + obj.value);
	return isBigDecimalParameter(obj);
}

/* 检查是否是字符串	*/
function isStringParameter(obj){
//	alert("isStringParameter test: " + obj.value);
	return true;
}

/* 检查是否是日期	*/
function isDateParameter(obj){
//	alert("isDateParameter test: " + obj.value);
	var value = obj.value;
	var re = /^\d{4}-\d{1,2}-\d{1,2}$/;
	if(re.test(value) == false)
		return false;
	var ds = value.split('-');
	if(parseInt(ds[1])<0 || parseInt(ds[1])>12 || parseInt(ds[2])<0 || parseInt(ds[2])>31)
		return false;
	return true;
}

/* 检查是否是时间	*/
function isTimeParameter(obj){
	var value = obj.value;
	var re = /\d{1,2}:\d{1,2}:\d{1,2}$/;
	if(re.test(value) == false)
		return false;
	var ts = value.split(":");
	for(var i=0; i<ts.length; i++)
		ts[i] = parseInt(ts[i].replace(/^0(\d)/, "$1"));
		
	if(ts[0] > 23){
		parameterChecker.msg = "时钟输入错误";
		return false;
	}
	
	if(ts[1] > 59){
		parameterChecker.msg = "分钟输入错误";
		return false;
	}
	

	if(ts[2] > 59){
		parameterChecker.msg = "秒数输入错误";
		return false;
	}	
	
	return true;
}

/* 检查是否是IP地址	*/
function isIPParameter(obj){
//	alert("isIPParameter test: " + obj.value);
	var value = obj.value;
	var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
	if(re.test(value) == false)
			return false;
	return true;
}
/* 检查是否是密码	*/
function isPasswordParameter(obj){
//	alert("isIntegerParameter test: " + obj.value);
	var value = obj.value;
	if(value.length<6){
		parameterChecker.msg = "密码太短";
		return false;
	}
	return true;
}

/* 获得类型名称 */
function getTypeName(type){
	if(type == "Integer")
		return "整数";
	if(type == "String")
		return "字符串";
	if(type == "BigDecimal")
		return "金额";
	if(type == "Date")
		return "日期";
	if(type == "ID")
		return "主键";
	if(type == "FormatDecimal")
		return "格式化金额";
	if(type == "IP")
		return "IP地址";
	if(type == "Time")
		return "时间";	
	if(type == "Password")
		return "密码";			
	return "";
}

/* 焦点到Object */
function focusObject(obj){
	if(obj.type == "hidden")
		return;
	if(obj.focus)
		obj.focus();
	if(obj.select)
		obj.select();
}

/*	检查form表单中的参数合法性	*/
function checkParameter(form, xml){
	var i,j;
	
	if(xml == "")
		return true;
		
	if(checkParameter.parArray == null){
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = "false";
		xmlDoc.loadXML(xml);
		if(xmlDoc == null)
			return false;
		xmlObj = xmlDoc.documentElement;
		
		checkParameter.parArray = new Array();
		for(var i=0; i<xmlObj.childNodes.length; i++){
			var name = xmlObj.childNodes(i).getAttribute("name");
			var type = xmlObj.childNodes(i).getAttribute("type");
			var required = xmlObj.childNodes(i).getAttribute("required");
			var desc = xmlObj.childNodes(i).getAttribute("desc");
			if(desc == null || desc=="")
				desc = name;
	//		alert(name + ":" + type + ":" + required);
			var arr = [name, type, required, desc];
			checkParameter.parArray[checkParameter.parArray.length] = arr;
		}			
	}
	
	for(i=0;i<form.elements.length;i++){
		var obj = form.elements[i];
		for(j=0;j<checkParameter.parArray.length;j++){
			if(obj.name == checkParameter.parArray[j][0]){
		//		alert(obj.tagName + ":" + obj.name + ":" + obj.value + ":" + checkParameter.parArray[j][1] + ":" + checkParameter.parArray[j][2]);
				if(checkParameter.parArray[j][2] == "true"){
					if(obj.value == ""){
						alert(checkParameter.parArray[j][3] + "： 参数不可为空,请重新输入！");
						focusObject(obj);
						return false;						
					}
					if(parameterChecker(checkParameter.parArray[j][1], obj) == false){
						alert(checkParameter.parArray[j][3] + "： " + getTypeName(checkParameter.parArray[j][1]) + parameterChecker.msg + ",请重新输入！");
						focusObject(obj);
						return false;
					}
				}else{
					if(obj.value == ""){
						continue;
					}else{
						if(parameterChecker(checkParameter.parArray[j][1], obj) == false){
							alert(checkParameter.parArray[j][3] + "： " + getTypeName(checkParameter.parArray[j][1]) + parameterChecker.msg + ",请重新输入！");
							focusObject(obj);
							return false;
						}
					}
				}
				break;
			}
		}
	}		
	return true;	
}

