/* CharType,表单数据类型 "C" 为字符串，"N" 为数字,"D"为日期类型。
 * MaxLength(最大长度) 整型数字 0表示不限制最大长度
 * Precision(精度) 整型数字 表示保留小数位的长度,0表示是整数
 * DefiniteLengthMark(定长标志) 整型数字   0（定长不允许空）/1（不定长不可空）/2（不定长允许空）/3（定长允许空）
 * Describe(表单描述) 比如：电话号码，用户姓名等等,必须写
 */
function checkFormItem(FormItemName,CharType,MaxLength,Precision,DefiniteLengthMark,Describe)
{	
	var TValue;
	TValue=FormItemName.value;
	//得到文本框去掉头尾空格的值
	TValue=TValue.replace(/(^\s*)|(\s*$)/g, "");
	//去掉文本框头尾空格
	
	FormItemName.value=FormItemName.value;
	//允许空，只要文本框为空返回true
	if((DefiniteLengthMark==2||DefiniteLengthMark==3)&&(TValue.length==0))
	{
		return(true);
	}
	//不允许空，只要文本框为空返回false
	if((DefiniteLengthMark==0||DefiniteLengthMark==1)&&(TValue.length==0))
	{
		alert(Describe+"不允许为空！");
		return(false);
	}
	//判断字符串，长度和定长。
	
	if(CharType=="C")
	{
		if((DefiniteLengthMark==0||DefiniteLengthMark==3) && getStrLength(TValue)!=MaxLength)
		{
			alert(Describe+"规定长度是"+MaxLength+"，请检查！");
			return(false);
		}
		if(MaxLength!=0&&getStrLength(TValue)>MaxLength && (DefiniteLengthMark==1||DefiniteLengthMark==2))
		{
			alert(Describe+"超过最大长度，允许的最大长度是"+MaxLength+"！");
			return(false);
		}
		
	}
	//判断数字类型，长度，精度，定长
	if(CharType=="N")
	{
		//检查整型数字
		if(Precision==0&&!isInteger(TValue))
		{
			alert(Describe+"项填写必须输入数字，请检查！");
			return(false);
		}
		if(Precision==0&&isInteger(TValue)&&MaxLength!=0&&(DefiniteLengthMark==0||DefiniteLengthMark==3)&&getStrLength(TValue)!=MaxLength)
		{
			alert(Describe+"项长度必须是"+MaxLength+"，请检查！");
			return(false);
		}
		if(Precision==0&&isInteger(TValue)&&MaxLength!=0&&(DefiniteLengthMark==1||DefiniteLengthMark==2)&&getStrLength(TValue)>MaxLength)
		{
			
			alert(Describe+"项输入数字长度不能超过"+MaxLength+"，请检查！");
			return(false);
		}
		//检查整型数字结束
		
		
		//检查实数
		if(Precision!=0&&!isFloat(TValue))
		{
			alert(Describe+"项必须输入数字，请检查！");
			return(false);
		}
		if(Precision!=0&&isFloat(TValue)&&MaxLength!=0&&(DefiniteLengthMark==0||DefiniteLengthMark==3)&&getStrLength(TValue)!=MaxLength)
		{
			
			alert(Describe+"项输入数字长度必须是"+MaxLength+"，请检查！");
			return(false);
		}
		if(Precision!=0&&isFloat(TValue)&&MaxLength!=0&&(DefiniteLengthMark==1||DefiniteLengthMark==2)&&getStrLength(TValue)>MaxLength)
		{
			
			alert(Describe+"项输入数字长度不能超过"+MaxLength+"，请检查！");
			return(false);
		}
		if(Precision!=0&&isFloat(TValue)&&!checkPrecision(TValue,Precision))
		{
			
			alert(Describe+"项输入数字应该保留"+Precision+"位小数，请检查！");
			return(false);
		}
		
	}
	/*验证日期类型具体代码还没有写*/
	if(CharType=="D")
	{
		return(true);
	}

	return(true);
}


/* 得到字符串的长度  */
/*
function getStrLength(str)
{
	var sLength,i;
	sLength=0;
	for(i=0;i<str.length;i++)
	{
		if(Math.abs(str.charCodeAt(i))<=255)
			sLength=sLength+1;
		else
			sLength=sLength+2;
	}
	return(sLength);
	
}*/

function getStrLength(str)
{
	var winnt_chinese,sLength,i;
	var TestString="同方";
	if  (TestString.length==2){
		winnt_chinese =true;
	}else{
		winnt_chinese =false;
	}
	if (winnt_chinese){
	    var l, t, c,kk;
            l = str.length;
            t = l;
            for (kk=0;kk<l;kk++)
            {
                c = str.charCodeAt(kk);
                if (c < 0){
                    c = c + 65536;
                }
                if (c > 255){
                    t = t + 1;
                }
            }
            sLength = t;
	}else{
	    sLength = str.length;
	}
	return(sLength);
}


/* 验证整数  */
function isInteger(str)
{
	if(isNaN(str))
	{
		return(false);
	}
	else
	{
		if(str.search("[.*]")!=-1)
		{
			return(false);
		}
	}
	return(true);
}
/* 验证实型数字  */
function isFloat(str)
{
	//alert(isNaN(parseFloat(str)));
//	return(!isNaN(parseFloat(str)));
	return(!isNaN(str));
}
/* 验证精度  */
function checkPrecision(str,n)
{
	
	var tureorfalse,i,PrecisionLength;
	PrecisionLength=0;
	if(!isNaN(parseFloat(str)))
	{
		for(i=0;i<str.length;i++)
		{
			if(str.charAt(i)==".")
			{
				PrecisionLength=str.length-i-1;
				break;
			}	
		}
		
	}
	else
	{
		return(false);
	}
	if(PrecisionLength<=n)
		return(true);
	else
		return(false);
	
}


//函数名：fucPWDchk
//功能介绍：检查是否含有非数字或字母
//参数说明：要检查的字符串
//返回值：0：含有 1：全部为数字或字母
function fucPWDchk(str)
{
  var strSource ="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var ch;
  var i;
  var temp;

  for (i=0;i<=(str.length-1);i++)
  {

    ch = str.charAt(i);
    temp = strSource.indexOf(ch);
    if (temp==-1)
    {
     return 0;
    }
  }
  if (strSource.indexOf(ch)==-1)
  {
    return 0;
  }
  else
  {
    return 1;
  }
}

//函数名：fucCheckNUM
//功能介绍：检查是否为数字
//参数说明：要检查的数字
//返回值：1为是数字，0为不是数字
function fucCheckNUM(NUM)
{
	var i,j,strTemp;
	strTemp="0123456789";
	if ( NUM.length== 0)
		return 0
	for (i=0;i<NUM.length;i++)
	{
		j=strTemp.indexOf(NUM.charAt(i));
		if (j==-1)
		{
		//说明有字符不是数字
			return 0;
		}
	}
	//说明是数字
	return 1;
}

//函数名：chkspc
//功能介绍：检查是否含有空格
//参数说明：要检查的字符串
//返回值：0：是  1：不是
function chkspc(a)
{
	var i=a.length;
	var j = 0;
	var k = 0;
	while (k<i)
	{
		if (a.charAt(k) != " ")
			j = j+1;
		k = k+1;
	}
	if (j==0)
	{
		return 0;
	}

	if (i!=j)
	{ return 2; }
	else
	{
		return 1;
	}
}

//函数名：fucCheckTEL
//功能介绍：检查是否为电话号码
//参数说明：要检查的字符串
//返回值：1为是合法，0为不合法
function fucCheckTEL(TEL)
{
	var i,j,strTemp;
	strTemp="0123456789-()# ";
	for (i=0;i<TEL.length;i++)
	{
		j=strTemp.indexOf(TEL.charAt(i));
		if (j==-1)
		{
		//说明有字符不合法
			return 0;
		}
	}
	//说明合法
	return 1;
}

//函数名：fucCheckLength
//功能介绍：检查字符串的长度
//参数说明：要检查的字符串
//返回值：长度值
function fucCheckLength(strTemp)
{
	var i,sum;
	sum=0;
	for(i=0;i<strTemp.length;i++)
	{
		if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255))
			sum=sum+1;
		else
			sum=sum+2;
	}
	return sum;
}



