/*最后的评分标准:
    >= 90: 非常安全
    >= 80: 安全(Secure)
    >= 70: 非常强
    >= 60: 强(Strong)
    >= 50: 一般(Average)
    >= 25: 弱(Weak)
    >= 0: 非常弱*/
function grade(passwd){
    var grade=0;
      
    //判断密码是否存在
    if(!passwd){
        return grade;
    }
    var liHtml= $("#tips");
      
    //判断是否属于弱密码
    if(weakPasswd(passwd)){
        grade=0;
        liHtml.append("<li>您的密码为弱密码,获得0分</li>");
        return grade;
    }
      
    //判断长度。并给出分数
    /*密码长度:
    0 分: 小于等于 4 个字符
    10 分: 5 到 7 字符
    20 分: 大于8 个字符*/
    //grade += passwd.length<=4?0:(passwd.length>8?20:10);
    if(passwd.length<=4){
        grade +=0;
        liHtml.append("<li>您的密码长度小于或等于4位,获得0分</li>");
    }else if (passwd.length>8){
        grade+=20;
        liHtml.append("<li>您的密码长度大于8位,获得20分</li>");
    }else{
        grade+=10;
        liHtml.append("<li>您的密码长度介于5~~8位,获得10分</li>");
    }
      
    //alert("密码长度:"+grade);
      
    /*字母:
    0 分: 没有字母
    10 分: 全都是小(大)写字母
    20 分: 大小写混合字母*/
    //grade += !passwd.match(/[a-z]/i)?0:(passwd.match(/[a-z]/) && passwd.match(/[A-Z]/)?20:10);
    if(!passwd.match(/[a-z]/i)){
        grade+=0;
        liHtml.append("<li>您的密码不包含字母,获得0分</li>");
    }else if (passwd.match(/[a-z]/)&& passwd.match(/[A-Z]/) ){
        grade+=20;
        liHtml.append("<li>您的密码含有大小写混合字母,获得20分</li>");
    }else{
        grade+=10;
        liHtml.append("<li>您的密码只含有大写或小写字母,获得10分</li>");
    }
      
      
    //alert("字母:"+grade);
    /*数字:
    0 分: 没有数字
    10 分: 1 个数字
    15 分: 大于等于 3 个数字*/
    //grade += !passwd.match(/[0-9]/)?0:(passwd.match(/[0-9]/g).length >= 3?15:10);
    if(!passwd.match(/[0-9]/)){
        grade+=0;
        liHtml.append("<li>您的密码不包含数字,获得0分</li>");
    }else if ((passwd.match(/[0-9]/g)).length >3){
        grade+=15;
        liHtml.append("<li>您的密码含有3位以上的数字,获得15分</li>");
    }else{
        grade+=10;
        liHtml.append("<li>您的密码含有1~~3位数字,获得10分</li>");
    }
    //alert("数字:"+grade);
      
    /*符号:
    0 分: 没有符号
    10 分: 1 个符号
    20 分: 大于 1 个符号*/
    //grade += !passwd.match(/\W/)?0:(passwd.match(/\W/g).length > 1?20:10);
    if(!passwd.match(/\W/)){
        grade+=0;
        liHtml.append("<li>您的密码不包含特殊字符,获得0分</li>");
    }else if ((passwd.match(/\W/g)).length > 1){
        grade+=20;
        liHtml.append("<li>您的密码含有2位及以上的特殊字符,获得15分</li>");
    }else{
        grade+=10;
        liHtml.append("<li>您的密码含有1位特殊字符,获得10分</li>");
    }
      
    //alert("符号:"+grade);
    /*字符重复
    5 分:有重复字符
    10分:无重复字符*/
    //grade +=!passwd.match(/(.+)\1{2,}/gi)?10:5;
    if(!passwd.match(/(.+)\1{2,}/gi)){
        grade+=10;
        liHtml.append("<li>您的密码不含有重复字符,获得10分</li>");
    }else{
        grade+=5;
        liHtml.append("<li>您的密码含有重复字符,获得5分</li>");
    }
    //alert("字符重复:"+grade);
      
    /*奖励:
   2 0 分: 只有字母或数字
     5 分: 只有字母和数字
  3  10 分: 字母、数字和符号
  5  15 分: 大小写字母、数字和符号*/
    //grade += !passwd.match(/[0-9]/) || !passwd.match(/[a-z]/i)?0:(!passwd.match(/\W/)?5:(!passwd.match(/[a-z]/) || !passwd.match(/[A-Z]/)?10:15));    
    if(!passwd.match(/[0-9]/) || !passwd.match(/[a-z]/i)){
        grade+=0;
        liHtml.append("<li>鉴于您密码的复杂度,不给你的奖励分</li>");
    } else if ( !passwd.match(/\W/)){
        grade+=5;
        liHtml.append("<li>鉴于您密码的复杂度,给你的奖励5分</li>");
    } else if (!passwd.match(/[a-z]/) || !passwd.match(/[A-Z]/)){
        grade+=10;
        liHtml.append("<li>鉴于您密码的复杂度,给你的奖励10分</li>");
    }else{
        grade+=15;
        liHtml.append("<li>鉴于您密码的复杂度,给你的奖励15分</li>");
    }
      
    //alert("奖励:"+grade);
      
      
      
      
      
    return grade;
}
function weakPasswd(password) {
        var i = (commonPasswords && commonPasswords.length) || 0,
        rank;
        while (i--) {
            if (password.toLowerCase() === commonPasswords[i]) {
               // rank = formatNumber(Math.ceil((i + 1) / 10) * 10);
                return true;
            }
        }
        return false;
    }