// autoMask - an adaption of anyMask
// <input type=text name=ssn onkeypress="return autoMask(this,event, '###-##-####');">
// this will force #'s, not allowing alphas where the #'s are, and auto add -'s
function autoMask(field, event, sMask) {
	//var sMask = "**?##?####";

	var KeyTyped = String.fromCharCode(getKeyCode(event));

	if (getKeyCode(event)==0 || getKeyCode(event)==8) return true;
	
	var targ = getTarget(event);
	if(getSelectionStart(field)==0) {
		field.value='';
	}
	keyCount = targ.value.length;

	if(keyCount == sMask.length)
	{
		return false;
	}

	if ((sMask.charAt(keyCount+1) != '#') && (sMask.charAt(keyCount+1) != 'A') 
		&& (sMask.charAt(keyCount+1) != 'N') && (sMask.charAt(keyCount+1) != 'C')
		&& (sMask.charAt(keyCount+1) != ''))
	{
		if ((sMask.charAt(keyCount) == '#') && !isNumeric(KeyTyped)){
			return false;
		} else {
			field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
			return false;
		}
	}

	if (sMask.charAt(keyCount) == '*')
		return true;
	else if ((sMask.charAt(keyCount) == '#') && isNumeric(KeyTyped))
		return true;
	else if ((sMask.charAt(keyCount) == 'A') && isAlpha(KeyTyped))
		return true;
	else if ((sMask.charAt(keyCount) == 'N') && (isAlpha(KeyTyped) || isNumeric(KeyTyped)))
		return true;
	else if ((sMask.charAt(keyCount) == 'C') && (isCurrency(KeyTyped)))
	{
		if ((targ.value).indexOf(".")!=-1 && KeyTyped==".") 
			return false;
		return true;
	}
	else if ((sMask.charAt(keyCount+1) == '?') )
	{
		field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
		return true;
	}
	if (KeyTyped.charCodeAt(0) < 32) return true;
	
	return false;
}

 function getTarget(e) {
  // IE5
   if (e.srcElement) {
		return e.srcElement;
   }
	if (e.target) {
		return e.target;
   }
 }

  function getKeyCode(e) {
 //IE5
 if (e.srcElement) {
		return e.keyCode
 }
  // NC5
  if (e.target) {
   return e.which
  }
 }

function isNumeric(c)
{
		var sNumbers = "01234567890";
		if (sNumbers.indexOf(c) == -1)
				return false;
		else return true;

}

function isCurrency(c)
{
		var sNumbers = "01234567890.";
		if (sNumbers.indexOf(c) == -1)
			return false;
		else 
			return true;

}

function isAlpha(c)
{
		var lCode = c.charCodeAt(0);
		if (lCode >= 65 && lCode <= 122 )
		  {
				return true;
		 }
		else
		return false;
}

function isPunct(c)
{
		var lCode = c.charCodeAt(0);
		if (lCode >= 32 && lCode <= 47 )
		  {
				return true;
		 }
		else
		return false;

}
function getSelectionStart(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveEnd('character', o.value.length)
		if (r.text == '') return o.value.length
		return o.value.lastIndexOf(r.text)
	} else return o.selectionStart
}

/* if there is an extra hyphen on the end, remove it */
function removeHyphen(field) {
	if (field.value != null && field.value.length == 6 && field.value.lastIndexOf('-') == 5)
	{
		var str = field.value;
		field.value = str.substring(0,5);
	}
}

