function passwordStrengthPercent(password)
{
	score = 0 
	
	//password < 4
	if (password.length < 4 ) { return 0 }
	
	//password == username
	//if (password.toLowerCase()==username.toLowerCase()) return 0
	
	//password length
	score += password.length * 4
	score += ( checkRepetition(1,password).length - password.length ) * 1
	score += ( checkRepetition(2,password).length - password.length ) * 1
	score += ( checkRepetition(3,password).length - password.length ) * 1
	score += ( checkRepetition(4,password).length - password.length ) * 1

	//password has 3 numbers
	if (password.match(/(.*[0-9].*[0-9].*[0-9])/))  score += 10 
	
	//password has 2 sybols
	//if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) score += 5 
	
	//password has Upper and Lower chars
	if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))  score += 15 
	
	//password has number and chars
	if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/))  score += 20 
	//
	//password has number and symbol
	//if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/))  score += 15 
	
	//password has char and symbol
	//if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/))  score += 15 
	
	//password is just a nubers or chars
	//if (password.match(/^\w+$/) || password.match(/^\d+$/) )  score -= 10 
	
	if (score > 100) return 100
  return (score)
 
}

function passwordStrength(password, badPass, goodPass, strongPass ){
	var score = 0;
	score = passwordStrengthPercent(password);
	if (score < 34 )  return badPass 
	if (score < 68 )  return goodPass
	return strongPass
	
}

// checkRepetition(1,'aaaaaaabcbc')   = 'abcbc'
// checkRepetition(2,'aaaaaaabcbc')   = 'aabc'
// checkRepetition(2,'aaaaaaabcdbcd') = 'aabcd'

function checkRepetition(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
}
