//求字符串的长度
function lenString(str1) {
/**1) 如果strPara=null，则返回0；*/
/**2) 计算时，不压缩掉两端空格（如：” ss  ”，长度为5；” ”，长度为1（因有个空格））；*/
/**3) 如果strPara中，有汉字，按2个长度算（如：”2中”，长度为3）;*/
	if (str1==null) return 0;
	var intLen=0;
	for (var int1=0;int1<str1.length;int1++) {
		if (str1.substr(int1,1).charCodeAt(0)>127) {
			intLen+=2;
		}
		else {
			intLen++;
		}
	}
	return intLen;
}


//判断是否为数字类型
function isInt(p) {
/**1) 如果strPara=null（或=””(不压缩)），则返回1；*/
/**2) 是整数返回1，不是整数返回0;*/
/**3) 注意：代有小数点（包括，如："45."），返回0;  如："00","-0","-0045"形式也返回0; */
	if (p==null)	return 1;
	if (p=="")	return 1;
	for(var i=0;i<p.length;i++) {
		if ((p.charAt(i)=="-") && (i==0)) continue;
		if ((p.charAt(i)<"0")||(p.charAt(i)>"9")) {
			return 0;
		}
	}
	if (p.length>=2) {
		if (p.charAt(0)=="0") return 0;//01返回0
		if ((p.charAt(0)=="-") && (p.charAt(1)=="0") && (p.length>=3)) return 0;//-01返回0
	}
	return 1;
}


//判断是否为正整数
function isZint(p) {
/**1) 如果strPara=null（或=””(不压缩)），则返回1；*/
/**2) 正整数返回1，不是正整数返回0;*/
/**3) 注意：如果是负数或者0，返回0;如："00","0045"形式也返回0; */
	if (p==null)	return 1;
	if (p=="")	return 1;
	var isZero = true;
	for(var i=0;i<p.length;i++) {
		if ((p.charAt(i)<"0")||(p.charAt(i)>"9")) {
			return 0;
		}
		if (p.charAt(i)!="0") isZero=false;
	}
	if (p.length>=2) {
		if (p.charAt(0)=="0") return 0;//01返回0
	}
	if (!isZero) { return 1; } else { return 0;}
}


//判断是否为浮点数
function isFloat(p) {
/**1) 如果strPara=null（或=””(不压缩)），则返回1；*/
/**2) 是浮点数返回1，不是浮点数返回0; 如："00.3","-01.2","-0045.0"形式也返回0; */
	if (p==null)	return 1;
	if (p=="")	return 1;
	var intPoint=0;
	for(var i=0;i<p.length;i++) {
		if (p.charAt(i)==".") {
			if (intPoint==0) {				
				intPoint++;
				continue;
			}
			return 0;//因多个小数点.
		}

		if ((p.charAt(i)=="-") && (i==0)) continue;
		if ((p.charAt(i)<"0")||(p.charAt(i)>"9")) {
			return 0;
		}
	}

	if (p.length>=2) {
		if ((p.charAt(0)=="0") && (p.charAt(1)!=".")) return 0;//01返回0
		if (p.length>=3) {
			if ((p.charAt(0)=="-") && (p.charAt(1)=="0") && (p.charAt(2)!=".")) return 0;//-01返回0
		}
	}
	return 1;
}


//判断是否为正浮点数
function isZfloat(p) {
/**1) 如果strPara=null（或=””(不压缩)），则返回1；*/
/**2) 是正浮点数返回1，不是正浮点数返回0;*/
/**3) 注意：如果是负浮点数或者0，返回0; 如："00.3"形式也返回0; */
	if (p==null)	return 1;
	if (p=="")	return 1;
	var intPoint=0;
	var isZero = true;
	for(var i=0;i<p.length;i++) {
		if (p.charAt(i)==".") {
			if (intPoint==0) {				
				intPoint++;
				continue;
			}
			return 0;//因多个小数点.
		}

		if ((p.charAt(i)<"0")||(p.charAt(i)>"9")) {
			return 0;
		}
		if (p.charAt(i)!="0") isZero=false;//不为0
	}

	if (p.length>=2) {
		if ((p.charAt(0)=="0") && (p.charAt(1)!=".")) return 0;//01返回0
	}
	if (!isZero) { return 1; } else { return 0;}
}


//判断是否是合法日期
function isDate(p) {
/**1) 如果strPara=null（或=””(不压缩)），则返回1；*/
/**2) 是合法返回1，不合法返回0; */
/**3) 注意："12345-123-456" 不算合法，严格按实际存在的日期看（是否合法）; */
	if (p==null)	return 1;
	if (p=="")	return 1;
	var intJh=0;//减号个数
	for(var i=0;i<p.length;i++) {
		if (p.charAt(i)=="-") {
			if ((i==0) || (i==p.length-1)) return 0;//首尾为"-"，也非法
			if (p.charAt(i-1)=="-") return 0;//连续两个"-"，也非法
			if (intJh<2) {
				intJh++;
				continue;
			}
			return 0;//因3个以上的"-".
		}

		if ((p.charAt(i)<"0")||(p.charAt(i)>"9")) {
			return 0;
		}
	}
	if (intJh!=2) return 0;//没有2个减号
//update 10-2
	var intMh=p.indexOf("-");//从"-"分开
	if (intMh==-1) return 0;//没有"-"
	var strYear=p.substring(0,intMh);//年
	var strRn=p.substring(intMh+1,p.length);//月，日

	intMh=strRn.indexOf("-");//从"-"分开
	if (intMh==-1) return 0;//没有"-"
	var strMonth=strRn.substring(0,intMh);//月
	var strDay=strRn.substring(intMh+1,strRn.length);//日
	if ((strYear.length!=4) || (strMonth.length>2) || (strDay.length>2)) return 0;
	if ((strYear<1000) || (strYear>3000)) return 0;//年只能在1000-3000
	if ((strMonth<1) || (strMonth>12))return 0;//1-12

	if ((strMonth==1) || (strMonth==3)  || (strMonth==5) || (strMonth==7) || (strMonth==8) || (strMonth==10) || (strMonth==12)) {//不能用case
		if (strDay>31) return 0;
	}
	if ((strMonth==4) || (strMonth==6)  || (strMonth==9) || (strMonth==11)) {//小月
		if (strDay>30) return 0;
	}
	if (strMonth==2){
		if (strDay>29) return 0;
		if (((strYear % 4)!=0) && (strDay>28)) return 0;//不是润月
	}
	return 1;
}


//判断是否是合法日期时间
function isTimestamp(strPara) {
/**1) 如果strPara=null（或=””(不压缩)），则返回1；*/
/**2) 是合法返回1，不合法返回0; */
/**3) 日期时间，即像JAVA中的java.sql.Timestamp类型（如2002-01-01 04:02:06）；*/
/**4) 注意：在"12345-123-456 123:123:123" 不算合法，严格按实际存在的时间看（是否合法）; */
	if (strPara==null)	return 1;
	if (strPara=="")	return 1;
	var intSpace=strPara.indexOf(" ");//从空格分开
	if (intSpace==-1) return 0;//没有空格
	var strDate=strPara.substring(0,intSpace);	
	var strTime=strPara.substring(intSpace+1,strPara.length);
	if ((strDate=="") || (strTime=="")) return 0;//日期或时间为空
	if ((isDate(strDate)==0) || (isTime(strTime)==0)) return 0;
	return 1;
}

//判断是否是合法时间
function isTime(p) {
/**1) 如果strPara=null（或=””(不压缩)），则返回1；*/
/**2) 是合法返回1，不合法返回0; */
/**4) 注意："123:123:123" 也不算合法，严格按实际存在的时间看（是否合法）; */
	if (p==null)	return 1;
	if (p=="")	return 1;
	var intJh=0;//":"个数
	for(var i=0;i<p.length;i++) {
		if (p.charAt(i)==":") {
			if ((i==0) || (i==p.length-1)) return 0;//首尾为":"，也非法
			if (p.charAt(i-1)==":") return 0;//连续两个":"，也非法
			if (intJh<2) {
				intJh++;
				continue;
			}
			return 0;//因3个以上的"-".
		}

		if ((p.charAt(i)<"0")||(p.charAt(i)>"9")) {
			return 0;
		}
	}
	if (intJh!=2) return 0;//没有2个":"
//update 12-2
	var intMh=p.indexOf(":");//从空格分开
	if (intMh==-1) return 0;//没有空格
	var strHour=p.substring(0,intMh);//小时
	var strFm=p.substring(intMh+1,p.length);//分秒

	intMh=strFm.indexOf(":");//从空格分开
	if (intMh==-1) return 0;//没有空格
	var strMinute=strFm.substring(0,intMh);//小时
	var strSecond=strFm.substring(intMh+1,strFm.length);//分秒
	if ((strHour>=24) || (strMinute>=60) || (strSecond>=60)) return 0;
	return 1;
}

//将&转化成%26,%转换在%25;
//注意，此函数，只能用于页面与页之间Get方法参数的传递
function paraReplace(strPara) {
/**1) 如果strPara=null，则返回""；*/
	if (strPara==null) return "";
	if (strPara.indexOf("&") == -1 && strPara.indexOf("%") == -1) return strPara;
	var strReturn="";
	for (var int1=0;int1<strPara.length;int1++) {
		if (strPara.charAt(int1)=="&") {
			strReturn+="%26";
		}
		else {
			if (strPara.charAt(int1)=="%") {
				strReturn+="%25";
			}
			else {
				strReturn+=strPara.charAt(int1);
			}
		}//end else
	}//end for
	return strReturn;
}

