
if(!SAPO.Component||typeof(SAPO.Component)=='undefined'){SAPO.namespace('Component');}
(function(){var Selector=SAPO.Dom.Selector,Css=SAPO.Dom.Css;SAPO.Component.Passwordmeter=function(options){this.init(options);};SAPO.Component.Passwordmeter.prototype={init:function()
{var options=Object.extend({meter:'slide',elmMeter:false,elmParentMeter:false,classNameMeter:false,elmText:false,textCallBack:false,textInColorMeter:false,startText:false,callBack:false,passwordId:false,debug:false},arguments[0]||{});this.options=options;if(this.options.meter=='slide'){this.passwdLevelPointElm=s$(this.options.elmMeter);}else if(this.options.meter=='text'){this.passwdLevelContent=s$(this.options.elmText);}else if(this.options.meter=='points'){this.passwdLevelPointsParent=s$(this.options.elmParentMeter);this.aPasswdLevelPoints=Selector.select(this.passwdLevelPointsParent.tagName.toLowerCase()+' .'+this.options.classNameMeter);}else if(this.options.meter=='color'){this.passwdLevelContent=s$(this.options.elmText);this.passwdLevelContent.innerHTML='';var span=document.createElement('span');if(this.options.startText){span.innerHTML=this.options.startText;}
this.passwdLevelContent.appendChild(span);var passwdId=false;if(this.options.passwordId&&(passwdId=document.getElementById(this.options.passwordId))){var borderLeft=parseInt(Css.getStyle(this.passwdLevelContent,'border-left-width'))||0;var borderRight=parseInt(Css.getStyle(this.passwdLevelContent,'border-right-width'))||0;var paddingLeft=parseInt(Css.getStyle(this.passwdLevelContent,'padding-left'))||0;var paddingRight=parseInt(Css.getStyle(this.passwdLevelContent,'padding-right'))||0;this.passwdLevelContent.style.width=passwdId.offsetWidth-borderLeft-borderRight-paddingLeft-paddingRight+'px';}}},_getRGBHEX:function(percentage){var red=1.0;var green=0.0;var blue=0;percentage/=100.0;if(percentage<0.5){red=1.0;green=(2*percentage);}else{green=1.0;red=1.0-(2*(percentage-0.5));}
red=(Math.floor(red*255,0)).toString(16);red=(red.length==1)?"0"+red:red;green=(Math.floor(green*255,0)).toString(16);green=(green.length==1)?"0"+green:green;return('#'+red+green+'00');},set:function(password)
{var security=this._passwdSecurity(password);switch(this.options.meter){case'slide':this.setPasswdLevelSlide(security);break;case'points':this.setPasswdLevelPoints(security);break;case'text':this.setPasswdLevelText(security);break;case'color':this.setPasswdLevelColor(security);break;default:this.setPasswdLevelSlide(security);}},_passwdSecurity:function(passwd)
{var security=0;if(passwd&&typeof(passwd)!='undefined'&&passwd!==null&&passwd!==''){passwd=passwd.toString();var len=passwd.toString().length;if(len>8){len=8;}
var lPeso=(len/8)*60;security+=lPeso;if(len<6){return security;}
var reMaiusculas=new RegExp("[A-Z]");if(reMaiusculas.test(passwd)){security+=10;}
var reNumeros=new RegExp("[1-9]");if(reNumeros.test(passwd)){security+=10;}
var reSpecial=new RegExp("[^a-z1-9]","i");if(reSpecial.test(passwd)){security+=20;}}
return security;},setPasswdLevelSlide:function(security)
{if(security===0){}else{}
var pointerSecurityLeft=security*2;if(pointerSecurityLeft>195){pointerSecurityLeft=195;}
if(pointerSecurityLeft<=0){pointerSecurityLeft=-5;}
this.passwdLevelPointElm.style.left=pointerSecurityLeft+'px';this.passwdLevelPointElm.alt=security+'%';this.passwdLevelPointElm.title=security+'%';},setPasswdLevelPoints:function(security)
{var i,totalPoints=this.aPasswdLevelPoints.length;var numPoints=Math.round(totalPoints*(security/100));for(i=0;i<totalPoints;i++){this.aPasswdLevelPoints[i].style.backgroundColor='#FFF';}
var totalRGBColor=(255*2);var rgbVariation=Math.round(totalRGBColor/totalPoints);i=0;var colorR=255;var colorG=1;var colorB=1;var changeInc=false;while(i<numPoints){if(i<(totalPoints/2)){colorR=255;this.aPasswdLevelPoints[i].style.backgroundColor='rgb('+colorR+', '+colorG+','+colorB+')';colorG+=rgbVariation;}else{if(!changeInc){colorR=255;colorG=255;changeInc=true;}
this.aPasswdLevelPoints[i].style.backgroundColor='rgb('+colorR+', '+colorG+','+colorB+')';colorR-=rgbVariation;}
i++;}
if(this.options.callBack){this.options.callBack(security);}},setPasswdLevelText:function(security)
{if(!this.options.textCallBack){this.passwdLevelContent.innerHTML=security.toString()+'%';}else{this.passwdLevelContent.innerHTML=this.options.textCallBack(security);}},setPasswdLevelColor:function(security)
{if(!this.options.textCallBack){if(this.options.textInColorMeter){if(security<=15){this.passwdLevelContent.childNodes[0].innerHTML='Muito Fraca';}else if(security>15&&security<=40){this.passwdLevelContent.childNodes[0].innerHTML='Fraca';}else if(security>40&&security<=60){this.passwdLevelContent.childNodes[0].innerHTML='M&eacute;dia';}else if(security>60&&security<=80){this.passwdLevelContent.childNodes[0].innerHTML='Forte';}else if(security>80&&security<=100){this.passwdLevelContent.childNodes[0].innerHTML='Muito Forte';}}
this.passwdLevelContent.style.backgroundColor=this._getRGBHEX(security);}else{this.passwdLevelContent.childNodes[0].innerHTML=this.options.textCallBack(security);}},debug:function()
{}};}());
