﻿

function valid_input(eName,cName,fieldTp,len,decimal)
{
 var obj=document.all[eName];
 var str=obj.value;
 var msgName=cName;
 if (str!="")
 {
 var maxLength=len; 
 if (fieldTp=="f")//当浮点型数据的小数点不占位数时	
    maxLength++;
 var msg="输入错误 ! \n* * * * * * * \n\n";
 var Criteria1=/[^a-zA-Z0-9\-\=\_\~\$\%\^\&\*\+\|\!\@\{\}\-\`\_\:\\\.\;\?\,\#\/\[\]\(\)\x20]/;    //大小写字母及数字
 var Criteria2=/[^0-9\-]/;		//数字及“-” 
 var Criteria3=/[^0-9]/;		//仅数字 
 var Criteria456=/[^0-9\.\-]/;		//数字及小数点及负号 
 var Criteria7=/[^\.]/; 
 var Criteria8="^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|NET|com|COM|gov|GOV|mil|MIL|org|ORG|edu|EDU|int|INT)$";// E-mail邮箱格式用 
 var Criteria9=/[^\-]/; 


 if (str.length>maxLength) 
	{
	alert (msg+msgName+"的位数不对，最多允许"+maxLength+"位！");
	obj.focus();
	return false;
	}

 if (fieldTp=="z")
        {
	var A2=Criteria3.exec(str.substr(0));
		if(A2)
			{
			alert(msg + A2[0] + "不是一个合法的字符!\n"+msgName+"只能是阿拉伯数字组成。");
			obj.focus();
			return false;
			}
        }

 if (fieldTp=="i")
	{
	var A2=Criteria2.exec(str.substr(0));
		if(A2)
			{
			alert(msg + A2[0] + "不是一个合法的字符!\n"+msgName+"只能是阿拉伯数字、负号组成。");
			obj.focus();
			return false;
			}


	var r=null;
	if (str.indexOf("-")!=-1)
		{
		if (str.indexOf("-")!=0)
			{
			alert(msg + str + "不是一个合法的字符!\n"+msgName+"的负号只能放第一位！")
			obj.focus();
			return false;
			}
		r=str.indexOf("-")+1;
		if (str.indexOf("-",r)!=-1)
			{
			alert(msg + str + "不是一个合法的字符!\n"+msgName+"的负号只能有一个！") 
			obj.focus();
			return false;
			}  
		}	
 	}//End if (fieldTp=="i")


 if (fieldTp=="f")
	{
	var k=maxLength-decimal-1;//最大整数位数	var t=0;//实际整数位数
	var A4=Criteria456.exec(str.substr(0));
	if (A4)
		{
		alert(msg + A4[0] + "不是一个合法的字符!\n"+msgName+"只能由阿拉伯数字、小数点、负号组成。");
		obj.focus();
        	return false;
		}

	var r=null;
	if (str.indexOf("-")!=-1)
		{
		if (str.indexOf("-")!=0)
			{
			alert(msg + str + "不是一个合法的字符!\n"+msgName+"的负号只能放第一位！")
			obj.focus();
			return false;
			}
		r=str.indexOf("-")+1;
		if (str.indexOf("-",r)!=-1)
			{
			alert(msg + str + "不是一个合法的字符!\n"+msgName+"的负号只能有一个！")  
			obj.focus();
			return false;
			}
	        }

	var s=null;
	if (str.indexOf(".")!=-1)
		{
		s=str.indexOf(".")+1;
		if (str.indexOf(".",s)!=-1)
			{
			alert(msg + str + "不是一个合法的字符!\n"+msgName+"中不能含有一个以上小数点。")
			obj.focus();
			return false;
			}  
		if (str.substr(0,1)==".")
			{
			alert(msgName+"的第一位不能是小数点");
			obj.focus();
			return false;        
			}
		var i=str.indexOf(".");
		var j=str.length-1;
		if ((i==j) || (i==1 && str.substr(0,1)=="-"))
			{
			alert(msg + str + "不是一个合法的字符!\n"+msgName+"中的小数点的位置非法。")
			obj.focus();
			return false;
			}  
		if (j-i>decimal)
			{
			alert(msg + str + "不是一个合法的字符!\n"+msgName+"最多允许"+decimal+"位小数。")
			obj.focus();
			return false;
			}
		t=i;
		}
	else 
		{
		t=str.length;
		}
	if (t>k)
		{
		alert(msg + str + "不是一个合法的字符!\n"+msgName+"最多允许"+k+"位整数。")
		obj.focus();
		return false;
		}		

	}//End  if (fieldTp=="f")


 if (fieldTp=="d")  
	{
   	if (str.length!=10) 
	 	{alert (msg+msgName+"的位数不对，只能是10位！");
                obj.focus();
	 	return false;
	 	}

	var  A5=Criteria3.exec(str.substr(0,4));//获取年份
	var  B5=Criteria9.exec(str.substr(4,1));
	var  C5=Criteria3.exec(str.substr(5,2));//获取月份
	var  D5=Criteria9.exec(str.substr(7,1));
	var  E5=Criteria3.exec(str.substr(8,2));//获取天数
	var  Char_year=str.substr(0,4);
	var  Char_month=str.substr(5,2);
	var  Char_day=str.substr(8,2);

	var  daymax=0;
	var  monthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);


	if (A5)
		{
		alert(msg + A5[0] + "不是一个合法的字符!\n"+msgName+"的年份只能由4位阿拉伯数字组成。");
		obj.focus();
		return false;
		}
	if (Char_year<1900)
		{
		alert (msg+msgName+"的年份不合法！限最小年份1900年");
		obj.focus();
		return false;
		}

	if (B5) 
		{
		alert(msg + B5[0] + "不是一个合法的字符!\n"+msgName+"第5位只能是'-'");
		obj.focus();
		return false;
		}


	if (C5)//判断月份
		{
		lert(msg + C5[0] + "不是一个合法的字符!\n"+msgName+"的月份只能由2位阿拉伯数字组成。");
		obj.focus();
		return false;
		}

	if (Char_month>12 || Char_month<=0)
		{
		alert (msg +msgName+"的月份不合法，只能在1-12范围内。");
		obj.focus();
		return false;
		}

	if (D5)
		{
		alert(msg + D5[0] + "不是一个合法的字符!\n"+msgName+"第8位只能是'-'");
		obj.focus();
		return false;
		}

	if (E5)
		{
		alert(msg + E5[0] + "不是一个合法的字符!\n"+msgName+"的天数只能由2位阿拉伯数字组成。");
		obj.focus();
		return false;
		}

	if (((Char_year % 4 == 0) && (Char_year % 100 != 0)) || (Char_year % 400 == 0)) monthDays[1] = 29;
		var month=Char_month-1;

	if ((Char_day<=0) || (Char_day > monthDays[month])) 
		{
		alert(msg+msgName+"天数不合法！当月天数只能在1-"+monthDays[month]+"内");
		obj.focus();
		return (false);
		}
	//alert (Char_year+"年"+Char_month+"月"+Char_day+"日");
	} //End if (fieldTp=="d")

 if (fieldTp=="m")
	{
	var mail = new RegExp(Criteria8); 
	if (!(str.search(mail) != -1)) 
		{ 
		alert ("请输入合法的E-mail地址!");
		obj.focus();
		return false;
		} 
	}//End  if (fieldTp=="m")
	

  if (fieldTp=="t")
	{
  
	if(str.length<1)return false;
	var iNums = 0;
	var c;
	for(var i=0;i<str.length;i++)
	{
		c = str.substr(i,1);
		switch(c)
		{
			case ".":
				return false;	
			case "-":
			    break;
			case "+":				
				break;
			default:
				if(!ValidChar(c)){
					alert("请输入正确形式的电话号码")
					return false;
				}
				break;
		}
	}
	return true;
	}//End  if (fieldTp=="t")	
	

 }//End  if (str!="")
return true; 
}//End function
// -->




function ValidChar(c)
{
	var arrChar = new Array();
	arrChar[0] = "0";
	arrChar[1] = "1";
	arrChar[2] = "2";
	arrChar[3] = "3";
	arrChar[4] = "4";
	arrChar[5] = "5";
	arrChar[6] = "6";
	arrChar[7] = "7";
	arrChar[8] = "8";
	arrChar[9] = "9";
	arrChar[10] = ",";
	arrChar[11] = ".";
	arrChar[12] = "-";
	arrChar[13] = "+";
	arrChar[14] = " ";
	arrChar[15] = "(";
	arrChar[16] = ")";

	for(var i=0;i<arrChar.length;i++)
	{
		if(arrChar[i] == c) return true;
	}
	return false;
}

function noChinese(str){
  for (var i=0; i < str.length; i++)
{
   var ch = str.substring(i, i+1)
   if(escape(ch).indexOf("%u")!=-1)
   {
    return false
   }
   }
  return true
}

function allChinese(str){
  for (var i=0; i < str.length; i++)
{
   var ch = str.substring(i, i+1)
   if(escape(ch).indexOf("%u")==-1)
   {
    return false
   }
   }
  return true
}


function isDate(strDate){
   var strSeparator = "-"; //日期分隔符
   var strDateArray;
   var intYear;
   var intMonth;
   var intDay;
   var boolLeapYear;
   
   strDateArray = strDate.split(strSeparator);
   
   if(strDateArray.length!=3) return false;
   
   intYear = parseInt(strDateArray[0],10);
   intMonth = parseInt(strDateArray[1],10);
   intDay = parseInt(strDateArray[2],10);
   
   if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay)) return false;
   
   if(intMonth>12||intMonth<1) return false;
   
   if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1)) return false;
   
   if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1)) return false;
   
   if(intMonth==2){
      if(intDay<1) return false;
      
      boolLeapYear = false;
      if((intYear%100)==0){
         if((intYear%400)==0) boolLeapYear = true;
      }
      else{
         if((intYear%4)==0) boolLeapYear = true;
      }
      
      if(boolLeapYear){
         if(intDay>29) return false;
      }
      else{
         if(intDay>28) return false;
      }
   }
   
   return true;
} 
