/**
 * @fileName: level.js
 * @author  : 陶埙(simple)
 * @date    : 2008-7-17
 * @version : v0.1
 * @description:
    计算密码等级
*/
function checkLength(str) 
{
    var score = 0;
    if (str) 
    {
        var length = str.length;
        if (length <= 5) 
        {
            score = 5;
        }
        else if (length > 5 && length <= 8) 
        {
            score = 10;
        }
        else
        {
            score = 25;
        }
    }

    return score;
}

function checkLetter(str)
{
    var score = 0;
    if (str) 
    { 
        var rule1 = /^[^A-Z]*[a-z]+[^A-Z]*$|^[^a-z]*[A-Z]+[^a-z]*$/;  
        var rule2 = /^.*[a-z](.*[A-Z]{1,}.*)+$|^.*[A-Z](.*[a-z]{1,}.*)+$/;  

        if (rule1.test(str)) 
        {
            score = 10;
        }
        else if (rule2.test(str)) 
        {
            score = 20;
        } 
        else 
        {
            score = 0;
        }
    }

    return score;
}

function checkDigit(str)
{    
    var score = 0;
    if (str) 
    {
        var rule1 = /^[^0-9]*([0-9][^0-9]*){1,2}$/;
        var rule2 = /^[^0-9]*([0-9][^0-9]*){3,}$/;

        if (rule1.test(str)) 
        {
            score = 10;
        }
        else if (rule2.test(str)) 
        {
            score = 20;
        }
        else 
        {
            score = 0;
        }
    }

    return score;
}

function checkSymbol(str)
{
    var score = 0
    if (str) 
    {
        var rule1 = /^[0-9a-z]*([^0-9a-z][0-9a-z]*){1}$/i;
        var rule2 = /^[0-9a-z]*([^0-9a-z][0-9a-z]*){2,}$/i;

        if (rule1.test(str)) 
        {
            score = 10;
        }
        else if (rule2.test(str)) 
        {
            score = 25;
        }
        else 
        {
            score = 0;
        }
    }
    
    return score;
}

function checkLevel(str)
{
    var total_score  = 0;
    var length_score = checkLength(str);
    var letter_score = checkLetter(str);
    var digit_score  = checkDigit(str);
    var symbol_score = checkSymbol(str);  

    if (letter_score != 0 && digit_score != 0) 
    {
        total_score += 2;
    } 

    if (letter_score != 0 && digit_score != 0 && symbol_score != 0) 
    {
        total_score += 3;
    }    
    
    if (letter_score == 20 && digit_score != 0 && symbol_score != 0) 
    {
        total_score += 5;
    }

    total_score += length_score + letter_score + digit_score + symbol_score; 

    if (total_score >= 90) 
    {
        return 6;
    }
    else if (total_score >= 80) 
    {
        return 5;
    }
    else if (total_score >= 70) 
    {
        return 4;
    }
    else if (total_score >= 60) 
    {
        return 3;
    }
    else if (total_score >= 50) 
    {
        return 2;
    }
    else if (total_score >= 25) 
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

function checkCharector(str)
{
    var rule = /^[\x00-\xff]+$/;

    return rule.test(str);
}

function testLevel(id, str)
{
    var level = checkLevel(str); 

    switch (level) 
    {
        case 6: var status = ":非常安全"; break;
        case 5: var status = ":安全"; break;
        case 4: var status = ":非常强"; break;
        case 3: var status = ":强"; break;
        case 2: var status = ":一般"; break;
        case 1: var status = ":弱 <a href='javascript:;' onclick=\"DivMenu.openMenu(event, 'pop1', 'p1', 360, 0);\">[查看建议]</a>"; break;
        case 0: var status = ":非常弱 <a href='javascript:;' onclick=\"DivMenu.openMenu(event, 'pop1', 'p1', 360, 0);\">[查看建议]</a>"; break;
        default: var status = "";
    }
    
    var obj = $(id);
    obj.innerHTML = status; 
}  
