//====================================================================================================
// [插件名称] SGRegPlugin
//----------------------------------------------------------------------------------------------------
// [描述]
// [作者姓名] 李敏1
// [邮箱] limin1@snail.com
// [更新日期] 2010-12-13
// [版本号] 0.6
//====================================================================================================
//参数列表
//;
//正则库
var regexEnum = 
	{
	intege:"^-?[1-9]\\d*$",					//整数
	intege1:"^[1-9]\\d*$",					//正整数
	intege2:"^-[1-9]\\d*$",					//负整	数
	num:"^([+-]?)\\d*\\.?\\d+$",			//数字
	num1:"^[1-9]\\d*|0$",					//正数（正整数 + 0）
	num2:"^-[1-9]\\d*|0$",					//负数（负整数 + 0）
	decmal:"^([+-]?)\\d*\\.\\d+$",			//浮点数
	decmal1:"^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$",　　	//正浮点数
	decmal2:"^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$",　 //负浮点数
	decmal3:"^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$",　 //浮点数
	decmal4:"^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$",　　 //非负浮点数（正浮点数 + 0）
	decmal5:"^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$",　　//非正浮点数（负浮点数 + 0）

	email:"^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$", //邮件
	color:"^[a-fA-F0-9]{6}$",				//颜色
	chinese:"^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$",					//仅中文
	ascii:"^[\\x00-\\xFF]+$",				//仅ACSII字符
	zipcode:"^\\d{6}$",						//邮编
	mobile:"^(13|15)[0-9]{9}$",				//手机
	ip4:"^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$",	//ip地址
	notempty:"^\\S+$",						//非空
	picture:"(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$",	//图片
	rar:"(.*)\\.(rar|zip|7zip|tgz)$",								//压缩文件
	//date:"^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$",					//日期
	qq:"^[1-9]*[1-9][0-9]*$",				//QQ号码
	//tel:"^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$",	//电话号码的函数(包括验证国内区号,国际区号,分机号)
	username:"^\\w+$",						//用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
	letter:"^[A-Za-z]+$",					//字母
	letter_u:"^[A-Z]+$",					//大写字母
	letter_l:"^[a-z]+$",					//小写字母
	idcard:"^[1-9]([0-9]{14}|[0-9]{17})$",	//身份证
	zhanghao:"^[a-zA-Z0-9]{1}[a-zA-Z0-9|-|_]{6-25}[a-zA-Z0-9]{1}$"//账号
};
//消息库
var msgArray = new Array();
msgArray[0] = "长度为6～25位，必须由字母（不区分大小写）、数字或下划线组成，或直接使用邮箱进行注册";
msgArray[1] = "该用户名可以注册";
msgArray[2] = "请填写用户名";
msgArray[3] = "长度应该符合6-25";
msgArray[4] = "用户名不能全是数字";
msgArray[5] = "用户名可用";
msgArray[6] = "用户名中出现特殊符号";
msgArray[7] = "用户名已经被使用";
msgArray[8] = "密码由6-20个字符组成，建议使用英文字母加数字的组合密码";
msgArray[9] = "密码格式不正确";
msgArray[10] = "可以使用密码";
msgArray[11] = "请重复输入密码";
msgArray[12] = "两次输入密码不一样 请再次输入";
msgArray[13] = "重复验证正确";
msgArray[14] = "请填写密码";
msgArray[15] = "密码可以使用";
msgArray[16] = "密码中出现特殊符号";
msgArray[17] = "是弱密码";
msgArray[18] = "请再次确认密码";
msgArray[19] = "两次输入密码不一样";
msgArray[20] = "真实姓名和身份证号将作为判断帐号归属的最终标准，如果填写有误，遇到帐号丢失等问题，可能将无法为您提供服务。";
msgArray[21] = "姓名应该为中文";
msgArray[22] = "好名字";
msgArray[23] = "名字长度要求大于等于2小于等于5的中文字";
msgArray[24] = "姓名为2-5位中文字符";
msgArray[25] = "请符合身份证规则";
msgArray[26] = "身份证输入正确";
msgArray[27] = "身份证长度应该18位或15位";
msgArray[28] = "身份证长度应该18位或15位";
msgArray[29] = "";
msgArray[30] = "身份证正确";
msgArray[31] = "要记得给它打钩";
msgArray[32] = "请填写手机号码";
msgArray[33] = "手机号码的长度要求等于11个数字";
msgArray[34] = "手机号码中出现异常符号";
msgArray[35] = "真实姓名和身份证号将作为判断帐号归属的最终标准，如果填写有误，遇到帐号丢失等问题，可能将无法为您提供服务。";
//格式库
var styleCss = new Array();
styleCss[0] = {strMessage:msgArray[2],"background-color":"#000000", "color":"#FFF"};
styleCss[1] = {"border":"#F00 solid 1px"};//错误样式的css 作用于控件本身
styleCss[2] = {strMessage:msgArray[3],"background-color":"#000000", "color":"#FFF"};
styleCss[3] = {strMessage:msgArray[4],"background-color":"#000000", "color":"#FFF"};
styleCss[4] = {strMessage:msgArray[6],"background-color":"#000000", "color":"#FFF"};
styleCss[5] = {strMessage:msgArray[5],"background-color":"#000000", "color":"#FFF"};
styleCss[6] = {strMessage:msgArray[7],"background-color":"#000000", "color":"#FFF"};
styleCss[7] = {strMessage:msgArray[14],"background-color":"#000000", "color":"#FFF"};
styleCss[8] = {strMessage:msgArray[15],"background-color":"#000000", "color":"#FFF"};
styleCss[9] = {strMessage:msgArray[16],"background-color":"#000000", "color":"#FFF"};
styleCss[10] = {strMessage:msgArray[17],"background-color":"#000000", "color":"#FFF"};
styleCss[11] = {strMessage:msgArray[18],"background-color":"#000000", "color":"#FFF"};
styleCss[12] = {strMessage:msgArray[19],"background-color":"#000000", "color":"#FFF"};
styleCss[13] = {strMessage:msgArray[20],"background-color":"#000000", "color":"#FFF"};
styleCss[14] = {strMessage:msgArray[23],"background-color":"#000000", "color":"#FFF"};
styleCss[15] = {strMessage:msgArray[24],"background-color":"#000000", "color":"#FFF"};
styleCss[16] = {strMessage:msgArray[22],"background-color":"#000000", "color":"#FFF"};
styleCss[17] = {strMessage:msgArray[27],"background-color":"#000000", "color":"#FFF"};
styleCss[18] = {strMessage:msgArray[28],"background-color":"#000000", "color":"#FFF"};
styleCss[19] = {strMessage:msgArray[29],"background-color":"#000000", "color":"#FFF"};
styleCss[20] = {strMessage:msgArray[30],"background-color":"#000000", "color":"#FFF"};
styleCss[21] = {strMessage:msgArray[31],"background-color":"#000000", "color":"#FFF"};
styleCss[22] = {strMessage:msgArray[32],"background-color":"#000000", "color":"#FFF"};
styleCss[23] = {strMessage:msgArray[33],"background-color":"#000000", "color":"#FFF"};
styleCss[24] = {strMessage:msgArray[34],"background-color":"#000000", "color":"#FFF"};
styleCss[25] = {strMessage:msgArray[35],"background-color":"#000000", "color":"#FFF"};
//正确格式库
var styleRight = new Array();
styleRight[0] = {"border-color":"#18C7FF"};
styleRight[1] = {"border-color":"#18C7FF"};
//城市编码
var aCity=
	{
	11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"
} ;
//严格身份证
function isCardID(sId){ 
	var iSum=0 ;
	var info="" ;
	if(!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误"; 
	sId=sId.replace(/x$/i,"a"); 
	if(aCity[parseInt(sId.substr(0,2))]==null) return "你的身份证地区非法"; 
	sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); 
	var d=new Date(sBirthday.replace(/-/g,"/")) ;
	if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "身份证上的出生日期非法"; 
	for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
	if(iSum%11!=1) return "你输入的身份证号非法"; 
	return true;//aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女") 
} ;
//短时间，形如 (13:04:06)
function isTime(str)
{
	var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
	if (a == null) {return false}
	if (a[1]>24 || a[3]>60 || a[4]>60)
	{
		return false;
	}
	return true;
};
//身份证转换
function id15To18(pId)
{
    var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2];
    var Wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
    var Checker = [1,9,8,7,6,5,4,3,2,1,1];

    if(pId.length != 15 && pId.length != 18)   
	{
		return "身份证号共有 15 码或18位";
	}

    var Ai=pId.length==18 ?  pId.substring(0,17)   :   pId.slice(0,6)+"19"+pId.slice(6,16);

    if (!/^\d+$/.test(Ai))  
	{
		return "身份证除最后一位外，必须为数字！";
	}

    var yyyy=Ai.slice(6,10) ,  mm=Ai.slice(10,12)-1  ,  dd=Ai.slice(12,14);
    var d=new Date(yyyy,mm,dd) ,  now=new Date();
    var year=d.getFullYear() ,  mon=d.getMonth() , day=d.getDate();

    if (year!=yyyy || mon!=mm || day!=dd || d>now || year<1940) 
	{
		return "身份证输入错误！";
	}

    for(var i=0,ret=0;i<17;i++)  
	{
		ret+=Ai.charAt(i)*Wi[i];
	}
	
    Ai+=arrVerifyCode[ret %=11];     
    return pId.length ==18 && pId != Ai?"身份证输入错误！":Ai;    
};
var PRList = new Array();
var DEBUGList = new Array();

(function($)
{
	$.RegPlugin = 
		{
		//显示消息
		showMessage : function(id,strMsg)
		{
			$("#"+id+"Tip").empty().append(strMsg);
		},
		//获得输入内容
		getContent : function(id)
		{
			return $("#"+id).val();
		},
		//正则表达式匹配
		regexCheck : function(regex,string)
		{
			var patt = new RegExp(regex);
			return patt.test(string);
		},
		//获取指定字符串的长度
		getLength : function(id)
		{
			var $jqObject = $("#"+id);//获得相关id;
			var element = $jqObject.get(0);
			var elementType = element.type;//检测的类型 如今可以支持如下
			var length = 0;
			switch(elementType)
			{
				case "text":
				case "hidden":
				case "password":
				case "textarea":
				case "file":
					var elementValue = $jqObject.val();//获得值的长度
					var initConfig = $.RegPlugin.getInitConfig(PRList[0].checkGroup);//全局参数列表
					if(initConfig.wideWord)//确定使用宽字符
					{
						for(var i=0;i < elementValue.length; i++)
						{
							if(elementValue.charCodeAt(i)>=0x4e00 && elementValue.charCodeAt(i)<=0x9faf)
							{
								length += 2;
							}
							else
							{
								length ++;
							}							
						}
					}
					else//不适用宽字符
					{
						length = elementValue.length;
					}
					break;	
			}
			return length;
		},
		//获得参数值
		getInitConfig : function(checkGroup)
		{
			if(PRList!=null)//变量列表不为空
			{
				for(i=0;i<PRList.length;i++)
				{
					if(checkGroup==PRList[i].checkGroup)
					{
						return PRList[i];	
					}
				}
			}
			return null;//找不到则为空
		},
		//插件初始化
		initConfig : function(controlOptions)
		{
			var settings = 
			{
				debug : false,//调试模式
				checkGroup : 1,//全局参数编号
				wideWord : true//宽字符
			};
			controlOptions = controlOptions || {};
			$.extend(settings,controlOptions);//给默认参数赋值，并且不给深度拷贝测试
			if(PRList == null)
			{
				PRList = new Array();	
			}
			PRList.push(settings);

			//生成全局显示消息框
			var $msgDIV = $("<div id='GMessage'></div>");//生成一个div
			var strHTML = $msgDIV.get(0);//dom
			$("body").append(strHTML);//增加到全局	
		},
		//为dom增加settings
		appendCheckSetiings : function(id,settings)
		{
			var $jqObject = $("#"+id);//获得对象
			var element = $jqObject.get(0);//获得dom
			//参数的检测类型 和 元素的参数为定义
			if(settings.checkType == "initCheck" || element.settings == undefined)//初始化第一步容错
			{
				element.settings = new Array();
			}
			if(element.settings.length == 0 )//针对于初始化后的
			{
				var settingsLength = element.settings.push(settings);
				element.settings[0].index = settingsLength - 1;//最后一个元素位置
				return element.settings.length ;//返回最后一个元素的位置
			}
			else//以后有的值，
			{
				$.extend(true,element.settings[0],settings);
				return element.settings.length ;	
			}
		},
		//获得json数组的长度
		getJsonLength : function(json)
		{
			var number = 0;
			for(var i in json)
			{
				number++;	
			}
			return number;	
		},
		//设置错误的消息css
		setWrongCss:function(id,cssOption)
		{
			if(cssOption)
			{
				$("#"+id).css(cssOption);//自定义css	
			}
			else
			{
				$("#"+id).css(styleCss[1]);//默认css样式
			}
		},
		//设置正确的消息css
		setRightCss:function(id,cssOption)
		{
			if(cssOption)
			{
				$("#"+id).css(cssOption);//自定义css	
			}
			else
			{
				$("#"+id).css(styleRight[0]);//默认css样式
			}
		},
		//获得cookie
		getCookie:function(c_name)
		{ 
				if(document.cookie.length>0){ 
					c_start=document.cookie.indexOf(c_name + "=") 
					if(c_start!=-1){ 
					   c_start=c_start + c_name.length+1 
					   c_end=document.cookie.indexOf(";",c_start) 
					   if(c_end==-1) c_end=document.cookie.length 
					   return unescape(document.cookie.substring(c_start,c_end)) 
					} 
				} 
				return "" 
		},
		// 设置 Cookie 函数
		setCookie:function(c_name,value,expiredays)
		{ 
			var exdate=new Date();
			exdate.setDate(exdate.getDate()+expiredays);
			document.cookie= c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString())+";path=/;domain=dg.woniu.com;";
		},
		//显示控件相关的消息框子
		showDiv:function(id,controlOptions)
		{
			//消息框子牢牢与控件id挂钩
			var divShow = $("#"+id).get(0);//获得控件的dom
			var divShowSettings = divShow.settings[0];//获得控件相关的参数
			var $msgDIV = $("#G"+id);//获得控件的消息框对象
			var $picDIV = $("#P"+id);
			//为div消息框子设置css 初始化的标准
			//$msgDIV.css({"position":"absolute","top":"100px","height":"50px","width":"350px","border":"#FFF solid 1px","background-color":"#fff","padding-left":"25px","padding-top":"0px","font-size":"14px","z-index":"999"});

			//拷贝需要模仿的参数
			var cssOptions = 
			{
				offset : {heigth:"",left:""},//拷贝位置的高左
				position : "",//位置
				backcolor : "",//背景颜色
				heigth : "",
				border : "",
				strMessage:"消息显示框默认的提示字符串",
				display : "block"
			};

			//cssOptions.offset = $("#"+id).offset();//控件的偏移
			//cssOptions.position = $("#"+id).outerWidth();//位置
			//cssOptions.border = $("#"+id).css("border");

			controlOptions = controlOptions || {};	
			$.extend(true,cssOptions,controlOptions);//第二次加载的优先
			
			//$msgDIV.css({"left":cssOptions.offset.left+cssOptions.position+3,"top":cssOptions.offset.top+1+1,"height":cssOptions.heigth,"border":cssOptions.border,"display":cssOptions.display});
			
			//$msgDIV.empty().text(cssOptions.strMessage);

			//检测
			if(divShowSettings.lastCheck)
			{
				//$msgDIV.css({"display":"none"});	
				$msgDIV.empty();
				$picDIV.removeClass("guide_no").addClass("guide_yes");
			}
			else
			{
				$msgDIV.empty().text(cssOptions.strMessage);
				$picDIV.removeClass("guide_yes").addClass("guide_no");
			}
		},
		//表达发送
		sendForm : function(formid,controlOptions)
		{
			//预留的参数
			var settings = 
				{
				username : "",
				password : "",
				rpwd : "",
				realname : "",
				identity : "",
				agree : ""				
			};

//			for(var i in controlOptions)
//			{
//				settings[i] = "";
//			}

			var $formObj = $("#"+formid);
			var count = $.RegPlugin.getJsonLength(settings);

			//
			for(var i in settings)
			{
				//确认为已经验证的状态
				var temp= $formObj.find($("#"+i)).get(0);

				if(temp.settings[0].lastCheck)
				{
					settings[i] = $formObj.find($("#"+i)).attr("value");
				}
				else
				{
					switch(i)
					{
						case "username": alert("请填写用户名");break;
						case "password": alert("请填写密码");break;
						case "rpwd": alert("请确保密码正确");break;
						case "realname": alert("请填写真实姓名");break;
						case "identity": alert("请填写身份证");break;
						case "agree":alert("请选择接受协议");break;
					}
					return false;
				}
			}
			controlOptions = controlOptions || {};
			//过滤步骤
			$.extend(true,settings,controlOptions);
			for(var i in controlOptions)
			{
				settings[i] = "";
			}

			var $formObj = $("#"+formid);
			var count = $.RegPlugin.getJsonLength(settings);
			
			for(var i in settings)
			{
				//确认为已经验证的状态
				var temp= $formObj.find($("#"+i)).get(0);
				settings[i] = $formObj.find($("#"+i)).attr("value");
			}
			$.ajax(
			  {
				  url:"http://gwpassport.woniu.com/v2/registration",
				  type : "GET",
				  dataType : "jsonp",
				  data :settings,
				  jsonp:"jsoncallback",
				  success : function(data, textStatus, jqXHR)
				  {
					  //解析出来的结果 执行不同的行为
					  switch(data.msgcode)
					  {
							case 3002:
								  //没有提交正确的参数
								  alert("没有提交正确的参数");
								  break;
							case 2020:
							  	  alert("真实姓名不符合规则");break;
							case 2014:
							  	  alert("真实姓名已被占用");break;
							case 2001:
								  //显示用户名已经被使用
								  sucSettings.lastCheck = false;
								  sucSettings.onFocus = msgArray[7] ;
								  sucSettings.onError = msgArray[7] ;
								  $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),sucSettings);
								  //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
								  $.RegPlugin.showDiv(sucSettings.id,styleCss[6]);//错误的消息
								  $.RegPlugin.setWrongCss(sucSettings.id,styleCss[1]);//错误的css	
								  return ;
								  break;
							case 1010:
								  //显示用户名可以使用
								$.RegPlugin.setCookie("username",settings.username,1);//cookies
								//注册成功页面跳转
								window.location.href = "http://dg.woniu.com/static/register/welcome.html";
								break;
							default:
								alert(data.tip);break;
					  }
					  //遇到额外的状态之后，在进行处理
				  },
				  error : function(jqXHR, textStatus, errorThrown)
				  {
					  //可以增加网络检测服务
					  //确定服务端肯定不当机
					  //然后确定本地网络通讯出现异常
					  alert(textStatus);
					  switch(textStatus)
					  {
						  case "404":
							  //todo
							  //图层的隐藏、说明消息
							  break;
					  }
				  }		
			  })
		},
		sendFormLess : function(formid,controlOptions)
		{
			//预留的参数
			var settings = 
				{
				username : "",
				password : "",
				rpwd : ""
//				realname : "",
//				identity : "",
//				agree : ""				
			};

//			for(var i in controlOptions)
//			{
//				settings[i] = "";
//			}

			var $formObj = $("#"+formid);
			var count = $.RegPlugin.getJsonLength(settings);

			//
			for(var i in settings)
			{
				//确认为已经验证的状态
				var temp= $formObj.find($("#"+i)).get(0);

				if(temp.settings[0].lastCheck)
				{
					settings[i] = $formObj.find($("#"+i)).attr("value");
				}
				else
				{
					switch(i)
					{
						case "username": alert("请填写用户名");break;
						case "password": alert("请填写密码");break;
						case "rpwd": alert("请确保密码正确");break;
//						case "realname": alert("请填写真实姓名");break;
//						case "identity": alert("请填写身份证");break;
//						case "agree":alert("请选择接受协议");break;
					}
					return false;
				}
			}
			controlOptions = controlOptions || {};
			//过滤步骤
			$.extend(true,settings,controlOptions);
			for(var i in controlOptions)
			{
				settings[i] = "";
			}

			var $formObj = $("#"+formid);
			var count = $.RegPlugin.getJsonLength(settings);
			
			for(var i in settings)
			{
				//确认为已经验证的状态
				var temp= $formObj.find($("#"+i)).get(0);
				settings[i] = $formObj.find($("#"+i)).attr("value");
			}
			$.ajax(
			  {
				  url:"http://gwpassport.woniu.com/v2/registration",
				  type : "GET",
				  dataType : "jsonp",
				  data :settings,
				  jsonp:"jsoncallback",
				  success : function(data, textStatus, jqXHR)
				  {
					  //解析出来的结果 执行不同的行为
					  switch(data.msgcode)
					  {
							  case 3002:
								  //没有提交正确的参数
								  alert("没有提交正确的参数");
								  break;
							  case 2020:
							  	  alert("真实姓名不符合规则");break;
							  case 2014:
							  	  alert("真实姓名已被占用");break;
							  case 2001:
								  //显示用户名已经被使用
								  //sucSettings.lastCheck = false;
//								  sucSettings.onFocus = msgArray[7] ;
//								  sucSettings.onError = msgArray[7] ;
//								  $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),sucSettings);
//								  //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
//								  $.RegPlugin.showDiv(sucSettings.id,styleCss[6]);//错误的消息
//								  $.RegPlugin.setWrongCss(sucSettings.id,styleCss[1]);//错误的css	
//								  return ;
								  alert("显示用户名已经被使用");
								  break;
							  case 1010:
								  //显示用户名可以使用
								$.RegPlugin.setCookie("username",settings.username,1);//cookies
								//注册成功页面跳转
								window.location.href = "http://dg.woniu.com/static/register/welcome.html";
								break;
							default:
								alert(data.tip);break;
					  }
					  //遇到额外的状态之后，在进行处理
				  },
				  error : function(jqXHR, textStatus, errorThrown)
				  {
					  //可以增加网络检测服务
					  //确定服务端肯定不当机
					  //然后确定本地网络通讯出现异常
					  alert(textStatus);
					  switch(textStatus)
					  {
						  case "404":
							  //todo
							  //图层的隐藏、说明消息
							  break;
					  }
				  }		
			  })
		},
		sendLogForm : function(formid,controlOptions)
		{
			//预留的参数
			var settings = 
				{
				logusername : "",
				logpassword : ""		
			};

			for(var i in controlOptions)
			{
				settings[i] = "";
			}

			var $formObj = $("#"+formid);
			var count = $.RegPlugin.getJsonLength(settings);

			//
			for(var i in settings)
			{
				//确认为已经验证的状态
				var temp= $formObj.find($("#"+i)).get(0);

				if(temp.settings[0].lastCheck)
				{
					settings[i] = $formObj.find($("#"+i)).attr("value");
				}
				else
				{
					switch(i)
					{
						case "logusername": alert("请填写用户名");break;
						case "logpassword": alert("请填写密码");break;
					}
					return false;
				}
			}
			controlOptions = controlOptions || {};
			//过滤步骤
			$.extend(true,settings,controlOptions);
			for(var i in controlOptions)
			{
				settings[i] = "";
			}

			var submitSettings = 
			{
				username : "",
				password : ""
			};
			submitSettings["username"] = settings["logusername"];
			submitSettings["password"] = settings["logpassword"];
			 $.ajax(
			  {
				  url:"http://gwpassport.woniu.com/v2/login",
				  type : "POST",
				  dataType : "jsonp",
				  data :submitSettings,
				  jsonp:"jsoncallback",
				  success : function(data, textStatus, jqXHR)
				  {
					  //解析出来的结果 执行不同的行为
					  switch(data.msgcode)
					  {
							  case 3004:
								alert("没有提交正确的参数 密码");
								break;
							  case 3003:
								alert("没有提交正确的参数 用户名");
								break;
							  case 3001:
								alert("未知的错误");
								break;
							  case 2003://用户名不存在
							  	alert("用户名不存在");			  
								  break;
							  case 2002://密码错误
							  	alert("密码错误");
								  break;
							  case 1002:
									$.RegPlugin.setCookie("username",submitSettings.username,1);//cookies
									window.location.href = "http://dg.woniu.com/serverlist/";
								  //加入一些列的样式动作
								  break;
							default:
								alert(data.tip);break;
					  }
					  //遇到额外的状态之后，在进行处理
				  },
				  error : function(jqXHR, textStatus, errorThrown)
				  {
					  //可以增加网络检测服务
					  //确定服务端肯定不当机
					  //然后确定本地网络通讯出现异常
					  alert(textStatus);
					  switch(textStatus)
					  {
						  case "404":
							  //todo
							  //图层的隐藏、说明消息
							  break;
					  }
				  }		
			  });
		},
		//获取网址中的相关信息方法
		getUrlInfo : function(keyStr)
		{
			var settings = 
			{
				
			};
			
			var args = new Object();
			var urlInfo = window.location.search.substring(1);//获取问号后面的字符串
			//如果没有带参数
			if(urlInfo == "")
			{
				return "none";	
			}
			var urlArray = urlInfo.split("&");//分割每一个键值对进入数组
			var urlLength = urlArray.length;
			for (var i=0; i<urlLength;i++)
			{
				var position = urlArray[i].indexOf("=");//获得等号的位置
				
				if(position == -1) //如果没有找到符号
				{
					continue;	
				}
				
				var key = urlArray[i].substring(0,position);//截取字符串的key
				var value = urlArray[i].substring(position+1);//截取字符串的value
				
				args[key] = unescape(value);//装入数据中
			}
				
			for(var i in args)
			{
				if(i == keyStr)
				{
					if(args[i] != "")
					{
						return args[i];	
					}
					else
					{
						return "none";	
					}	
				}
			}
		},
		//控件关注默认值清楚
		defaultValueClear : function(id,str)
		{
			var checkString = $("#"+id).attr("value");//获得默认值
			var tagString = "";//空白字符串
			if(checkString == str)//如果值默认的字符串
			{
				$("#"+id).val(tagString);//清空
			}
		},
		//判断是否是弱密码
		isPasswordLow:function(str)
		{
			var v = str;//赋值给验证
			for (var i = 1,c = [v.charCodeAt(0)],cd = [v.charCodeAt(0)],cu = [v.charCodeAt(0)]; i < v.length; i += 1) {
				cd[i] = cd[i - 1] - 1;
				cu[i] = cu[i - 1] + 1;
				c[i] = v.charCodeAt(i);
			}
			c = c.join(":");
			if (c == cd.join(":") || c == cu.join(":")) 
			{						
				return false;
			}
			//弱密码正则
			if (/^(\w)\1*$/.test(v)) 
			{
				return false;
			}
			return true;
		},
		//判断是否是电话号码
		isMobel:function(value)
		{
			if(/^13\d{9}$/g.test(value)||(/^15[0-35-9]\d{8}$/g.test(value))|| (/^18[05-9]\d{8}$/g.test(value)))
			{ return true; }
			else
			{ return false; }
		}	
	};
	$.fn.RegPlugin = function(controlOptions)
	{
		//执行参数列表和表
		var settings = 
			{	
			id : "",//保存id
			regexString : "",//自定义正则表达式
			checkString : "",//被检测的值
			checkType : "",//测试类型
			onSuccess : "",//验证成功消息
			onError : "",//验证失败消息
			onFocus : "",//设置获得焦点事件消息
			min : 0,
			max : 9,
			relatedId : "",
			lastCheck : false//最后一次
		};

		controlOptions = controlOptions || {}; 
		$.extend(true,settings,controlOptions);//最后一个也可以进行临时补值，但是不推荐

		var $jqObject = $(this);
		var element = $jqObject.get(0);
		settings.id = $jqObject.attr("id");//获得id
		settings.checkString = $jqObject.attr("value");;//获得被检测的值
		$.extend(true,settings,element.settings[0]);

		//所有的参数都配置好了进行最后执行
		switch(settings.checkType)
		{
			//中文姓名
			case "nameCheck":
				$(this).unbind("focus").bind("focus",function()
				{
					var settings = $(this).get(0).settings[0];//取得dom中最新的参数列表
					if(settings.showNum>0)
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
					}
					else
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
						$("#P"+settings.id).removeClass();
						settings.showNum = 1;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
					}
				});
	
				//失去焦点检测被显示结果			
				$(this).bind("blur",function()
				{			  	
					settings.checkString = $(this).attr("value");//获得被检测的值
					settings.lastCheck = false;
					//测试长度和短度
					var tempLength = $.RegPlugin.getLength(settings.id);
					if(tempLength==0)
					{
						settings.onFocus = msgArray[20] ;
						settings.onError = msgArray[20] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[13]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					//测试长短，提示信息
					if(tempLength>2 && tempLength <= 10)
					{
						settings.lastCheck = true;
					}
					else
					{
						settings.onFocus = msgArray[23] ;
						settings.onError = msgArray[23] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[14]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					//检测正则
					if($.RegPlugin.regexCheck(settings.regexString,settings.checkString))//进行模式匹配
					{
						 settings.lastCheck = true;
						 settings.onFocus = msgArray[22] ;
						 settings.onError = msgArray[22] ;
						 $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						 //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						 $.RegPlugin.showDiv(settings.id,styleCss[16]);//错误的消息
						 $.RegPlugin.setRightCss(settings.id,styleRight[0]);//正确的css							
					}
					else
					{
						settings.lastCheck = false;
						settings.onFocus = msgArray[24] ;
						settings.onError = msgArray[24] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[15]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}			
				});
				break;
			//密码长度的检测
			case "inputCheck" : 
				$(this).unbind("focus").bind("focus",function()
				{
					var settings = $(this).get(0).settings[0];//取得dom中最新的参数列表
					if(settings.showNum>0)
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
					}
					else
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
						$("#P"+settings.id).removeClass();
						settings.showNum = 1;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
					}
				});
		
				//失去焦点检测被显示结果			
				$(this).bind("blur",function()
				{			  	
					settings.checkString = $(this).attr("value");//获得被检测的值
					settings.lastCheck = false;
					//测试长度和短度
					var tempLength = $.RegPlugin.getLength(settings.id);
					//测试长短，提示信息
					if(tempLength == 0)
					{
						settings.onFocus = msgArray[14] ;
						settings.onError = msgArray[14] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[7]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					if(tempLength>=settings.min && tempLength <= settings.max)
					{
						settings.lastCheck = true;
					}
					else
					{
						settings.onFocus = msgArray[3];
						settings.onError = msgArray[3];
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						$.RegPlugin.showDiv(settings.id,styleCss[2]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					//正则匹配
					if(!$.RegPlugin.isPasswordLow(settings.checkString))
					{
						settings.lastCheck = false;
						settings.onFocus = msgArray[17];
						settings.onError = msgArray[17];
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						$.RegPlugin.showDiv(settings.id,styleCss[10]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					if($.RegPlugin.regexCheck(settings.regexString,settings.checkString) && settings.lastCheck)
					{
						 settings.lastCheck = true;
						 settings.onFocus = msgArray[15] ;
						 settings.onError = msgArray[15] ;
						 $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						 //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						 $.RegPlugin.showDiv(settings.id,styleCss[8]);//错误的消息
						 $.RegPlugin.setRightCss(settings.id,styleRight[0]);//正确的css	
					}
					else
					{
						settings.lastCheck = false;
						settings.onFocus = msgArray[16];
						settings.onError = msgArray[16];
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						$.RegPlugin.showDiv(settings.id,styleCss[9]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}	
					
					//密码强度判断机制
							
				});
				//重新
				$(this).change(function()
				{
					if($("#"+settings.relatedId).attr("value") == "")
					{}else
					{
						$("#"+settings.relatedId).trigger("blur");	
					}
				});
				break;
			case "compareCheck":
				$(this).unbind("focus").bind("focus",function()
				{
					var settings = $(this).get(0).settings[0];//取得dom中最新的参数列表
					if(settings.showNum>0)
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
					}
					else
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
						$("#P"+settings.id).removeClass();
						settings.showNum = 1;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
					}
				});
		
				//失去焦点检测被显示结果			
				$(this).bind("blur",function()
				{		
					settings.checkString = $(this).attr("value");//获得被检测的值
					settings.lastCheck = false;
					//测试长度和短度
					var tempLength = $.RegPlugin.getLength(settings.id);
					//测试长短，提示信息
					if(tempLength == 0)
					{
						settings.onFocus = msgArray[18] ;
						settings.onError = msgArray[18] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[11]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					//
					if(settings.checkString == $("#"+settings.relatedId).attr("value"))
					{
						settings.lastCheck = true;
						settings.onFocus = "";
						settings.onError = "";
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleRight[8]);//错误的消息
						$.RegPlugin.setRightCss(settings.id,styleRight[0]);//正确的css	
					}
					else
					{
						settings.onFocus = msgArray[19] ;
						settings.onError = msgArray[19] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[12]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}		
				});
				break;
			case "idCheck":
				$(this).unbind("focus").bind("focus",function()
				{
					var settings = $(this).get(0).settings[0];//取得dom中最新的参数列表
					//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
					if(settings.showNum>0)
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
					}
					else
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
						$("#P"+settings.id).removeClass();
						settings.showNum = 1;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
					}
				});
		
				//失去焦点检测被显示结果			
				$(this).bind("blur",function()
				{			  	
					settings.checkString = $(this).attr("value");//获得被检测的值
					settings.lastCheck = false;
					//测试长度和短度
					var tempLength = $.RegPlugin.getLength(settings.id);
					//测试长短，提示信息
					if(tempLength == 0)
					{
						settings.onFocus = msgArray[20] ;
						settings.onError = msgArray[20] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[25]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					if(tempLength == 15)
					{
						if( id15To18(settings.checkString) == false)
						{
							settings.lastCheck = false;
							settings.onFocus = msgArray[27];
							settings.onError = msgArray[27];
							$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
							$.RegPlugin.showDiv(settings.id,styleCss[17]);//错误的消息
							$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
							return ;
						}
						else
						{
							settings.checkString = id15To18(settings.checkString) ;
							settings.lastCheck = true;
						}
					}
					if(tempLength == 18 || settings.lastCheck)
					{
						settings.lastCheck = true;
					}
					else
					{
						settings.lastCheck = false;
						settings.onFocus = msgArray[28];
						settings.onError = msgArray[28];
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						$.RegPlugin.showDiv(settings.id,styleCss[18]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					//测试正则
					var tempR = isCardID(settings.checkString);
					if(typeof tempR == "string")
					{
						settings.lastCheck = false;
						settings.onFocus = tempR;
						settings.onError = tempR;
						msgArray[29] = tempR;
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						$.RegPlugin.showDiv(settings.id, {strMessage:tempR,"background-color":"#000000", "color":"#FFF"});//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					else if (settings.lastCheck)
					{
						settings.lastCheck = true;
						settings.onFocus = "";
						settings.onError = "";
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleRight[20]);//错误的消息
						$.RegPlugin.setRightCss(settings.id,styleRight[0]);//正确的css	
					}
		
				});
		
				break;
			case "boxCheck":				
				$(this).unbind("click").bind("click",function()
				{	
					//检测的值
					if($("#"+settings.id).get(0).checked)
					{
						settings.lastCheck = true;
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						//$.RegPlugin.showDiv(settings.id,styleRight[0]);
						$("#"+settings.id).css({"border-color":"#18C7FF"});	
						//alert("选中");
						//return ;
					}
					else
					{
						settings.lastCheck = false;
						settings.onFocus = "要记得给它打钩";
						settings.onError = "要记得给它打钩";
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						//$.RegPlugin.showDiv(settings.id,styleCss[21]);//错误的消息
						//$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css
						$("#"+settings.id).css({"border-color":"#F00"});	
						//alert("未选中");
						//return ;
					}			
				});	
				break;
			  case "logusernameCheck":
			  $(this).unbind("focus").focus(function()
				{
					var settings = $(this).get(0).settings[0];//取得dom中最新的参数列表
					if(settings.showNum>0)
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
					}
					else
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
						$("#P"+settings.id).removeClass();
						settings.showNum = 1;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
					}
				});	
				//绑定失去焦点事件		
				$(this).unbind("blur").blur(function()
				{
					settings.username = $(this).attr("value");//获得用户名
					settings.checkString = settings.username;
					$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);//传入dom中
					
					//恢复默认不合法
					settings.lastCheck = false;
					var $jqObject = $(this);
					//测试长短
					var tempLength = $.RegPlugin.getLength(settings.id);
					//测试长度检测可以再进行细分
			
					//比如说0 就是未填
					if(tempLength == 0)
					{
						settings.onFocus = msgArray[2] ;
						settings.onError = msgArray[2] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[0]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
				
					//长度不合适
					if(tempLength>=settings.min && tempLength <= settings.max)
					{
						settings.lastCheck = true;
					}
					else
					{
						settings.onFocus = msgArray[3] ;
						settings.onError = msgArray[3] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[2]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
			
				  //正则判断
				  if($.RegPlugin.regexCheck(regexEnum.num,settings.checkString))
				  {
						settings.onFocus = msgArray[4] ;
						settings.onError = msgArray[4] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[3]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
				  }	
				  if($.RegPlugin.regexCheck(settings.regexString,settings.checkString) && settings.lastCheck)
				  {
					  settings.lastCheck = true;
					  settings.onFocus = msgArray[5] ;
					  settings.onError = msgArray[5] ;
					  $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
					  //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
					  $.RegPlugin.showDiv(settings.id,styleCss[5]);//错误的消息
					  $.RegPlugin.setRightCss(settings.id,styleRight[1]);//正确的css	
				  }
				  else if($.RegPlugin.regexCheck(regexEnum.email,settings.checkString) && settings.lastCheck)
				  {
					  settings.lastCheck = true;
					  settings.onFocus = msgArray[5] ;
					  settings.onError = msgArray[5] ;
					  $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
					  //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
					  $.RegPlugin.showDiv(settings.id,styleCss[5]);//错误的消息
					  $.RegPlugin.setRightCss(settings.id,styleRight[1]);//正确的
				  }
				  else
				  {
						settings.lastCheck = false;
						settings.onFocus = msgArray[6] ;
						settings.onError = msgArray[6] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[4]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
				  }	
				});
			  break;
			  case "logpasswordCheck":
			  $(this).unbind("focus").bind("focus",function()
				{
					var settings = $(this).get(0).settings[0];//取得dom中最新的参数列表
					if(settings.showNum>0)
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
					}
					else
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
						$("#P"+settings.id).removeClass();
						settings.showNum = 1;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
					}
				});
		
				//失去焦点检测被显示结果			
				$(this).bind("blur",function()
				{			  	
					settings.checkString = $(this).attr("value");//获得被检测的值
					settings.lastCheck = false;
					//测试长度和短度
					var tempLength = $.RegPlugin.getLength(settings.id);
					//测试长短，提示信息
					if(tempLength == 0)
					{
						settings.onFocus = msgArray[14] ;
						settings.onError = msgArray[14] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[7]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					if(tempLength>=settings.min && tempLength <= settings.max)
					{
						settings.lastCheck = true;
					}
					else
					{
						settings.onFocus = msgArray[3];
						settings.onError = msgArray[3];
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						$.RegPlugin.showDiv(settings.id,styleCss[2]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					//正则匹配
					if(!$.RegPlugin.isPasswordLow(settings.checkString))
					{
						settings.lastCheck = false;
						settings.onFocus = msgArray[17];
						settings.onError = msgArray[17];
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						$.RegPlugin.showDiv(settings.id,styleCss[10]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					if($.RegPlugin.regexCheck(settings.regexString,settings.checkString) && settings.lastCheck)
					{
						 settings.lastCheck = true;
						 settings.onFocus = msgArray[15] ;
						 settings.onError = msgArray[15] ;
						 $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						 //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						 $.RegPlugin.showDiv(settings.id,styleCss[8]);//错误的消息
						 $.RegPlugin.setRightCss(settings.id,styleRight[0]);//正确的css	
					}
					else
					{
						settings.lastCheck = false;
						settings.onFocus = msgArray[16];
						settings.onError = msgArray[16];
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						$.RegPlugin.showDiv(settings.id,styleCss[9]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}	
					
					//密码强度判断机制
							
				});
			  break;
			  case "telCheck":
				$(this).unbind("focus").bind("focus",function()
				{
					var settings = $(this).get(0).settings[0];//取得dom中最新的参数列表
					if(settings.showNum>0)
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
					}
					else
					{
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
						if(settings.lastCheck)
						{
							
						}
						else
						{
							$.RegPlugin.showDiv(settings.id,{strMessage:settings.onError});
						}
						$("#P"+settings.id).removeClass();
						settings.showNum = 1;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
					}
				});
		
				//失去焦点检测被显示结果			
				$(this).bind("blur",function()
				{			  	
					settings.checkString = $(this).attr("value");//获得被检测的值
					settings.lastCheck = false;
					//测试长度和短度
					var tempLength = $.RegPlugin.getLength(settings.id);
					//测试长短，提示信息
					if(tempLength == 0)
					{
						settings.onFocus = msgArray[32] ;
						settings.onError = msgArray[32] ;
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleCss[22]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
					//测试正则
					var tempR = $.RegPlugin.isMobel(settings.checkString);
					if(tempR)
					{
						settings.lastCheck = true;
						settings.onFocus = "";
						settings.onError = "";
						$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),settings);
						//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						$.RegPlugin.showDiv(settings.id,styleRight[20]);//错误的消息
						$.RegPlugin.setRightCss(settings.id,styleRight[0]);//正确的css	
					}
					else
					{
						settings.onFocus = msgArray[34];
						settings.onError = msgArray[34];
						$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
						$.RegPlugin.showDiv(settings.id,styleCss[24]);//错误的消息
						$.RegPlugin.setWrongCss(settings.id,styleCss[1]);//错误的css	
						return ;
					}
				});
				break;		
		}
	};
//负责相关输入检测 主要是长度控制
$.fn.inputCheck = function(controlOptions)
{
	//长度的默认值
	var settings = 
		{
		min : 6,
		max : 25,
		checkType : "inputCheck"//检测类型
	};

	controlOptions = controlOptions || {};//消除undefined
	$.extend(true,settings,controlOptions);//参数赋值

	$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
	return  $(this);
};
//负责比较检测， 主要是指明相关id
$.fn.compareCheck = function(controlOptions)
{ 
	var settings = 
		{
		relatedId : "",
		checkType : "compareCheck"
	};
	
	controlOptions = controlOptions || {};
	$.extend(true,settings,controlOptions);
	
	$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
	return  $(this);
};
//
$.fn.nameCheck = function(controlOptions)
{
	var settings = 
		{
		relatedId : "",
		checkType : "nameCheck"
	};

	controlOptions = controlOptions || {};
	$.extend(true,settings,controlOptions);
	
	$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
	return  $(this);
};
$.fn.idCheck = function(controlOptions)
{
	var settings = 
		{
		relatedId : "",
		checkType : "idCheck"
	};
	
	controlOptions = controlOptions || {};
	$.extend(true,settings,controlOptions);
	
	$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
	return  $(this);
};
$.fn.logusernameCheck = function(controlOptions)
{
	var settings = 
		{
		relatedId : "",
		checkType : "logusernameCheck"
	};
	
	controlOptions = controlOptions || {};
	$.extend(true,settings,controlOptions);
	
	$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
	return  $(this);
};
$.fn.logpasswordCheck = function(controlOptions)
{
	var settings = 
		{
		relatedId : "",
		checkType : "logpasswordCheck"
	};
	
	controlOptions = controlOptions || {};
	$.extend(true,settings,controlOptions);
	
	$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
	return  $(this);
};
$.fn.telCheck = function(controlOptions)
{
	var settings = 
		{
		checkType : "telCheck",
		lastCheck:false
	};
	
	controlOptions = controlOptions || {};
	$.extend(true,settings,controlOptions);
	
	$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
	return  $(this);
};
//负责初始化部件，特别是错误消息框
$.fn.initCheck = function(controlOptions)
{
	//设置参数
	var settings = 
	{
		id : "",
		onSuccess : "",//验证成功消息
		onError : "",//验证失败消息
		onFocus : "",//设置获得焦点事件消息
		checkType : "initCheck",
		lastCheck : false,//验证机制
		msgID : "",
		showNum:0
	};
	
	controlOptions = controlOptions || {};
	$.extend(true,settings,controlOptions);
	
	//增加控件的id，然后是控件的消息框为G+Message
	settings.id= $(this).attr("id");
	settings.msgID = "G"+settings.id ;//构造成相关的，例如Gaccount

	//单个消息对话框，每个控件都对应一个
	var $msgDIV = $("<div id='"+settings.msgID+"'></div>");//生成一个div
	var strHTML = $msgDIV.get(0);//dom
	$("body").append(strHTML);//增加到整个页面里面去
	
	//从这里开始可以增加控件相应的messagebox的样式
	//修饰的步骤的有如下的几个
	//a重新构造box的边框样式
	//b为这个边框获得一套模板话化的图片的皮肤
	//c皮肤的标准化

	$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
	return  $(this);		
};
//负责初始化不需要初始化的控件
$.fn.initRightCheck = function(controlOptions)
{
	var settings = 
		{
		onSuccess : "验证通过",//验证成功消息
		onError : "验证失败",//验证失败消息
		onFocus : "您需要填写相关信息",//设置获得焦点事件消息
		checkType : "initCheck",
		lastCheck : true//最后一次
	};
	
	controlOptions = controlOptions || {};
	$.extend(true,settings,controlOptions);
	
	$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
	return  $(this);
};
$.fn.boxCheck = function(controlOptions)
{
	var settings = 
		{
		checkType : "boxCheck",
		lastCheck:true	
	};
	
	controlOptions = controlOptions || {};
	$.extend(true,settings,controlOptions);
	
	$.RegPlugin.appendCheckSetiings($(this).attr("id"),settings);
	return  $(this);
};
//用户名失去焦点立即检测
$.fn.sendUsernameCheck = function(controlOptions)
{
	//搜集的提交参数
	var sucSettings = 
	{
		username	:""//用户名称
	};
	//最后进入settings参数数组的序列
	controlOptions = controlOptions || {};
	$.extend(true,sucSettings,controlOptions);
	
	var $username = $(this);
	var element = $username.get(0);
	$.extend(true,sucSettings,element.settings[0]);
	$.RegPlugin.appendCheckSetiings($(this).attr("id"),sucSettings);//把最后一批参数传入控件的dom
	//绑定获得焦点事件
	$(this).unbind("focus").focus(function()
	{
		var sucSettings = $(this).get(0).settings[0];//取得dom中最新的参数列表
		if(sucSettings.showNum>0)
		{
			//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
			if(sucSettings.lastCheck)
			{
				
			}
			else
			{
				$.RegPlugin.showDiv(sucSettings.id,{strMessage:sucSettings.onError});
			}
		}
		else
		{
			//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 C.根据控件的结果地址 判断是否更换输入框的底图
			if(sucSettings.lastCheck)
			{
				
			}
			else
			{
				$.RegPlugin.showDiv(sucSettings.id,{strMessage:sucSettings.onError});
			}
			$("#P"+sucSettings.id).removeClass();
			sucSettings.showNum = 1;
			$.RegPlugin.appendCheckSetiings($(this).attr("id"),sucSettings);
		}
	});	
	//绑定失去焦点事件		
	$(this).unbind("blur").blur(function()
	{
		sucSettings.username = $username.attr("value");//获得用户名
		sucSettings.checkString = sucSettings.username;
		$.RegPlugin.appendCheckSetiings($(this).attr("id"),sucSettings);//传入dom中
		
		//恢复默认不合法
		sucSettings.lastCheck = false;
		var $jqObject = $(this);
		//测试长短
		var tempLength = $.RegPlugin.getLength(sucSettings.id);
		//测试长度检测可以再进行细分

		//比如说0 就是未填
		if(tempLength == 0)
		{
			sucSettings.onFocus = msgArray[2] ;
			sucSettings.onError = msgArray[2] ;
			$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),sucSettings);
			//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
			$.RegPlugin.showDiv(sucSettings.id,styleCss[0]);//错误的消息
			$.RegPlugin.setWrongCss(sucSettings.id,styleCss[1]);//错误的css	
			return ;
		}
	
		//长度不合适
		if(tempLength>=sucSettings.min && tempLength <= sucSettings.max)
		{
			sucSettings.lastCheck = true;
		}
		else
		{
			sucSettings.onFocus = msgArray[3] ;
			sucSettings.onError = msgArray[3] ;
			$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),sucSettings);
			//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
			$.RegPlugin.showDiv(sucSettings.id,styleCss[2]);//错误的消息
			$.RegPlugin.setWrongCss(sucSettings.id,styleCss[1]);//错误的css	
			return ;
		}

	  //正则判断
	  if($.RegPlugin.regexCheck(regexEnum.num,sucSettings.checkString))
	  {
		  	sucSettings.lastCheck = false;
			sucSettings.onFocus = msgArray[4] ;
			sucSettings.onError = msgArray[4] ;
			$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),sucSettings);
			//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
			$.RegPlugin.showDiv(sucSettings.id,styleCss[3]);//错误的消息
			$.RegPlugin.setWrongCss(sucSettings.id,styleCss[1]);//错误的css	
			return ;
	  }	
	  if($.RegPlugin.regexCheck(sucSettings.regexString,sucSettings.checkString) && sucSettings.lastCheck)
	  {
		  sucSettings.lastCheck = true;
		  sucSettings.onFocus = msgArray[5] ;
		  sucSettings.onError = msgArray[5] ;
		  $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),sucSettings);
		  //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
		  $.RegPlugin.showDiv(sucSettings.id,styleCss[5]);//错误的消息
		  $.RegPlugin.setRightCss(sucSettings.id,styleRight[1]);//正确的css	
	  }
	  else if($.RegPlugin.regexCheck(regexEnum.email,sucSettings.checkString) && sucSettings.lastCheck)
	  {
		  //sucSettings.lastCheck = true;
		  sucSettings.onFocus = msgArray[5] ;
		  sucSettings.onError = msgArray[5] ;
		  $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),sucSettings);
		  //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
		  //$.RegPlugin.showDiv(sucSettings.id,styleCss[5]);//错误的消息
		  //$.RegPlugin.setRightCss(sucSettings.id,styleRight[1]);//正确的
	  }
	  else
	  {
		 	sucSettings.lastCheck = false;
			sucSettings.onFocus = msgArray[6] ;
			sucSettings.onError = msgArray[6] ;
			$.RegPlugin.appendCheckSetiings($jqObject.attr("id"),sucSettings);
			//显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
			$.RegPlugin.showDiv(sucSettings.id,styleCss[4]);//错误的消息
			$.RegPlugin.setWrongCss(sucSettings.id,styleCss[1]);//错误的css	
			return ;
	  }	
	   //ajax验证提交
	  var ajaxSubmit = { username:""};
	  ajaxSubmit.username = sucSettings.username;
	  $.ajax(
	  {
		  url:"http://gwpassport.woniu.com/v2/checkusername",
		  type : "GET",
		  dataType : "jsonp",
		  data :ajaxSubmit,
		  jsonp:"jsoncallback",
		  success : function(data, textStatus, jqXHR)
		  {
			  //解析出来的结果 执行不同的行为
			  switch(data.msgcode)
			  {
					  case 3002:
					  	  //没有提交正确的参数
						  alert("没有提交正确的参数");
						  break;
					  case 2001:
					  	  //显示用户名已经被使用
						  sucSettings.lastCheck = false;
						  sucSettings.onFocus = msgArray[7] ;
						  sucSettings.onError = msgArray[7] ;
						  $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),sucSettings);
						  //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						  $.RegPlugin.showDiv(sucSettings.id,styleCss[6]);//错误的消息
						  $.RegPlugin.setWrongCss(sucSettings.id,styleCss[1]);//错误的css	
						  return ;
						  break;
					  case 1001:
					  	  //显示用户名可以使用
					  	  //todo
						  sucSettings.lastCheck = true;
						  sucSettings.onFocus = msgArray[5] ;
						  sucSettings.onError = msgArray[5] ;
						  $.RegPlugin.appendCheckSetiings($jqObject.attr("id"),sucSettings);
						  //显示相关的样式：A.输入框显示红色 B.显示左边的提示消息 	
						  $.RegPlugin.showDiv(sucSettings.id,styleCss[5]);//错误的消息
						  $.RegPlugin.setRightCss(sucSettings.id,styleRight[1]);//错误的css	
						break;
			  }
			  //遇到额外的状态之后，在进行处理
		  },
		  error : function(jqXHR, textStatus, errorThrown)
		  {
			  //可以增加网络检测服务
			  //确定服务端肯定不当机
			  //然后确定本地网络通讯出现异常
			  alert(textStatus);
			  switch(textStatus)
			  {
				  case "404":
					  //todo
					  //图层的隐藏、说明消息
					  break;
			  }
		  }		
	  });
	});	
	return $(this);//连缀机制
};
//为了兼容ie6所以把jQuery.RegPlugin.initConfig()转化为jQuery().initConfig()
$.fn.initConfig = function(controlOptions)
{
	
	var settings = 
	{
		debug : false,//调试模式
		checkGroup : 1,//全局参数编号
		wideWord : true//宽字符
	};
	
	controlOptions = controlOptions || {};
	$.extend(settings,controlOptions);//给默认参数赋值，并且不给深度拷贝测试
	
	if(PRList == null)
	{
		PRList = new Array();	
	}
	PRList.push(settings);
	
	//生成全局显示消息框 利用于全局的生成
	//			var $msgDIV = $("<div id='GMessage'></div>");//生成一个div
	//			var strHTML = $msgDIV.get(0);//dom
	//			$("body").append(strHTML);//增加到全局	
};
//增加某个控件的值，这个值是加入控件的dom的value中
$.fn.addValue = function(addStr)
{
	//排除获取参数失败的值
	if(addStr != "none")
	{
		$(this).attr("value",addStr);
	}
	
	return $(this); 
};
})(jQuery);
