
﻿if(typeof(MI)=="undefined"||MI==null){MI={};}
MI.PasswordStrength=function(containerId,controlToValidateId,compareToControlIds){var container=null;var compareToIds=null;var MIN_LENGTH=8;var MIN_NON_ALPHA=2;var IMG_SRC_CROSS="/Industry/assets/images/cross.png";var IMG_SRC_ASTERISK="/Industry/assets/images/asterisk_yellow.png";var IMG_SRC_TICK="/Industry/assets/images/tick.png";var BG_COLOR_GREEN="#E9FFE9";var BG_COLOR_YELLOW="#FFFFE9";var BG_COLOR_RED="#FFE9E9";var BORDER_COLOR_GREEN="#00FF00";var BORDER_COLOR_YELLOW="#FFFF00";var BORDER_COLOR_RED="#FF0000";MI.PasswordStrength.prototype.init=function(containerId,controlToValidateId,compareToControlIds){this.compareToIds=compareToControlIds;this.container=document.getElementById(containerId);var control=document.getElementById(controlToValidateId);this.initContainer(this.container,control);var self=this;control.onkeyup=function(){self.handleOnChange(control);};control.onfocus=function(){if(control.value.length>0)self.show();}
control.onblur=function(){self.hide();}};MI.PasswordStrength.prototype.show=function(){this.container.style.display="";this.container.style.visible="visible";};MI.PasswordStrength.prototype.hide=function(){this.container.style.display="none";this.container.style.visible="";};MI.PasswordStrength.prototype.initContainer=function(container,control){container.className="passwordStrength";var ctlLeft=window.findPosX(control);container.style.left=ctlLeft+control.clientWidth+"px";while(container.hasChildNodes()){container.removeChild(container.lastChild);}
container.appendChild(document.createElement("img"));container.appendChild(document.createElement("span"));this.setStyles("Weak");this.hide();};MI.PasswordStrength.prototype.setStyles=function(strength){var img=this.container.firstChild;var span=this.container.lastChild;span.innerHTML=strength;switch(strength){case"Weak":img.src=IMG_SRC_CROSS;this.container.style.borderColor=BORDER_COLOR_RED;this.container.style.backgroundColor=BG_COLOR_RED;break;case"Average":img.src=IMG_SRC_ASTERISK;this.container.style.borderColor=BORDER_COLOR_YELLOW;this.container.style.backgroundColor=BG_COLOR_YELLOW;break;case"Strong":img.src=IMG_SRC_TICK;this.container.style.borderColor=BORDER_COLOR_GREEN;this.container.style.backgroundColor=BG_COLOR_GREEN;break;}};MI.PasswordStrength.prototype.handleOnChange=function(control){this.show();var pass=control.value.toLowerCase();var strength="Weak";if(pass.length>6){var numOrSpecChar=0;var charCode=0;var letterFound=false;for(i=0;i<pass.length;i++){charCode=pass.charCodeAt(i);if(charCode>=33&&charCode<=64){numOrSpecChar++;}
if(charCode>=97&&charCode<=122){letterFound=true;}}
var containsBadValues=this.containsValuesFromOtherControls(pass);if(!containsBadValues&&letterFound){if(pass.length>=8&&numOrSpecChar>=3){strength="Strong";}else if(numOrSpecChar>0){strength="Average";}}}
this.setStyles(strength);};MI.PasswordStrength.prototype.containsValuesFromOtherControls=function(pass){var p=pass.toLowerCase();for(i=0;i<this.compareToIds.length;i++){var ctl=document.getElementById(this.compareToIds[i]);if(ctl&&ctl.value&&ctl.value.length>0){var tokens=ctl.value.toLowerCase().split(" ");for(j=0;j<tokens.length;j++){if(tokens[j].length>0&&p.indexOf(tokens[j])>=0){return true;}}
tokens=["mail","the","password","test"];for(j=0;j<tokens.length;j++){if(tokens[j].length>0&&p.indexOf(tokens[j])>=0){return true;}}}}
return false;};if(!compareToControlIds){compareToControlIds=[];}
this.init(containerId,controlToValidateId,compareToControlIds);};
