// ------------------------------------------------------
// Checks the keyCode - returns true if key code should be
// processed
// ------------------------------------------------------
function CheckKey(e)
{
	
  if (e.type == "keyup")
  {
    return 	((e.keyCode != 8) && (e.keyCode != 9) && (e.keyCode != 46) && (e.keyCode != 37) && (e.keyCode != 39));  
  }
  else 
  {
    return true;  
  }  
}

// ------------------------------------------------------
// Mask SSN
//-------------------------------------------------------
function MaskSSN(snnNum)
{
		// first remove any hyphens
		return mask(snnNum, '###-##-####');  
}

// --------------------------------------------------
// Mask phone number (123)123-4567
// --------------------------------------------------
function MaskPhone(phoneNum)
{
  return mask(phoneNum, '###-###-####');
}

//---------------------------------------------------
// Mask Zip Code
//---------------------------------------------------
function MaskZip(zip)
{
	return mask(zip, '#####-####');
}

//---------------------------------------------------
// Mask DOB
//---------------------------------------------------
function MaskDate(Date)
{
	return mask(Date, '##/##/####');
}

//---------------------------------------------------
// Mask DOB
//---------------------------------------------------
function MaskShortDate(Date)
{
	return mask(Date, '##/####');
}


//------------------------------------------------------------------
// Mask Characters:
//		#  = character at this position must be a number
//    ?  = character at this position must be an alphabetic character
//    !  = character at this position can be number OR alphabetic character
//    *  = character at this position can be anything
//
// Literal Seperators allowed "-", "/"
//    
//------------------------------------------------------------------
function mask(InString, Mask)
{
    CleanStr = removeLiterals(InString);
		LenStr = trim(CleanStr).length + 1;
		LenMsk = trim(Mask).length;
		if ((LenStr <= 1) || (LenMsk <= 1)) return InString;

		TempString="";
		StrCount = 0;
		
		for (Count=0; Count <= LenStr; Count++)
		{
			StrChar = CleanStr.substring(StrCount, StrCount+1).toUpperCase();
			MskChar = Mask.substring(Count, Count+1);
			
			if (StrChar == '-')
			{
			  TempString += '-';
			  StrCount += 1;
			}
			else if (StrChar == '/')
			{
			  TempString += '/';
			  StrCount += 1;
			}
			else if (MskChar == '#')
			{
			  if(!isNumberChar(StrChar)) return TempString;
				TempString += StrChar;
				StrCount += 1;
			}
			else if (MskChar == '?')
			{
			  if(!isAlphaChar(StrChar)) return TempString;
				TempString += StrChar;
				StrCount += 1;		 			
			}
			else if (MskChar == "!")
			{
			  if(!isNumOrChar(StrChar)) return TempString;
				TempString += StrChar;
				StrCount += 1;		  			
			}
			else
			{
				TempString += MskChar;
			}
		}
		
		return TempString;
}

function removeLiterals(inString)
{
  numLen = trim(inString).length;
  tmpStr = "";

	for (Count=0; Count <= numLen; Count++)
	{  
	  StrChar = inString.substring(Count, Count+1);
	  if (StrChar != "-" && StrChar != "/")
	  {
			tmpStr += StrChar;
	  }	
	}	
	return tmpStr;
}

function trim(unTrimmed)
{
	return( unTrimmed.replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1') ); 
}

function isAlphaChar (InString)  {
	if(InString.length!=1) return (false);
	InString=InString.toLowerCase();
	RefString="abcdefghijklmnopqrstuvwxyz";
	if (RefString.indexOf (InString.toLowerCase(), 0)==-1) return (false);
	return (true);
}

function isNumberChar (InString)  {
	if(InString.length!=1) 
		return (false);
	RefString="1234567890";
	if (RefString.indexOf (InString, 0)==-1) 
		return (false);
	return (true);
}

function isNumOrChar (InString)  {
	if(InString.length!=1) return (false);
	InString=InString.toLowerCase();
	RefString="1234567890abcdefghijklmnopqrstuvwxyz";
	if (RefString.indexOf (InString, 0)==-1)  return (false);
	return (true);
}