function PasswordStrength(id){
	var _this = this;
	_this.pwdObj  = document.getElementById(id);
	_this.pwdInfo = document.getElementById("pwdInfo");
	
	_this.init = function(){
		_this.pwdObj.onkeyup = pwStrength;
	}
	
//	function checkPwdStrength(){
//		 var pwd = _this.pwdObj.value;
//	     var WEAK = 0;
//	     var NORMAL = 1;
//	     var STRONG = 2;
//	     var BEST = 3;
//	     var regText=/[a-zA-Z]/g;
//	     var regNum=/\d/g;
//	     var regSpecial=/[^a-zA-Z0-9]/g;
//	     if(pwd.length<6) return setState(WEAK);
//	     if(pwd.match(regText)!=null&&pwd.match(regNum)==null&&pwd.match(regSpecial)==null||
//	     	   pwd.match(regText)==null&&pwd.match(regNum)!=null&&pwd.match(regSpecial)==null||
//	     	   pwd.match(regText)==null&&pwd.match(regNum)==null&&pwd.match(regSpecial)!=null)
//	    	 return setState(WEAK);
//	     if(pwd.length>=8){
//	     	if(pwd.match(regText)!=null&&pwd.match(regNum)!=null&&pwd.match(regSpecial)==null||
//	     	   pwd.match(regText)==null&&pwd.match(regNum)!=null&&pwd.match(regSpecial)!=null||
//	     	   pwd.match(regText)!=null&&pwd.match(regNum)==null&&pwd.match(regSpecial)!=null)
//	     		return setState(NORMAL);
//	     }
//	     if(pwd.length>=8&&pwd.length<14){
//	        if(pwd.match(regText)!=null&&pwd.match(regNum)!=null&&pwd.match(regSpecial)!=null)
//	        	return setState(STRONG);
//	     }
//	     if(pwd.length>=14){
//	        if(pwd.match(regText)!=null&&pwd.match(regNum)!=null&&pwd.match(regSpecial)!=null)
//	        	return setState(BEST);
//	     }
//	     return setState(NORMAL);
//	 }
	
	function setState(state){
		switch(state){
		case 0:
			setStyle("#FFFFFF","#FFFFFF","#FFFFFF");
			$(_this.pwdInfo).text("密码强度");
			break;
		case 1:
			setStyle("#FF0000","#FFFFFF","#FFFFFF");
			$(_this.pwdInfo).text("密码强度：弱");
			break;
		case 2:
			setStyle("#FFD35E","#FFD35E","#FFFFFF");
			$(_this.pwdInfo).text("密码强度：一般");
			break;
		case 3:
			setStyle("#95EB81","#95EB81","#95EB81");
			$(_this.pwdInfo).text("密码强度：强");
			break;
		}
		return false;
	}
	function setStyle(st1,st2,st3){
		var s1 = document.getElementById("s1");
		var s2 = document.getElementById("s2");
		var s3 = document.getElementById("s3");
		s1.style.backgroundColor = st1;
		s2.style.backgroundColor = st2;
		s3.style.backgroundColor = st3;
	}
	
	
	function CharMode(iN){  
		if (iN>=48 && iN <=57) //数字  
		return 1;  
		if (iN>=65 && iN <=90) //大写字母  
		return 2;  
		if (iN>=97 && iN <=122) //小写  
		return 4;  
		else  
		return 8; //特殊字符  
	}  
		//bitTotal函数  
		//计算出当前密码当中一共有多少种模式  
	function bitTotal(num){  
		modes=0;  
		for (i=0;i<4;i++){  
		if (num & 1) modes++;  
		num>>>=1;  
		}  
		return modes;  
	}  
		//checkStrong函数  
		//返回密码的强度级别  
	function checkStrong(sPW){  
		if (sPW.length<=4)  
		return 0; //密码太短  
		Modes=0;  
		for (i=0;i<sPW.length;i++){  
		//测试每一个字符的类别并统计一共有多少种模式.  
		Modes|=CharMode(sPW.charCodeAt(i));  
		}  
		return bitTotal(Modes);  
	}  
		//pwStrength函数  
		//当用户放开键盘或密码输入框失去焦点时,根据不同的级别显示不同的颜色  
	function pwStrength(){
		var pwd = _this.pwdObj.value;
		if (pwd==null||pwd==''){  
//		Lcolor=Mcolor=Hcolor=O_color;  
		}  
		else{  
		var S_level=checkStrong(pwd);
		return setState(S_level);
  
		}
		return false;  
	}  
}
