darkfreaks Posted November 1, 2009 Share Posted November 1, 2009 i need help slightly modifying a function how would i make it so instead of it adding points if i add in symbols like !@#$%^&*()-=+ it subtracts instead of adds points. and if it detects a dash or underscore it adds points here is the function: function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != "function") { window.onload = func; } else { window.onload = function() { if (oldonload) { oldonload(); } func(); }; } } String.prototype.strReverse = function() { var newstring = ""; for (var s=0; s < this.length; s++) { newstring = this.charAt(s) + newstring; } return newstring; //strOrig = ' texttotrim '; //strReversed = strOrig.revstring(); }; function chkPass(pwd) { var oScorebar = document.getElementById("scorebar"); var oScore = document.getElementById("score"); var oComplexity = document.getElementById("complexity"); var nScore = 0; var nLength = 0; var nAlphaUC = 0; var nAlphaLC = 0; var nNumber = 0; var nSymbol = 0; var nMidChar = 0; var nRequirements = 0; var nAlphasOnly = 0; var nNumbersOnly = 0; var nRepChar = 0; var nConsecAlphaUC = 0; var nConsecAlphaLC = 0; var nConsecNumber = 0; var nConsecSymbol = 0; var nConsecCharType = 0; var nSeqAlpha = 0; var nSeqNumber = 0; var nSeqChar = 0; var nReqChar = 0; var nReqCharType = 3; var nMultLength = 4; var nMultAlphaUC = 3; var nMultAlphaLC = 3; var nMultNumber = 4; var nMultSymbol = 6; var nMultMidChar = 2; var nMultRequirements = 2; var nMultRepChar = 1; var nMultConsecAlphaUC = 2; var nMultConsecAlphaLC = 2; var nMultConsecNumber = 2; var nMultConsecSymbol = 1; var nMultConsecCharType = 0; var nMultSeqAlpha = 3; var nMultSeqNumber = 3; var nTmpAlphaUC = ""; var nTmpAlphaLC = ""; var nTmpNumber = ""; var nTmpSymbol = ""; var sAlphaUC = " 0"; var sAlphaLC = " 0"; var sNumber = " 0"; var sSymbol = " 0"; var sMidChar = " 0"; var sRequirements = " 0"; var sAlphasOnly = " 0"; var sNumbersOnly = " 0"; var sRepChar = " 0"; var sConsecAlphaUC = " 0"; var sConsecAlphaLC = " 0"; var sConsecNumber = " 0"; var sSeqAlpha = " 0"; var sSeqNumber = " 0"; var sAlphas = "abcdefghijklmnopqrstuvwxyz"; var sNumerics = "01234567890"; var sComplexity = "Too Short"; var sStandards = "Below"; var nMinPwdLen = 8; if (document.all) { var nd = 0; } else { var nd = 1; } if (pwd) { nScore = parseInt(pwd.length * nMultLength); nLength = pwd.length; var arrPwd = pwd.replace (/\s+/g,"").split(/\s*/); var arrPwdLen = arrPwd.length; /* Loop through password to check for Symbol, Numeric, Lowercase and Uppercase pattern matches */ for (var a=0; a < arrPwdLen; a++) { if (arrPwd[a].match(new RegExp(/[A-Z]/g))) { if (nTmpAlphaUC !== "") { if ((nTmpAlphaUC + 1) == a) { nConsecAlphaUC++; nConsecCharType++; } } nTmpAlphaUC = a; nAlphaUC++; } else if (arrPwd[a].match(new RegExp(/[a-z]/g))) { if (nTmpAlphaLC !== "") { if ((nTmpAlphaLC + 1) == a) { nConsecAlphaLC++; nConsecCharType++; } } nTmpAlphaLC = a; nAlphaLC++; } else if (arrPwd[a].match(new RegExp(/[0-9]/g))) { if (a > 0 && a < (arrPwdLen - 1)) { nMidChar++; } if (nTmpNumber !== "") { if ((nTmpNumber + 1) == a) { nConsecNumber++; nConsecCharType++; } } nTmpNumber = a; nNumber++; } else if (arrPwd[a].match(new RegExp(/[^a-zA-Z0-9_]/g))) { if (a > 0 && a < (arrPwdLen - 1)) { nMidChar++; } if (nTmpSymbol !== "") { if ((nTmpSymbol + 1) == a) { nConsecSymbol++; nConsecCharType++; } } nTmpSymbol = a; nSymbol++; } /* Internal loop through password to check for repeated characters */ for (var b=0; b < arrPwdLen; b++) { if (arrPwd[a].toLowerCase() == arrPwd[b].toLowerCase() && a != b) { nRepChar++; } } } /* Check for sequential alpha string patterns (forward and reverse) */ for (var s=0; s < 23; s++) { var sFwd = sAlphas.substring(s,parseInt(s+3)); var sRev = sFwd.strReverse(); if (pwd.toLowerCase().indexOf(sFwd) != -1 || pwd.toLowerCase().indexOf(sRev) != -1) { nSeqAlpha++; nSeqChar++;} } /* Check for sequential numeric string patterns (forward and reverse) */ for (var s=0; s < 8; s++) { var sFwd = sNumerics.substring(s,parseInt(s+3)); var sRev = sFwd.strReverse(); if (pwd.toLowerCase().indexOf(sFwd) != -1 || pwd.toLowerCase().indexOf(sRev) != -1) { nSeqNumber++; nSeqChar++;} } /* Modify overall score value based on usage vs requirements */ /* General point assignment */ document.getElementById("nLengthBonus").innerHTML = "+ " + nScore; if (nAlphaUC > 0 && nAlphaUC < nLength) { nScore = parseInt(nScore + ((nLength - nAlphaUC) * 2)); sAlphaUC = "+ " + parseInt((nLength - nAlphaUC) * 2); } if (nAlphaLC > 0 && nAlphaLC < nLength) { nScore = parseInt(nScore + ((nLength - nAlphaLC) * 2)); sAlphaLC = "+ " + parseInt((nLength - nAlphaLC) * 2); } if (nNumber > 0 && nNumber < nLength) { nScore = parseInt(nScore + (nNumber * nMultNumber)); sNumber = "+ " + parseInt(nNumber * nMultNumber); } if (nSymbol > 0) { nScore = parseInt(nScore + (nSymbol * nMultSymbol)); sSymbol = "+ " + parseInt(nSymbol * nMultSymbol); } if (nMidChar > 0) { nScore = parseInt(nScore + (nMidChar * nMultMidChar)); sMidChar = "+ " + parseInt(nMidChar * nMultMidChar); } document.getElementById("nAlphaUCBonus").innerHTML = sAlphaUC; document.getElementById("nAlphaLCBonus").innerHTML = sAlphaLC; document.getElementById("nNumberBonus").innerHTML = sNumber; document.getElementById("nSymbolBonus").innerHTML = sSymbol; document.getElementById("nMidCharBonus").innerHTML = sMidChar; /* Point deductions for poor practices */ if ((nAlphaLC > 0 || nAlphaUC > 0) && nSymbol === 0 && nNumber === 0) { // Only Letters nScore = parseInt(nScore - nLength); nAlphasOnly = nLength; sAlphasOnly = "- " + nLength; } if (nAlphaLC === 0 && nAlphaUC === 0 && nSymbol === 0 && nNumber > 0) { // Only Numbers nScore = parseInt(nScore - nLength); nNumbersOnly = nLength; sNumbersOnly = "- " + nLength; } if (nRepChar > 0) { // Same character exists more than once nScore = parseInt(nScore - (nRepChar * nRepChar)); sRepChar = "- " + nRepChar; } if (nConsecAlphaUC > 0) { // Consecutive Uppercase Letters exist nScore = parseInt(nScore - (nConsecAlphaUC * nMultConsecAlphaUC)); sConsecAlphaUC = "- " + parseInt(nConsecAlphaUC * nMultConsecAlphaUC); } if (nConsecAlphaLC > 0) { // Consecutive Lowercase Letters exist nScore = parseInt(nScore - (nConsecAlphaLC * nMultConsecAlphaLC)); sConsecAlphaLC = "- " + parseInt(nConsecAlphaLC * nMultConsecAlphaLC); } if (nConsecNumber > 0) { // Consecutive Numbers exist nScore = parseInt(nScore - (nConsecNumber * nMultConsecNumber)); sConsecNumber = "- " + parseInt(nConsecNumber * nMultConsecNumber); } if (nSeqAlpha > 0) { // Sequential alpha strings exist (3 characters or more) nScore = parseInt(nScore - (nSeqAlpha * nMultSeqAlpha)); sSeqAlpha = "- " + parseInt(nSeqAlpha * nMultSeqAlpha); } if (nSeqNumber > 0) { // Sequential numeric strings exist (3 characters or more) nScore = parseInt(nScore - (nSeqNumber * nMultSeqNumber)); sSeqNumber = "- " + parseInt(nSeqNumber * nMultSeqNumber); } document.getElementById("nAlphasOnlyBonus").innerHTML = sAlphasOnly; document.getElementById("nNumbersOnlyBonus").innerHTML = sNumbersOnly; document.getElementById("nRepCharBonus").innerHTML = sRepChar; document.getElementById("nConsecAlphaUCBonus").innerHTML = sConsecAlphaUC; document.getElementById("nConsecAlphaLCBonus").innerHTML = sConsecAlphaLC; document.getElementById("nConsecNumberBonus").innerHTML = sConsecNumber; document.getElementById("nSeqAlphaBonus").innerHTML = sSeqAlpha; document.getElementById("nSeqNumberBonus").innerHTML = sSeqNumber; /* Determine if mandatory requirements have been met and set image indicators accordingly */ var arrChars = [nLength,nAlphaUC,nAlphaLC,nNumber,nSymbol]; var arrCharsIds = ["nLength","nAlphaUC","nAlphaLC","nNumber","nSymbol"]; var arrCharsLen = arrChars.length; for (var c=0; c < arrCharsLen; c++) { var oImg = document.getElementById('div_' + arrCharsIds[c]); var oBonus = document.getElementById(arrCharsIds[c] + 'Bonus'); document.getElementById(arrCharsIds[c]).innerHTML = arrChars[c]; if (arrCharsIds[c] == "nLength") { var minVal = parseInt(nMinPwdLen - 1); } else { var minVal = 0; } if (arrChars[c] == parseInt(minVal + 1)) { nReqChar++; oImg.className = "pass"; oBonus.parentNode.className = "pass"; } else if (arrChars[c] > parseInt(minVal + 1)) { nReqChar++; oImg.className = "exceed"; oBonus.parentNode.className = "exceed"; } else { oImg.className = "fail"; oBonus.parentNode.className = "fail"; } } nRequirements = nReqChar; if (pwd.length >= nMinPwdLen) { var nMinReqChars = 3; } else { var nMinReqChars = 4; } if (nRequirements > nMinReqChars) { // One or more required characters exist nScore = parseInt(nScore + (nRequirements * 2)); sRequirements = "+ " + parseInt(nRequirements * 2); } document.getElementById("nRequirementsBonus").innerHTML = sRequirements; /* Determine if additional bonuses need to be applied and set image indicators accordingly */ var arrChars = [nMidChar,nRequirements]; var arrCharsIds = ["nMidChar","nRequirements"]; var arrCharsLen = arrChars.length; for (var c=0; c < arrCharsLen; c++) { var oImg = document.getElementById('div_' + arrCharsIds[c]); var oBonus = document.getElementById(arrCharsIds[c] + 'Bonus'); document.getElementById(arrCharsIds[c]).innerHTML = arrChars[c]; if (arrCharsIds[c] == "nRequirements") { var minVal = nMinReqChars; } else { var minVal = 0; } if (arrChars[c] == parseInt(minVal + 1)) { oImg.className = "pass"; oBonus.parentNode.className = "pass"; } else if (arrChars[c] > parseInt(minVal + 1)) { oImg.className = "exceed"; oBonus.parentNode.className = "exceed"; } else { oImg.className = "fail"; oBonus.parentNode.className = "fail"; } } /* Determine if suggested requirements have been met and set image indicators accordingly */ var arrChars = [nAlphasOnly,nNumbersOnly,nRepChar,nConsecAlphaUC,nConsecAlphaLC,nConsecNumber,nSeqAlpha,nSeqNumber]; var arrCharsIds = ["nAlphasOnly","nNumbersOnly","nRepChar","nConsecAlphaUC","nConsecAlphaLC","nConsecNumber","nSeqAlpha","nSeqNumber"]; var arrCharsLen = arrChars.length; for (var c=0; c < arrCharsLen; c++) { var oImg = document.getElementById('div_' + arrCharsIds[c]); var oBonus = document.getElementById(arrCharsIds[c] + 'Bonus'); document.getElementById(arrCharsIds[c]).innerHTML = arrChars[c]; if (arrChars[c] > 0) { oImg.className = "warn"; oBonus.parentNode.className = "warn"; } else { oImg.className = "pass"; oBonus.parentNode.className = "pass"; } } /* Determine complexity based on overall score */ if (nScore > 100) { nScore = 100; } else if (nScore < 0) { nScore = 0; } if (nScore >= 0 && nScore < 20) { sComplexity = "Very Weak"; } else if (nScore >= 20 && nScore < 40) { sComplexity = "Weak"; } else if (nScore >= 40 && nScore < 60) { sComplexity = "Good"; } else if (nScore >= 60 && nScore < 80) { sComplexity = "Strong"; } else if (nScore >= 80 && nScore <= 100) { sComplexity = "Very Strong"; } /* Display updated score criteria to client */ oScorebar.style.backgroundPosition = "-" + parseInt(nScore * 4) + "px"; oScore.innerHTML = nScore + "%"; oComplexity.innerHTML = sComplexity; } else { /* Display default score criteria to client */ initPwdChk(); oScore.innerHTML = nScore + "%"; oComplexity.innerHTML = sComplexity; } } function togPwdMask() { var oPwd = document.getElementById("passwordPwd"); var oTxt = document.getElementById("passwordTxt"); var oMask = document.getElementById("mask"); if (oMask.checked) { oPwd.value = oTxt.value; oPwd.className = ""; oTxt.className = "hide"; } else { oTxt.value = oPwd.value; oPwd.className = "hide"; oTxt.className = ""; } } function initPwdChk(restart) { /* Reset all form values to their default */ document.getElementById("nLength").innerHTML = "0"; document.getElementById("nAlphaUC").innerHTML = "0"; document.getElementById("nAlphaLC").innerHTML = "0"; document.getElementById("nNumber").innerHTML = "0"; document.getElementById("nSymbol").innerHTML = "0"; document.getElementById("nMidChar").innerHTML = "0"; document.getElementById("nRequirements").innerHTML = "0"; document.getElementById("nAlphasOnly").innerHTML = "0"; document.getElementById("nNumbersOnly").innerHTML = "0"; document.getElementById("nRepChar").innerHTML = "0"; document.getElementById("nConsecAlphaUC").innerHTML = "0"; document.getElementById("nConsecAlphaLC").innerHTML = "0"; document.getElementById("nConsecNumber").innerHTML = "0"; document.getElementById("nSeqAlpha").innerHTML = "0"; document.getElementById("nSeqNumber").innerHTML = "0"; document.getElementById("nLengthBonus").innerHTML = " 0"; document.getElementById("nAlphaUCBonus").innerHTML = " 0"; document.getElementById("nAlphaLCBonus").innerHTML = " 0"; document.getElementById("nNumberBonus").innerHTML = " 0"; document.getElementById("nSymbolBonus").innerHTML = " 0"; document.getElementById("nMidCharBonus").innerHTML = " 0"; document.getElementById("nRequirementsBonus").innerHTML = " 0"; document.getElementById("nAlphasOnlyBonus").innerHTML = " 0"; document.getElementById("nNumbersOnlyBonus").innerHTML = " 0"; document.getElementById("nRepCharBonus").innerHTML = " 0"; document.getElementById("nConsecAlphaUCBonus").innerHTML = " 0"; document.getElementById("nConsecAlphaLCBonus").innerHTML = " 0"; document.getElementById("nConsecNumberBonus").innerHTML = " 0"; document.getElementById("nSeqAlphaBonus").innerHTML = " 0"; document.getElementById("nSeqNumberBonus").innerHTML = " 0"; document.getElementById("nLengthBonus").parentNode.className = "fail"; document.getElementById("nAlphaUCBonus").parentNode.className = "fail"; document.getElementById("nAlphaLCBonus").parentNode.className = "fail"; document.getElementById("nNumberBonus").parentNode.className = "fail"; document.getElementById("nSymbolBonus").parentNode.className = "fail"; document.getElementById("nMidCharBonus").parentNode.className = "fail"; document.getElementById("nRequirementsBonus").parentNode.className = "fail"; document.getElementById("nAlphasOnlyBonus").parentNode.className = "pass"; document.getElementById("nNumbersOnlyBonus").parentNode.className = "pass"; document.getElementById("nRepCharBonus").parentNode.className = "pass"; document.getElementById("nConsecAlphaUCBonus").parentNode.className = "pass"; document.getElementById("nConsecAlphaLCBonus").parentNode.className = "pass"; document.getElementById("nConsecNumberBonus").parentNode.className = "pass"; document.getElementById("nSeqAlphaBonus").parentNode.className = "pass"; document.getElementById("nSeqNumberBonus").parentNode.className = "pass"; document.getElementById("div_nLength").className = "fail"; document.getElementById("div_nAlphaUC").className = "fail"; document.getElementById("div_nAlphaLC").className = "fail"; document.getElementById("div_nNumber").className = "fail"; document.getElementById("div_nSymbol").className = "fail"; document.getElementById("div_nMidChar").className = "fail"; document.getElementById("div_nRequirements").className = "fail"; document.getElementById("div_nAlphasOnly").className = "pass"; document.getElementById("div_nNumbersOnly").className = "pass"; document.getElementById("div_nRepChar").className = "pass"; document.getElementById("div_nConsecAlphaUC").className = "pass"; document.getElementById("div_nConsecAlphaLC").className = "pass"; document.getElementById("div_nConsecNumber").className = "pass"; document.getElementById("div_nSeqAlpha").className = "pass"; document.getElementById("div_nSeqNumber").className = "pass"; document.getElementById("passwordPwd").value = ""; document.getElementById("passwordTxt").value = ""; document.getElementById("scorebar").style.backgroundPosition = "0"; if (restart) { document.getElementById("passwordPwd").className = ""; document.getElementById("passwordTxt").className = "hide"; document.getElementById("mask").checked = true; } } addLoadEvent(function() { initPwdChk(1); }); Link to comment https://forums.phpfreaks.com/topic/179863-modifying-js-function-help/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.