
/*== 函数说明 ==*/

//转换当前窗口的页面到指定页面						doMst
//删除字符串的头尾空格								sTrim
//判断字符串是否为空								bIsNull
//处理回车键功能									fKeyDown	
//检查传入的日期字符串的有效性						JfgIsDate		
//检查传入的字符串是否为字母和数字组成的字符串		isStrENum
//检查传入的字符是否为字母或数字					isChrENum
//检查传入的字符是否为字母或数字或特殊符号			chkCode
//检查传入的字符是否为字母或数字					isCharCode
//是否为整数										bIsInt
//是否为大于0的整数									bIsInteger
//是否为大于或等于0的整数							bIsUnsignedInt
//是否为大于0的数值									bIsValidNum
//是否为大于等于0的数值								bIsValidFloat
//是否为数值(不校验是否为负数)						bIsFloat
//字符c是否为'a'-'z'或'A'-'Z'之间的					bIsLetter
//s字符串中的字符是否都在'0'-'9'之间				bIsNumStr
//c字符是否在'0'-'9'之间							bIsNumChar
//判断是否为合法的日期输入格式(yyyy-mm-dd)			bIsDateFormat	
//判断是否为合法的日期输入							bIsDate
//比较第一个日期和第二个日期的大小					iCompareDate
//在字符串前面加前缀								sAddPrefix
//判断字符串中是否包含汉字							bIsChiStr
//返回字符串的实际长度								iChiStrLen
//转换为指定位数的小数								cvtDoubleStr(s,pi,pd)
//转换数字为汉字形式的星期表示方式					cvtWeekToChiStr(i)
//格式化数字										FormatDecimal




//////////////////////////////////////////////////////////////////
//
// 功能  ： 转换当前窗口的页面到指定页面
// 参数  ： 无
// 返回值： 无
//
//////////////////////////////////////////////////////////////////
function doMst(sHref){
	window.location.href = sHref;
}


//////////////////////////////////////////////////////////////////
//
// 功能  ： 删除字符串的头尾空格
//			bFullSpace=false:	只删除半角空格
//			bFullSpace=true	:	半角全角都删除
// 参数  ： sIn   		源字符串
//			bFullSpace	如果只删除半角空格false;
//						半角全角都删除true;
// 返回值： 无空格的字符串
//
//////////////////////////////////////////////////////////////////
function sTrim(sIn,bFullSpace){	
	var iS=0;
	var iE=sIn.length;

	while(((sIn.substring(iS,iS+1) == " ")||((bFullSpace == true) && (sIn.substring(iS,iS+1) == "　"))) && (iS<iE)){
		iS ++;
	}

	while(((sIn.substring(iE-1,iE) == " ")||((bFullSpace == true) && (sIn.substring(iE-1,iE) == "　")))&& (iE > iS)){
		iE --;
	}
	
	return sIn.substring(iS,iE);	
}


//////////////////////////////////////////////////////////////////
//
// 功能  ： 判断字符串是否为空
// 参数  ： s	  被测试的字符串
// 返回值： true  空
//			false 非空
//
//////////////////////////////////////////////////////////////////
function bIsNull(s) {
	s = sTrim(s, true);
	if( s.length == 0 ) {
		return true;
	}
	return false;
}


//////////////////////////////////////////////////////////////////
//
// 功能		：	处理回车键功能
// 参数		：
// 返回值	：	无
//
//////////////////////////////////////////////////////////////////
function fKeyDown(){

	if(event.keyCode == 13){
		event.keyCode = 9;
		return true;
	}
}


//////////////////////////////////////////////////////////////////
//
// 功能		：	检查传入的日期字符串的有效性
// 参数		：	要检查日期有效性的字符串
// 返回值	：  如果字符串是日期，返回####/##/##的格式；
//				如果不是日期，返回空字符串
//	
//////////////////////////////////////////////////////////////////
function JfgIsDate(in_str) {
	var tempstr = "" + in_str;
	var ret_val = "";

	if (tempstr.length > 10 ) {
		return ret_val;
	}
	//是否为数字组合
	if (!isNaN(tempstr)) {
		if (tempstr.length == 8) {
			tyear = tempstr.substr(0,4);
			tmonth = tempstr.substr(4,2);
			tday = tempstr.substr(6,2);
		}
		else {
			if (tempstr.length == 6) {
				tyear = cls_year(tempstr.substr(0,2));
				tmonth = tempstr.substr(2,2);
				tday = tempstr.substr(4,2);
			}
			else {
				return ret_val;
			}
		}
	}
	else {
		var pos = tempstr.indexOf("/");
		if (pos > 0) {
			tyear = cls_year(tempstr.substr(0,pos));
			tempstr = tempstr.substr(pos+1);
			pos = tempstr.indexOf("/");
			if (pos >0) {
				tmonth = tempstr.substr(0,pos);
				tday = tempstr.substr(pos+1);
			}
			else {
				return ret_val;
			}	
		}
		else {
			pos = tempstr.indexOf("-");
			if (pos > 0) {
				tyear = cls_year(tempstr.substr(0,pos));
				tempstr = tempstr.substr(pos+1);
				pos = tempstr.indexOf("-");
				if (pos >0) {
					tmonth = tempstr.substr(0,pos);
					tday = tempstr.substr(pos+1);
				}
				else {
					return ret_val;
				}	
			}
			else {
				return ret_val;
			}
		}
	}
	if (tyear.length > 4) {
		return ret_val;
	}
	if (isNaN(tyear)) {
		return ret_val;
	}
	//字符串转数字
	if(parseInt(tyear)<=0){
		return ret_val;
	}
	if (isNaN(tmonth)) {
		return ret_val;
	}
	if (isNaN(tday)) {
		return ret_val;
	}
	tyear = "" + parseInt(tyear,10);
	tmonth = "" + parseInt(tmonth,10);
	tday = "" + parseInt(tday,10);
	if (parseInt(tmonth,10) <=0 || parseInt(tmonth,10) > 12 ) {
		return ret_val;
	}
	switch (parseInt(tmonth)) {
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		if (parseInt(tday,10) > 0 && parseInt(tday,10) <= 31) {
			if (tmonth.length ==1) {
				tmonth = "0" + tmonth;
			}
			if (tday.length ==1) {
				tday = "0" + tday;
			}
			ret_val = tyear + "/" + tmonth + "/" + tday;
		}	
		else {
			return ret_val;
		}	
		break;
	case 4:
	case 6:
	case 9:
	case 11:
		if (parseInt(tday,10) > 0 && parseInt(tday,10) <= 30) {
			if (tmonth.length == 1) {
				tmonth = "0" + tmonth;
			}
			if (tday.length ==1) {
				tday = "0" + tday;
			}
			ret_val = tyear + "/" + tmonth + "/" + tday;
		}	
		else {
			return ret_val;
		}
		break;
	case 2:
		if ((parseInt(tyear,10) % 4 ==0) && (parseInt(tyear,10) % 100 != 0) || (parseInt(tyear,10) % 400 == 0)) {
			if (parseInt(tday,10) > 0 && parseInt(tday,10) <= 29) {
				if (tmonth.length ==1) {
					tmonth = "0" + tmonth;
				}
				if (tday.length ==1) {
					tday = "0" + tday;
				}
				ret_val = tyear + "/" + tmonth + "/" + tday;
			}		
			else {
				return ret_val;
			}	
		}	
		else {
			if (parseInt(tday,10) > 0 && parseInt(tday,10) <= 28) {
				if (tmonth.length ==1) {
					tmonth = "0" + tmonth;
				}
				if (tday.length ==1) {
					tday = "0" + tday;
				}
				ret_val = tyear + "/" + tmonth + "/" + tday;
			}
			else {
				return ret_val;
			}	
		}
		break;
	}
	return ret_val;
}
function cls_year(p_year) {

	if (p_year.length < 4) {
		if (parseInt(p_year,10) >= 0 && parseInt(p_year,10) <= 29) {
			if (parseInt(p_year,10) >= 0 && parseInt(p_year,10) <= 9) {
				p_year = "200" + parseInt(p_year,10);
			}
			else {
				p_year = "20" + parseInt(p_year,10);
			}
		}
		else {
			p_year = "19" + parseInt(p_year,10);
		}
	}
	return p_year;
}


//////////////////////////////////////////////////////////////////
//
// 功能	：		检查传入的字符串是否为字母和数字组成的字符串
// 参数	：		要检查字符串
// 返回值 ：	如果字符串是字母和数字组成的字符串，返回true
//				如果字符串不是字母和数字组成的字符串，返回false
//	
//////////////////////////////////////////////////////////////////
function isStrENum(strSou){
	var onechar = "";
	for ( var i=0;i<strSou.length;i++){
		onechar = strSou.substring(i,i+1);
		if(!isChrENum(onechar)){
			return false ;
		}
	}
	return true ;
}


//////////////////////////////////////////////////////////////////
//
// 功能		检查传入的字符是否为字母或数字
// 参数		要检查字符
// 返回值   如果字符是字母或数字，返回true
//			如果字符不是字母或数字，返回false
//
//////////////////////////////////////////////////////////////////
function isChrENum(onechar) {     
    if ((onechar>='0' && onechar<='9' ) || (onechar.toUpperCase()>='A' && onechar.toUpperCase()<='Z')){
		return true;
    }
    return false;
}


//////////////////////////////////////////////////////////////////
//
// 功能		检查传入的字符是否为字母或数字或特殊符号
// 参数		要检查字符串
// 返回值   如果字符串是字母或数字，返回true
//			如果字符不是字母或数字，返回false
//	
//////////////////////////////////////////////////////////////////
function chkCode(strSou) {     
    var onechar = "";
	for ( var i=0;i<strSou.length;i++){
		onechar = strSou.substring(i,i+1);
		if(!isCharCode(onechar)){
			return false ;
		}
	}
	return true ;
}



//////////////////////////////////////////////////////////////////
//
// 功能		检查传入的字符是否为字母或数字
// 参数		要检查字符
// 返回值   如果字符是字母或数字，返回true
//			如果字符不是字母或数字，返回false
//	
//////////////////////////////////////////////////////////////////
function isCharCode(onechar) {     
    if ((onechar>='0' && onechar<='9' ) || (onechar.toUpperCase()>='A' && onechar.toUpperCase()<='Z') || (onechar=='/')  || (onechar=='-') || (onechar=='_') || (onechar==' ') ){
		return true;
    }
    return false;
}



//////////////////////////////////////////////////////////////////
// 名称		bIsInt(num)
// 功能  ： 是否为整数
// 参数  ： num   被测试数值(字符串形式)
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsInt(num){
	try{
		if( String(num) != String(parseInt(num)) ){
			throw "error";
		}
			
	}catch(e){
		return false;
	}
	return true;
	
}



//////////////////////////////////////////////////////////////////
//
// 功能  ： 是否为大于0的整数
// 参数  ： num   被测试数值(字符串形式)
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsInteger(num){
	try{
		if( String(num) != String(parseInt(num)) ){
			throw "error";
		}
		if( num <= 0 ){
			throw "num <= 0";
		}
	
	}catch(e){
		return false;
	}
	return true;
	
}


//////////////////////////////////////////////////////////////////
//
// 功能  ： 是否为大于或等于0的整数
// 参数  ： num   被测试数值(字符串形式)
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsUnsignedInt(num){
	try{
		if( String(num) != String(parseInt(num)) ){
			throw "error";
		}
		if( num < 0 ){
			throw "num < 0";
		}
	
	}catch(e){
		return false;
	}
	return true;
	
}


//////////////////////////////////////////////////////////////////
//
// 功能  ： 是否为大于0的数值
// 参数  ： num   数值(字符串方式)
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsValidNum(num){

    var i, n;
	var commar = false;
		
	if( parseFloat(num) == NaN ){
		return false;
	}
	
	if( parseFloat(num) <= 0 ){
		return false;
	}
	
    for (i=0; i<num.length; i++){
        n = num.substr(i, 1);
        if (!bIsNumChar(n)){
			if ((n == '.') && (commar == false)){
				commar =true;
			}else{
                return false;
            }
        }
    }
        
    return true;
}


//////////////////////////////////////////////////////////////////
//
// 功能  ： 是否为大于等于0的数值
// 参数  ： num   数值(字符串方式)
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsValidFloat(num){

    var i, n;
	var commar = false;
		
	if( parseFloat(num) == NaN ){
		return false;
	}
	
	if( parseFloat(num) < 0 ){
		return false;
	}

    for (i=0; i<num.length; i++){
        n = num.substr(i, 1);
                
        if (!bIsNumChar(n)){
			if ((n == '.') && (commar == false)){
				commar =true;
			}else{
                return false;
            }
        }
    }
        
    return true;
}



//////////////////////////////////////////////////////////////////
//
// 功能  ： 是否为数值(不校验是否为负数)
// 参数  ： num   数值(字符串方式)
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsFloat(num){

    var i, n;
		
	if( parseFloat(num) == NaN ){
		return false;
	}
	
    for (i=0; i<num.length; i++){
        n = num.substr(i, 1);
        if (!bIsNumChar(n)){
			if ( (n != '.') && (n != '-') ){
                return false;
            }
        }
    }	
	
    return true;
}



//////////////////////////////////////////////////////////////////
//
// 功能  ： 字符c是否为'a'-'z'或'A'-'Z'之间的
// 参数  ： c     被测试的字符
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsLetter(c){
        if (((c>='a') && (c<='z')) || ((c>='A') && (c<='Z')))
                return true;
        else
                return false;
}



//////////////////////////////////////////////////////////////////
//
// 功能  ： s字符串中的字符是否都在'0'-'9'之间
// 参数  ： s     被测试的字符串
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsNumStr(s){

    for (i=0; i<s.length; i++){
        n = s.substr(i, 1);
        if (!bIsNumChar(n)){
        	return false;
        }
    }
        
    return true;

}



//////////////////////////////////////////////////////////////////
//
// 功能  ： c字符是否在'0'-'9'之间
// 参数  ： c     被测试的字符
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsNumChar(c){
        if ((c>='0') && (c<='9'))
                return true;
        else
                return false;
}



//////////////////////////////////////////////////////////////////
//
// 功能  ： 判断是否为合法的日期输入格式(yyyy/mm/dd, yyyy-mm-dd)
// 参数  ： sDate     被测试的日期(字符串方式)
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsDateFormat(sDate){
	if (JfgIsDate(sDate) == "" ){
		return false;
	}else{
		return true;
	}
}


//////////////////////////////////////////////////////////////////
//
// 功能  ： 判断是否为合法的日期输入(年度大于1900)
// 参数  ： sYear     被测试的年度(字符串方式)
//			sMonth    被测试的月份(字符串方式)
//			sDay      被测试的日期(字符串方式)
// 返回值： true  正确
//			false 错误
//
//////////////////////////////////////////////////////////////////
function bIsDate(sYear, sMonth, sDay)
{

		if ( sMonth.substring( 0, 1 ) == "0" ) 
			sMonth = sMonth.substring( 1 );
		if ( sDay.substring( 0, 1 ) == "0" )
			sDay = sDay.substring( 1 );
		
		if ( !bIsInteger(sYear) || !bIsInteger(sMonth) || !bIsInteger(sDay) )
		{
				return false;
		}

        var yearInt 	= 	parseInt(sYear);
        var monthInt 	= 	parseInt(sMonth) - 1;
   	    var dayInt 		= 	parseInt(sDay);

        if (yearInt < 1900 || yearInt > 9999)
        {
                return false;
        }

        if (monthInt < 0 || monthInt > 11)
        {
                return false;
        }
        monthDays = new Array(12);
        monthDays [0] = 31;
        monthDays [1] = 28;
        monthDays [2] = 31;
        monthDays [3] = 30;
        monthDays [4] = 31;
        monthDays [5] = 30;
        monthDays [6] = 31;
        monthDays [7] = 31;
        monthDays [8] = 30;
        monthDays [9] = 31;
        monthDays [10] = 30;
        monthDays [11] = 31;

        if (yearInt % 100 == 0)
        {
          if (yearInt % 400 == 0)
          {
            monthDays[1] = 29;
          }
        }
        else
        {
          if (yearInt % 4 == 0)
          {
            monthDays[1] = 29;
          }
        }

        if (dayInt < 1 || dayInt > monthDays[monthInt])
        {
          return false;
        }
        return true;
}


//////////////////////////////////////////////////////////////////
//
// 功能  ： 比较第一个日期和第二个日期的大小
// 参数  ： sFirstDate		被测试的第一个日期(字符串)
//			sSecondDate		被测试的第二个日期(字符串)
// 返回值：	2		第一个日期小于第二个日期
//			1		第一个日期大于第二个日期
//			0		第一个日期等于第二个日期
//			-1		第一个日期为非日期格式
//			-2		第二个日期为非日期格式
//
//////////////////////////////////////////////////////////////////
function iCompareDate( sFirstDate, sSecondDate )
{
	var fYear, fMon, fDay ;
	var sYear, sMon, sDay ;

	if( !bIsNull(sFirstDate) )
	{
		if( !bIsDateFormat( sFirstDate ) )	return -1;
		else
		{	
			fYear = parseInt( sFirstDate.substring(0,4) );
			fMon = parseInt( sFirstDate.substring(5,6)=="0"?sFirstDate.substring(6,7):sFirstDate.substring(5,7) );
			if( bIsInteger(sFirstDate.substring(6,7)) || sFirstDate.substring(6,7)=="0" )
			{
				fDay = parseInt( sFirstDate.substring(8,9)=="0"?sFirstDate.substring(9):sFirstDate.substring(8) );
			}
			else
			{
				fDay = parseInt( sFirstDate.substring(7,8)=="0"?sFirstDate.substring(8):sFirstDate.substring(7) );
			}
		}
	}
	else
	{
		fYear = 0;
		fMon = 0;
		fDay = 0;
	}
	if( !bIsNull(sSecondDate) ) 
	{
		if ( !bIsDateFormat( sSecondDate ) )	return -2;
		else
		{
			sYear = parseInt( sSecondDate.substring(0,4) );
			sMon = parseInt( sSecondDate.substring(5,6)=="0"?sSecondDate.substring(6,7):sSecondDate.substring(5,7) );
			if( bIsInteger(sSecondDate.substring(6,7)) || sSecondDate.substring(6,7)=="0" )
				sDay = parseInt( sSecondDate.substring(8,9)=="0"?sSecondDate.substring(9):sSecondDate.substring(8) );
				
			else	
				sDay = parseInt( sSecondDate.substring(7,8)=="0"?sSecondDate.substring(8):sSecondDate.substring(7) );
		}
	}
	else
	{
		sYear = 0;
		sMon = 0;
		sDay = 0;
	}
	
	if( fYear == sYear )
	{
		if( fMon == sMon )
		{
			if( fDay == sDay )		return 0;
			else if ( fDay > sDay )		return 1 ;
			else				return 2;
		}
		else if( fMon > sMon )		return 1;
		else return 2;
	}
	else if ( fYear > sYear ) return 1;
	else return 2;

}



//////////////////////////////////////////////////////////////////
//
// 功能  ： 在字符串前面加前缀0
// 参数  ： sIn	  需要加前缀的字符串
//			iLen  加完前缀后需要达到的字符串长度
// 返回值： 处理后的字符串
//
//////////////////////////////////////////////////////////////////
function sAddPrefix(sIn, iLen) {
	s = sTrim(sIn, false);
	prefixLen = iLen - s.length;
	
	for (i=0; i<prefixLen; i++) {
		s = '0' + s;
	}
	
	return s;
}



//////////////////////////////////////////////////////////////////
//
// 功能  ： 判断字符串中是否包含汉字
// 参数  ： sIn	  被测试的字符串
// 返回值： true  包含汉字
//			false 不包含汉字
//
//////////////////////////////////////////////////////////////////
function bIsChiStr(sIn) {
	for (i=0; i<sIn.length; i++) {
		if ( sIn.charCodeAt(i) > 127 ) {
			return true;
		}
	}
	return false;
}


//////////////////////////////////////////////////////////////////
//
// 功能  ： 返回字符串的实际长度
//			英文字符长度加1，中文字符长度加2
// 参数  ： sIn	  被测试的字符串
// 返回值： 字符串的实际长度
//
//////////////////////////////////////////////////////////////////
function iChiStrLen(sIn) {
	iLen = 0;
	for (i=0; i<sIn.length; i++) {
		if ( sIn.charCodeAt(i) > 127 ) {
			iLen += 2;
		} else {
			iLen += 1;
		}
	}
	return iLen;

}


//////////////////////////////////////////////////////////////////
//
// 名称		cvtDoubleStr(s,pi,pd)
// 功能		转换为指定位数的小数,若被转换数值不符合以下条件之一,将返回空串(""):
//			1. s 的整数位大于 pi
//			2. s 不是一个数值型数据
//			3. 四舍五入后,整数部分的位数大于 pi
// 参数		s	被转换的数值
//		pi	要求的整数部分的位数
//		pd	要求的小数部分的位数
// 返回值	转换后的小数(字符串形式)
//		
//////////////////////////////////////////////////////////////////
function cvtDoubleStr(s,pi,pd)
{
	var i;
	var sl, ip, si, sd;
	var newSi, newSd;
	var sign, sr_dbl;

	if( bIsNull(s) == true )
		return "";

	if( s.indexOf( "-", 0 ) == 0 )	//负数
	{
		sign = "-";
		s = s.substring(1,s.length);
	}
	else	sign = "";
	
	while( s.substring(0,1) == "0" && s.length >1 )
	{
		s = s.substring(1,s.length);
	}
	sl = s.length;
	ip = s.indexOf( ".", 0 );
	if ( ip < 0 )	ip = sl;

	si = s.substring( 0, ip );
	sd = s.substring( ip+1, sl );

	newSi = si;
	newSd = sd;

	if ( si.length>0 )
	{
	  if( !bIsNumStr(si) )
		return "";
	  else if( (si.length > pi) && (parseInt(s.substring(0,si.length-pi)) > 0) )
		return "";
	}

	if ( (sd.length>0) && (!bIsNumStr(sd)) )
		return "";

	if ( sd.length > pd )
	{
		newSd = sd.substring(0,pd);
		if ( parseInt(sd.substring(pd,pd+1)) >= 5  )
		{
			newSd = ""+( parseInt(sd.substring(0,pd))+1 );
			if ( newSd.length > pd ) 
			{
				newSd = "00";
				if( ip==0 )	//无整数部分
					newSi = "1";
				else		//有整数部分
					newSi = ""+(parseInt(si)+1);
				if ( newSi.length > pi )
					return "";
			}
		}
			
	}
	if( (ip==sl) || (pd==0) )
		sr_dbl = newSi;
	else
		sr_dbl = newSi + "." + newSd;
	
	if( sr_dbl.indexOf(".",0) == 0 )	//小数点在第一位
		sr_dbl = "0" + sr_dbl;

	sr_dbl = sign + sr_dbl;

	return sr_dbl;
}