(function(a){a.fn.shortPass="Too short";a.fn.badPass="Weak";a.fn.goodPass="Good";a.fn.strongPass="Strong";a.fn.samePassword="Username and Password identical.";a.fn.noMatch="Passwords do not match.";a.fn.resultStyle="";a.fn.passStrength=function(b){var d={shortPass:"shortPass",badPass:"badPass",goodPass:"goodPass",strongPass:"strongPass",noMatch:"noMatch",baseStyle:"testresult",userid:"",verify:"",messageloc:1};var c=a.extend(d,b);return this.each(function(){var g=a(this);var e=a(c.verify);var f;a(g).unbind().keyup(function(){f=a.fn.teststrength(a(this).val(),a(c.userid).val(),c);if(c.messageloc===1){a(this).next("."+c.baseStyle).remove();a(this).after('<span class="'+c.baseStyle+'"><span></span></span>');a(this).next("."+c.baseStyle).addClass(a(this).resultStyle).find("span").text(f)}else{a(this).prev("."+c.baseStyle).remove();a(this).before('<span class="'+c.baseStyle+'"><span></span></span>');a(this).prev("."+c.baseStyle).addClass(a(this).resultStyle).find("span").text(f)}});if(c.verify!==""){e.unbind().keyup(function(){var h=a.fn.testmatch(g.val(),e.val(),c);if(!h){h=f}if(c.messageloc===1){g.next("."+c.baseStyle).remove();g.after('<span class="'+c.baseStyle+'"><span></span></span>');g.next("."+c.baseStyle).addClass(g.resultStyle).find("span").text(h)}else{g.prev("."+c.baseStyle).remove();g.before('<span class="'+c.baseStyle+'"><span></span></span>');g.prev("."+c.baseStyle).addClass(g.resultStyle).find("span").text(h)}})}a.fn.teststrength=function(h,k,i){var j=0;if(h.length<4){this.resultStyle=i.shortPass;return a(this).shortPass}if(h.toLowerCase()==k.toLowerCase()){this.resultStyle=i.badPass;return a(this).samePassword}j+=h.length*4;j+=(a.fn.checkRepetition(1,h).length-h.length)*1;j+=(a.fn.checkRepetition(2,h).length-h.length)*1;j+=(a.fn.checkRepetition(3,h).length-h.length)*1;j+=(a.fn.checkRepetition(4,h).length-h.length)*1;if(h.match(/(.*[0-9].*[0-9].*[0-9])/)){j+=5}if(h.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)){j+=5}if(h.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){j+=10}if(h.match(/([a-zA-Z])/)&&h.match(/([0-9])/)){j+=15}if(h.match(/([!,@,#,$,%,^,&,*,?,_,~])/)&&h.match(/([0-9])/)){j+=15}if(h.match(/([!,@,#,$,%,^,&,*,?,_,~])/)&&h.match(/([a-zA-Z])/)){j+=15}if(h.match(/^\w+$/)||h.match(/^\d+$/)){j-=10}if(j<0){j=0}if(j>100){j=100}if(j<34){this.resultStyle=i.badPass;return a(this).badPass}if(j<68){this.resultStyle=i.goodPass;return a(this).goodPass}this.resultStyle=i.strongPass;return a(this).strongPass};a.fn.testmatch=function(i,h,j){if(i!=h){return a(this).noMatch}return false}})}})(jQuery);$.fn.checkRepetition=function(a,f){var d="";for(var c=0;c<f.length;c++){var e=true;for(var b=0;b<a&&(b+c+a)<f.length;b++){e=e&&(f.charAt(b+c)==f.charAt(b+c+a))}if(b<a){e=false}if(e){c+=a-1;e=false}else{d+=f.charAt(c)}}return d};
