PasswordStrength=function(a){this.init(a)};PasswordStrength.prototype={debug:false,min_length:6,password_field:null,username_field:null,username:null,bar:null,text:null,messages:null,classNames:["weak","good","secure","verysecure"],classContainer:null,password:"",percent:0,init:function(b){b=b||{};this.min_length=b.min_length||this.min_length;this.password_field=document.getElementById(b.password_field);this.username_field=b.username_field?document.getElementById(b.username_field):null;this.username=b.username;this.classContainer=b.container?document.getElementById(b.container):null;this.bar=document.getElementById(b.bar);this.text=document.getElementById(b.text);this.messages=b.messages||["weak","good","secure","very secure"];if(!window.console){this.debug=false}var a=this;this.password_field.onkeyup=function(){a.check()}},check:function(){this.password=this.password_field.value;this.display(this.evaluate())},evaluate:function(){var c=0;var b=this.password.length;var a=0;var d=this.username_field?this.username_field.value:this.username;if(!this.has_unique_chars()){a=0}else{if(d&&d==this.password){a=0}else{c+=this.check_length()*5;if(c&&this.has_numeric()){if(this.has_lowercase()){c+=4}if(this.has_uppercase()){c+=10}if(this.has_numeric()){c+=10}if(this.has_punctuation()){c+=16}}}}if(this.debug){console.log("strength: "+c+", percent: "+(c*2))}return c*2},display:function(c){var b=0;var a=100;if(c>a){c=a}if(c>=30){b=1}if(c>=70){b=2}if(c>95){b=3}this.text.innerHTML=this.messages[b];this.bar.style.width=c+"%";if(this.classContainer){this.classContainer.className=this.classNames[b]}},has_lowercase:function(){if(this.password.search(/[a-z]/)>-1){if(this.debug){console.log("has lower")}return true}return false},has_uppercase:function(){if(this.password.search(/[A-Z]/)>-1){if(this.debug){console.log("has upper")}return true}return false},has_numeric:function(){if(this.password.search(/[0-9]/)>-1){if(this.debug){console.log("has numeric")}return true}return false},has_punctuation:function(){if(this.password.search(/[^a-zA-Z0-9'\\]/)>-1){if(this.debug){console.log("has punctuation")}return true}return false},check_length:function(){var a=this.password.length;if(a<=this.min_length){return 0}if(a<=9){return 1}return 2},check_consecutive:function(){var c=3;var g=1;var e="";var b=this.password;var f=b.charAt(0);for(var d=1,a=b.length;d<a;++d){if((e=b.charAt(d))==f){++g;if(g==c){if(this.debug){console.log("has consecutive")}return true}}else{f=e;g=1}}return false},has_unique_chars:function(){var a=this.password;var c=a.charAt(0);for(var b=a.length;--b>0;){if(a.charAt(b)!=c){if(this.debug){console.log("chars are unique")}return true}}return false}};