$(document).ready(function(){
    $("#newpw").keyup(function () {
        var pwvalue = $("#newpw").val();
        var pwstrength = getPasswordStrength(pwvalue);
        $("#pwstrength").html("Strong");
        $("#pwstrengthpos").css("background-color","#33CC00");
        if (pwstrength<75) {
            $("#pwstrength").html("Moderate");
            $("#pwstrengthpos").css("background-color","#ff6600");
        }
        if (pwstrength<30) {
            $("#pwstrength").html("Weak");
            $("#pwstrengthpos").css("background-color","#cc0000");
        }
        $("#pwstrengthpos").css("width",pwstrength);
        $("#pwstrengthneg").css("width",100-pwstrength);
    });
});

/*function getPasswordStrength(pw){
    var pwlength=(pw.length);
    if(pwlength>5)pwlength=5;
    var numnumeric=pw.replace(/[0-9]/g,"");
    var numeric=(pw.length-numnumeric.length);
    if(numeric>3)numeric=3;
    var symbols=pw.replace(/\W/g,"");
    var numsymbols=(pw.length-symbols.length);
    if(numsymbols>3)numsymbols=3;
    var numupper=pw.replace(/[A-Z]/g,"");
    var upper=(pw.length-numupper.length);
    if(upper>3)upper=3;
    var pwstrength=((pwlength*10)-20)+(numeric*10)+(numsymbols*15)+(upper*10);
    if(pwstrength<0){pwstrength=0}
    if(pwstrength>100){pwstrength=100}
    return pwstrength;
}*/

function showStrengthBar() {
    document.write('<table align="center"><tr><td>Password Strength:</td><td width="102"><div id="pwstrengthpos" style="position:relative;float:left;width:0px;background-color:#33CC00;border:1px solid #000;border-right:0px;">&nbsp;</div><div id="pwstrengthneg" style="position:relative;float:right;width:100px;background-color:#efefef;border:1px solid #000;border-left:0px;">&nbsp;</div></td><td><div id="pwstrength">Weak</div></td></tr></table>');
}
/*-------- chang by siwakorn -----------*/

function getPasswordStrength(pw){
	score = 0;
	score += pw.length * 4;
	score += ( checkRep(1,pw).length - pw.length ) * 1;
	score += ( checkRep(2,pw).length - pw.length ) * 1;
	score += ( checkRep(3,pw).length - pw.length ) * 1;
	score += ( checkRep(4,pw).length - pw.length ) * 1;
	if (pw.match(/(.*[0-9].*[0-9].*[0-9])/))  score += 5;
	if (pw.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) score += 5;
	if (pw.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))  score += 10;
	if (pw.match(/([a-zA-Z])/) && pw.match(/([0-9])/))  score += 10;
	if (pw.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && pw.match(/([0-9])/))  score += 10;
	if (pw.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && pw.match(/([a-zA-Z])/))  score += 10;
	if (pw.match(/^\w+$/) || pw.match(/^\d+$/) )  score -= 10;
	if (score < 0) return 0;
	if (score > 100) return 100;
  return (score);
}

function checkRep(pLen,str) {
	res = "";
	for ( i=0; i<str.length ; i++ ) {
		repeated=true;
		for (j=0;j < pLen && (j+i+pLen) < str.length;j++)
			repeated=repeated && (str.charAt(j+i)==str.charAt(j+i+pLen));
		if (j<pLen) repeated=false;
		if (repeated) {
			i+=pLen-1;
			repeated=false;
		}
		else {
			res+=str.charAt(i);
		}
	}
	return res;
}

/*-------- chang by siwakorn -----------*/