function IsValidPassword(userid, password, confirmpassword) {
  
  // Check if empty password
  if (password=="") {
    ErrorMsg = PassNotEmpty;
    return false;
  }
  
  // Check if password length is less than 8 characters
  if (password.length<8) {
    ErrorMsg = PasswordMin8Char;
    return false;
  }
  
  // Check if password length is more than 8 characters
  if (password.length>16) {
    ErrorMsg = PasswordMax16Char;
    return false;
  }
  
  // Check if the passwords entered are match. 
    if (password !=confirmpassword) 
    {
	    ErrorMsg = PasswordNotMatch;
	    return false;
    }

  // Check if password is the same as UserID
  if (password==userid) {
    ErrorMsg = PasswordNotSameUserID;
    return false;
  }
  
  // Check if password has any whitespace character
  if (isWhiteSpace(password)) {
    ErrorMsg = PasswordNoSpaces;
    return false;
  }
  
  // Check if password contains any control character
  if (isControlChr(password)) {
    ErrorMsg = PassWithoutCtrlChar;
    return false;
  }
  
  // Check if password is a part of UserID
  if ((userid.indexOf(password)!=-1)||(password.indexOf(userid)!=-1)) {
    ErrorMsg = PasswordNotPartUserID;
    return false;
  }
  
  // Check if password is sorted alphabetically in normal and reverse order
  var sPasswordCompare ="ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA";
  if (isSorted(password, sPasswordCompare)) {
    ErrorMsg = PasswordNotSortedAlphab;
    return false;
  }
  
  // Check if password is sorted numerically in normal and reverse order
  var sPasswordCompare ="012345678909876543210";
  if (isSorted(password, sPasswordCompare)) {
    ErrorMsg = PasswordNotSortedNumeric;
    return false;
  }
  
  // Check if password contains more than 2 consecutive repeated characters/numerlas
  if (isRepeated(password)) {
    ErrorMsg = PasswordNo2RepeatedChar;
    return false;
  }
  
  // Check if password is aplhanumeric
  if (!isAlphaNumeric(password)) {
    ErrorMsg = PasswordAlphanumeric;
    return false;
  }

  return true;
}

// isWhiteSpace
function isWhiteSpace(sText) {
  // whitespace characters
  var whiteSpace = " \t\n\r";
  var sChar;
  var i;

  // Search through string's characters one by one
  // until we find a whitespace character.
  // When we do, return true;
  for (i = 0; i < sText.length; i++) {
    // Check that current character isn't whitespace.
    sChar = sText.charAt(i);
    if (whiteSpace.indexOf(sChar) != -1) return true;
  }
  
  return false;
}

// isControlChr
function isControlChr(sText) {
  var ctrlChar = "()/|?,;:'~<>\\+=.[]{}";
  var sChar;
  var i;
  
  for(i = 0; i < sText.length; i++) 
  {
    sChar = sText.charAt(i);
    if (ctrlChar.indexOf(sChar) !=-1) 
		return true;
  }

  return false;
}

// isSorted
function isSorted(sText, sCompareVar) {
  var bSorted = false;
  var sChar;
  var i;
  var n;

  if (IsNumeric(sCompareVar)) n = 4;
  else n = 3;
  
  for(i = 0; i < sText.length && bSorted==false; i++) {
    if (sText.substr(i).length >=n) {
      sChar =sText.substr(i,n);
      if (sCompareVar.toLowerCase().indexOf(sChar.toLowerCase()) !=-1) bSorted=true;
    }
  }

  return bSorted;
}

// 2 consecutive repeated characters/numerlas
function isRepeated(sText) {
  var code;
  var nCount=1;

  code = sText.charAt(0);
  for (i = 1; i < sText.length; i++) {
    sChar = sText.charAt(i);
    if (code==sChar) {
      nCount = nCount+1;
    }else{
		code = sChar;
		nCount = 1;
	}
	if (nCount==3) return true;

  }	
  return false;
}

// isAlphaNumeric
function isAlphaNumeric(sText) {
  var bAlphaNum =false;
  var sChar;
  var sAlpha="ABCDEFGHIJKLMNOPQRSTUVWXYZÃÈÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÝÞßáãäåÜæíÇ";
  var sNum ="0123456789";

  //Convert sText To uppercase to make comparisons easier.
	sText = sText.toUpperCase();
	
	// Check if only alphabetic then return false
  for(i = 0; i < sText.length && bAlphaNum ==false; i++) {
  	sChar = sText.charAt(i);
    if (sAlpha.indexOf(sChar) !=-1) bAlphaNum=true;
  }
  
  if (bAlphaNum==false) return bAlphaNum;

	bAlphaNum=false;
  for(i = 0; i < sText.length && bAlphaNum ==false; i++) {
    sChar = sText.charAt(i);
    if (sNum.indexOf(sChar) !=-1) bAlphaNum=true;
	}

  return bAlphaNum;
}

// IsNumeric
function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
 }