var commonPasswords=new Array('password', 'pass', '1234', '1246'); 
var numbers="0123456789"; 
var lowercase="abcdefghijklmnopqrstuvwxyz"; 
var uppercase="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
var punctuation="_"; 
function checkPassword(password){ 
var combinations=0; 
if (contains(password, numbers) > 0){ combinations += 10;} 
if (contains(password, lowercase) > 0){ combinations += 26;} 
if (contains(password, uppercase) > 0){ combinations += 26;} 
if (contains(password, punctuation) > 0){ combinations += punctuation.length;} 
var totalCombinations=Math.pow(combinations, password.length); 
if(isCommonPassword(password)){totalCombinations=75000} 
var timeInSeconds=(totalCombinations / 200) / 2; 
var timeInDays=timeInSeconds / 86400 
var lifetime=365;
var percentage=timeInDays / lifetime; 
var friendlyPercentage=cap(Math.round(percentage * 100), 100); 
if(totalCombinations != 75000 && friendlyPercentage < (password.length * 5)){friendlyPercentage += password.length * 5;} 
var progressBar=document.getElementById("progressBar"); 
progressBar.style.width=friendlyPercentage + "%"; 
if(percentage > 1){progressBar.style.backgroundColor="#3bce08";return; } 
if(percentage > 0.5){progressBar.style.backgroundColor="#ffd801";return;} 
if(percentage > 0.10){progressBar.style.backgroundColor="orange";return; } 
if(percentage <= 0.10){progressBar.style.backgroundColor="red";return;}
} 
function cap(number, max){if (number > max){return max;}else { return number;}} 
function isCommonPassword(password){for (i=0; i < commonPasswords.length; i++){var commonPassword=commonPasswords[i];if (password == commonPassword){return true;}} return false;} 
function contains(password, validChars){count=0; for (i=0; i < password.length; i++){ var char=password.charAt(i); if (validChars.indexOf(char) > -1){ count++; } } return count; } 