//=====================.net客户段验证3.0===========================//
//   原作者:高处不胜寒   修改 贾世义 2005-03-09 e-mail:jsyhello76@126.com//

//按控件名称获取控件对象   参数(控件名称,document对象)//

function fob(n, d)
{
   //p 名称中？的位置 ？后面的数字标示为第几帧
   //x返回的控件对象//
   
    
   var p;
   var i;
   var x;
      
   if(!d) 
   {
    d=document;
   }
   p=n.indexOf("?"); 
   if(p>0&&d.parent.frames.length) 
   {
    d=parent.frames[n.substring(p+1)].document;
    n=n.substring(0,p);
   }
   x=d[n]; 
   if(!(x)&&d.all) 
    x=d.all[n];
   for (i=0;!x&&i<d.forms.length;i++) 
    x=d.forms[i][n];
   for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
    x=fob(n,d.layers[i].document); 
   return x;
} 	   

//客户端控件验证函数，参数说明：'控件名','提示','类型'
//类型字符定义：r_ 不能为空的判断 
//              china 需输入中文 chinese 只能输入中文  char 26个字母  char>长度大于等于  nchar 数字或字符 nchar>长度大于等于    
//              float 浮点型  num 不能为空,必须是数字判断 <max 必须小于等于  >min 必须大于等于 <>min-max必须输入a-b之间的数字
//              addr 住址判断，必须有汉字(数字+) date 不能为空,必须是正确的日期 < 小于等于当前日期 >大于等于当前日期
//              email 判断email linker 联系电话  tel 判断固话 mobile 判断手机
//              content 多行文本转china判断
//              PID 身份证  file上传文件 filephoto图片文件//


function vdf() 
{
   var i,j;
   var max=0,min=0;
   var flag=true;
   //控件对象，名称，类型，控件值//

   var name,cb_name,type,value;   
   var message;
   var a=vdf.arguments;
   
   //按照3个一组的参数进行循环判断//
   
   for (i=0; i<(a.length-2); i+=3) 
   {
       if (a[i].indexOf('#')!=-1)
       {
           name=fob(a[i].substr(0,a[i].indexOf('#')));
           cb_name=fob(a[i].substr((a[i].indexOf('#')+1),a[i].length));
       }
       else
       {
           name=fob(a[i]);
       }
       message=a[i+1]; 
       type=a[i+2];
       if (name==null||name.name=="")
       {
         alert(message+"!\n");
         return false;
       }
      
       // 备注型不能去 控件值 去空格等//
       
       if (type.indexOf("content")==-1)
       {
           value=name.value.replace(/[ %]+/g, "");
       }
       else if (type.indexOf("r_")==-1)
       {
		   type="china";
       } 
       else
       {
           type="r_china";
       }
       value=name.value.replace(/[']+/g, "’");
       if (value!=name.value)
       {
           name.value=value;
       }
       
       //按照控件类型进行验证//
          // ===============不能为空的判断 //允许空并且空进入下一循环//================ //
	       
          if (type.indexOf("r_")!=-1) 
          {
             if (value=="")
             {
                 alert(message+"!\n");
                 name.focus();
                 name.select();
                 return false;
             }
			 else if (type=="r_")
             {
			     continue;
			 }	 
          }
          else if (value=="")
          {
			  continue;
          }
          
         // ===============必须输入中文================ //
         if (type.indexOf("china")!=-1)
         {
            if (value.search(/[\u4e00-\u9fa5]+/)!=-1) 
            {
			  continue;
            }
            else
            {
              alert(message+"!\n");
              name.focus();
              name.select();
              return false;
            }
		    continue;
         }
         
         // ===============只能输入中文================ //
         if (type.indexOf("chinese")!=-1)
         {
            if (value==""&&type.indexOf("r_")==-1) 
            {
               continue;
            }
            if (value.search(/^[\u4e00-\u9fa5]+$/)==-1) 
            {
               alert(message+"!\n");
               name.focus();
               name.select();
               return false;
             }
		     continue;
         }

         // ===============数字或者字符判断================ //
         if (type.indexOf("nchar")!=-1)
         {
            if (value.search(/^[0-9a-zA-Z_\-\/\.\?\=]+$/)==-1) 
            {
               alert(message+"!\n");
               name.focus();
               name.select();
               return false;
            }
			if (type.indexOf("r_nchar>")!=-1)
			{
                min=new Number(type.substring((type.indexOf('>')+1),type.length));
			    if (value.length<min)
				{
                   alert(message+"!\n");
                   name.focus();
                   name.select();
                   return false;
				}
			}            
            continue;
         }
                   
         // ===============字母判断================ //
         if (type.indexOf("char")!=-1)
         {
            if (value.search(/^[a-zA-Z]+$/)==-1) 
            {
               alert(message+"!\n");
               name.focus();
               name.select();
               return false;
            }
			if (type.indexOf("r_char>")!=-1)
			{
                min=new Number(type.substring((type.indexOf('>')+1),type.length));
			    if (value.length<min)
				{
                   alert(message+"!\n");
                   name.focus();
                   name.select();
                   return false;
				}
			}            
            continue;
         }
         
         // ===============数字判断================ //
         if (type.indexOf("num")!=-1)
         {
            if (value.search(/^[0-9]+$/)==-1) 
			
			{
                alert(message+"!\n");
                name.focus();
                name.select();
                return false;
            }          
            //===============有大小判断================ //
			flag=true;
			if (type!="r_num" && type!="num")
			{
			    if (type.indexOf("<")==-1)
				{
                    min=type.substring((type.indexOf('>')+1),type.length);
					
					flag=(new Number(value) >= new Number(min));
                 }
                else
                {
				 if (type.indexOf(">")==-1) 
				 {
                     max=type.substring((type.indexOf('<')+1),type.length);
					 
					 flag=(new Number(value) <= new Number(max));
				 }
				 else
				 {
                   min=type.substring((type.indexOf('>')+1),type.indexOf('-'));
				   
				   max=type.substring(type.indexOf('-')+1,type.length);
				   
				   flag=(new Number(value) >= new Number(min)&& new Number(value)<=new Number(max));
				  } 
                }
			    if (flag==false)
				{
                   alert(message+"!\n");
                   name.focus();
                   name.select();
                   return false;
				}
			}
             continue;
		 }      
		  // ===============必须是float类型================ //
         if (type.indexOf("float")!=-1)
         {
             if (!(value.search(/^[0-9]+$/)!=-1 || value.search(/^([0-9]+)|([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/)!=-1))
             {
                alert(message+"!\n"); 
                name.focus();
                name.select();
                return false;
             }
             continue;
         }	  
         // ===============必须带有数字汉字的住址================ //
         if (type.indexOf("addr")!=-1)
         {
            if (value.search(/[\u4e00-\u9fa5]+/)!=-1) 
            {
			   flag=true;
            }
            else
            {
			  flag=false;
            }
            if (flag && value.search(/[0-9]*/)!=-1)
		    {
			  continue;
			}
			else
			{
              alert(message+"!\n");
              name.focus();
              name.select();
              return false;
            }			
         }
         
	     // ===============判断日期,比如2000-12-20================ //
         if (type.indexOf("date")!=-1)
         {
            flag=true; 
            var dDate=new Date();
            if (value.search(/^[0-9]{4}-(0[1-9]|[1-9]|1[0-2])-((0[1-9]|[1-9])|1[0-9]|2[0-9]|3[0-1])$/)==-1) 
            {
                flag=false;
            }
            else
            {
                var year=value.substr(0,value.indexOf('-'));
				// 下面操作获得月份，注意月份从0开始//
				
			    var transition_month=value.substr(0,value.lastIndexOf('-')); 
				var month=transition_month.substr(transition_month.lastIndexOf('-')+1,transition_month.length)-1;
					// 下面操作获得日期//
					
				var day=value.substr(value.lastIndexOf('-')+1,value.length);
	            var newDate=new Date(year,month,day);
	            if (newDate.toString()=="NaN")
	            {
				    flag=false;
				}
				else
				{
				    flag=(month==newDate.getMonth());
				}
			}
			 
            if 	(type.indexOf("<")!=-1&&flag)
			{
	            flag=(newDate<=dDate);
	            if (!flag)
	            {
	              newDate=dDate;
	            }
	        } 

            if 	(type.indexOf(">")!=-1&&flag)
			{
	            flag=(newDate>=dDate);
	            if (!flag)
	            {
	              newDate=dDate;
	            }
	        } 
	        
            if (flag==false)
            {
                alert(message+"!\n");
                name.focus();
                name.select();
                name.value=newDate.getYear()+'-'+Eval(newDate.getMonth()+1)+'-'+newDate.getDate();
                return false;
            }
            continue;
         }       
	     // ===============判断联系电话================ //
	     if (type.indexOf("linker")!=-1)
	     {
            if (value.length<7 || value.search(/^[0-9\-\/]+$/)==-1)
	        {
		       alert(message+"!\n");
     	       name.focus();
		       name.select();
		       return false;
	        }
            continue;
	     }

         // ===============判断固定电话，可以为空================ //
	     if (type.indexOf("tel")!=-1)
	     {
	        if (value.search(/^[0-9]{7}$/)==-1&&value.search(/^[0-9]{8}$/)==-1&&value.search(/^(\([0-9]{3}\)|[0-9]{4}-)[0-9]{7}$/)==-1&&value.search(/^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{8}$/)==-1)
	        {
	           alert(message+"!\n");
     	       name.focus();
		       name.select();
		       return false;
	        }
            continue;
	     }
	  
	     // ===============判断手机================ //
	     if (type.indexOf("mobile")!=-1)
	     {
            if (value.search(/^[0-9]{11}$/)==-1&&value.search(/^[0-9]{7}$/)==-1)
	        {
		       alert(message+"!\n");
     	       name.focus();
		       name.select();
		       return false;
	        }
            continue;
	     }
	   
	    // ===============判断email================ //	
	    if (type.indexOf("email")!=-1)
	    {
	        if (value.search(/^[_\.a-z0-9A-Z]+@[a-z0-9A-Z]+[\.][a-z0-9A-Z]{2,}$/i)==-1)
		    {
		       alert(message+"!\n");
     	       name.focus();
		       name.select();
		       return false;
	        }
	        else
	        {
				continue;
	        }
	    }
	     // ===============身份证判断================ //
         if (type.indexOf("PID")!=-1)
         {
            flag=(value.length==15||value.length==18)
            if (flag)
            {
				flag=(value.search(/^[1-9]{1}\d{14}/)!=-1);
				if (!flag)
				{
					flag=(value.search(/^[1-9]{1}\d{16}[0-9xX]{1}$/)!=-1);
				}
			}
            if (flag) 
            {
                if (value.length==15)
                {
					year="19"+value.substr(6,2);
					month=value.substr(8,2);
					day=value.substr(10,2);
                }
                else
                {
					year=value.substr(6,4);
					month=value.substr(10,2);
					day=value.substr(12,2);
                }
	            newDate=new Date(year,month-1,day);
	            if (newDate.toString()=="NaN")
	            {
				    flag=false;
				}
				else
				{
				    flag=(new Number(month)==newDate.getMonth()+1);				
				}
			}	        
            if (flag==false)
            {
                alert(message+"!\n");
                name.focus();
                name.select();
                return false;
            }
            continue;
         }       	     
	    // ===============判断上传文件================ //	
	    if (type.indexOf("file")!=-1)
	    {
	        if (value.search(":")==-1)
		    {
		       alert(message+"!\n");
     	       name.focus();
		       name.select();
		       return false;
	        }
	        else if (type.indexOf("photo")!=-1)
	        {
	            if (value.toLowerCase().search(/[.gif|.jpg|.bmp]$/)==-1)
			    {
			       alert(message+"!\n");
     		       name.focus();
				   name.select();
			       return false;
		        }
		        else
		        {
					continue;
		        }
	        }
	        else
	        {
				continue;
	        }
	    }

	    // ===============判断给定的两个对象值相等================ //	
	    if (type.indexOf("==")!=-1)
	    {
            var newname=fob(type.substring(2,type.length));
	        if (newname&&value!=newname.value)
		    {
		       alert(message+"!\n");
		       name.value="";
		       newname.value="";
     	       name.focus();
		       return false;
	        }
	    }

   }
return true;  
}

// ===============判断复选框是否选中================ //
//ckName为复选框名称//

function vdCheckBoxs(ckName)
{      
  var e=document.forms(0).elements;
  var flag=false;
  for (i=0;i<e.length;i++)
  { 
    if (e[i].name==ckName)
    {
       if (e[i].checked==true)
       {
           flag=true;
           break;
       }
    }
  }
  if (flag==false)
  {
      alert(message+"!\n"); 
      return false;
  }
}


//checkBox 设置全选/全不选
//参数0 为全选框名称 1复选框名称//

function SetCheckBox(ckb)
{
   var e=document.forms[0].elements;
   for (i=0;i<e.length;i++)
   {
    if (e[i].type=="checkbox")
     {
	   if (ckb.checked)
	    {
			e[i].checked=true;
		}
	   else
	   {
			e[i].checked=false;
	   }	
	 }	
   }
}

//按钮选择ID//

function SelectID(rdb)
{
 var txt=fob("txtID");
 if (txt)
 {
	if (rdb.checked)
	{
		txt.value=rdb.value;
	}
	else
	{
		txt.value="";
	}
 }
}

//多项按钮选择ID//

function AddSelectID(ckb)
{
 var txt=fob("txtPID");
 if (txt)
 {
	if (ckb.checked)
	{
		if (txt.value=="")
		{
			txt.value=ckb.value;
		}
		else
		{
			txt.value+=","+ckb.value;
		}
	}
	else if (txt.value==ckb.value)
	{
		txt.value="";
	}
	else if (txt.value.substring(0,txt.value.indexOf(","))==ckb.value)
	{
		txt.value.substring(txt.value.indexOf(",")+1)
	}
	else
	{
		txt.value=txt.value.replace(","+ckb.value,"");
	}
 }
}


//是否确认继续的提示
//参数 m提示信息 s确认后冲定向页//

function AskDo(m,s)
{
   if (confirm(m+"确认吗？"))
   {
     window.location=s;
   }
   return false;
}

//如果没有在制定帧中显示标题图片//

function TopCenter(img)
{
	var t=document.parentWindow;
	if (t && t.name=="frameWork" && t.parent && t.parent.name=="")
	{
		document.write("<br>");
	}
	else
	{
		if (img=="")
		{
			img="../Images/top.gif";
		}
		document.write("<div align='center'><img src='"+img+"'></div><br>");
	}			
}

//按分辨率加回行指定回行数（偶数）居中//

function moveCenter(p)
{
	TopCenter("");
	if (!p)
	{
	  p=6;
	}
	if (screen.availWidth>=1024)
	{
	   for(var i=0;i<p-1;i++)
	    document.write("<br>")
	}
	else
	{
	   for(var i=0;i<p/2-1;i++)
	    document.write("<br>")
	}
}

//取消按钮函数//

function CancelClick(theForm)
{
	theForm.reset.click();
	return false;
}

// 清空控件数据//


function ClearCtrls()
{
 var e=document.forms[0].elements;
 
 for (var i=0;i<e.length-1;i++)
 {
	switch (e[i].type)
	 {
	  case "text":
	    if (e[i].id!="txtID")
	     e[i].value="";
	    break;
	  case "textarea":
	    e[i].value="";
	    break;
	  case "select":
	    if (e[i].length>0)
	     e[i].selectedIndex=0;
	    break; 
	  case "checkbox":
	    e[i].checked=false;
	    break;	
	  case "radio":
	    e[i].checked=false;
	    break;	
	  case "file":
	    e[i].value=0;
	    break;  	
	 }
	}
 return false;
 }

//加入参数，重新调取自己//

 
 function List(theForm,CID)
 {
	var str;	
	var p=theForm.action.indexOf("?");
	if (p!=-1)
	{
		str=theForm.action.substring(0,p+1);		
	}
	else
	{
		str=theForm.action+"?";
	}
	document.location.href=str+'CID='+CID+'&Check='+theForm.lsdCheck.selectedIndex;
	return false;
}
 