Validator = {
	//万能验证赢动超强版1.0
	//修改：lael 主页 http://www.gzyd.net 2006-11-10
	//http://hi.baidu.com/lael80
	NotRequire : function(){
		return true;
	},

	//密码空或包含非法字符，请重新填写。
	Password : "this.ChkPassword(value)",
	ChkPassword : function(str){
		if(str == '')return false;
		return !/[\'\"\\]/.test(str);
	},
	//对不起，您输入的用户名小于3个字符, 请输入一个较长的用户名。 
	Account : "this.ChkAccount(value)",
	ChkAccount : function(str){
		var unlen = str.replace(/[^\x00-\xff]/g, "**").length;
		if(unlen < 3 || unlen > 255)return false;
		var m;
		var temp = str.toLowerCase();
		m = temp.match(new RegExp("/\\s+|^c:\\con\\con|[%,\*\"\\s\<\>\&]|\xA1\xA1|\xAC\xA3|^guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8/"));
		if(m == null)return true;
		return false;
	},
	Require : /.+/,
	//检查单个email，最少6位数
	EmailStr : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
	//可以检查多个email，最少6位数
	Email : "this.ChkEmail(value)",
	ChkEmail : function(str){
		var isErr=true;
		var temp=str.split(",");
		if (temp.length==1){
			var temp=str.split(" ");
		}

		for (var i=0;i<temp.length;i++){
			var unlen = temp[i].replace(/[^\x00-\xff]/g, "**").length;
			if(unlen <= 6)isErr = false;
			if (this.EmailStr.test(temp[i])==false){
				isErr=false;
			}
		}

		return isErr;
	},
	//Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,
	Phone : /^([0-9\-\(\)_\+\.]{3,50}.{1})+$/,
	byte : /^[A-Za-z_\-0-9]+$/,
	PhoneNumber : /([0-9])$/,
	Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,
	Url : /^([A-Za-z]+:\/\/){0,1}([A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*){0,1}$/,
	IdCard : "this.ChkIdCard(value)",
	ChkIdCard : function(str) {
		var isErr = true;
		if(str.length != 15 && str.length != 18)return false;
		if(str.indexOf("x") != -1)str = str.substr(0, str.length - 1);
		if(str.indexOf("X") != -1)str = str.substr(0, str.length - 1);
		isErr = /^[\d]{6}(19|20)*[\d]{2}((0[1-9])|(10|11|12))([012][\d]|(30|31))[\d]{1,4}$/.test(str);
		return isErr;
	},
	Currency : /^\d+(\.\d+)?$/,
	Real : /^(\-)?\d+(\.\d+)?$/,
	Bround : /^((\d+(\.\d+){0,1})\-){0,1}(\d+(\.\d+){0,1})$/,
	Number : /^\d+$/,
	Zip : /^[1-9]\d{5}$/,
	QQ : /^[1-9]\d{4,8}$/,
	Integer : /^[-\+]?\d+$/,
	Double : /^[-\+]?\d+(\.\d+)?$/,
	English : /^[A-Za-z]+$/,
	Chinese : /^[\u0391-\uFFE5]+$/,
	UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
	IsSafe : function(str){return !this.UnSafe.test(str);},
	SafeString : "this.IsSafe(value)",
	Limit : "this.limit(value.length,getAttribute('min'), getAttribute('max'))",
	LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",
	Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",
	DateTime : "this.IsDateTime(value, getAttribute('min'), getAttribute('format'))",	
	Time : "this.IsTime(value, getAttribute('min'), getAttribute('format'))",
	Repeat : "value == form.elements[getAttribute('to')].value",
	Range : "getAttribute('min') < value && value < getAttribute('max')",
	Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",
	Custom : "this.Exec(value, getAttribute('regexp'))",
	Group : "this.MustChecked(form, getAttribute('name'), getAttribute('min'), getAttribute('max'))",
	ErrorItem : [document.forms[0]],
	ErrorMessage : ["以下原因导致提交失败：\t\t\t\t"],
	RightItem : [document.forms[0]],
	RightMessage : ["以下项提交成功：\t\t\t\t"],
	MsgItem : [document.forms[0]],
	MsgMessage : ["请参考填写提示信息：\t\t\t\t"],	
	Validate : function(theForm, mode, fos){//对象，什么显示信息，是否转到焦点
	////mode 预定义CSS样式 js_validator_error_style/js_validator_msg_style/js_validator_right_style
    ////     预定义显示区ID
	////     所有：[元素name]_js_validator_panel
	////     错误：[元素name]_js_validator_error_panel
	////     提示：[元素name]_js_validator_msg_panel
	////     正确：[元素name]_js_validator_rigth_panel
	////0重置, 清空所有添加信息
	////1提示框显示错误信息
	////2提示框显示错误信息及错误的颜色转变成红色
	////3显示错误信息
	////4显示错误及 提示信息(如果正确)
	////5显示填写帮助信息
	////6显示错误及正确信息
	////其它不执行任何操作, 所以如果要提示, 参数mode必须设置
		var obj = theForm || (event || window.event).srcElement || event.currentTarget;
		var count = obj.tagName=="FORM"?obj.elements.length:1;	
		
		this.MsgMessage.length = 1;		
		this.MsgItem.length = 1;
		this.MsgItem[0] = obj;		
		
		this.ErrorMessage.length = 1;
		this.ErrorItem.length = 1;		
		this.ErrorItem[0] = obj;
		
		this.RightMessage.length = 1;
		this.RightItem.length = 1;
		this.RightItem[0] = obj;
		
		for(var i=0;i<count;i++){
			var _obj = obj.tagName=="FORM"?obj.elements[i]:obj;
			with(_obj){
				var _dataType = getAttribute("dataType");

				if(mode != 0 && mode != 5) {//重置或还原提示信息
					/////////////////////////////////////////////
					var _maxlength = getAttribute("maxlength");
					if(_maxlength!=null && _maxlength!="" && _maxlength<=65535)
					{
						this.ClearState(_obj);
						if(value!=""){
							if(this.LenB(value) > _maxlength){
								this.AddError(i, "长度超出允许范围的 "+_maxlength+" 字节，一个中文字符长度为两个字节");/*getAttribute("error")*/
								continue;
							}
						}
					}
					/////////////////////////////////////////////
				}

				if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined") continue;
				this.ClearState(_obj);
				
				if(mode == 0) continue;//重置,清空所有添加的信息
				if(mode == 5) {//还原提示信息
					if(getAttribute("msg")){
						this.AddMsg(i, getAttribute("msg"));
					}else{
						//this.AddMsg(i, "");
					}
					continue;
				}

				if(getAttribute("require") == "false" && value == "") continue;
				
				if(_dataType == "NotRequire") continue;
				
				switch(_dataType){
					case "Password":
					case "Account":
					case "IdCard":
					case "Date" :
					case "Time" :
					case "DateTime":
					case "Repeat" :
					case "Range" :
					case "Compare" :
					case "Custom" :
					case "Group" :
					case "Email" :
					case "Limit" :
					case "LimitB" :
					case "SafeString" :
					if(!eval(this[_dataType])) {
						if(getAttribute("error")){
							this.AddError(i, getAttribute("error"));
						}else{
							//this.AddError(i, "");
						}
					}else{
						if(mode == 4){
							if(getAttribute("msg")){
								this.AddMsg(i, getAttribute("msg"));
							}else{
								//this.AddMsg(i, "");
							}							
						}else{
							if(getAttribute("right")){
								this.AddRight(i, getAttribute("right"));
							}else{
								this.AddRight(i, "");
							}
						}
					}
					break;
					default :
					if(!this[_dataType].test(value)){
						if(getAttribute("error")){
							this.AddError(i, getAttribute("error"));
						}else{
							//this.AddError(i, "");
						}
					}else{
						if(mode == 4){
							if(getAttribute("msg")){
								this.AddMsg(i, getAttribute("msg"));
							}else{
								//this.AddMsg(i, "");
							}							
						}else{
							if(getAttribute("right")){
								this.AddRight(i, getAttribute("right"));
							}else{
								//this.AddRight(i, "");
							}
						}
					}
					break;
				}
			}
		}
		
		/////////////////////////////////////////////////
		//重置
		if(mode == 0) return false;
		/////////////////////////////////////////////////
		
		if(this.MsgMessage.length > 1){
			mode = mode || 5;
			var msgCount = this.MsgItem.length;
			switch(mode){
				case 5 :
				case 4 :
					for(var i=1;i<msgCount;i++){
						try{
							var _panelcss = this.CheckCss("js_validator_msg_style");
							var _panelname = this.MsgItem[i].name + "_js_validator_panel";
							var _panelobj = this.$(_panelname);
							if(_panelobj){//独立DIV显示
								_panelobj.style.display = "";//显示
								if(_panelcss == -1){
									_panelobj.style.border = "0";
									_panelobj.style.color = "#666666";
									_panelobj.style.padding = "2px";
									_panelobj.style.margin = "0 5px 0 0";
									_panelobj.style.textAlign = "left";
									_panelobj.style.background = "";//"url(js/msg.gif) no-repeat left";
									//_panelobj.style.width = "100%";									
								}else{
									_panelobj.className = "js_validator_msg_style";
								}
								_panelobj.innerHTML = this.MsgMessage[i].replace(/\d+:/,"");
							}else{
								_panelname = this.MsgItem[i].name + "_js_validator_msg_panel";
								_panelobj = this.$(_panelname);
								if(_panelobj){//单独显示
									_panelobj.style.display = "";//显示
								}else{
									_panelobj = document.createElement("DIV");
									_panelobj.id = "__MsgMessagePanel";
									
									if(_panelcss == -1){
										_panelobj.style.border = "0";
										_panelobj.style.color = "#666666";
										_panelobj.style.padding = "2px";
										_panelobj.style.margin = "0 5px 0 0";
										_panelobj.style.textAlign = "left";
										//_panelobj.style.background = "url(js/msg.gif) no-repeat left";
										//_panelobj.style.width = "100%";
									}else{
										_panelobj.className = "js_validator_msg_style";
									}
									this.MsgItem[i].parentNode.appendChild(_panelobj);
									_panelobj.innerHTML = this.MsgMessage[i].replace(/\d+:/,"");
								}
							}
						}
						catch(e){alert(e.description);}
					}
					if(this.MsgItem[1].type != "hidden"){
						if(fos)this.MsgItem[1].focus();
					}
					break;
				default : break;
			}			
		}		
		/////////////////////////////////////////////////
		//还原提示帮助信息的时候退出
		if(mode == 5) return false;
		/////////////////////////////////////////////////
		
		if(this.ErrorMessage.length > 1){
			mode = mode || 3;
			var errCount = this.ErrorItem.length;
			switch(mode){
				case 2 :
					for(var i=1;i<errCount;i++)
					this.ErrorItem[i].style.color = "red";
					//startLongProcess(0,this.ErrorMessage);
					alert(this.ErrorMessage.join("\n"));
					if(this.ErrorItem[1].type != "hidden") {
						if(fos)this.ErrorItem[1].focus();
					}
					break;
				case 1 :			
					//startLongProcess(0,this.ErrorMessage);
					alert(this.ErrorMessage.join("\n"));
					if(this.ErrorItem[1].type != "hidden") {
						if(fos)this.ErrorItem[1].focus();
					}
					break;
				case 3 : 
				case 4 :
				case 6 :
					for(var i=1;i<errCount;i++){
						try{
							var _panelcss = this.CheckCss("js_validator_error_style");
							var _panelname = this.ErrorItem[i].name + "_js_validator_panel";
							var _panelobj = this.$(_panelname);
							if(_panelobj){//独立DIV显示							
								_panelobj.style.display = "";//显示
								if(_panelcss == -1){
									_panelobj.style.color = "red";
									_panelobj.style.border = "1px #fba259 solid";
									_panelobj.style.padding = "4px 2px 2px 20px";
									_panelobj.style.margin = "0";
									_panelobj.style.background = "#fff5d8 url(js/error.gif) no-repeat left";
									_panelobj.style.textAlign = "left";
									//if(!/^\d+:$/.test(this.ErrorMessage[i])){
									//	_panelobj.style.width = "60%";
									//}else{
									//	_panelobj.style.width = "35px";
									//}
								}else{
									_panelobj.className = "js_validator_error_style";
								}
								_panelobj.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"");
							}else{
								_panelname = this.ErrorItem[i].name + "_js_validator_error_panel";
								_panelobj = this.$(_panelname);
								if(_panelobj){//单独显示
									_panelobj.style.display = "";//显示
								}else{							
									_panelobj = document.createElement("DIV");
									_panelobj.id = "__ErrorMessagePanel";
									if(_panelcss == -1){
										_panelobj.style.color = "red";
										_panelobj.style.border = "1px #fba259 solid";
										_panelobj.style.padding = "4px 2px 2px 20px";
										_panelobj.style.margin = "0";
										_panelobj.style.background = "#fff5d8 url(js/error.gif) no-repeat left";
										_panelobj.style.textAlign = "left";
										//if(!/^\d+:$/.test(this.ErrorMessage[i])){
										//	_panelobj.style.width = "60%";
										//}else{
										//	_panelobj.style.width = "35px";
										//}
									}else{
										_panelobj.className = "js_validator_error_style";
									}
									this.ErrorItem[i].parentNode.appendChild(_panelobj);
									_panelobj.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"");
								}
							}
						}
						catch(e){alert(e.description);}
					}
					if(this.ErrorItem[1].type != "hidden"){
						if(fos)this.ErrorItem[1].focus();
					}
					break;
				default : break;
			}
		}
		if(this.RightMessage.length > 1){
			mode = mode || 6;
			var rightCount = this.RightItem.length;
			switch(mode){
				case 2 :
					for(var i=1;i<rightCount;i++)
					this.RightItem[i].style.color = "black";			
					break;
				case 6 :
					for(var i=1;i<rightCount;i++){
						try{
							var _panelcss = this.CheckCss("js_validator_right_style");
							var _panelname = this.RightItem[i].name + "_js_validator_panel";
							var _panelobj = this.$(_panelname);
							if(_panelobj){//独立DIV显示
								_panelobj.style.display = "";//显示
								if(_panelcss == -1){
									_panelobj = document.createElement("DIV");
									_panelobj.id = "__RightMessagePanel";
									_panelobj.style.border = "0";
									_panelobj.style.padding = "4px 2px 2px 20px";
									_panelobj.style.margin = "0 5px 0 0";
									_panelobj.style.background = "url(js/right.gif) no-repeat left";
									_panelobj.style.textAlign = "left";
									//if(!/^\d+:$/.test(this.RightMessage[i])){
									//	_panelobj.style.width = "60%";
									//}else{
									//	_panelobj.style.width = "35px";
									//}
								}else{
									_panelobj.className = "js_validator_right_style";
								}
								_panelobj.innerHTML = this.RightMessage[i].replace(/\d+:/,"");
							}else{
								_panelname = this.RightItem[i].name + "_js_validator_right_panel";
								_panelobj = this.$(_panelname);
								if(_panelobj){//单独显示
									_panelobj.style.display = "";//显示
								}else{							
									_panelobj = document.createElement("DIV");
									_panelobj.id = "__RightMessagePanel";
									if(_panelcss == -1){
										_panelobj.style.border = "0";
										_panelobj.style.padding = "4px 2px 2px 20px";
										_panelobj.style.margin = "0 5px 0 0";
										_panelobj.style.background = "url(js/right.gif) no-repeat left";
										_panelobj.style.textAlign = "left";
										//if(!/^\d+:$/.test(this.RightMessage[i])){
										//	_panelobj.style.width = "60%";
										//}else{
										//	_panelobj.style.width = "35px";
										//}
									}else{
										_panelobj.className = "js_validator_right_style";
									}
									this.RightItem[i].parentNode.appendChild(_panelobj);
									_panelobj.innerHTML = this.RightMessage[i].replace(/\d+:/,"");
								}
							}
						}
						catch(e){alert(e.description);}
					}
					if(this.RightItem[1].type != "hidden"){
						if(fos)this.RightItem[1].focus();
					}
					break;				
				default : break;
			}
		}		
		//返回结果
		if(this.ErrorMessage.length > 1){
			return false;
		}else return true;
	},
	limit : function(len,min, max){
		min = min || 0;
		max = max || Number.MAX_VALUE;
		return min <= len && len <= max;
	},
	LenB : function(str){
		return str.replace(/[^\x00-\xff]/g,"**").length;
	},
	ClearState : function(elem){
		with(elem){
			if(style.color == "red")style.color = "";
			for(var i = 0; i < parentNode.childNodes.length; i ++){
				var lastNode = parentNode.childNodes[i];
				if(!lastNode.id)continue;				
				if(lastNode.id == "__ErrorMessagePanel"
					|| lastNode.id == "__RightMessagePanel"
					|| lastNode.id == "__MsgMessagePanel"
					)
				{
					parentNode.removeChild(lastNode);
				}
			}
			var _panelname = name + "_js_validator_panel";
			var _panelobj = this.$(_panelname);
			if(_panelobj)_panelobj.style.display = "none";
			_panelname = name + "_js_validator_msg_panel";
			_panelobj = this.$(_panelname);
			if(_panelobj)_panelobj.style.display = "none";
			_panelname = name + "_js_validator_error_panel";
			_panelobj = this.$(_panelname);
			if(_panelobj)_panelobj.style.display = "none";
			_panelname = name + "_js_validator_right_panel";
			_panelobj = this.$(_panelname);
			if(_panelobj)_panelobj.style.display = "none";
		}
	},	
	AddMsg : function(index, str){
		this.MsgItem[this.MsgItem.length] = this.MsgItem[0].tagName=="FORM"?this.MsgItem[0].elements[index]:this.MsgItem[0];
		this.MsgMessage[this.MsgMessage.length] = this.MsgMessage.length + ":" + str;
	},		
	AddError : function(index, str){
		this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].tagName=="FORM"?this.ErrorItem[0].elements[index]:this.ErrorItem[0];
		this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;
	},
	AddRight : function(index, str){
		this.RightItem[this.RightItem.length] = this.RightItem[0].tagName=="FORM"?this.RightItem[0].elements[index]:this.RightItem[0];
		this.RightMessage[this.RightMessage.length] = this.RightMessage.length + ":" + str;
	},	
	Exec : function(op, reg){
		return new RegExp(reg,"g").test(op);
	},
	compare : function(op1,operator,op2){
		switch (operator) {
			case "NotEqual":
			return (op1 != op2);
			case "GreaterThan":
			return (op1 > op2);
			case "GreaterThanEqual":
			return (op1 >= op2);
			case "LessThan":
			return (op1 < op2);
			case "LessThanEqual":
			return (op1 <= op2);
			default:
			return (op1 == op2);
		}
	},
	MustChecked : function(_form, name, min, max){
		//var groups = document.getElementsByName(name);
		var groups = _form.elements[name];	
		var hasChecked = 0;
		min = min || 1;
		if(groups.tagName)max = max || 1;
		else max = max || groups.length;
		if(!groups.tagName){
			for(var i=groups.length-1;i>=0;i--){
				if(groups[i].type == "checkbox" || groups[i].type == "radio"){
					if(groups[i].checked) hasChecked++;
				}else{
					if(groups[i].value != null && groups[i].value != "") hasChecked++;
				}
			}
		}else{
			if(groups.type == "checkbox" || groups.type == "radio"){
				if(groups.checked) hasChecked++;
			}else{
				if(groups.value != null && groups.value != "") hasChecked++;
			}
		}
		return min <= hasChecked && hasChecked <= max;
	},
	IsDate : function(op, formatString){
		formatString = formatString || "Ymd";
		var m, year, month, day;
		switch(formatString){
			case "Ymd" :
			m = op.match(new RegExp("^(\\d+)([-./])(\\d+)([-./])(\\d+)$"));
			if(m == null ) return false;
			day = m[5];
			month = m[3];
			year = m[1].length == 4 ? m[1] : GetFullYear(m[1]);
			break;
			case "dmY" :
			m = op.match(new RegExp("^(\\d+)([-./])(\\d+)([-./])(\\d+)$"));
			if(m == null ) return false;
			day = m[1];
			month = m[3];
			year = m[5].length == 4 ? m[5] : GetFullYear(m[5]);
			break;
			default :
			return false;
			break;
		}
		var date = new Date(year, month - 1, day);
		return (typeof(date) == "object" && 
					   year == date.getFullYear() && 
					   month == (date.getMonth() + 1) && 
					   day == date.getDate());
		function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
	},
	IsDateTime : function(op, formatString){
		formatString = formatString || "Ymd His";
		var m, tH, ti, ts, year, month, day;
		switch(formatString){
			case "Ymd His" :
			m = op.match(new RegExp("^(\\d+)([-./])(\\d+)([-./])(\\d+)\\s{1}(\\d+):(\\d+):(\\d+)$"));
			if(m == null ) return false;
			day = m[5];
			month = m[3];
			year = m[1].length == 4 ? m[1] : GetFullYear(m[1]);
			tH = m[6];
			ti = m[7];
			ts = m[8];			
			break;
			case "dmY His" :
			m = op.match(new RegExp("^(\\d+)([-./])(\\d+)([-./])(\\d+)\\s{1}(\\d+):(\\d+):(\\d+)$"));
			if(m == null ) return false;
			day = m[1];
			month = m[3];
			year = m[5].length == 4 ? m[5] : GetFullYear(m[5]);
			tH = m[6];
			ti = m[7];
			ts = m[8];			
			break;
			default :
			return false;
			break;
		}
		var date = new Date(year, month - 1, day, tH, ti, ts);
		return (typeof(date) == "object" && 
					   year == date.getFullYear() && 
					   month == (date.getMonth() + 1) && 
					   day == date.getDate() &&
					   tH == date.getHours() &&
					   ti == date.getMinutes() &&
					   ts == date.getSeconds());
		function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
	},
	IsTime : function(op, formatString){
		formatString = formatString || "His";
		var m;
		switch(formatString){
			case "His" :
			m = op.match(new RegExp("^(\\d{1,2}):(\\d{1,2}):(\\d{1,2})$"));
			if(m == null ) return false;
			tH = m[1];
			ti = m[2];
			ts = m[3];			
			if(isNaN(tH) || tH >= 24)return false;
			if(isNaN(ti) || ti > 59)return false;
			if(isNaN(ts) || ts > 59)return false;
			break;
			case "Hi" :
			m = op.match(new RegExp("^(\\d{1,2}):(\\d{1,2})$"));
			if(m == null ) return false;
			tH = m[1];
			ti = m[2];			
			if(isNaN(tH) || tH >= 24)return false;
			if(isNaN(ti) || ti > 59)return false;
			break;
			default :
			return false;
			break;
		}
		return true;
	},
	$ : function(en){
		try{
			var el = document.getElementById(en);
			if(el)return el;
			return false;
		}catch(e){
			return false;
		}
	},
	CheckCss : function(css){
		try{
			var ie = window.navigator.userAgent.indexOf("MSIE") != -1;
			var css_text = "";
			if(ie){
				css_text = document.styleSheets["js_validator"].cssText.replace(/{[\s\S.]*?}/gi, "");
			}else{
				for(var i = 0; i < document.styleSheets.length; i ++){
					if(document.styleSheets[i].title == "js_validator"){
						for(var j = 0; j < document.styleSheets[i].cssRules.length; j ++){
							css_text += document.styleSheets[0].cssRules[j].cssText.replace(/{[\s\S.]*?}/gi, "");
						}
					}
				}
			}
			return css_text.indexOf(css);
		}catch(e){
			return -1;
		}
	}
}
