/* password check settings */
var minPassComplexity = 6;
var minPassLength = 7;
var checkLength = true;
var digitRequired = true;
var lowerRequired = true;
var upperRequired = true;
var symbolRequired = true;
 // returnType possible values: 'message' (returns a message) or 'complexityLevel' (returns complexity digit)
var returnType = 'message';

function passwordComplexity(password) {
	if (!password) return false;
	
	var complexity = 0;
	var correctLength = false;
	var hasDigit = false;
	var hasLower = false;
	var hasUpper = false;
	var hasSymbol = false;
	
	if (password.length>=minPassLength) 
		correctLength = true;
	re = /[0-9]/;
	if (re.test(password)) hasDigit = true;
	re = /[a-z]/;
	if (re.test(password)) hasLower = true;
	re = /[A-Z]/;
	if (re.test(password)) hasUpper = true;
	re = /[~!@#$%^&*]/;
	if (re.test(password)) hasSymbol = true;

 	if (correctLength) complexity += 2;
 	if (hasDigit) complexity += 2;
 	if (hasLower) complexity += 2;
 	if (hasUpper) complexity += 2;
 	if (hasSymbol) complexity += 2;
 	
	if (returnType=='message') {
		if (checkLength && !correctLength) return 'too_short';
		if (digitRequired && !hasDigit) return 'digit_required';
		if (lowerRequired && !hasLower) return 'lower_required';
		if (upperRequired && !hasUpper) return 'upper_required';
		if (symbolRequired && !hasSymbol) return 'symbol_required';
	 	if (complexity<minPassComplexity) return 'fail';
		return 'pass';
	} else {
		return complexity;
	}
	return false;
}
