/**************************************************************
*	CheckFunction.js
*	@Author:winter
*	主要功能：对输入参数进行规则校验
**************************************************************/


/**************************************************************
*	主要功能：检查Str1中的字符是否完全在Str2中出现过
*	输入参数：
*		Str1--要检查的变量
*		Str2--规定串的内容
*	返回值：
*		true--说明Str1中全是Str2中规定的字符内容
*		false--说明Str1中不全是Str2中规定的字符内容
**************************************************************/
function CheckIsAll(Str1,Str2)
{
	var i,j;
	if ( Str1.length==0)
		return false;
	for (i=0;i<Str1.length;i++)
	{
		j=Str2.indexOf(Str1.charAt(i));	
		if (j==-1)
		{
			//说明Str1中不全是Str2中规定的字符内容
			return false;
		}
	}
	//说明Str1中全是Str2中规定的字符内容
	return true;
}

/**************************************************************
*	主要功能：检查NUM是否为数字。
*	输入参数：
*		NUM--要检查的变量
*	返回值：
*		true--是数字
*		false--不是数字
**************************************************************/
function CheckNum(Num){
	if(!CheckIsAll(Num,"0123456789"))
		return false; //说明不是数字
	if(isNaN(Num))
		return false; //说明不是数字

	return true; //说明是数字
}

/**************************************************************
*	主要功能：检查NUM是否在MixNum,MaxNum之间，可以等于MixNum,MaxNum
*	输入参数：
*		Num--要检查的变量
*		MixNum--数字范围下限
*		MaxNum--数字范围上限
*	返回值：
*		0--符合Num在MixNum\MaxNum范围内
*		-1--Num\MixNum\MaxNum 其中一个不是数字
*		-2--Num不在MixNum\MaxNum范围内
**************************************************************/
function CheckNumBetween(Num,MixNum,MaxNum){
	if(!CheckNum(Num) || !CheckNum(MixNum) || !CheckNum(MaxNum))
		return -1; //Num\MixNum\MaxNum 其中一个不是数字
	if(Num < MixNum || Num > MaxNum){
		return -2; //Num不在MixNum\MaxNum范围内
	}
	return 0; //符合Num在MixNum\MaxNum范围内
}

/**************************************************************
*	主要功能：检查小数位是否符合规定
*	输入参数：
*		Num--要检查的变量
*		Len--规定的小数位数
*	返回值：
*		0--Num是整数或符合小数位规定
*		-1--Num不是数字
*		-2--小数位超长
*		-3--只有小数点没有小数　如：33.
**************************************************************/
function CheckFolat(Num,Len){
	if(!CheckNum(Num))
		return -1; //Num不是数字

	//小数点位置
	var PointPos = Num.indexOf(".");
	if(PointPos < 0)
		return 0; //Num是整数或符合小数位规定
	//小数位长度
	var PointLen = Num.substring(PointPos + 1, Num.length).length;
	if(PointLen > Len)
		return -2;//小数位超长
	if(PointLen == 0)
		return -3;//只有小数点没有小数　如：33.

	return 0; //Num是整数或符合小数位规定
}

/**************************************************************
*	主要功能：检查输入变量是否为空（""）
*	输入参数：
*		Str--要检查的变量
*	返回值：
*		true--输入变量为空
*		false--输入变量不为空
**************************************************************/
function CheckIsEmpty(Str){
	if(Str == "")
		return true;
	else
		return false;
}

/**************************************************************
*	主要功能：检查输入变量是否是合法的日期格式
*	输入参数：
*		Str--要检查的变量
*	返回值：
*		true--合法
*		false--非法
**************************************************************/
function CheckDate(Str){
	var i,j,s,m,d,y;

	if(Str.indexOf(".")>0)//取分隔符
		s=".";
	else if(Str.indexOf("/")>0)
		s="/";
	else if(Str.indexOf("-")>0)
		s="-";
	i=Str.indexOf(s);//第一分隔符位置
	j=Str.indexOf(s,i+1);//第二分隔符位置
	if(i+1>=j||i>4||j>i+3)
		return false;//非法日期格式

	y=Str.substring(0,i);//年
	m=Str.substring(i+1,j);//月
	d=Str.substring(j+1,Str.length);//日
	if (m=="08") m="8"
	if (m=="09") m="9";
	if (d=="08") d="8";
	if (d=="09") d="9";
	if (y.length!=4)
		return false;//非法日期格式
	if (isNaN(m)||isNaN(d)||isNaN(y)||y==""||m==""||d=="")
		return false;//非法日期格式

	y=parseInt(y);
	m=parseInt(m);
	d=parseInt(d);
	if (m<1||m>12||d<1||d>31||y<1000)
		return false;//非法日期格式
	if ((m==2||m==4||m==6||m==9||m==11)&&d>30)
		return false;//非法日期格式
	if ((m==2&&(d>29))||((m==2)&&(d==29)&&!((y==(parseInt(y/4)*4)&&y!=parseInt(y/100)*100)||y==parseInt(y/400)*400)))
		return false;//非法日期格式

	return true;
}

/**************************************************************
*	主要功能：检查输入变量是否是合法的时间格式
*	输入参数：
*		Str--要检查的变量
*		is--是否要检查秒。1:检查秒/other:不检查秒
*	返回值：
*		true--合法
*		false--非法
**************************************************************/
function CheckTime(Str,is){
	var i,j,s,h,m,ss;

	if(Str.indexOf(":")>0)//取分隔符
		s=":";
	else
		return false;//非法

	i=Str.indexOf(s);//第一分隔符位置
	j=Str.indexOf(s,i+1);//第二分隔符位置
	if(is == 1){
		if(i+1>=j||i>2||j>i+3)
			return false;//非法
	}

	h=Str.substring(0,i);//时
	if(is == 1){
		m = Str.substring(i+1,j);//分
		ss = Str.substring(j+1,Str.length);//秒
	}
	else{
		m = Str.substring(i+1,Str.length);//分
	}
	if(isNaN(h)||isNaN(m)||h==""||m=="")
		return false;//非法
	if(is == 1){
		if(isNaN(ss)||ss == "")
			return false;//非法
	}

	h=parseInt(h);
	m=parseInt(m);
	ss=parseInt(ss);
	if (h<0||h>23||m<0||m>59)
		return false;//非法
	if(is == 1){
		if(ss<0||ss>59)
			return false;//非法
	}

	return true;
}

/**************************************************************
*	主要功能：检查输入变量中是否包含中文字符
*	输入参数：
*		Str--要检查的变量
*	返回值：
*		true--包含中文
*		false--不包含中文
**************************************************************/
function CheckCNStr(Str){
	for(i=0;i<Str.length;i++){
		if(Str.charCodeAt(i)>=0xA0)
			return true;	//包含中文
		else
			return false;	//不包含中文
	}
}

/**************************************************************
*	主要功能：计算输入字符串中的实际字符数(中文算2个字符)
*	输入参数：
*		str--要检查的变量
*	返回值：
*		实际字符数
**************************************************************/
function getStringLength(str){
	var i = 0;
	var j = 0;//string length
	while(i < str.length){
		if(str.charCodeAt(i) > 0xA0)
			j += 2;
		else
			j++;

		i++;
	}
	return j;
}

function Trim(x)
{
	x = x.replace (/\s/ig,'');
	return x;
}
