function getStringLength(str)
{
	var i = 0;
	var j = 0;//string length
	while(i < str.length)
	{
		if(str.charCodeAt(i) > 0xA0)
		{
		j += 2;
		}
		else
		{
		j++;
		}
		i++;
	}
	return j;
}
function Trim(x){
	x = x.replace (/\s/ig,'');
	return x;
}
function onCheckName()
{
	 var loginname = $("loginName").value;
	 if(loginname =='')
	 {
	    alert("您输入的用户名不能为空！");
		return false;
	 }
	 if(!checkName(loginname))
     {
        alert("用户名中含有特殊字符");
     }
     else
     {
     if(getStringLength(Trim(loginname)) > 20||getStringLength(Trim(loginname)) <4)
     {
       alert("注册用户名长度为4~20位");
     }
     else
     {
		 dojo.io.bind({
			url: "../IsUserExistServlet?loginName="+loginname,
			handle: function(type, data, evt)
			{
				if(type == "load"){
					if(parseInt(data) == 1)
						alert("恭喜你，可以使用");
					else
						alert("很抱歉，请换一个名称");
				}else if(type == "error"){
					alert("通讯错误");
				}else{
				}
			},
			mimetype: "text/plain"});
		}
	}

}
/**校验用户名是否合法，用户名可以为汉字、字母、_*/
function checkName(str)
{
	var pattern_cn = /^([\u4E00-\u9FA5]|[\uFE30-\uFFA0]|[_!@#$%^&*()+|~,.?/:;{}《》\[\]\\a-zA-Z0-9]|[\s])*$/gi;
	if(str.match(pattern_cn))
	{
	return true;
	}
	else
	{
	return false;
	}
}
function onCheckEmail()
{
    var email=$("email").value;
    if(email=='')
	{
		alert("用户注册电子邮件不能为空！");
		return false;
	}
    re = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
    if(!email.match(re))
	{
		alert("邮件地址错误！");
		return false;
	}
	dojo.io.bind({
		url: "../IsEmailExistServlet?email="+email,
		handle: function(type, data, evt)
		{
			if(type == "load")
			{
				if(parseInt(data) == 1)
				{
					alert("恭喜你，可以使用");
				}
				else
				{
					alert("很抱歉,该email已经被注册，请换一个");
				}
			}
			else if(type == "error")
			{
				alert("通讯错误");
			}
			else
			{
                alert("通讯错误");
			}
		},
		mimetype: "text/plain"});
}

function checkInfo(type)
{

    var loginname = $("loginName").value;
    var email= $("email").value;
    if(loginname =='')
    {
      return "帐号不能为空！";
    }
    if(!checkName(loginname))
    {
    alert("帐号中含有特殊字符");
    }
    if(loginname == null || Trim(loginname) == "")
    {
        return "帐号不能为空！";
    }
    if(getStringLength(Trim(loginname)) > 20||getStringLength(Trim(loginname)) <4)
    {
        return "帐号长度为4~20位！";
    }

	dojo.io.bind({
		url: "../IsUserExistServlet?loginName="+loginname,
		handle: function(type, data, evt)
		{
			if(type == "load"){
				if(parseInt(data) == 0)
                  {
                      return "很抱歉，请换一个名称";
                  }
				else{              }
			}else if(type == "error"){
				return "通讯错误";
			}else{
			}
		},
		mimetype: "text/plain"});
     if(email=='')
	 {
		return "用户注册电子邮件不能为空！"
	 }
    re = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
    if(!email.match(re))
	{
		return "邮件地址错误！";
	}
	dojo.io.bind({
		url: "../IsEmailExistServlet?email="+email,
		handle: function(type, data, evt)
		{
			if(type == "load")
			{
				if(parseInt(data) == 1)
				{

				}
				else
				{
					return "很抱歉,该email已经被注册，请换一个";
				}
			}
			else if(type == "error")
			{
				return "通讯错误";
			}
			else
			{

			}
		},
		mimetype: "text/plain"});
    if($("protocol").checked==false)
	{
		return "很抱歉，你没有同意网站协议！"
	}


    var password = $("password").value;
    var password2 = $("password2").value;
    if(password == null || Trim(password) == "")
    {
        return "密码不能为空！";
    }
    if(password != password2)
    {
        return "两次输入的密码不同！";
    }
    var patrn= /^([a-zA-Z0-9]|[._*&^%$#@!]){6,20}$/;
    if(!password2.match(patrn))
	{
		return "密码格式不满足要求";
	}
	var question = $("question").value;
	if(question == null || Trim(question) == "")
	{
		return "密码问题不能为空！";
	}
	if (getStringLength(question) > 40)
	{
		return "密码问题不能超过40个字节（20个汉字）！";
	}
	//$Date:20080131 author:cailin:start
	var pwdEnpry=$F('pwdtype');
	if("MD5"==pwdEnpry)
	{
		$("password").value = MD5($("password").value);
	}
	else
	{
        $("password").value = "{SHA}"+b64_sha1($("password").value);
	}
	//$Date:20080131 author:cailin:end$

	var answer = $("answer").value;
	if(answer == null || Trim(answer) == "")
	{
		return "问题答案不能为空！";
	}
	if(getStringLength(answer) > 40)
	{
		return "密码格式有误";
	}

	var realname = $("realname").value;
	if(!checkName(realname))
    {
    return "用户昵称中含有特殊字符!";
    }
	if(realname == null || Trim(realname) == "")
	{
		return "帐号不能为空！";
	}
	if(getStringLength(realname) > 40)
	{
		return "昵称不能超过40个字节（20个汉字）！";
	}
	if(email == null || Trim(email) == "")
	{
		return "Email地址不能为空！";
	}
	if(getStringLength(email) > 100)
	{
		return "邮件地址不能超过100个字节！";
	}

	return "";
}

function submitForm()
{
    var errMsg = checkInfo();
     if(errMsg == "")
    {
       $("EncryptedAnswer").value = MD5($("answer").value);
       doReg();
    }
    else
    {
        alert(errMsg);
    }
}
/**拼装提交的用户信息*/
function createPara()
{
	var loginName=$F('loginName');
	var pwd=$F('password');
	var email=$F('email');
	var quesion=$F('question');
	var EncryptedAnswer=$F('EncryptedAnswer');
	var subsiteUrl=$F('subsiteUrl');
	var actionValue=$('form1').action;
	var sex = $F("sex");
    var province = $F("province");
    var city = $F("city");
    var quyu = $F("quyu");
    var pianqu = $F("pianqu");
    var xiaoqu = $F("xiaoqu");
    var RegUrl="";
  
    if(actionValue.indexOf('doRegNoCode.jsp')>0)
    {
        RegUrl=actionValue+"?loginName="+loginName+"&password="+UrlEncode(pwd)+"&email="+email+"&question="+quesion+"&EncryptedAnswer="+EncryptedAnswer+"&subsiteUrl="+RegUrl+"&sex="+sex+"&province="+province+"&city="+city+"&quyu="+quyu+"&pianqu="+pianqu+"&xiaoqu="+xiaoqu+"&realname="+$F('realname');    
    }
    else
    {
        RegUrl=actionValue+"?loginName="+loginName+"&password="+UrlEncode(pwd)+"&email="+email+"&question="+quesion+"&EncryptedAnswer="+EncryptedAnswer+"&subsiteUrl="+RegUrl+"&sex="+sex+"&province="+province+"&city="+city+"&quyu="+quyu+"&pianqu="+pianqu+"&xiaoqu="+xiaoqu+"&scode="+$F('scode')+"&realname="+$F('realname');   ;    
    }
    return RegUrl;
}
/**使用ajax注册*/
function doReg()
{
	xmlHttpRequest = getXMLHTTPRequest();
	var getUrl=createPara();
	sendGetRequest(xmlHttpRequest,getUrl,getSubmitValue,true);
}
function getSubmitValue()
{
  var returnStr;
  if(xmlHttpRequest.readyState != 4) 
  {
	$("loading").style.display = "block";
	$('submitButton').disabled = true;
	
  }
  if (xmlHttpRequest.readyState == 4) 
  {
		if (xmlHttpRequest.status == 200) 
		{ 
			returnStr=xmlHttpRequest.responseText.Trim();
		    errorInfo(returnStr);
	    }
  }
}
function confirmPwdCheck(divId)
{
  $(divId).style.display="none";
  var password = $("password").value;
  var password2 = $("password2").value;
  if(password != password2)
  {
    yesShowDiv(divId,'两次输入的密码不同！');
  }
  
}
/**过滤注册页面返回的注册信息，并弹出提示框*/
function errorInfo(returnStr)
{
	if(returnStr=="user")
	{
	    alert("该用户名已经存在，请换一个用户名");
	    $('loginName').value="";
	    $('loginName').focus();
	    cleanText();
	  
	}
	else if(returnStr=="useremail")
	{
	    alert("用户名和邮箱已经注册！请不要重复注册。");
	    $('loginName').value="";
	    $('email').value="";
	    cleanText();
	    
	}
	else if(returnStr=="email")
	{
	    alert("该邮箱已经被注册，请换一个邮箱");
	    $('email').value="";
	    $('email').focus();
	    cleanText();
	       
	}
	else if(returnStr=="usercode")
	{
	    alert("该用户名已经被注册且验证码不对。");
	    $('loginName').value="";
	    $('loginName').focus();
	    cleanText();
	}
	else if(returnStr=="emailcode")
	{
	    alert("该邮箱已经被注册且验证码不对。");
	    $('email').value="";
	    $('email').focus();
        cleanText();
	}
	else if(returnStr=="code")
	{
	    alert("验证码不对");
	    cleanText();
	}
	else if(returnStr=="useremailcode")
	{
	    alert("用户名和邮箱被注册，且验证码不对。");
	    $('loginName').value="";
	    $('email').value="";
	    cleanText();
	}
    else if(returnStr.indexOf("reg=truecheck&")>0)
	{
        window.location.href="/mp/sso/reg/RegSuccess.jsp?reg=truecheck&loginName="+encodeURI(encodeURI($F('loginName')))+"&email="+$F('email');
	}	
	else if(returnStr.indexOf("reg=true&")>0)
	{
        window.location.href="/mp/sso/reg/RegSuccessNoMail.jsp?reg=true&loginName="+encodeURI(encodeURI($F('loginName')))+"&email="+$F('email');
	}
}
/**恢复按钮状态、清空密码、刷新校验码*/
function cleanText()
{
  $('password').value="";
  $('password2').value="";
  $("loading").style.display = "none";
  $('submitButton').disabled = false;
  $('scode').value="";
  refreshScode();
}
function UrlEncode(str)
{
	var i,c,ret="",strSpecial="!\"#$%&'()*+,/:;<=>?@[\]^`{|}~%";
	for(i=0;i<str.length;i++)
	{
		if(str.charCodeAt(i)>=0x4e00)
		{
			c=qswhU2GB[str.charCodeAt(i)-0x4e00];
			ret+="%"+c.slice(0,2)+"%"+c.slice(-2);
	    }
		else 
		{
			c=str.charAt(i);
			if(c==" ")
			ret+="+";
			else if(strSpecial.indexOf(c)!=-1)
			ret+="%"+str.charCodeAt(i).toString(16);
			else
			ret+=c;
		}
    }
    return ret;
}
/**检验身份证是否合法并返回错误信息的字符串*/
function onCheckCidInfo()
{
   var certiId = $F('certiId');
   if(certiId == null || Trim(certiId) == "")
   {
      return "身份证号码不能为空";
   }
   if(!cidInfo(certiId))
   {
      return "身份证号码不合法";
   }
   else
   {
      var certiInfo = cidInfo(certiId);
      var userinfo = certiInfo.split(",");
      var provence = userinfo[0];
      var birth = userinfo[1];
      var sex = Number(userinfo[2]);
      var inputSex =Number($('sex').value);
      var inputBirth = $('birthday').value;
      if($('province').value != provence)
      {
         return "身份证信息与籍贯不符";
      }
      else if(birth != inputBirth)
      {
         return "身份证信息与生日不符";
      }
      else if(sex!=inputSex)
      {
         return "性别与身份证不符";
      }
      return "";
   }

}
function onCheckCid()
{
   var certiId = $F('certiId');
   if(certiId == null || Trim(certiId) == "")
   {
      return "身份证号码不能为空";
   }
   if(!cidInfo(certiId))
   {
      return "身份证号码不合法";
   }
   else
   {
      var certiInfo = cidInfo(certiId);
      var userinfo = certiInfo.split(",");
      var provence = userinfo[0];
      var birth = userinfo[1];
      var sex = Number(userinfo[2]);
      var inputSex =Number($('sex').value);
      var inputBirth = $('birthday').value;
      if($('province').value != provence)
      {
         return "身份证信息与籍贯不符";
      }
      else if(birth != inputBirth)
      {
         return "身份证信息与生日不符";
      }
      else if(sex!=inputSex)
      {
         return "性别与身份证不符";
      }
   }

}
function onCheckCid()
{
   var msg =onCheckCidInfo();
   if(msg =='')
   {
     alert("身份证信息正确");
     return true;
   }
   else
   {
     alert(msg);
     return false;
   }
}
/*检查手机号码*/
function checkTel(str)
{
	var patterntel = /^((\(\d{3}\))|(\d{3}\-))?13\d{9}|15[0123456789]\d{8}$/;
	if(str.match(patterntel))
	{
	return true;
	}
	else
	{
	return false;
	}
}
/**校验码输入错误，生成新的校验码*/
function refreshScode()
{
$('imgscode').src="../GetValidateImage?"+Math.random();;
}
