/**
 * 表单验证v0.4
 */

//2010年4月12日添加
//为输入控件添加中文标点自动转换为英文标点功能
jQuery(function() {
	try{
		if(require && require.rolename == "isEnglish") {
			jQuery(":text, textarea").change(function(){
				var val = jQuery(this).val();
				val = (function(str){
							var ep=['~','!','@','#','$','%','...','...','&','(',')','-','_','_','=','+','[',']','{','}',';',':',"'","'","'","'",'"','"','"','"','|',',','.','<','>',',','?',
									'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
									'1','2','3','4','5','6','7','8','9','0','"','/',"'",'\\','<','>'];
							var cp=['～','！','＠','＃','￥','％','…','&hellip;','＆','（','）','－','—','&mdash;','＝','＋','【','】','｛','｝','；','：','‘','&lsquo;','’','&rsquo;','“','&ldquo;','”','&rdquo;','｜','，','。','《','》','、','？',
									'ａ','ｂ','ｃ','ｄ','ｅ','ｆ','ｇ','ｈ','ｉ','ｊ','ｋ','ｌ','ｍ','ｎ','ｏ','ｐ','ｑ','ｒ','ｓ','ｔ','ｕ','ｖ','ｗ','ｘ','ｙ','ｚ',
									'１','２','３','４','５','６','７','８','９','０','＂','／','＇','＼','＜','＞'];
							for(var i=0;i<cp.length;i++){
								str=str.replace(new RegExp(cp[i],'g'),ep[i])
							}
							return str;
						})(val);
				jQuery(this).val(val);
			});
		}
	}catch(e){}
});
//2010年4月12日添加结束

$(document).ready(
	function() {
		initVerify();
	}
);

var initVerify = function(){
	var veri = null;
	if(window.verify) {veri = verify;var all_id = getArrayObj(veri);}
	var requ = null;
	if(window.require) {requ = require;}
	var fmid = null;
	if(window.formid) {fmid = formid;}
	$(":text,textarea,:password,select, input[type='hidden'], :file").unbind("blur").unbind("dblclick");
	if(null != requ) {
		$(":text,textarea,:password,select, input[type='hidden'], :file")
		.blur(function() {
			$(this).dblclick();
		})
		.change(function() {
			$(this).dblclick();
		})
		.dblclick(function() {
			var _this = $(this);
			
			if(_this.attr("type")=="file" || _this.attr("isenglish")=="false"){
				var result = "true";
			}
			else {
				var result = checkOut(_this, require);
			}
			if(typeof verify[this.id] == "object"){
				if(typeof verify[this.id]["fileType"] == "object"){
					var result = "true";
				}
			}
			_this.attr("err", result);
		})
		.focus(function(){
				errDispose(true, $(this), "");
		});
	}
	if(null != veri) {
		for(var i=0; i<all_id.length; i++) {
			$(("#"+all_id[i]))
			.blur(function() {
				$(this).dblclick();
			})
			.change(function() {
				$(this).dblclick();
			})
			.dblclick(function() {
				var _this = $(this);
				
				
				var id = this.id;
				var result = false;
				for(var val in verify[id]) {
					var err = _this.attr("err");
					if(true == err || "true" == err) {
						var tmp = verify[id];
						var vrf = tmp[val];
						result = checkOut(_this, vrf, val);
						if(!result) {
							break;
						}
					}
				}
			})
			.focus(function(){
				errDispose(true, $(this), "");
			});
		}
	}
	if(null != fmid) {
		
		if(typeof formid == "string") {
			formid = [formid];
		}
		for(var i=0; i<formid.length; i++) {
			$("#"+formid[i]).submit(
				function() {
					var num = 0;
					var firstErr = null;
					all_id = getArrayObj(verify);
					for(var i=0; i<all_id.length; i++) {
						var sele = "#"+$(this).attr("id")+" #"+all_id[i];
						if($(sele).data("result") != false) {
							$(sele).dblclick();
						}
						var err = $("#"+all_id[i]+"_msg", "[id$='_isNeed_msg']");
						if(err.length > 0) {
							if(num < 1) {
								firstErr = err;
							}
							num++;
						}
					}
					err = $("div[id$='_msg']");
					num = err.length;
					if(num>0) {
						if(firstErr != null){
							var y = firstErr.offset().top - 100;
							window.scrollTo(0, y);
						}
						return false;
					}
					else {
						return true;
					}
				}
			)
		}
	}
	if(null != veri) {
	for(var i=0; i<all_id.length; i++) {
		var id = all_id[i];
		for(var val in verify[id]) {
			var vrf = verify[id][val];
			var rolename = vrf["rolename"] || val;
			var params = (vrf["params"]=="")?null:vrf["params"];
			if("showRemainLength" == rolename) {
				$("#"+id).attr("srlparams", params)
				.keyup( function(){
						getVerify("showRemainLength")["check"](this.value, ($(this).attr("srlparams")));
					}
				);
			}
			if("showLength" == rolename) {
				$("#"+id).attr("slparams", params)
				.keyup(function() {
						getVerify("showLength")["check"](this.value, ($(this).attr("slparams")));
					}
				);
			}
			if("checkRadio" == rolename) {
				$("#"+id+" :radio").attr("rbparams", params)
				.click(function() {
					if(!this.checked) {return true;}
					var result = getVerify("checkRadio")["check"]($(this).val(),($(this).attr("rbparams")));
					var id = this.parentNode.id;
					var value = verify[id]["checkRadio"]["params"][0];
					if(!result) {
						var group = 1;
						try{group = groupId}catch(e){}
						//alert(verify[id]["checkRadio"]["errMsg"][(group-1)]);
						var msgs = verify[id]["checkRadio"]["errMsg"];
						var title = msgs[0];
						var bk = msgs[msgs.length-1];
						var msg = verify[id]["checkRadio"]["errMsg"][(group)];
						//msg = "<h3>"+msg+"</h3>";
						msg = '<div class="pop-win-haokanba"><div class="noticeBox n-warning">'+msg+'<p><span style="cursor:pointer;color:blue;" onclick="win.close();">'+bk+'</span></p></div></div>';
						$.win.open(title, msg, 400, 110, "html");
						$("#"+id+" :radio[value='"+value+"']").get(0).checked = true;
					}
					return result;
				});
			}
			if("checkWatermark" == rolename) {
				$("#"+id).click(function() {
					var group = 2;
					try{group = groupId}catch(e){}
					if(group <= 2) {
						if(!this.checked) {
							var msgs = verify[this.id]["checkWatermark"]["errMsg"];
							var title = msgs[0];
							var bk = msgs[msgs.length-1];
							//alert(verify[this.id]["checkWatermark"]["errMsg"][0]);
							msg = '<div class="pop-win-haokanba"><div class="noticeBox n-warning">'+title+'<p><span style="cursor:pointer;color:blue;" onclick="win.close();">'+bk+'</span></p></div></div>';
							$.win.open(verify[this.id]["checkWatermark"]["errMsg"][1], msg, 400, 110, "html");
							this.checked = true;
						}
					}
				});
			}
		}
	}
	}
}


/**
 * 校验
 *
 */
var checkOut = function(elem, vrf, val) {
	var rolename = vrf["rolename"] || val;

	var params = (vrf["params"]=="")?null:vrf["params"];

	var errMsg = vrf["errMsg"];
	var blank = vrf["isBlank"] || "";

	var value = elem.val();
	if("isUnique" == rolename || "checkCode" == rolename) {
		checkWithAjax(rolename, params, errMsg, elem);
		return true;
	}
	if("otherIsNeed" == rolename) {
		var par = [];
		par[0] = params;
		par[1] = errMsg;
		par[2] = elem;
		par[3] = vrf["zero"] || "";
		params = par;
	}
	var _rule = getVerify(rolename) || null;
	var result = true;
	if(_rule) {
		result = getVerify(rolename)["check"](value, params, blank, elem);
	}
	errDispose(result, elem, errMsg);
	return result;
}

//使用ajax校验
var checkWithAjax = function(rolename, params, errMsg, elem){
	ajaxResponsed = false;
	var key = elem.attr("name");
	var value = elem.val();
	params = $.trim(params)+"/"+key+"/"+value;
	if("isUnique" == rolename) {
		$.get(params, function(data) {
			var result = false;
			result = (data == "" || data == "0")? true : false;
			errDispose(result, elem, errMsg);
			elem.data("result", result);
			ajaxResponsed = true;
		}, "text");
	}
	if("checkCode" == rolename) {
		$.get(params, function(data) {
			var result = (data == elem.val())? true : false;
			errDispose(result, elem, errMsg);
			elem.data("result", result);
			ajaxResponsed = true;
		}, "text");
	}
}

//错误处理
var errDispose = function(result, elem, errMsg) {
	//设置错误消息id
	var msg_id = elem.attr("id")+"_msg";
	if(!result) {
		showErrMsg(elem, msg_id).text(errMsg);
		var em = elem.closest("div[id^='con']");
		var em1 = elem.closest("div[id$='Info']");
		em.show();
		em1.show();
	}
	else {
		delErrMsg(elem, msg_id);
	}
}

//删除错误信息
var delErrMsg = function(elem, msg_id) {
	var md = elem.attr("msgbox");
	var err_div = elem.parent("").children("#"+msg_id);
	var err_top_div = elem.parent("").children("#"+msg_id+"toppalce");
	if(null != err_div.html()) {
		err_div.remove();
		err_top_div.remove();
	}
	else {
		$("#"+md + " #"+msg_id).remove();
		$("#"+md + " #"+msg_id+"toppalce").remove();
	}
}

//显示错误信息
var showErrMsg = function(elem, msg_id) {
	var md = elem.attr("msgbox");
	var msg_div = elem.parent("").children("#"+msg_id);
	if(msg_div.length == 0){
		msg_div = $("#"+md).children("#"+msg_id);
	}
	if(null == msg_div.html()) {
		var err_html = "<div class='clear' style='height:5px;' id='"+msg_id+"toppalce'></div><div id='"+msg_id+"' class='alertBox'><p></p></div>"
		msg_div = $(err_html);
		if(undefined == md) {
			elem.parent().append(msg_div);
		}
		else{
			$("#"+md).empty();
			$("#"+md).append(msg_div);
		}
	}
	return msg_div.children();
}

var getVerify = function(rolename) {
	var validates = this.validate;
	var vali = null;
	for(var val in validates) {
		if(rolename == validates[val]["name"]) {
			vali = validates[val];
			break;
		}
	}
	return vali;
}

/**
 * 将对象转化成字符串数组,数组内数据为对象属性或方法名
 */
var getArrayObj = function(obj) {
	var array = new Array();
	try {
		for(var o in obj) {
			array.push(o);
		}
	}
	catch(e) {

	}
	return array;
}

/**
 * 计算对象长度
 */
var objLength = function(obj) {
	var i = 0;
	for(var o in obj) {
		i++;
	}
	return i;
}

/**
 * 验证方法
 */
var validate = [
	
	 {
		 //必填项
		 name : "isNeed",
		//校验规则
		check : function(val,params, blank, elem) {
			var value = val;
			var defaultValue = verify[elem.attr('id')].defaultValue || null;
			if(blank != "true") {
				value = $.trim(val);
			}
			if(params == "Zero") {
				if("0" == value){
					return true;
				}
			}
			if(defaultValue) {
				if(value == defaultValue) {
					return false;
				}
			}
			if("" == value || "0"==value){
				return false;
			}
			return true;
		}
	},
	{
		name : "pswd",
		check : function(val) {
			if("" == val){
				return false;
			}
			else {
				return true;
			}
		}
	},
	{
		//最大长度验证
		name : "maxLength",
		//校验规则
		check : function(val, params,blank) {
			var value = val;
			if(blank != "true") {
				value = $.trim(val);
			}
			if("" == value){return true;}
			//元素内容长度
			var len = value.length;
			//最大长度
			var mxLength = params;
			var length = 0;
			for(var i=0; i<len; i++) {
				if(val.charCodeAt(i) > 255) {
					length += 3;
				} else {
					length += 1;
				}
			}
			if(length > mxLength) {
				return false;
			}
			else {
				return true;
			}
		}
	},

	{
		//最小长度验证
		name : "minLength",
		//校验规则
		check : function(val, params, blank) {
			var value = val;
			if(blank != "true") {
				value = $.trim(val);
			}
			if("" == value){return true;}
			//元素内容长度
			var len = value.length;
			//最小长度
			var mnLength = params;
			var length = 0;
			for(var i=0; i<len; i++) {
				if(val.charCodeAt(i) > 255) {
					length += 3;
				} else {
					length += 1;
				}
			}
			if(length < mnLength) {
				return false;
			}
			else {
				return true;
			}
		}
	},

	{
		//是否为数字
		name : "isNum",
		check : function(val, params) {
			var value = $.trim(val);
			if("" == value){return true;}
			value = value.split(',').join('');
			var regexp = "^\\d*$";
			//value = parseFloat(value);
			return checkRegexp(value, regexp);
		}
	},
	{
		//是否为价格
		name : "isPrice",
		check : function(val, params) {
			var value = $.trim(val);
			if("" == value){return true;}
			return (checkRegexp(value, '^\\d{1,3}(,\\d{3})+(\\.\\d{1,2})?$') || checkRegexp(value, '^\\d+(\\.\\d{0,2})?$'));
		}
	},
	{
		//是否为英文
		name : "isEnglish",
		check : function(val, params) {
			var value = $.trim(val);
			value = $("<div>"+value+"</div>");
			value = value.text();
			if("" == value){return true;}
			return value.search(/[\u4e00-\u9fa5]/) < 0 ? true : false;
		}
	},
	{
		//是否为Email
		name : "isEmail",
		check : function(val, params) {
			var value = $.trim(val);
			if("" == value){return true;}
			var regexp = "\\w+(?:[-+.]\\w+)*@\\w+(?:[-.]\\w+)*\\.\\w+(?:[-.]\\w+)*";
			return checkRegexp(value, regexp);
		}
	},
	{
		//是否为多个Email
		name : "isEmails",
		check : function(val, params) {
			var value = $.trim(val);
			if("" == value){return true;}
			var regexp = "^((\\w+(?:[-+.]\\w+)*@\\w+(?:[-.]\\w+)*\\.\\w+(?:[-.]\\w+)*)||(\\w+(?:[-+.]\\w+)*@\\w+(?:[-.]\\w+)*\\.\\w+(?:[-.]\\w+)*,))+$";
			return checkRegexp(value, regexp);
		}
	},
	{
		//是否为url地址
		name : "isUrl",
		check : function(val, params) {
			var b = true;

			if( $.trim(val) != '' ){

				var //reB = /[Ww]{3}\.[\w]*/,

					reC = /[Hh][Tt][Tt][Pp]:\/\/[\w.]*/,

					reD = /^(http:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+[\/=\?%\-&_~`@\[\]\':+!]*([^\"\"])*)*$/;
					reE = /^([0-9a-z-_]+\.)+[0-9a-z-_]+$/;

				if(//!reB.test( val ) && 
					!reD.test( val ) && 
					!reE.test( val ) ){
					b = false;
				} else {
					b = true;
				}
			}
			return b;
		}
	},
	{
		//是否含有email或url
		name : "hasEmailUrl",
		check : function(val, params) {
			var value = $.trim(val);
			if("" == value){return true;}
			var email = "\\w+(?:[-+.]\\w+)*@\\w+(?:[-.]\\w+)*\\.\\w+(?:[-.]\\w+)*";
			var url = "[Hh][Tt][Tt][Pp]:\/\/[\w.]*";
			var url1 = "[Ww]{3}\\.[\w]*";
			//var phoneNum = '(?:\\(?[0\\+]\\d{2,3}\\)?)[\\s-]?(?:(?:\\(0{1,3}\\))?[0\\d]{1,4})[\\s-](?:[\\d]{7,8}|[\\d]{3,4}[\\s-][\\d]{3,4})';
			var phoneNum = '(?:\\(?[0\\+]?\\d{2,3}\\)?)[\\s-]?(?:(?:\\(0{1,3}\\))?[0\\d]{1,4})[\\s-](?:[\\d]{7,8}|[\\d]{3,4}[\\s-][\\d]{3,4})';
			if(!checkRegexp(value, email)) {
				if(!checkRegexp(value, url)){
					if(!checkRegexp(value, url1)) {
						return !checkRegexp(value, phoneNum);
					}
				}
			}
			return false;
		}
	},
	{
		//是否符合自定义的正则表达式
		name : "regexp",
		check : function(val, params) {
			if("" == value){return true;}
			var value = $.trim(val);
			var regexp = params;
			return checkRegexp(value, regexp);
		}
	},
	{
		//是否不符合自定义的正则表达式
		name : "notRegexp",
		check : function(val, params) {
			if("" == value){return true;}
			var value = $.trim(val);
			var regexp = params;
			return !checkRegexp(value, regexp);
		}
	},
	{
		//是否超过数字的最大值
		name : "maxNum",
		check : function(val, params) {
			if("" == value){return true;}
			var value = Number($.trim(val));
			var maxNum = params;
			if(value > maxNum) {
				return false;
			}
			else {
				return true;
			}
		}
	},
	{
		//是否小于数字最小值
		name : "minNum",
		check : function(val, params) {
			
			var value = Number($.trim(val));
			if("" == value){return true;}
			var minNum = params;
			if(value < minNum) {
				return false;
			}
			else {
				return true;
			}
		}
	},
	
	{
		//最早时间验证
		name : "minDate",
		check : function(val, params) {
			var value = $.trim(val);
			if("" == value){return true;}
			var regexp = /^(\d{2,2})\/(\d{2,2})\/(\d{4,4})$/;
			var earlydate = params.match(regexp);
			var date = value.match(regexp);
			var earlyDate = new Date(new Number(earlydate[3]), new Number(earlydate[1]) -1, new Number(earlydate[2]));
			var currentDate = new Date(new Number(date[3]),new Number(date[1]) -1,new Number(date[2]));
			if(earlyDate < currentDate) {
				return true;
			}
			else {
				return false;
			}
		}
	},
	{
		//最晚时间验证
		name : "maxDate",
		check : function(val, params) {
			var value = $.trim(val);
			if("" == value){return true;}
			var regexp = /^(\d{2,2})\/(\d{2,2})\/(\d{4,4})$/;
			var laterdate = params.match(regexp);
			var date = value.match(regexp);
			var laterDate = new Date(new Number(laterdate[3]), new Number(laterdate[1]) -1, new Number(laterdate[2]));
			var currentDate = new Date(new Number(date[3]),new Number(date[1]) -1,new Number(date[2]));
			if(laterDate > currentDate) {
				return true;
			}
			else {
				return false;
			}
		}
	},
	{
		//校验第二次输入的日期是否大于第一次
		name : "isGtDate",
		check : function(val, params) {
			var value = $.trim(val);
			if(value == "") {return true;}
			value = value.split("/");
			var value1 = $.trim($("#"+params).val());
			if(value1 == "") {
				$("#"+params).blur();
				return true;
			}
			value1 = value1.split("/");
			for(var i=0; i<value.length; i++){
				value[i] = parseInt(value[i]);
				value1[i] = parseInt(value1[i]);
			}
			if(value[2] > value1[2]){return true;}
			if(value[2] < value1[2]){return false;}
			else {
				if(value[0] > value1[0]){return true;}
				if(value[0] < value1[0]){return false;}
				else {
					if(value[1] > value1[1]){return true;}
					if(value[1] < value1[1]){return false;}
				}
			}
			return false;
		}
	},
	{
		//校验第二次输入的日期是否小于第一次
		name : "isLessThanDate",
		check : function(val, params) {
			var value = $.trim(val);
			if(value == "") {return true;}
			value = value.split("/");
			var value1 = $.trim($("#"+params).val());
			if(value1 == "") {return true;}
			value1 = value1.split("/");
			for(var i=0; i<value.length; i++){
				value[i] = parseInt(value[i]);
				value1[i] = parseInt(value1[i]);
			}
			if(value[2] < value1[2]){return true;}
			if(value[2] > value1[2]){return false;}
			else {
				if(value[0] < value1[0]){return true;}
				if(value[0] > value1[0]){return false;}
				else {
					if(value[1] < value1[1]){return true;}
					if(value[1] > value1[1]){return false;}
				}
			}
			$("#"+params).blur();
			return false;
		}
	},
	{
		//时间日期格式
		name : "dateType",
		check : function(val, params) {
			var value = $.trim(val);
			if("" == value) return true;
			var regexp = params;
			return checkRegexp(value, regexp);
		}
	},
	{
		//显示当前已输入的字符数
		name : "showLength",
		check : function(val, params) {
			var len = val.length;
			var length = 0;
			for(var i=0; i<len; i++) {
				if(val.charCodeAt(i) > 255) {
					length += 3;
				} else {
					length += 1;
				}
			}
			var id = params;
			$("#"+id).text(length);
			return true;
		}
	},
	{
		//显示当前剩余字符数
		name : "showRemainLength",
		check : function(val, params) {
			var len = val.length;
			//alert(typeof params);
			if(typeof params == "string" || typeof params == "String") {
				params  = params.split(",");
			}
			var id = params[0];
			var maxLength = params[1];
			var length = 0;
			for(var i=0; i<len; i++) {
				if(val.charCodeAt(i) > 255) {
					length += 3;
				} else {
					length += 1;
				}
			}
			var num = (maxLength - length)>0?(maxLength - length):0;
			$("#"+id).text(num);
			return true;
		}
	},
	{
		//校验checkbox必选
		name : "checkBoxIsNeed",
		check : function(val, params) {
			if(params != "") {
				var length = $("#"+params +" input:checked").length;
				return (length>0)?true:false;
			}
			else {
				return true;
			}

		}
	},
	{
		//校验input至少有一个填写
		name : "inputTextIsNeed",
		check : function(val, params) {
			if(params != "") {
				var texts = $("#"+params +" input:text");
				var values = "";
				texts.each(function() {
					values = values + this.value;
				});
				return ($.trim(values).length>0)?true:false;
			}
			else {
				return true;
			}
		}
	},
	{
		//校验两次输入是否一致
		name : "isEqual",
		check : function(val, params, blank) {
			var value = val;
			if(blank != "true") {
				value = $.trim(val);
			}
			var value1;
			if(value == ""){return true;}
			if(typeof params == "string" || typeof params == "String") {
				value1 = $("#"+params).val();
				if(value1 == "") return true;
				return (value == value1) ? true : false;
			}
			else {
				value1 = $("#"+params[0]).val();
				if(value1 == "") return true;
				return (value == value1) ? false : true;
				
			}
		}
	},
	{
		//校验输入的值是否和参数一致
		name : "isNotSame",
		check : function(val, params) {
			var value = $.trim(val);
			return (value == params) ? true : false;
		}
	},
	{
		//校验第二次输入的值是否大于第一次
		name : "isGt",
		check : function(val, params) {
			var value = $.trim(val);
			if("" == value){return true;}
			value = value.split(',').join('');
			value = parseFloat(value);
			var value1 = $.trim($("#"+params).val());
			value1 = value1.split(',').join('');
			value1 = parseFloat(value1);
			return (value > value1) ? true : false;
		}
	},
	{
		name : "checkRadio",
		check : function(val, params) {
			val = parseInt(val);
			params = eval("["+ params +"]");
			var group = 1;
			try{group = groupId}catch(e){}
			return (val <= params[group])? true : false;
			
		}
	},
	{
		name : "checkWatermark",
		check : function(val, params) {
			return true;
		}
	},
	{
		name : "fileType",
		check : function(val, params) {
			var index = val.indexOf(".");
			val = $.trim(val);
			if(val == "") {
				return true;
			}
			val = val.toLowerCase().split(".");
			var filetype = val[(val.length-1)];
			var res = $.inArray(filetype, params);
			if(index == -1) {
				return false;
			}
			if(res == -1) {
				return false;
			}
			return true;
		}
	},
	{
		name : "otherIsNeed",
		check : function(val, params,blank) {
			var elem = params[2];
			var zero = params[3];
			var oldvalue = elem.attr("oldvalue");
			//val = $.trim(val);
			for(var i=0; i<params[0].length; i++) {
				var id = params[0][i];
				var _id = $("#"+id);
				var errMsg = params[1][i];
				var msg_id = id+"_isNeed_msg";
				if(val == "" || val == oldvalue){
					_id.unbind("dblclick", _id.data("checkNeed"));
					if(typeof(verify[id]) == "object" && typeof(verify[id].isNeed) == "object"){
						delete verify[id].isNeed;
					}
					delErrMsg(_id, msg_id);
				}
				else {
					var data = {};
					data.elem = _id;
					var isNeed = {};
					isNeed.params = zero;
					isNeed.errMsg = errMsg;
					isNeed.isBlank = blank;
					if(typeof verify[id] != "object"){
						verify[id] = {};
					}
					//verify[id].isNeed = isNeed;
					data.vrf = isNeed;
					data.val = "isNeed";
					_id.data("checkNeed", checkNeed);
					_id.bind("dblclick", data, _id.data("checkNeed"));
				}
				//alert("id==="+_id.attr("id"));
				window['otherIsNeedTimer'] = setTimeout(function(){
					//initVerify();
					//alert(_id.attr("id"));
					_id.dblclick();
					clearTimeout(window.otherIsNeedTimer);
				}, 2, _id);
				//_id.change();
			}
			
			return true;
		}
	},
	{
		name : "hasChar",
		check : function(val, params) {
			var value = $.trim(val);
			if(value == "") return true;
			value = value.split("");
			for(var i in params){
				var res = $.inArray(params[i], value);
				if(res != -1){
					return false;
				}
			}
			return true;
		}
	},
	{
		name : "oneNeed",
		check : function(val, params) {
			var vals = "";
			for(var i=0; i<params.length; i++){
				var p = $("#"+params[i]);
				if(p.val() != null) {
					vals += p.val();
				}
			}
			if(vals == "" || vals == "0" || vals == "00" || vals == "000"){
				return false;
			}
			return true;
		}
	},
	{
		name : "truePass",
		check : function(val, params) {
			return true;
		}
	}
]
function checkNeed(e) {
	//checkOut(e.data.elem, e.data.vrf, e.data.val);
	var elem = e.data.elem;
	var blank = e.data.vrf["isBlank"] || "";
	var params = e.data.vrf["params"] || "";
	var result = getVerify("isNeed")["check"](elem.val(), params, blank, elem);
	var msg_id = elem.attr("id")+"_isNeed_msg";
	var errMsg = e.data.vrf.errMsg;
	
	if(!result) {
		showErrMsg(elem, msg_id).text(errMsg);
		var em = elem.closest("div[id^='con']");
		var em1 = elem.closest("div[id$='Info']");
		em.show();
		em1.show();
	}
	else {
		delErrMsg(elem, msg_id);
	}
}
checkRegexp = function(string, regexp) {
	var re = new RegExp(regexp);
	return re.test(string);
}

function clearErrMsg(id) {
	var p = {}
	var elem = {};
	if(id) {
		p = $("#"+id);
	} else {
		p = $("body");
	}
	elem = $(".alertBox[id$='msg'], div.clear[id$='msgtoppalce']", p).remove();
}
