//Wingbird_Security_Function_Storeroom
//--------------------------------------------------------------------------------
// 库    名：飞翔鸟JavaScript函数库
// 功能说明：集中的对用户输入进行检查
//--------------------------------------------------------------------------------

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//   函数名：CHKInput(obj,isnull,chktype,security,starend,strlen)                                                    ::
//   功  能：表单内容检测模块                                                                                        ::
//   参  数: obj      :  为表单名称（ID）一般用this返回;                                                             ::
//           chknull  :  为0时不进行为空检测，为1时才进行为空检测,一般是在提交按钮上才设为1                          ::
//                       <form  name="form1" method="POST" action="search1.jsp"                                      ::
//                        onsubmit="return CHKInput(this,1,[0],'0',0,[0,0],0)">                                      ::
//           chktype　: 为类型，参照函数内释                                                                         ::
//           isnull   : 说明控件的输入是否可以为空,如果里面的值有小于0的则不检测 ,最好标为-1                         ::                                                       ::
//                    为 1：不可以 0：可以;所有表单内的输入控件的指定从0开始                                         ::                                                ::
//           security : 为1时要进行安全检查，为0时不进行检查                                                         ::
//   Author: WingBird : QQ(343341961)                                                                                ::
// 调用方法：<input type="text" name="n1"  onBlur=" CHKInput(this,0,[0,-1,50],'isnumeric',1,[0,0],0)" accesskey="s"> ::
//                                               返回控件ID   |   |     |       |         |  |  |  |                 ::
//                                                是否进行为空检测|     |       |         |  |  |  |                 ::
//                                                    声明不能为空的控件|       |         |  |  |  |                 ::
//                                                                 匹配的数据类型         |  |  |  |                 ::
//                                                                  是否进行数据的安全检查|  |  |  |                 ::
//                                                                         验证数字时的最小数|  |  |                 ::
//                                                                           验证数字时的最大数 |  |                 ::       
//                                                                                最多可输入的字符数                 ::
//                                                                                                                   ::
//--------------------匹配的数据类型参数chktype说明:-------------------------------------------------------- -       ::
// "isletter_l"       ://判断是否由26个英文字母的L小写组成的字符串                                                   ::
// "isletter_u"       ://判断是否为由26个英文字母的U大写组成的字符串                                                 ::
// "isletter_numeric_"://判断是否由数字、26个英文字母或者下划线组成的字符串                                          ::
// "isnumeric"        ://判断是否为数字                                                                              ::
// "isdecimal"        ://匹配小数                                                                                    ::
// "isnegative"       ://要求输入负数                                                                                ::
// "isnumeric_letter" ://判断是否由数字和26个英文字母组成的字符串                                                    ::
// "isuser"           ://判断是否为用户名格式                                                                        ::
// "ischinese"        ://判断是否为汉字                                                                              ::
// "isemail"          ://判断是否为邮箱格式                                                                          ::
// "isdate_-"         ://判断是否为合法双位日期格式以-分开                                                           ::
// "isdate_/"         ://判断是否为合法双位日期格式以/分开                                                           ::
// "isdate_ymd"       ://判断是否为合法双位日期格式以 年 月  日的形式                                                ::
// "istel"            ://检查是否为电话号码                                                                          ::
// "ismobiletelephone"://检查是否为手机号码                                                                          ::
// "ispostalcode"     ://检查是否为邮政编号                                                                          ::
// "isip"             ://检查是否为IP地址                                                                            ::
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

function CHKInput(obj,chknull,isnull,chktype,security,starend,strlen)
{
	
 if( chknull!=0)
 {
   return yn_null(obj,isnull)
 }
 
 if( obj.value>0&&strlen!=0)
 {
    if(obj.value.length>strlen)
   {
    alert("对不起，请输入"+strlen+"个以内的字符。");
    obj.focus();
	return false;
   }
 }
 //=============对字符进行安全检查==========
 if(security==1)
 {
    var i,j,strTemp,arrstr;
    strTemp="user,xp_cmdshell,/add,exec,dbo,xp_cmdshell,localgroup,administrators,<,>,妈的,你妈,狗日,杂种,日庇,做爱,性交,奶子,骚货,靠你妈,操你妈,大鸡巴,性生活,乳房,妈B,妈b,老子,"+ 
	        "select,count,Asc,char,mid,\':,--,;,insert,delete,Server.CreateObject,.Shell,drop,table,update,truncate,set,from";
	arrstr=strTemp.split(",")
	var input=obj.value;
    for (i=0;i<arrstr.length;i++)
    {
      j=obj.value.toLowerCase().indexOf(arrstr[i]); 
      if (obj.value!=""&&j>=0)
      { 
	   alert("含有非法字符：[ "+arrstr[i]+" ] 系统将自行对其进行处理！");
	   switch (arrstr[i])
	   {
		   case "<":
		      obj.value=input.replace("<","&lt;");
		   break;
		   case ">":
		      obj.value=input.replace(">","&gt;");
		   break;
		   case "--":
		      obj.value=input.replace("--","");
		   break;
		   case ";":
		      obj.value=input.replace(";","");
		   break;
		   case "\'":
		      obj.value=input.replace("\'","\"");
		   break;
		   default://去掉非法的字符
		   obj.value=input.replace(arrstr[i],"");
	   }
       obj.focus();
       obj.select();
	   return false;
      }
    }
 }
 //==========================================
 switch(chktype)
 { 
  case "isletter_l"://判断是否由26个英文字母的L小写组成的字符串
   var reg =/^[a-z]+$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("只能输入由26个英文字母的小写组成的字符串。");
    obj.focus();
    obj.select();
	return false;
   }
   break;
   
  case "isletter_u"://判断是否为由26个英文字母的U大写组成的字符串
   var reg =/^[A-Z]+$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("只能输入由26个英文字母的大写组成的字符串。");
    obj.focus();
    obj.select();
	return false;
   }
   break;
   
  case "isletter_numeric_"://判断是否由数字、26个英文字母或者下划线组成的字符串
   var reg =/^\w+$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("只能输入由数字、26个英文字母或者下划线组成的字符串。");
    obj.focus();
    obj.select();
	return false;
   }
   break;
   
   
  case "isnumeric"://判断是否为数字
   var reg = /^\d+(\.\d+)?$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("请输入数字。");
    obj.focus();
    obj.select();
	return false;
   }
   else if(starend[0]!=0&&starend[1]!=0)
   {
      if (obj.value<starend[0]||obj.value>starend[1])
      {
       alert("您输入的是："+obj.value+"请输入"+starend[0]+"<->"+starend[1]+"之间的数字。");
       obj.focus();
       obj.select();
	   return false;
      }
   }
   else if(starend[0]!=0&&starend[1]==0)
   {
      if (obj.value<starend[0])
      {
       alert("您输入的是："+obj.value+"请输入大于"+starend[0]+"的数字。");
       obj.focus();
       obj.select();
	   return false;
      }
   }
   else if(starend[0]==0&&starend[1]!=0)
   {
      if (obj.value>starend[1])
      {
       alert("您输入的是："+obj.value+"请输入小于"+starend[1]+"的数字。");
       obj.focus();
       obj.select();
	   return false;
      }
   }
   break;
   
   case "isdecimal"://匹配小数
    var reg=/^\d+(\.\d+)?$/
    if(obj.value!=""&&!reg.test(obj.value))
    {
	   alert("请输入小数。");
       obj.focus();
       obj.select();
	   return false;
	}
	break;
	
   case "isnegative"://要求输入负数
    if(obj.value!=""||obj.value>=0)
	{
	   alert("请输入一个负数。");
       obj.focus();
       obj.select();
	   return false;
	}
	break;
  case "isnumeric_letter"://判断是否由数字和26个英文字母组成的字符串
   var reg =/^[A-Za-z0-9]+$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("只能输入数字和字母组成的字符串。");
    obj.focus();
    obj.select();
	return false;
   }
   break;
   
  case "isuser"://判断是否为用户名格式
   var reg = /^[^\d\-_][\w\-]*[^\-_]$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("请输入正确的格式。");
    obj.focus();
    obj.select();
	return false;
   }
   break;
   
  case "ischinese"://判断是否为汉字
   var reg = /^[\u4E00-\u9FA5]*$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("只能输入汉字。");
    obj.focus();
    obj.select();
	return false;
   }
   break;
   
  case "isemail"://判断是否为邮箱格式
   var reg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("请输入正确的邮箱格式。");
    obj.focus();
    obj.select();
	return false;
   }
   break; 
   
  case "isdate_-"://判断是否为合法双位日期格式以-分开
   var reg = /^(19|20)\d\d\-(0|1)\d\-(0|1|2|3)\d$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("请输入正确的双位日期格式如：2005-01-01。");
    obj.focus();
    obj.select();
	return false;
   }
   break;
   
  case "isdate_/"://判断是否为合法双位日期格式以/分开
   var reg = /^(19|20)\d\d\/(0|1)\d\/(0|1|2|3)\d$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("请输入正确的双位日期格式如：2005/01/01。");
    obj.focus();
    obj.select();
	return false;
   }
   break;
   
  case "isdate_ymd"://判断是否为合法双位日期格式以 年 月  日的形式
   var reg = /^(19|20)\d\d\年(0|1)\d\月(0|1|2|3)\d日$/;
   if(obj.value!=""&&!reg.test(obj.value))
   {
    alert("请输入正确的双位日期格式如：2005年01月11日。");
    obj.focus();
    obj.select();
	return false;
   }
   break;
   
   case "istel"://检查是否为电话号码
    var i,j,strTemp;
    strTemp="0123456789-()# ";
	if (obj.value!=""&&obj.value.length <7)
	{
	      alert("请输入不小于7位的电话号码。");
          obj.focus();
          obj.select();
		  return false;
	}
	else if (obj.value!=""&&obj.value.length >15)
	{
	      alert("电话号码不能大于15位。");
          obj.focus();
          obj.select();
	}
	else
	{
    for (i=0;i<obj.value.length;i++)
    {
      j=strTemp.indexOf(obj.value.charAt(i)); 
      if (obj.value!=""&&j==-1)
      {
	   alert("请输入正确的电话号码格式。");
       obj.focus();
       obj.select();
	   return false;
      }
    }
	}
	break;

   case "ismobiletelephone"://检查是否为手机号码
    var i,j,strTemp;
    strTemp="0123456789";
	if (obj.value!=""&&obj.value.length <11)
	{
	      alert("请输入11位的手机号码。");
          obj.focus();
          obj.select();
		  return false;
	}
	else if (obj.value!=""&&obj.value.length >12)
	{
	      alert("手机号码不能大于12位。");
          obj.focus();
          obj.select();
	}
	else
	{
       for (i=0;i<obj.value.length;i++)
       {
         j=strTemp.indexOf(obj.value.charAt(i)); 
         if (j==-1)
         {
	      alert("请输入正确的手机号码。");
          obj.focus();
          obj.select();
		  return false;
         }
      }
	 }
	break;
	
   case "ispostalcode"://检查是否为邮政编号
    var i,j,strTemp;
    strTemp="0123456789";
	if (obj.value!=""&&obj.value.length != 6)
	{
	      alert("请输入6位的邮政编号。");
          obj.focus();
          obj.select();
		  return false;
	}
	else
	{
       for (i=0;i<obj.value.length;i++)
       {
         j=strTemp.indexOf(obj.value.charAt(i)); 
         if (j==-1)
         {
	      alert("请输入正确的邮政编号。");
          obj.focus();
          obj.select();
		  return false;
         }
      }
	 }
	break;
	
	case "isip"://匹配IP地址的正则表达式
    var reg=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g 
    if(obj.value!=""&&!reg.test(obj.value))
    {
	   alert("请输入一个正确的IP地址。");
       obj.focus();
       obj.select();
	   return false;
    }
	break;
	
 }
}
//为空检查函数
function yn_null(obj,isnull)
{
  for (var loop=0; loop < isnull.length; loop++)
  {
	if (isnull[loop]>=0)
	{
      if (obj.elements[isnull[loop]].value == "")
      {
      alert("对不起，请输入数据！")
	  obj.elements[isnull[loop]].focus();
	  obj.elements[isnull[loop]].select();
	  return false;
      }
	}
  }	
}
//兼容netscape
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//================================================================================