
var PasswordStrength = {
	activeCheckers : [],
	
	addChecker : function(fieldID, containerID, sliderID)
	{
		PasswordStrength.activeCheckers[fieldID] = {
			strength : 50,
			id : fieldID,
			container : containerID,
			slider : sliderID
		}
	},

	getChecker : function(fieldID)
	{
		if (typeof(PasswordStrength.activeCheckers[fieldID]) == 'undefined')
			return null;
		else
			return PasswordStrength.activeCheckers[fieldID];
	},
	
	testStrength : function(fieldID)
	{
		var checker = PasswordStrength.getChecker(fieldID);
		if (checker != null)
		{
			//PasswordStrength.strength = PasswordStrength.checkPassword();
			checker.strength = PasswordStrength.checkPassword(checker.id);
			PasswordStrength.updateBar(checker.id);
		}
		return true;
	},
	
	checkPassword : function(fieldID){
		var checker = PasswordStrength.getChecker(fieldID);
		if (checker == null)
			return 0;
		
		var field = document.getElementById(checker.id);
		
		var pswd = field.value;
		
		var str = 0;
		if(pswd.length == 0){
			return 0;
		}
		//Check 1: Password is more than 4 characters.
		if(pswd.length < 4){
			return 50;
		}
		
		str += 50;
		if(pswd.length > 6){
			str += 50;
		}
		if(pswd.length > 8){
			str += 50;
		}								
		//Check 2: Password has both letters and numbers.
		for(i=0;i<10;i++)
		{
			if(pswd.indexOf(i) > 0)
			{//pswd has a number.
				if(pswd.toUpperCase() != pswd.toLowerCase())//pswd has a letter.
					str += 50;
				break;
			}
		}
		
		//Check 3: Password has at least one uppercase and one lowercase letter
		if(pswd.toUpperCase() != pswd && pswd.toLowerCase() != pswd)
			str += 50;

		return str;
	},
	
	updateBar : function(fieldID)
	{
		var checker = PasswordStrength.getChecker(fieldID);
		if (checker == null)
			return 0;
		
		var str = checker.strength;
		var container = document.getElementById(checker.container);
		var slider = document.getElementById(checker.slider);
		
		var width = Math.floor(str/2.5);
		slider.style.width = width+"%";
		var color = '#ff0000';
		var className = '';
		
		switch(str)
		{
			case 100:
				color = '#ff6600';
				className = 'weakPassword';
				break;
			case 150:
				color = '#cccc00';
				className = 'mediumPassword';
				break;
			case 200:
				color = '#99ff00';
				className = 'strongPassword';
				break;
			case 250:
				color = '#00ff00';
				className = 'veryStrongPassword';
				break;
										
			default:
				className = '';
				color = '#ff0000';
		}
		if (str > 250)
		{
			className = 'veryStrongPassword';
			color = '#00ff00';
		}
		slider.style.backgroundColor = color;
		slider.className = className;
	}					
}

