	/* 取得字符串的字节长度 */
	function strlen(str)
	{
	//	var i;
	//	var len;
	//	len = 0;
	//	for (i=0;i<str.length;i++)
	//	{
	//		if (str.charCodeAt(i)>255) len+=1; else len++;
	//	}
		return str.length;
	}
	/* 检测字符串是否为空 */
	function isNull(str)
	{
		var i;
		 for (i=0;i<str.length;i++)
		{
		  if (str.charAt(i)!=' ') return false;
		}
		 return true;
	}
	/* 检测字符串是否全为数字 */
	function isNumber(str)
	{
		var number_chars = "1234567890";
		var i;
		for (i=0;i<str.length;i++)
		{
			if (number_chars.indexOf(str.charAt(i))==-1) return false;
		}
		return true;
	}
	/* 检测字符串是否为浮点数 */
	function isFloat(str)
	{
		var formatMode = /^(([1-9]\d*\.\d*|0\.\d*[1-9]\d*)|([1-9]\d*)|0|0\.0)?$/;
		if (formatMode.test(str)){
			return true;
		}
		return false;
	}	
	/*是否为手机格式*/
	function isMobile(str){
		var formatMode = /^((\+86))?(13[0-9]?|14[0-9]?|15[0-9]?|18[0-9])[0-9]{8}$/;
		if (formatMode.test(str)){
			return true;
		}
		return false;
	}
	/*是否为邮箱格式*/
	function isEmail(str)
	{
		var formatMode = /\b(^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))$)\b/;
		if (formatMode.test(str)){
			return true;
		}
		return false;
	}
	/*是否为日期格式*/
	function isDate(str)
	{
		var formatMode = /^(\d{4}\-\d{1,2}-\d{1,2})?$/;
		if (formatMode.test(str)){
			return true;
		}
		return false;
	}

	/**
	 * 用正则表达式使用datatype="match"，同时添加matchMode、standardInfo属性，
	 * 			前者填写^(\\d{4}\\-\\d{1,2}-\\d{1,2})?$格式正则表达式，注意\要替换为\\
	 * 			后者为提示正确填写格式信息。
	 */
	function isMatch(str,matchMode){
		var formatMode = new RegExp(matchMode);
		if (formatMode.test(str)){
			return true;
		}
		return false;
	}
			
	/* 检测指定文本框输入是否合法 */
	function verifyInput(input)
	{   
		var image;
		var i;
		var error = false;
		/* 长度校验 */
		if (strlen(input.value)>parseInt(input.getAttribute('maxsize')))
		{
			alert(input.getAttribute('chname')+"超出最大长度"+input.getAttribute('maxsize'));
			error = true;
		}else
		if (0<strlen(input.value) && strlen(input.value)<parseInt(input.getAttribute('minsize'))){
			alert(input.getAttribute('chname')+"小于最小长度"+input.getAttribute('minsize'));
			error = true;
		}
		else
		/* 非空校验 */
		if (input.getAttribute('nullable')=="no"&&isNull(input.value))
		{
			alert(input.getAttribute('chname')+"不能为空");
			error = true;
		}
		else
		if (input.getAttribute('nullable')=="yes"&&isNull(input.value)){
			error = false;
		}
		else
		{
		/* 数据类型校验 */
		switch(input.getAttribute('datatype'))
		{
			case "number": 
				if (isNumber(input.value)==false)
				{
					alert(input.getAttribute('chname')+"的值应该全为数字");
					error = true;
				}
				break;
				
			case "date":
				if (isDate(input.value)==false)
				{
					alert(input.getAttribute('chname')+"格式有误,例:2008-01-01");
					error=true;
				}
				break;
				
			case "float":
				if (isFloat(input.value)==false)
				{
					alert(input.getAttribute('chname')+"格式有误,应为整数或者小数");
					error=true;
				}
				break;		
				
			case "email":
				if (isEmail(input.value)==false)
				{
					alert(input.getAttribute('chname')+"格式有误");
					error=true;
				}
				break;
			case "mobile":
				if (isMobile(input.value)==false)
				{
					alert(input.getAttribute('chname')+"格式有误,13xxxxxxxxx或+8613xxxxxxxxx");
					error=true;
				}
				break;
			case "match":
				if (isMatch(input.value,input.getAttribute('matchMode'))==false)
				{
					alert(input.getAttribute('chname')+"格式有误,"+input.getAttribute('standardInfo'));
					error=true;
				}
				break;			
			/* 在这里可以添加多个自定义数据类型的校验判断 */
			/*  case datatype1: ... ; break;        */
			/*  case datatype2: ... ; break;        */
			/*  ....................................*/
			default  : break;
		}
		}
		/* 根据有无错误设置或取消警示标志 */
		if (error)
		{
//			image = document.getElementById("img_"+input.name);
//			image.src="img/warning.gif";
			return false;
		}
		else
		{
//			image = document.getElementById("img_"+input.name);
//			image.src="img/space.gif";
			return true;
		}
	}
	/* 检测指定FORM表单所有应被检测的元素
	（那些具有自定义属性的元素）是否合法，此函数用于表单的onsubmit事件 */
	function verifyAll(myform)
	{
		var i;
		for (i=0;i<myform.elements.length;i++)
		{
			 /* 非自定义属性的元素不予理睬 */
			if (myform.elements[i].getAttribute('chname')+""=="undefined") continue;
			/* 校验当前元素 */
			if (verifyInput(myform.elements[i])==false)
			{
				myform.elements[i].focus();
				return false;
			}
		}
		return true;
	}
	function verifyArea(area)
	{
		var i;
		var selectArea = document.getElementById(area);
		var inputs = selectArea.getElementsByTagName("input");
		var selects = selectArea.getElementsByTagName("select");
		for(i=0; i<inputs.length; i++){
			/* 非自定义属性的元素不予理睬 */
			if (inputs[i].getAttribute('chname')+""=="undefined") continue;
			/* 校验当前元素 */
			if (verifyInput(inputs[i])==false)
			{
				inputs[i].focus();
				return false;
			}
		}		 
		 for(var j=0; j<selects.length; j++){
			 /* 非自定义属性的元素不予理睬 */
				if (selects[j].getAttribute('chname')+""=="undefined") continue;
				/* 校验当前元素 */
				if (verifyInput(selects[j])==false)
				{
					selects[j].focus();
					return false;
				}
		 }
		return true;
	}
