
function checkPassword(formName, fieldName) 
{ // varify if the password are entered identically
	var bRet = true;
	var inputArray;
	var sPwd;
	
	inputArray = document.forms[formName].elements[fieldName];
	sPwd = inputArray[0].value;

	bRet = pwdLengthChecker(sPwd);
	if (!bRet)
		return "PASSWORD_LENGTH";
	bRet = pwdRetypeChecker(sPwd, inputArray[1].value);
	if (!bRet)
		return "PASSWORD_RETYPE";
	bRet = pwdNoLeadingOrTrailingBlanks(sPwd);
	if (!bRet)
		return "PASSWORD_BLANKS";
	bRet = pwdNoIdenticalTriplets(sPwd);
	if (!bRet)
		return "PASSWORD_TRIPLET";
	bRet = pwdIsAlphaNumMixed(sPwd);
	if (!bRet)
		return "PASSWORD_NUMMIX";

	return "SUCCESS";
}

function pwdLengthChecker(pwd) 
{ // varify if the password is 8 char long
	if (pwd.length > 0 && pwd.length < 8) 
		return false;
	else
		return true;
}

function pwdRetypeChecker(objRetype, objOriginal) 
{ // varify if the password are entered identically
	if (objRetype.length > 0) {
		if (objRetype != objOriginal) {
			return false;
		}
	}
	return true;
}


//Passwords must not contain leading or trailing blanks.
function pwdNoLeadingOrTrailingBlanks(aString) 
{
	var sBlank;
	
	sBlank = " ";
	
	if (aString.indexOf(sBlank) == 0 || aString.lastIndexOf(sBlank) == aString.length-1)
		return false;
	else
		return true;
}

//Passwords must not contain more than two consecutive, identical characters.
function pwdNoIdenticalTriplets(aString) 
{
	if (aString.length-2 >= 0) {
		for (i = 0; i < aString.length-2; i++) {
			if ( aString.charAt(i) == aString.charAt(i+1))
			{
				if (aString.charAt(i+1) == aString.charAt(i+2) )
					return false;
			}
		}
				
		return true;
	}
}

//Password must consist of mixed alphabetic and numeric characters.
function pwdIsAlphaNumMixed(aString) 
{
	var hasAlpha = false;
	var hasNum = false;
	var sAlpha = "abcdefghijklmnopqrstuvwxyz"
	var sNum = "0123456789"
	
	for (i = 0; i < aString.length; i++) {
		sChar = aString.substr(i,1).toLowerCase();
		if (sAlpha.indexOf(sChar) > -1) hasAlpha = true;
		if (sNum.indexOf(sChar) > -1) hasNum = true;
		if (hasAlpha && hasNum) return true;
	}
	return false;
}


