// text box masking
// "Create a Masked Input Control" by By Nicholas C. Zakas 
// http://archive.devx.com/dhtml/articles/nz012402/nz012402-1.asp
// modified by Robert C. Carver, BBConsulting for TheClaytonGroup.org


// usage
// <input type="text" name="txtExample" onkeypress="return maskKeyPress(event)" onchange="maskChange(event)" onpaste="return maskPaste(event)" size="??">

//regular expressions

var reValidChars     = /\d/;
var reValidString    = /^\d*$/;
var reKeyboardChars  = /[\x00\x03\x08\x0D\x16\x18\x1A]/;
var reClipboardChars = /[cvxz]/i;
			
//mask functions

function maskDigitsOnlyKeyPress(objEvent,quiet) {

	var iKeyCode, strKey, objInput;  
			
	if (isIE) {
    iKeyCode = objEvent.keyCode;
		objInput = objEvent.srcElement;
  } else {
	  iKeyCode = objEvent.which;
	  objInput = objEvent.target;
	}
				
	strKey = String.fromCharCode(iKeyCode);
				
	if (isValid(objInput.value)) {
		objInput.validValue = objInput.value;
		if (!reValidChars.test(strKey) && !reKeyboardChars.test(strKey) && !checkClipboardCode(objEvent, strKey)) {
			if (!quiet) {alert("Invalid Character Detected!\nKeyCode = " + iKeyCode + "\nCharacter =" + strKey)}
		  return false;
		}
	} else {
		if (!quiet) {alert("Invalid Data")}
		objInput.value = objInput.validValue;
    return false;
	}
  return true;
}
			
function checkClipboardCode(objEvent, strKey) {
	if (isNS)
		return objEvent.ctrlKey && reClipboardChars.test(strKey);
	else
		return false;
}
			
function isValid(strValue) {
  if (strValue==null) {return true}
	return reValidString.test(strValue) || strValue.length == 0;			
}
			
function maskDigitsOnlyChange(objEvent,quiet) {
  var objInput;
			
	if (isIE) {
	 	objInput = objEvent.srcElement; 
	} else {
	 	objInput = objEvent.target;
	}
			 
	if (!isValid(objInput.value)) {
	 	if (!quiet) {alert("Invalid data")}
	  objInput.value = objInput.validValue || "";
		objInput.focus();
		objInput.select(); 
  } else {
		objInput.validValue = objInput.value;
	}
}
			
function maskDigitsOnlyPaste(objEvent,quiet) {
	var strPasteData = window.clipboardData.getData("Text");
  var objInput = objEvent.srcElement;
				
	if (!isValid(strPasteData)) {
		 if (!quiet) {alert("Invalid data")}
		 objInput.focus();
		 return false;
	}
}