var test_results_colors=['#f08080','#ffa500','#a0a0a0','#80f080','#20ff20'];function PasswordInfo(password){this.password=password;this.length=password.length;var uc=password.uniqueChars();this.numUniqueChars=uc.length;this.hasDigits=(password.search(/[0-9]/)>=0);this.hasLowerLetters=(password.search(/[a-z]/)>=0);this.hasUpperLetters=(password.search(/[A-Z]/)>=0);this.hasSpecialChars=(password.search(/[^0-9a-zA-Z]/)>=0);this.charsetSize=0;if(this.hasDigits)
this.charsetSize+=10;if(this.hasLowerLetters)
this.charsetSize+=26;if(this.hasUpperLetters)
this.charsetSize+=26;if(this.hasSpecialChars)
this.charsetSize+=32;if(this.charsetSize>0)
this.bitsPerChar=Math.log(this.charsetSize)/Math.LN2;else
this.bitsPerChar=0;if(this.numUniqueChars>0)
this.localBitsPerChar=Math.log(this.numUniqueChars)/Math.LN2;else
this.localBitsPerChars=0;var numBits=this.length*this.bitsPerChar;var localNumBits=this.length*this.localBitsPerChar;this.numBitsRound=Math.round(numBits);this.localNumBitsRound=Math.round(localNumBits);var perSec=Math.log(1000000)/Math.LN2;this.howLong=Math.round(Math.pow(2,numBits- perSec));this.numCombinations=Math.pow(this.charsetSize,this.length);}
function test_password_length(pi){var l=pi.length;if(l<=5)
return 0;if(l<=6)
return 1;if(l<=7)
return 2;if(l<=10)
return 3;return 4;}
function test_password_num_unique_chars(pi){var l=pi.numUniqueChars;if(l<=4)
return 0;if(l<=5)
return 1;if(l<=6)
return 2;if(l<=9)
return 3
return 4;}
function test_password_charset_size(pi){var l=pi.charsetSize;if(l<20)
return 0;if(l<30)
return 1;if(l<40)
return 2;if(l<55)
return 3
return 4;}
function test_password_total_value(pi){var l=pi.numBitsRound;if(l>pi.localNumBitsRound)
l=pi.localNumBitsRound;if(l<10)
return 0;if(l<15)
return 1;if(l<24)
return 2;if(l<40)
return 3;return 4;}
function testPassword(pi,testName){var fun=eval('test_password_'+testName);var r=fun(pi);var el=getElement('test_password_'+testName);el.innerHTML=test_results_txt[r];el.style.backgroundColor=test_results_colors[r];}
function onTestParamsChange(){var password="";var tst_password=getElement('tst-password');if(tst_password){password=tst_password.value;var pi=new PasswordInfo(password);testPassword(pi,'length');testPassword(pi,'num_unique_chars');testPassword(pi,'charset_size');testPassword(pi,'total_value');}}
