/*
JavaScript 公用数据校验模块
*/

/*
函数清单：
检查输入参数是否全为数字
CheckNumber

检查输入参数是否为整数
CheckInteger

检查输入参数是否为浮点数
CheckFloat

检查输入参数是否为合法的日期
CheckDate

检查输入参数是否为合法的email地址
CheckEmail

检查输入参数是否为合法的身份证号码
CheckID

检查电话号码是否正确
CheckTelephone

检查密码，只能为字母或数字
CheckPassword

检查BP机号码
CheckBp

检查电话号码
CheckAreaPhone

检查是否全为字母
IsLetter

// 检查是否全为空格
AllSpace
*/

//检查输入参数是否全为数字

function CheckNumber(str){       
	var rc=true;
	//try{
	    if (str+"" == "undefined" || str == null){
	            rc=false;
	    }
		else if(str.length==0){
			rc=false;
		}
		else{
			for(i=0;i<str.length;i++){
				if(i==0){
					continue;
				}
	        	if(str.charAt(i)<'0' || str.charAt(i)>'9'){
	            	rc=false;
	            	break;
	            }
	        }
		}
/*	}
	catch(ExcepitonObj0){
		rc=false
	}
*/
    return rc;
}
function checkNumber(str){       
	return CheckNumber(str);
}

//检查输入参数是否为整数
function CheckInteger(str){

	var rc=true;
	//try{
	    if (str+"" == "undefined" || str == null){
	            rc=false;
	    }
		else{
			for(i=0;i<str.length;i++){
				if(i==0 && str.charAt(i)=='-'){
					continue;
				}
	        	if(str.charAt(i)<'0' || str.charAt(i)>'9'){
	            	rc=false;
	            	break;
	            }
	        }
		}
/*	}
	catch(ExcepitonObj0){
		rc=false
	}
*/
    return rc;
}
function checkInteger(str){
	return CheckInteger(str);
}


//检查输入参数是否为浮点数
function CheckFloat(str){
	var rc=true;
	oneDecimal=false;
	//try{
	    if (str+"" == "undefined" || str == null){
	            rc=false;
	    }
		else{
			for(i=0;i<str.length;i++){
				ch=str.charAt(i);
				if(i==0 && ch=='-'){
					continue;
				}
		        	if(ch=="." && !oneDecimal){
		        		oneDecimal=true;
	        			continue;
		        	}
		        	if ((ch< "0") || (ch >'9')){
	        	    	rc=false;
	            		break;
		            }
	        }
		}
/*	}
	catch(ExcepitonObj0){
		rc=false
	}
*/
    return rc;
}
function checkFloat(str){
	return CheckFloat(str);
}

//检查输入参数是否为合法的日期
function CheckDate(year,month,day){
	var rc=true;
	var monthMax=new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);
//	try	{
	    if (year+"" == "undefined" || year == null){
	            rc=false;
	    }
	    else    if (month+"" == "undefined" || month == null){
	            rc=false;
	    }
	    else	if (day+"" == "undefined" || day == null){
	            rc=false;
	    }
		else if((year<1900)||(year>2100)){
			rc=false;
		}
		else if((month<1)||(month>12)){
			rc=false;
		}
		else if((day<1)||(day>monthMax[month])){
			rc=false;
		}
		else if((month==2)&&(day==29)){
			if(year%4!=0){
				rc=false;
			}
			else if(year%100==0&&year%400!=0)
				rc= false;
		}
/*	}
	catch(ExceptionObj0){
		rc=false
	}
	*/
    return rc;
}
function checkDate(year,month,day){
	return CheckDate(year,month,day);
}


//检查输入参数是否为合法的email地址
function CheckEmail(str){
//检查邮件地址是否合法
  var CHAR_LETTER_NUMERIC=1;
  var CHAR_UNDERLINE=2;
  var CHAR_DOT=3;
  var CHAR_AT=4;
  var CHAR_DIVIDE=5;
  var CHAR_END=6;
  var CHAR_OTHER=7;
  var DIV_CHAR=',';

    var rc=true;
    if (str+"" == "undefined" || str == null){
        rc=false;
        return rc;
    }
	else if(str.length==0){
		rc=true;
		return rc;
	}
	//try{
	    var exit_flag=false;
	    var total_char=str.length;
	    var pos=0;
	    var cur_char;
	    var cur_status=0;
	    while((pos<=total_char) && (!exit_flag)){
	        if(pos==total_char){
	          cur_char=CHAR_END;
	        }
	        else if (str.charAt(pos)=='.'){
	          cur_char=CHAR_DOT;
	        }
	        else if (str.charAt(pos)==DIV_CHAR){
	          cur_char=CHAR_DIVIDE;
	        }
	        else if(str.charAt(pos)=='_'){
	          cur_char=CHAR_UNDERLINE;
	        }
	        else if(str.charAt(pos)=='@'){
	          cur_char=CHAR_AT;
	        }
	        else if(((str.charAt(pos)>='a')&&(str.charAt(pos)<='z'))||((str.charAt(pos)>='A')&&(str.charAt(pos)<='Z'))||((str.charAt(pos)>='0')&&(str.charAt(pos)<='9'))||(str.charAt(pos)=='-')){
	          cur_char=CHAR_LETTER_NUMERIC;
	        }
	        else{
	          cur_char=CHAR_OTHER;
	        }
	        switch (cur_status){
	          case -1://error
	            rc=false;
	            exit_flag=true;
	            break;
	
	          case 0://初始状态
	            if((cur_char==CHAR_LETTER_NUMERIC)||(cur_char==CHAR_UNDERLINE)||(cur_char==CHAR_DOT)){
	              cur_status=1;
	            }
	            else{
	              rc=false;
	              cur_status=-1;
	            }
	            break;
	          case 1://用户名
	            if((cur_char==CHAR_LETTER_NUMERIC)||(cur_char==CHAR_UNDERLINE)||(cur_char==CHAR_DOT)){
	              cur_status=1;
	            }
	            else if(cur_char==CHAR_AT){
	              cur_status=2;
	            }
	            else{
	              rc=false;
	              cur_status=-1;
	            }
	            break;
	          case 2://@
	            if(cur_char==CHAR_LETTER_NUMERIC){
	              cur_status=6;
	            }
	            else{
	              rc=false;
	              cur_status=-1;
	            }
	            break;
	
	          case 6://"."
	            if(cur_char==CHAR_LETTER_NUMERIC){
	              cur_status=6;
	            }
	            else if(cur_char==CHAR_DOT){
	              cur_status=3;
	            }
	            else{
	              rc=false;
	              cur_status=-1;
	            }
	            break;
	
	          case 3://fisrt domain name
	            if(cur_char==CHAR_LETTER_NUMERIC){
	              cur_status=4;
	            }
	            else{
	              rc=false;
	              cur_status=-1;
	            }
	            break;
	          case 4://not first domain name
	            if(cur_char==CHAR_LETTER_NUMERIC){
	              cur_status=4;
	            }
	            else if(cur_char==CHAR_DOT){
	              cur_status=3;
	            }
	            else if(cur_char==CHAR_DIVIDE){
	              cur_status=0;
	            }
	            else if(cur_char==CHAR_END){
	              cur_status=5;
	            }
	            else{
	              rc=false;
	              cur_status=-1;
	            }
	            break;
	          case 5://ok
	            rc=true;
	            exit_flag=true;
	            break;
	          default:
	            rc=false;
	            exit_flag=true;
	            break;
	        }
	        pos++;
	
		}
/*	}
	catch(ExcepptionObj0){
		rc=false;
	}
*/
    return rc;
  }
function checkEmail(str){
	return CheckEmail(str);
}

//检查输入参数是否为合法的身份证号码
function CheckID(str){
	var rc=true;
	//try{
	    if (str+"" == "undefined" || str == null){
	            rc=false;
	    }
		else if((str.length!=15)&&(str.length!=18)){
			rc=false;
		}

/*	}
	catch(ExcepitonObj0){
		rc=false
	}
	*/
    return rc;
}
function checkID(str){
	return CheckID(str)
}


//检查电话号码是否正确
function CheckTelephone(str)
{
   	var rc=true;
   	//try{
	    if (str+"" == "undefined" || str == null){
	            rc=false;
	    }
		else {
			for(i=0;i<str.length;i++)
	   		 {
	            if(!(str.charAt(i)>='0' && str.charAt(i)<='9')&& str.charAt(i)!='*' && str.charAt(i)!='('&& str.charAt(i)!=')'&& str.charAt(i)!='-'){
	                    rc= false;
	                    break;
	            }
	         }
	    }
/*	}
	catch(ExceptionObj0){
		rc=false;
	}
*/
    return rc;

}
function checkTelephone(phone){
	return CheckTelephone(phone);
}

// 检查密码，只能为字母或数字
function CheckPassword(str)
{
   	var rc=true;
   	//try{
	    if (str+"" == "undefined" || str == null){
	            rc=false;
	    }
		else {
	        for(i=0;i<str.length;i++)
	        {
	                if(str.charAt(i)<'0'||(str.charAt(i)>'9' && str.charAt(i)<'A')||(str.charAt(i)>'Z' && str.charAt(i)<'a')||str.charAt(i)>'z'){
	                        rc= false;
	                        break;
	                }
	        }
	    }
/*
	}
	catch(ExceptionObj0){
		rc=false;
	}
*/
        return rc;

}
function checkPassword(str){
	return CheckPassword(str);
}

//检查BP机号码
function CheckBp(str)
{
   	var rc=true;
   	//try{
	    if (str+"" == "undefined" || str == null){
	            rc=false;
	    }
		else {
	        for(i=0;i<str.length;i++)
	        {
	                if((str.charAt(i)<'0' || str.charAt(i)>'9')&&(str.charAt(i)!='-'||str.charAt(i)!='*')){
	                        rc= false;
	                        break;
	                }
	        }
	    }
/*	}
	catch(ExceptionObj0){
		rc=false;
	}
*/
        return rc;
}
function checkBp(str){
	return CheckBp(str);
}


//检查电话号码
function CheckAreaPhone(str)
{
   	var rc=true;
   	//try{
	    if (str+"" == "undefined" || str == null){
	            rc=false;
	    }
		else {
	        for(i=0;i<str.length;i++)
	        {
	                if((str.charAt(i)<'0' || str.charAt(i)>'9')&&str.charAt(i)!='-'&&str.charAt(i)!='*'){
	                        rc= false;
	                        break;
	                }
	        }
	    }
/*	}
	catch(ExceptionObj0){
		rc=false;
	}
*/
        return rc;

}
function checkAreaPhone(str){
	return CheckAreaPhone(str)
}

//检查是否全为字母
function IsLetter(str){
   	var rc=true;
   	//try{
	    if (str+"" == "undefined" || str == null){
	            rc=false;
	    }
	    else {
	        for(i=0;i<str.length;i++)
	        {
        	        if((str.charAt(i)>'Z' && str.charAt(i)<'a')||str.charAt(i)<'A' || str.charAt(i)>'z'){
                	        rc=false;
                        	break;
	                }
	        }
	     }
/*	}
     catch(ExceptionObj0){
     		rc=false;
     }
*/
     return rc;
}

//检查年龄
function CheckAge(age)
{
	var rc=true;
	//try{
        if(CheckNumber(age)==false)
                rc= false;
		if(age>=200){
			rc= false;
		}
		if(age<0){
			rc=false;
		}
/*	}
	catch(ExceptionObj0){
			rc=false;
	}
*/
	return rc;
}
function checkAge(age){
	return CheckAge(age);
}

// 检查是否全为空格
function AllSpace(str)
{
        for(i=0;i<str.length-1;i++)
        {
                if(str.charAt(i)!=' ')
                {
                        if(str.charAt(i)!=0xa1||str.chatAt(i+1)!=0xa1)
                                return false;
                        else
                                i++;
                }
        }
        if(str.charAt(i)!=' ')
                return false;
        return true;
}
/*
FUNCTION:       StripNonNumeric

INPUT:                  str (string) - a string to be altered

RETURN:                 a string containing only numeric characters 0-9;
                                returns null if invalid arguments were passed
*/
function stripNonNumeric( str ) {
        var     resultStr = "";
        if (str+"" == "undefined" || str == null)
                return null;
        str += "";
        for (var i=0; i < str.length; i++)
        {
        if ( (str.charAt(i) >= "0") && (str.charAt(i) <= "9") )
                        resultStr = resultStr + str.charAt(i);

   }

   return resultStr;
}

function IsNumber(str){
		return CheckNumber(str);
}
function dateIsLargerThanNow2(year, month, day,nowdate){
        var rc=false;
        //try{
                if(!CheckDate(year,month,day)){
                        rc=true;
                }
                else{
                        var d1=new Date(year,month-1,day);
                        var d0=new Date();
                        if(d1.getTime()>d0.getTime()){
                                rc=true;
                        }
                }
/*        }
        catch(ExceptionObj0){
                rc=true;
        }
*/
        return rc;
}
function dateIsLargerThanNow(year, month, day){
        return dateIsLargerThanNow2(year,month,day,(new Date()));
}

