function runPassword(strPassword, strFieldID) {
	var intScore   = 0;
	var strVerdict = "weak";
	var strLog     = "";
	var strColor = "#fff";
	var ctlBar = document.getElementById(strFieldID + "_bar"); 
    var ctlText = document.getElementById(strFieldID + "_text");
	var passwd = strPassword;
	
	// PASSWORD LENGTH
	if (passwd.length<5)                         // length 4 or less
	{
		intScore = (intScore+1)
		strLog   = strLog + "2 points for length (" + passwd.length + ")\n"
	}
	else if (passwd.length>4 && passwd.length<8) // length between 5 and 7
	{
		intScore = (intScore+3)
		strLog   = strLog + "4 points for length (" + passwd.length + ")\n"
	}
	else if (passwd.length>7 && passwd.length<16)// length between 8 and 15
	{
		intScore = (intScore+5)
		strLog   = strLog + "10 points for length (" + passwd.length + ")\n"
	}
	else if (passwd.length>15)                    // length 16 or more
	{
		intScore = (intScore+10)
		strLog   = strLog + "12 point for length (" + passwd.length + ")\n"
	}
	
	
	// LETTERS (Not exactly implemented as dictacted above because of my limited understanding of Regex)
	if (passwd.match(/[a-z]/))                              // [verified] at least one lower case letter
	{
		intScore = (intScore+1)
		strLog   = strLog + "1 point for at least one lower case char\n"
	}
	
	if (passwd.match(/[A-Z]/))                              // [verified] at least one upper case letter
	{
		intScore = (intScore+3)
		strLog   = strLog + "5 points for at least one upper case char\n"
	}
	
	// NUMBERS
	if (passwd.match(/\d+/))                                 // [verified] at least one number
	{
		intScore = (intScore+2)
		strLog   = strLog + "5 points for at least one number\n"
	}
	
	if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/))             // [verified] at least three numbers
	{
		intScore = (intScore+4)
		strLog   = strLog + "5 points for at least three numbers\n"
	}
	
	
	// SPECIAL CHAR
	if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/))            // [verified] at least one special character
	{
		intScore = (intScore+3)
		strLog   = strLog + "5 points for at least one special char\n"
	}
	
								 // [verified] at least two special characters
	if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/))
	{
		intScore = (intScore+3)
		strLog   = strLog + "5 points for at least two special chars\n"
	}

	
	// COMBOS
	if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))        // [verified] both upper and lower case
	{
		intScore = (intScore+2)
		strLog   = strLog + "2 combo points for upper and lower letters\n"
	}

	if (passwd.match(/([a-zA-Z])/) && passwd.match(/([0-9])/)) // [verified] both letters and numbers
	{
		intScore = (intScore+2)
		strLog   = strLog + "2 combo points for letters and numbers\n"
	}

								// [verified] letters, numbers, and special characters
	if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/))
	{
		intScore = (intScore+2)
		strLog   = strLog + "2 combo points for letters, numbers and special chars\n"
	}


	if(intScore < 7)
	{
		strColor = "#ec1a25"
		strVerdict = "* UNSECURED"
	}
	else if (intScore > 6 && intScore < 8)
	{
		strVerdict = "* TOO SHORT"
		strColor = "#ff4800"
	}
	else if (intScore > 7 && intScore < 16)
	{
		strVerdict = "* SECURED" 
		strColor = "#0e91ed"
		}
	else
	{
		strVerdict = "* HIGHLY SECURED"
		strColor = "#006600"
	}
	ctlBar.style.backgroundColor = strColor;
	ctlText.innerHTML = "<span style='color: " + strColor + ";'>" + strVerdict + "</span>";
}
