ckOldOnLoad=window.onload;window.onload=ckOnLoad;ckLoaded=false;ckClicked=false;ckN=new Image();ckN.src="images/redx.gif";ckY=new Image();ckY.src="images/greencheck.gif";blank=new Image();blank.src="images/blank.gif";ckLow=2;ckUpp=2;ckDig=2;ckOth=0;ckTot=8;ckEnt=2.9999999;function ckOnClick(){f=document.form1;if(ckClicked  ||  ~ckLoaded)return;ckClicked=true;f.inPswd.value="";}function ckOldOnLoad(){}function ckOnLoad(){if(ckOldOnLoad!=null)ckOldOnLoad();f=document.form1;ckLoaded=true;ckClicked=false;f.inPswd.value="";checkPswd();}function checkPswd(){if(!ckLoaded)return;d=document;f=d.form1;pswdApplet=document.applets["ckPass"];try{if(pswdApplet==null  ||  pswdApplet.check==null)pswdApplet=null;}catch(ex){try{pswdApplet.check(f.inPswd.value)}catch(ex2){}}if(pswdApplet==null){d.getElementById("basedOn").innerHTML="<font color=red><b>Could not load applet,is java installed?</b></font>";}else{pswdApplet.check(f.inPswd.value);var basedHTML="";if(pswdApplet.isEnglishBased()){f.ckEnt.src=((ckEnt<=ent)? ckY : ckN).src;basedHTML="<font color=red><b>Based on: '"+pswdApplet.getBasedOn()+"'</b></font>";}d.getElementById("basedOn").innerHTML=basedHTML;}var str=f.inPswd.value;var tot=str.length;var low=0;var dig=0;var upp=0;var oth=0;for(i=0;i<str.length;i++){c=str.charAt(i);if('a' <=c&&c <='z')low++;else if('A' <=c&&c <='Z')upp++;else if('0' <=c&&c <='9')dig++;else{oth++;}}f.ckLow.src=((ckLow<=low)? ckY : ckN).src;d.getElementById("low").innerHTML=low;f.ckUpp.src=((ckUpp<=upp)? ckY : ckN).src;d.getElementById("upp").innerHTML=upp;f.ckDig.src=((ckDig<=dig)? ckY : ckN).src;d.getElementById("dig").innerHTML=dig;d.getElementById("oth").innerHTML=oth;f.ckTot.src=((ckTot<=tot)? ckY : ckN).src;d.getElementById("tot").innerHTML=tot;var ent=calcEntropy(str);f.ckEnt.src=((ckEnt<=ent)? ckY : ckN).src;d.getElementById("ent").innerHTML=ent;var dys=getDaysToGuess(low,upp,dig,oth,tot,f.GperD.value);dys=Math.floor(dys);dys=(999999999 < dys)? 999999999 : dys;d.getElementById("dys").innerHTML=dys;f.pswdOK.src=(dys < 365)? ckN.src : ckY.src;setTimeout("checkPswd()",500);}function getDaysToGuess(low,upp,dig,oth,tot,i){var d=1.0;var isEng=false;if(pswdApplet!=null){isEng=pswdApplet.isEnglishBased();}if(isEng){d=45425;}else{if(low!=0)d *=Math.pow(26,low);if(upp!=0)d *=Math.pow(26,upp);if(dig!=0)d *=Math.pow(10,dig);if(oth!=0)d *=Math.pow(10,oth);d *=fact(tot)/ fact(low)/ fact(upp)/ fact(dig);}return d /(i * 60 * 60 * 24);}function fact(n){if(n==0){return 1;}return n * fact(n-1);}function calcEntropy(pswd){var ai=new Array();for(var i=0;i<pswd.length;i++){var c=pswd.charCodeAt(i);if(ai[c]==undefined)ai[c]=0;ai[c]++;}entropy=0;for(var i=0;i<ai.length;i++){if(ai[i]!=undefined&&ai[i]!=0){var d=ai[i]/ pswd.length;entropy+=d * Math.log(1.0 / d);}}entropy /=Math.log(2);var p=entropy,v=0;var ret="";p-=v=Math.floor(p);p *=10;ret+=v+".";p-=v=Math.floor(p);p *=10;ret+=v;p-=v=Math.floor(p);p *=10;ret+=v;return ret;}
