﻿
    // on page load call Va_init
    $(document).ready(Va_init);
    
    function Va_init(){        
	    $(".Warning").blur(function(event){
            ezValidate.Blur(this);
	    });
        $(".Warning").change(function(event){
            ezValidate.CheckField(this);
	    });
        $(".Warning").focus(function(event){
            ezValidate.Focus(this);
	    });
    }

	var Class = {
	  create: function() {
		return function() {
		  this.initialize.apply(this, arguments);
		}
	  }
	}
	
	
	var ezEip_Validate = new Class.create();
	ezEip_Validate.prototype = {
		initialize: function() {
		},
		Language:"1"//1.Chinese 2.English //提示信息所用语言
		,
		Focus:function(fld){
		    var divMsg = $("#checkMsg_panel_"+fld.name);
		    
		    if(divMsg[0].className!="Validator_MessagePanel_Warn"&&divMsg[0].className!="Validator_MessagePanel_Err"
		        &&divMsg[0].className!="Validator_MessagePanel_ok"&&divMsg[0].className!="Validator_MessagePanel_ok")
		    {
		        divMsg.removeClass();
		        divMsg.addClass("Validator_MessagePanel_Warn");
		    }
		},
		Blur:function(fld){
		    var divMsg = $("#checkMsg_panel_"+fld.name);
		    if(divMsg[0].className!="Validator_MessagePanel_Err"&&divMsg[0].className!="Validator_MessagePanel_ok")
		    {
		        divMsg.removeClass();
		        divMsg.addClass("Validator_MessagePanel_HintMsg");
		    }
		},		
		CheckForm : function (form,formName){
			if(!form)
			{
			    var form = $("#"+formName);
			    if(!form)return true;
			}
			var v = this;
			var bolSumbit = true;
			var bolFocus = false;
			var bolSumbit_v = true;			
			 $('input,textarea,select,button', this).each(function() {

				var validate = this.Validate;
				if (validate)
				{
				    bolSumbit_v = v.CheckField(this);
				    if(!bolFocus)
			        {			            
			            if(!bolSumbit_v){
			                bolFocus=true;
			                this.focus();
			            }
			        }
				    if(bolSumbit)
				    {
				        bolSumbit = bolSumbit_v;				        
				    }
				}
			 })
			 //alert(bolSumbit);			 
			 return bolSumbit;
		},		
		CheckField:function(fld,msgID){
		    		    
		    if(!fld)return;

            var bolSumbit = true;            
			var name = fld.name
			var type = fld.type
			var validate = fld.Validate;
			var val = fld.value;
			var msg = fld.Message
			var divMsg = $("#checkMsg_panel_"+name);
			if(msgID)divMsg = $("#"+msgID);
								    		            
		            if(!validate)return;
					if(!this.DataType[validate](fld))
					{
						$(fld).removeClass();
						$(fld).addClass("Error");
						if(divMsg!=null)
						{
						    divMsg.removeClass();
						    divMsg.addClass("Validator_MessagePanel_Err");
						    msg = (!msg)?this.Message.ErrorMsg:msg;
						    divMsg.html(msg);
						  //  document.all.IsCheckUser.value=0;
						}
						bolSumbit = false;						
					}
					else
					{
						$(fld).removeClass();
						$(fld).addClass("Ok");
						if(divMsg!=null)
						{
						    divMsg.removeClass();
						    divMsg.addClass("Validator_MessagePanel_ok");
						    divMsg.html("");
						    divMsg.html(this.Message.SucceeMsg);
						  //  document.all.IsCheckUser.value=1;
						}
					}
					return bolSumbit;
		},
		Message:{
			ErrorMsg:"填写错误",
			SucceeMsg:"填写正确。"
		},
		DataType:{
		    View : function(obj){
		        //只做提示
		        return true;
		    },
			Require: function(obj){
				//是否为空; 
				var pattern = /.+/
				return pattern.test(obj.value);
			},
			cname: function(obj){
				//是否为空; 
				var pattern = /.+/
				return pattern.test(obj.value);
			},
			Email : function(obj){
				//是否有效的Email; 
				var pattern = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
				return pattern.test(obj.value);
			},
			Integer : function(obj){
				//是否有效的正整数; 	
				var pattern = /^[-\+]?\d+$/;
				return pattern.test(obj.value);
			},
			Number: function(obj){
				//是否有效的数字; 
				var pattern = /^\d+$/;
				return pattern.test(obj.value);
			},
			Double: function(obj){
				//是否有效的双精度数;
				var pattern = /^[-\+]?\d+(\.\d+)?$/;
				return pattern.test(obj.value);
			},
			Currency: function(obj){
				//是否有效的币值数; 
				var pattern = /^\d+(\.\d+)?$/;
				return pattern.test(obj.value);
			},
			ZipCode: function(obj){
				//是否有效的邮政编码;
				var pattern = /^[1-9]\d{5}$/;
				return pattern.test(obj.value);
			},
			English: function(obj){
				//是否为字母字串; 
				var pattern = /^[A-Za-z]+$/;
				return pattern.test(obj.value);	
			},
			Chinese: function(obj){
				//是否为汉字字串;
				var pattern = /^[\u0391-\uFFE5]+$/;
				return pattern.test(obj.value);
			},
			Username: function(obj){
				//是否为有效的用户名; 
				var pattern = /^[0-9a-zA-Z]\w{4,}$/i;
				return pattern.test(obj.value);
			},
			Color : function(obj){
				//是否有效的颜色值; 
				 if (obj.value=="") return true; 
				 if (obj.value.length!=7) return false; 
				 return (obj.value.search(/\#[a-fA-F0-9]{6}/) != -1);				
			},
			URL : function(obj){
				//是否有效的链接（不仅限于HTTP，同时可FTP或其它）; 
				var pattern = /^[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
				return pattern.test(obj.value);
			},
			PhoneNumber : function(obj){
				//是否有效的电话号码 
				var pattern= /\d{8}|\d{4}-\d{7}/;
				return pattern.test(obj.value);				
			},
			Phone : function(obj){
				//是否有效的手机号码(支持新的159开头的号); 
				var pattern = /^13[0-9]{9,9}$|159[0-9]{8,8}$|150[0-9]{8,8}$|158[0-9]{8,8}$/; 
				return pattern.test(obj.value);				
			},
			isDate : function(obj){
				//是否为有效的日期(日期格式为YYYY-MM-DD);  
				var reExp= /^(19|20)\d{2}[\-](0[1-9]|1[0-2])[\-](0[1-9]|[12][0-9]|3[01])$/;
				 if (reExp.exec(obj.value))
				  return true;
				 else
				  return false;
			},
			isIpAddress  : function(obj){
				//是否有效的IP地址（仅对数字型IP地址有用）; 
				var pattern = /\d+\.\d+\.\d+\.\d+/;
				return pattern.test(obj.value);				
			},
			isBlankLine : function(obj){
				//是否为空白行; 
				var pattern = /\n\s*\r/;
				return pattern.test(obj.value);
			},
			Repeat : function(obj){
				//重复某一项的值

				var tarObj = $("#"+obj.To);
				if ($.trim(tarObj.val())=="")return false;
				return (tarObj.val() == obj.value);
			},
			UnSafe : function(obj){
				//密码; 
				if ($.trim(obj.value)=="")return false;
				var pattern = /^(\d{1,5}|[a-z]{1,5}|[A-Z]{1,5})$/;
				return !pattern.test(obj.value);
			},
			isIdCardNumber : function(obj){
				//是否为有效的身份证号（18或15位均可）
				 var date, Ai;
				 var verify = "10x98765432";
				 var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
				 var area = ['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','江西','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];
				 var re = obj.value.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);
				 if(re == null) return false;
				 if(re[1] >= area.length || area[re[1]] == "") return false;
				 if(re[2].length == 12){
				  Ai = obj.value.substr(0, 17);
				  date = [re[9], re[10], re[11]].join("-");
				 }
				 else{
				  Ai = obj.value.substr(0, 6) + "19" + obj.value.substr(6);
				  date = ["19" + re[4], re[5], re[6]].join("-");
				 }
				 //if(!isDate(date, "ymd")) return false;
				 var sum = 0;
				 for(var i = 0;i<=16;i++){
				  sum += Ai.charAt(i) * Wi[i];
				 }
				 Ai +=  verify.charAt(sum%11);
				 return (obj.value.length ==15 || obj.value.length == 18 && obj.value == Ai);
			}		
		}		
	}
	
	var ezValidate = new ezEip_Validate();
