








function chkPassword(pwd, pwd2, loginjsp)
{
    if (loginjsp)
    {
        document.getElementById("match").src= "/images/debugger/cancel.gif";
        if (pwd && pwd2)
        {
            if (pwd == pwd2 && pwd.length > 0)
               document.getElementById("match").src= "/images/icons/highlights/icon_lists_checkMark.png";
        }
    }
    else
    {
        nlapiSetFieldValue("match", "\<img src=\"/images/debugger/cancel.gif\"></img>"  , false);
        if (pwd == pwd2 && pwd.length > 0)
            nlapiSetFieldValue("match", "\<img src=\"/images/icons/highlights/icon_lists_checkMark.png\"></img>" , false);
    }
}



function chkComplexity(origpwd, pwd, pwd2, strengthField, charsAllowed, jspVersion, pwdVersion, entryVersion, listVersion)
{
    var numUpperCase ="";
    var numLowerCase ="";
    var numNumeric="";
    var numNonAlphaNumeric="";
    var entropyMultiplier="";
    var score ="";
    var arrPwd = pwd.replace(/\s+/g,"").split(/\s*/);
    var strength ="";
    var uniq ="" ;
    var differentChars ="";
    var styleField =  (jspVersion)?strengthField:strengthField+"_val";

    if (pwdVersion)
    {
        chkPassword(pwd, pwd2, false);
        nlapiSetFieldValue("minchars", "\<img src=\"/images/debugger/cancel.gif\"></img>"  , false);
        nlapiSetFieldValue("multicase", "\<img src=\"/images/icons/controls/status_circle_gray.png\"></img>" , false);
        nlapiSetFieldValue("nonalpha", "\<img src=\"/images/icons/controls/status_circle_gray.png\"></img>" , false);
        nlapiSetFieldValue("minnumber", "\<img src=\"/images/icons/controls/status_circle_gray.png\"></img>" , false);
        nlapiSetFieldValue("lowercase", "\<img src=\"/images/icons/controls/status_circle_gray.png\"></img>" , false);
        nlapiSetFieldValue("mincharsrecommended", "\<img src=\"/images/icons/controls/status_circle_gray.png\"></img>" , false);
        nlapiSetFieldValue("chardifference","\<img src=\"/images/debugger/cancel.gif\"></img>" , false);
    }

    else if (jspVersion)
    {
        chkPassword(pwd, pwd2, true);
        document.getElementById("minchars").src= "/images/debugger/cancel.gif";
        document.getElementById("multicase").src= "/images/icons/controls/status_circle_gray.png";
        document.getElementById("nonalpha").src= "/images/icons/controls/status_circle_gray.png";
        document.getElementById("minnumber").src= "/images/icons/controls/status_circle_gray.png";
        document.getElementById("lowercase").src= "/images/icons/controls/status_circle_gray.png";
        document.getElementById("mincharsrecommended").src= "/images/icons/controls/status_circle_gray.png";
        document.getElementById("chardifference").src= "/images/debugger/cancel.gif";
    }

    for (var a=0; a < arrPwd.length; a++)
    {
        if (pwdVersion || jspVersion)
        {
            if (origpwd.indexOf(arrPwd[a]) == -1)
                differentChars++;
        }
        if(uniq.indexOf( arrPwd[a] ) == -1)
            uniq += arrPwd[a];
        if (arrPwd[a].match(/[A-Z]/g))
        {
            numUpperCase++;
            if (pwdVersion)
                nlapiSetFieldValue("multicase", "\<img src=\"/images/icons/highlights/icon_lists_checkMark.png\"></img>" , false);
            if (jspVersion)
                document.getElementById("multicase").src= "/images/icons/highlights/icon_lists_checkMark.png";
        }
        else if (arrPwd[a].match(/[a-z]/g))
        {
            numLowerCase++;
            if (pwdVersion)
                nlapiSetFieldValue("lowercase", "\<img src=\"/images/icons/highlights/icon_lists_checkMark.png\"></img>" , false);
            if (jspVersion)
                document.getElementById("lowercase").src= "/images/icons/highlights/icon_lists_checkMark.png";
        }
        else if (arrPwd[a].match(/[0-9]/g))
        {
            numNumeric++;
            if (pwdVersion)
                nlapiSetFieldValue("minnumber", "\<img src=\"/images/icons/highlights/icon_lists_checkMark.png\"></img>" , false);
            if(jspVersion)
                document.getElementById("minnumber").src= "/images/icons/highlights/icon_lists_checkMark.png";
        }
        else if (arrPwd[a].match(/[^a-zA-Z0-9]/g))
        {
            numNonAlphaNumeric++;
            if (pwdVersion)
                nlapiSetFieldValue("nonalpha", "\<img src=\"/images/icons/highlights/icon_lists_checkMark.png\"></img>" , false);
            if(jspVersion)
                document.getElementById("nonalpha").src= "/images/icons/highlights/icon_lists_checkMark.png";
        }
    }

    if (numNonAlphaNumeric > 0 && numNumeric > 0 && numLowerCase > 0 && numUpperCase > 0)
        entropyMultiplier = parseFloat("6.55");
    else if (numNumeric > 0 && numLowerCase > 0 && numUpperCase > 0)
        entropyMultiplier = parseFloat("5.95");
    else if ((numLowerCase > 0 && numUpperCase > 0))
        entropyMultiplier = parseFloat("5.7");
    else if ((numUpperCase > 0 || numLowerCase > 0) && numNumeric > 0)
        entropyMultiplier = parseFloat("5.17");
    else if (numUpperCase > 0 || numLowerCase > 0)
        entropyMultiplier = parseFloat("4.7");
    else if (numNumeric > 0)
        entropyMultiplier = parseFloat("3.32");
    score = parseFloat(entropyMultiplier * uniq.length);
    if (jspVersion || pwdVersion || entryVersion)
        document.getElementById(styleField).style.fontWeight = 'bold';
    if (Math.floor(entropyMultiplier) == 6 && arrPwd.length >= 8)
    {
        strength = "Strong";
        if (pwdVersion || entryVersion || jspVersion)
            document.getElementById(styleField).style.color = "green";
    }
    else if (Math.floor(entropyMultiplier) == 6)
    {
        strength = "Medium";
        if(jspVersion || pwdVersion || entryVersion)
            document.getElementById(styleField).style.color = "orange";
    }
    else if (arrPwd.length >= 1)
    {
        strength = "Weak";
        if (pwdVersion || entryVersion || jspVersion)
            document.getElementById(styleField).style.color = "red";
    }
    if (pwdVersion || entryVersion)
        nlapiSetFieldValue(strengthField, strength, false);
    else if (jspVersion || listVersion)
        document.getElementById(strengthField).value= strength;
    if (jspVersion)
        document.getElementById(strengthField).title= strength;

    if (pwdVersion)
    {
        if (differentChars >= 2)
            nlapiSetFieldValue("chardifference", "\<img src=\"/images/icons/highlights/icon_lists_checkMark.png\"></img>" , false);
        if (pwd.length >= parseInt(charsAllowed))
            nlapiSetFieldValue("minchars", "\<img src=\"/images/icons/highlights/icon_lists_checkMark.png\"></img>" , false);
        else
            nlapiSetFieldValue("minchars", "\<img src=\"/images/debugger/cancel.gif\"></img>"  , false);
        if (pwd.length >= 8)
            nlapiSetFieldValue("mincharsrecommended", "\<img src=\"/images/icons/highlights/icon_lists_checkMark.png\"></img>" , false);
        else
            nlapiSetFieldValue("mincharsrecommended", "\<img src=\"/images/icons/controls/status_circle_gray.png\"></img>" , false);
    }
    else if (jspVersion)
    {
        if (differentChars >= 2)
            document.getElementById("chardifference").src= "/images/icons/highlights/icon_lists_checkMark.png";
        else
            document.getElementById("chardifference").src= "/images/debugger/cancel.gif";
        if (pwd.length >= charsAllowed)
            document.getElementById("minchars").src= "/images/icons/highlights/icon_lists_checkMark.png";
        else
            document.getElementById("minchars").src= "/images/debugger/cancel.gif";
        if (pwd.length >= 8)
            document.getElementById("mincharsrecommended").src= "/images/icons/highlights/icon_lists_checkMark.png";
        else
            document.getElementById("mincharsrecommended").src= "/images/icons/controls/status_circle_gray.png";
    }
}
