﻿// -- 全局变量定义
var strImgStop = "<img src=\"../Images/2010/account/reg/error_fuck.png\" border=\"0\" />";
var strStopClass10 = "<span class='regMsg1'>"
var strStopClass11 = "</span>"
var ajaxUserNameErr = false;
var ajaxVerifyCode2=false;	
var strImgFail = "<img src=\"../images/snake_fail.gif\" border=\"0\" />";
var strFailClass10 = "<span class='regMsg2'>"
var strFailClass11 = "</span>"

// -- main
function checkForm(){
        
		// -- 全部检查完后返回值
		var objStatus = true;
		
		// -- 必检查项
		if (!regCheckUserName(document.getElementById("username").value,"username")){
			if (objStatus)	document.getElementById("username").focus();
			objStatus = false;
		}
		if (!regCheckPass(document.getElementById("password").value,"password",document.getElementById("username").value)){
			if (objStatus)	document.getElementById("password").focus();
			objStatus = false;
		}
		if (!regCheckPwd2(document.getElementById("password2").value,"password2",document.getElementById("password").value)){
			if (objStatus)	document.getElementById("password2").focus();
			objStatus = false;
		}
		if (!regCheckEmail(document.getElementById("SafeEmail").value,"SafeEmail")){
			if (objStatus)	document.getElementById("SafeEmail").focus();
			objStatus = false;
		}
		
		// -- 选择高级用户设置选项
		var checkYinStaus = document.getElementById("checkYin").checked;
		// -- 选择注册类型
		var regTypeStatus = document.getElementById('regType').value;
		
		// -- 密保检查项
		if (regTypeStatus == '1' && checkYinStaus || regTypeStatus == '2' || regTypeStatus == '3'){
            if(!regCheckPass(document.getElementById("SafePwd").value,"SafePwd",document.getElementById("username").value)){
                if (objStatus){
                    document.getElementById("SafePwd").focus();
                    document.getElementById("SafePwd").focus();
                    }
                objStatus = false;
            }
            if(!regCheckPwd2(document.getElementById("SafePwd2").value,"SafePwd2",document.getElementById("SafePwd").value)){
                if (objStatus){
                  document.getElementById("SafePwd2").focus();
                  document.getElementById("SafePwd2").focus();
                  }
                objStatus = false;
            }            
			if (!regCheckAnswer(document.getElementById("Answer").value,"Answer")){
				if (objStatus){
					document.getElementById("Answer").focus();
					document.getElementById("Answer").focus();
				}
				objStatus = false;
			}
		}
		// -- 推荐人检查项
		//if (regTypeStatus == '1' && checkYinStaus || regTypeStatus == '2' && checkYinStaus || regTypeStatus == '3'){
		//	if (!regCheckRecommend(document.getElementById("Recommend").value,"Recommend")){
		//		if (objStatus)	document.getElementById("Recommend").focus();
		//		objStatus = false;
		//	}
		//}
		
        checkverifyCode(document.getElementById("verifyCode").value);
        checkverifyCode(document.getElementById("verifyCode").value);
	    //验证码检查
	    if(!ajaxVerifyCode2)
	    {
	        if (objStatus){
	        document.getElementById("verifyCode").focus();
	        }
	        objStatus=false;
	    }
        return objStatus;
}

function regCheckUserName(objValue,objID){
	var regCheckUserNameStatus = checkusername(objValue);
	var strErrorMsg = strImgStop + strStopClass10 + "  用户名须在6-20位字符内，由且仅由英文字母单独或者与数字混合而成，第一位须为英文字母。" + strStopClass11;
	
	if (regCheckUserNameStatus == 1)
	document.getElementById("checkresult").innerHTML = strImgStop + strStopClass10 + "  用户名不能为空。" + strStopClass11;

	// -- 2-首字母为英文字母 ， 3-只能输入英文字母或者数字 ， 11-长度在6-20个之间
	if (regCheckUserNameStatus == 2 || regCheckUserNameStatus == 3 || regCheckUserNameStatus == 11)
		document.getElementById("checkresult").innerHTML = strErrorMsg;

	if (regCheckUserNameStatus == 0){
			document.getElementById("checkresult").innerHTML = "";
			return true;
	}
	else{
			return false;
	}
}

function regCheckPass(objValue,objID,objUserName){
		var regCheckPassStatus = checkPassword(objValue,objUserName);
		var objItemMsg = objID + "ErrMsg";
		
		if (regCheckPassStatus == 1)	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  密码不能为空。" + strStopClass11;
		
		if (regCheckPassStatus == 2)	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  密码长度不能小于6个字符。" + strStopClass11;
			
		if (regCheckPassStatus == 3)	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  密码不能大于20个字符。" + strStopClass11;
			
		if (regCheckPassStatus == 4)	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  密码和用户名不能相同。" + strStopClass11;
		
		if (regCheckPassStatus == 5)	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  密码不能使用重复的数字或者字母。" + strStopClass11;
			
		if (regCheckPassStatus == 0){
				document.getElementById(objItemMsg).innerHTML = "";
				return true;
		}
		else{
				return false;
		}
}

function regCheckPwd2(objValue,objID,objPassValue){
	var regCheckPwd2Status = checkPwd2(objValue,objID,objPassValue);
	var objItemMsg = objID + "ErrMsg";
	
	if (regCheckPwd2Status == 1)	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  两次输入的密码不一致." + strStopClass11;

	if (regCheckPwd2Status == 0){
			document.getElementById(objItemMsg).innerHTML = "";
			return true;
	}
	else{
			return false;
	}
}

function regCheckEmail(objValue,objID){
	var regCheckEmailStatus = checkemail(objValue);
	var objItemMsg = objID + "ErrMsg";

	if(regCheckEmailStatus == 1)	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  安全邮箱不能为空。" + strStopClass11;
	
	if(regCheckEmailStatus == 2)	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  邮箱格式有错误。" + strStopClass11;
	
	if(regCheckEmailStatus == 0){
			document.getElementById(objItemMsg).innerHTML = "";
			return true;		
	}
	else{
			return false;
	}
}		
	
function regCheckAnswer(objValue,objID){
	var regCheckAnswerStatus = checkAnswer(objValue);
	var objItemMsg = objID + "ErrMsg";
	
	if(regCheckAnswerStatus == 1) 	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  密码问题答案不能为空。" + strStopClass11;
	
	if(regCheckAnswerStatus == 2) 	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  密码问题答案不能小于6个字符。" + strStopClass11;
	
	if(regCheckAnswerStatus == 3) 	document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  密码问题答案不能大于20个字符。" + strStopClass11;

	if(regCheckAnswerStatus == 0){
			document.getElementById(objItemMsg).innerHTML = "";
			return true;		
	}
	else{
			return false;
	}
}
		
function regCheckRecommend(objValue,objID){
	var regCheckRecStatus = CheckRecommend(objValue);
	var objItemMsg = objID + "ErrMsg";
	
	if(regCheckRecStatus == 2){
		document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  非法的用户名。" + strStopClass11;
		return false;
	}
	if(regCheckRecStatus == 1 || regCheckRecStatus == 11){
		document.getElementById(objItemMsg).innerHTML = strImgStop + strStopClass10 + "  该用户不存在。" + strStopClass11;
		return false;
	}
	if(regCheckRecStatus == 0){
		document.getElementById(objItemMsg).innerHTML = "";
		return true;
	}
	if(regCheckRecStatus != 11) document.getElementById(objItemMsg).innerHTML = strImgFail + strFailClass10 + "推荐人为:<b>" + regCheckRecStatus + "</b>!" + strFailClass11;
	return true;
}		

function ShowCheckRecommend(responseText, responseXml,Args)
{   
	var Dom = new ActiveXObject("Microsoft.XMLDOM") //建立XMLDOM对象
	Dom.loadXML(responseText);
	if(Dom.parseError.errorCode != 0){
		alert("获取信息时候发现异常，请稍后重试，谢谢！");           
	}
	else{
		var res = Dom.getElementsByTagName('result');
		var resContainer = document.getElementById("Span8");
		var result = "";
		if (res != null && res != undefined)	result = res[0].text;
		if (result == "1")		return Args;
		if (result == "2")		return 2;
		return 1;
	}
}
/* start */


//检查用户密码强度
var PasswordStrength ={
            Level : ["安全","强","一般","弱"],
            LevelValue : [80,60,50,0],//强度值
            Regex : [/[a-zA-Z]/g,/\d/g,/[^a-zA-Z0-9]/g], //字符正则数字正则其它正则
            Regex2:[/[a-z]/g,/[A-Z]/g,/([a-z]+[A-Z]+)|([A-Z]+[a-z]+)/g],//字母的规则
            Regex3:[/([a-zA-Z]+[0-9]+)|([0-9]+[a-zA-Z]+)/g,/([a-zA-Z]+[0-9]+[^a-zA-Z0-9]+)|([a-zA-Z]+[^a-zA-Z0-9]+[0-9]+)|([0-9]+[a-zA-Z]+[^a-zA-Z0-9]+)|([0-9]+[^a-zA-Z0-9]+[a-zA-Z]+)|([^a-zA-Z0-9]+[0-9]+[a-zA-Z]+)|([^a-zA-Z0-9]+[a-zA-Z]+[0-9]+)/g,/([a-z]+[A-Z]+[0-9]+[^a-zA-Z0-9]+)|([a-z]+[0-9]+[^a-zA-Z0-9]+[A-Z]+)/g]//奖励的规则
            }
PasswordStrength.StrengthValue = function(pwd)
{
    var strengthValue=0;
    if(pwd=="")
    {
        strengthValue=0;
        return strengthValue;
    }
    else if(pwd.length<=4)
    {
        strengthValue+=5;
    }
    else if(pwd.length>=5&&pwd.length<=7)
    {
        strengthValue+=10;
    }
    else if(pwd.length>=8)
    {
        strengthValue+=25;
    }
    
    for(var i=0;i<this.Regex.length;i++)
    {
        var chars=pwd.match(this.Regex[i]);
        
        if(chars!=null)
        {
            if(i==0)
            {
                var cc=0;
                  var chars_s=chars.join(''); 
                for(var j=0;j<this.Regex2.length;j++)
                {
                    
                      var chars2=chars_s.match(this.Regex2[j]);
                      if(chars2!=null)
                      {
                        if(j==0||j==1)
                            cc=10;
                        if(j==2)
                            cc=20;
                     }
                }   
                strengthValue+=parseInt(cc); 
            }
            else if(i==1)
            {
                if(chars.length==1)
                    strengthValue+=10;
                if(chars.length>=3)
                    strengthValue+=20;
            }
            else if(i==2)
            {
                if(chars.length==1)
                    strengthValue+=10;
                if(chars.length>1)
                    strengthValue+=25;
            }
        }
    }
    
    var cr=0;
    
    var chars3=pwd.match(this.Regex3[0]);

        
    if(chars3!=null) cr=2;
    
    
    chars3=pwd.match(this.Regex3[1]);


    if(chars3!=null) cr=3;
    
    
    chars3=pwd.match(this.Regex3[2]);


    if(chars3!=null) cr=5;
    
    
    strengthValue+=cr;
    return strengthValue; 
} 
PasswordStrength.StrengthLevel = function(pwd)
{
    var value = this.StrengthValue(pwd);
    for(var i = 0 ; i < this.LevelValue.length ; i ++)
    {
        if(value >= this.LevelValue[i] )
            return this.Level[i];
    }
}
function loadinputcontext( objValue,objID )
{
   var showmsg=PasswordStrength.StrengthLevel(objValue);
   switch(showmsg)
   {
	  case "弱": showmsg+=" <img src='../images/level/1.gif' width='88' height='11' />";break;
	  case "一般": showmsg+=" <img src='../images/level/2.gif' width='88' height='11' />";break;
	  case "强": showmsg+=" <img src='../images/level/3.gif' width='88' height='11' />";break;
	  case "安全": showmsg+=" <img src='../images/level/4.gif' width='88' height='11' />";break;
   }
   document.getElementById(objID+'showmsg').innerHTML = showmsg;
}

		function htmlEncode(source, display, tabs)
		{
			function special(source)
			{
				var result = '';
				for (var i = 0; i < source.length; i++)
				{
					var c = source.charAt(i);
					if (c < ' ' || c > '~')
					{
						c = '&#' + c.charCodeAt() + ';';
					}
					result += c;
				}
				return result;
			}
			function format(source)
			{
				// Use only integer part of tabs, and default to 4
				tabs = (tabs >= 0) ? Math.floor(tabs) : 4;
				// split along line breaks
				var lines = source.split(/\r\n|\r|\n/);
				// expand tabs
				for (var i = 0; i < lines.length; i++)
				{
					var line = lines[i];
					var newLine = '';
					for (var p = 0; p < line.length; p++)
					{
						var c = line.charAt(p);
						if (c === '\t')
						{
							var spaces = tabs - (newLine.length % tabs);
							for (var s = 0; s < spaces; s++)
							{
								newLine += ' ';
							}
						}
						else
						{
							newLine += c;
						}
					}
					// If a line starts or ends with a space, it evaporates in html
					// unless it's an nbsp.
					newLine = newLine.replace(/(^ )|( $)/g, '&nbsp;');
					lines[i] = newLine;
				}
				// re-join lines
				var result = lines.join('<br />');
				// break up contiguous blocks of spaces with non-breaking spaces
				result = result.replace(/  /g, ' &nbsp;');
				// tada!
				return result;
			}
			var result = source;
			// ampersands (&)
			result = result.replace(/\&/g,'&amp;');
			// less-thans (<)
			result = result.replace(/\</g,'&lt;');
			// greater-thans (>)
			result = result.replace(/\>/g,'&gt;');
			if (display)
			{
				// format for display
				result = format(result);
			}
			else
			{
				// Replace quotes if it isn't for display,
				// since it's probably going in an html attribute.
				result = result.replace(new RegExp('"','g'), '&quot;');
			}
			// special characters
			result = special(result);
			// tada!
			return result;
		}
		var profile_username_toolong = '用户名须在6-20位字符内，由且仅由英文字母单独或者与数字混合而成，第一位须为英文字母。';
		var profile_username_tooshort = '用户名须在6-20位字符内，由且仅由英文字母单独或者与数字混合而成，第一位须为英文字母。';
		var profile_username_pass = strImgFail + strFailClass10 + "  恭喜您，该用户名可用，祝您注册顺利。" + strFailClass11;
		
function showcheckresult(obj, username)
{
	var res = obj.getElementsByTagName('result');
	var resContainer = document.getElementById("checkresult");
	var result = "";
	if (res[0] != null && res[0] != undefined)
	{
		if (res[0].childNodes.length > 1) {
			result = res[0].childNodes[1].nodeValue;
		} else {
			result = res[0].firstChild.nodeValue;    		
		}
	}
	if (result == "1" || result == "2")
	{
		resContainer.innerHTML = strImgStop + strStopClass10 + "  用户名 \"" + htmlEncode(username, true, 4) + "\" 已经被他人使用，请选择其他名字后再试。" + strStopClass11;
		ajaxUserNameErr = true;
	}
	else
	{
		resContainer.innerHTML = profile_username_pass;
		ajaxUserNameErr = false;
	}
	
}
	
function showcheckVerifyCode(responseText, responseXml,Args)
{

     var Dom = new ActiveXObject("Microsoft.XMLDOM") //建立XMLDOM对象
            Dom.loadXML( responseText );
            if(Dom.parseError.errorCode != 0) //检查是否发生获取数据时错误
            {
                alert( "获取信息时候发现异常，请稍后重试，谢谢！"   );           
            }
            else
            {
		    	var res = Dom.getElementsByTagName('result1');
                var resContainer = document.getElementById("spanVerifyCode");
                var result = "";
                  if (res != null && res != undefined)
			    {
			        result = res[0].text;
			    }
                if (result == "00")
                {
	                resContainer.innerHTML = strImgStop+strStopClass10+"验证玛错误！"+strStopClass11;
	                ajaxVerifyCode2=false;
                }
                else
                {
	                resContainer.innerHTML = "";
	                ajaxVerifyCode2=true;
                }
			}
}
 
		/* end */
//===================================================================================================================================================

		
