﻿//CharMode函数//测试某个字符是属于哪一类.
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;
}
//chkStrong函数//返回密码的强度级别
function chkStrong(pwd){
if (pwd.length<5)return 0; //密码太短，算弱
if (pwd.length>15)return 3; //密码16位以上，算强的
Modes=0;
for (i=0;i<pwd.length;i++){
//统计一共有多少种字符
Modes|=CharMode(pwd.charCodeAt(i));
}
return bitTotal(Modes);
}
//pwdstrong函数//根据不同的级别显示不同的颜色,调用法：<input type=password onblur="pwdstrong(this.value)"
function pwdstrong(pwd){
var css0="pwd0"; //未输入密码时的CSS
var cssL="pwdL";
var cssM="pwdM";
var cssH="pwdH";
//var Lcolor;var Mcolor;var Hcolor;
if (pwd==null||pwd==''){
	Lcolor=Mcolor=Hcolor=css0;
}
else{
S_level=chkStrong(pwd);
switch(S_level) {
case 0:	//小于5位，都算弱
Lcolor=Mcolor=Hcolor=css0;
case 1:	//一种组合,5～9位是弱，10位以上是中
	if(pwd.length<10){
	Lcolor=cssL;
	Mcolor=Hcolor=css0;
	}else{
	Lcolor=Mcolor=cssM;
	Hcolor=css0;
	}
break;
case 2:	//两种组合，5~9位是中，10位以上是强
	if(pwd.length<10){
	Lcolor=Mcolor=cssM;
	Hcolor=css0;
	}else{
	Lcolor=Mcolor=Hcolor=cssH;
	}
break;
default:	//三种或四种组合，5位以上就算强
Lcolor=Mcolor=Hcolor=cssH;
}//switch
}
	document.getElementById("pwdstrong1").className=Lcolor;
	document.getElementById("pwdstrong2").className=Mcolor;
	document.getElementById("pwdstrong3").className=Hcolor;
return;
}