Ext.namespace("Ext.ux");Ext.ux.PasswordField=function(a){if(!a){a={}}Ext.ux.PasswordField.superclass.constructor.call(this,a);this.showCapsWarning=a.showCapsWarning||true;this.showStrengthMeter=a.showStrengthMeter||false;this.pwStrengthTest=a.pwStrengthTest||this.calcStrength;this.pwStrengthMeterCls=a.pwStrengthMeterCls||"x-form-password-meter";this.pwStrengthMeterFocusCls=a.pwStrengthMeterFocusCls||"x-form-password-meter-focus";this.pwStrengthScoreBarCls=a.pwStrengthScoreBarCls||"x-form-password-scorebar"};Ext.extend(Ext.ux.PasswordField,Ext.form.TextField,{inputType:"password",onRender:function(b,a){Ext.ux.PasswordField.superclass.onRender.call(this,b,a);if(this.showCapsWarning){var c=Ext.id();this.alertBox=Ext.DomHelper.append(document.body,{tag:"div",style:"width: 10em; z-index: 99999;",cls:"x-alert",children:[{tag:"div",style:"text-align: center; color: red;",html:"Caps Lock is on.",id:c}]},true);Ext.fly(c).boxWrap();this.alertBox.hide()}if(this.showStrengthMeter){this.objMeter=b.createChild({tag:"div","class":this.pwStrengthMeterCls});this.objMeter.setWidth(350);this.scoreBar=this.objMeter.createChild({tag:"div","class":this.pwStrengthScoreBarCls});if(Ext.isIE){if(Ext.isIE6){this.objMeter.setStyle("margin-left","3px")}else{if(Ext.isIE7){}else{if(Ext.isIE8){this.objMeter.setStyle("margin-left","16px")}else{this.objMeter.setStyle("margin-left","3px")}}}}}},initEvents:function(){Ext.ux.PasswordField.superclass.initEvents.call(this);this.el.on("keypress",this.handleKeypress,this);this.el.on("blur",this.handleBlur,this);this.el.on("focus",this.handleFocus,this);this.el.on("keyup",this.handleKeyUp,this);this.on("resize",function(a,d,b,e,c){this.el.getWidth(false)},this)},handleFocus:function(a){if(!Ext.isOpera){if(this.showStrengthMeter){this.objMeter.addClass(this.pwStrengthMeterFocusCls)}}},handleBlur:function(a){if(!Ext.isOpera){if(this.showStrengthMeter){this.objMeter.removeClass(this.pwStrengthMeterFocusCls)}}if(this.showCapsWarning){this.hideCapsMessage()}},handleKeypress:function(b){var a=b.getCharCode();if(a==b.ESC){this.setRawValue("")}if(this.showCapsWarning){if((b.shiftKey&&a>=97&&a<=122)||(!b.shiftKey&&a>=65&&a<=90)){this.showCapsMessage(b.target)}else{this.hideCapsMessage()}}},handleKeyUp:function(a){if(this.showStrengthMeter){this.updateMeter(a)}},showCapsMessage:function(b){var a=this.showStrengthMeter?"tl-tr":"l-r";this.alertBox.alignTo(b,a,[5,0]);this.alertBox.show()},hideCapsMessage:function(){this.alertBox.hide()},updateMeter:function(d){var g=0;var c=d.target.value;var b=this.objMeter.getWidth()-2;var a=this.pwStrengthTest(c);if(a>100){a=100}var f=(b/100)*a;this.scoreBar.setWidth(f,true)},calcStrength:function(b){var a=0;if(b.length==0){return(a)}a+=b.length;if(b.length>0&&b.length<=4){a+=b.length}else{if(b.length>=5&&b.length<=7){a+=6}else{if(b.length>=8&&b.length<=15){a+=12}else{if(b.length>=16){a+=18}}}}if(b.match(/[a-z]/)){a+=1}if(b.match(/[A-Z]/)){a+=5}if(b.match(/\d/)){a+=5}if(b.match(/.*\d.*\d.*\d/)){a+=5}if(b.match(/[!,@,#,$,%,^,&,*,?,_,~]/)){a+=5}if(b.match(/.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~]/)){a+=5}if(b.match(/(?=.*[a-z])(?=.*[A-Z])/)){a+=2}if(b.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/)){a+=2}if(b.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!,@,#,$,%,^,&,*,?,_,~])/)){a+=2}return Math.round(a*2)},reset:function(){if(this.showStrengthMeter){this.scoreBar.setWidth(0,true)}}});Ext.reg("uxpassword",Ext.ux.PasswordField);