/*************** Eltroway Password validator 1.1 ****************/

// Validation settings
var minLength = 6;             // Minimum length of password
var maxLength = 32;            // Maximum length of password

// Custom strings for personalisation
var strRequired = "Required";     // Displays when nothing is entered & password is required
var strTooShort = "Password too short";   // Displays when password is less than minLength 
var strTooLong = "Password too long";      // Displays when password is too long
var strSpecialChars = "Special characters not allowed";     // Displays when user enters special chars
var strNoSpaces = "No spaces allowed.";
var strWeak = "Weak";       // Displays when password is weak strength
var strMedium = "Medium";   // Displays when password is medium strength
var strStrong = "Strong";          // Displays when password is perfect

/************** End of User settings *******************/
	
function validatePassword(sPassword) 
	{
		var passwordString = sPassword;

		if(passwordString.match(/\s/))
		{
			//
			EvalPwd("reset");
			return;
		}
		if(passwordString.length < minLength)
		{
			// strTooShort;
			EvalPwd("reset");
			return;
		}
		if(passwordString.length > maxLength)
		{
			// strTooLong;
			EvalPwd("reset");
			return;
		}
		var strength = 0;
		// Match upper case characters
		if(passwordString.match(/[a-z]/))
		{
			strength++;
		}
		// Match lower case characters
		if(passwordString.match(/[A-Z]/))
		{
			strength++;
		}
		// Match digits
		if(passwordString.match(/\d/))
		{
			strength++;
		}
		if(passwordString.match(/\W/))
		{
			strength++;
		}
		if(passwordString.length > 8)
		{
		    strength++;
		}
		switch(strength)
		{
			case 1: EvalPwd(strWeak);
					break;
			case 2: EvalPwd(strMedium);
					break;
			case 3: EvalPwd(strStrong);
					break;
			case 4: EvalPwd(strStrong);
					break;
			case 5: EvalPwd(strStrong);
					break;
			default: EvalPwd("reset");
					break;
		}				
	}
		
function GetElementById(sID)
{
    try{return document.getElementById(sID)}catch(e){};
}
function EvalPwd(state)
{
    var PWColors=new Array(6);
    if(state == strStrong)
    {
        PWColors=["#87B814","#94C916","#B4E936","#94C916","#B4E936","#333333"];
    }
    else if(state == strMedium)
    {
        PWColors=["#F2AF00","#FFD35E","#F1F1F1","#FFD35E","#333333","#B6B6B6"];
    }
    else if(state == strWeak)
    {
        PWColors=["#FF6422","#F1F1F1","#F1F1F1","#000000","#adadad","#B6B6B6"];
    }
    else if(state == "reset")
    {
        PWColors=["#F1F1F1","#F1F1F1","#F1F1F1","#adadad","#adadad","#B6B6B6"];
    }
    var W=GetElementById("BoxWeak").style;
    var M=GetElementById("BoxMedium").style;
    var S=GetElementById("BoxStrong").style;
    W.background=PWColors[0];
    M.background=PWColors[1];
    S.background=PWColors[2];
    W.color=PWColors[3];
    M.color=PWColors[4];
    S.color=PWColors[5];
}