// JScript File

//browser detection
var strUserAgent = navigator.userAgent.toLowerCase(); 
var isIE = strUserAgent.indexOf("msie") > -1; 
var isNS6 = strUserAgent.indexOf("netscape6") > -1; 
var isNS4 = !isIE && !isNS6  && parseFloat(navigator.appVersion) < 5; 
			
// global var
//reValidString and reValidChars; types are passed in public function calls and set in function setRegEx
var reClipboardChars = /[cvxz]/i;
var reKeyboardChars = /[\x00\x03\x08\x0D\x16\x18\x1A]/;
var reValidChars; //used for keypressvalidate
var reValidString; //used to validate paste


// private functions
function isValid(strValue) {
  return reValidString.test(strValue) || strValue.length == 0;
}

function checkClipboardCode(objEvent, strKey) {
 if (isNS6)
   return objEvent.ctrlKey && reClipboardChars.test(strKey);
 else
   return false;
}

function setRegEx(inputType) {
    switch(inputType)
    {
    case 'Numeric':
     reValidChars = /\d/
     reValidString = /^\d*$/
     return true;    
    case 'NumericCSV':
     reValidChars = /[0-9,]/
     reValidString = /^[0-9,]*$/
     return true;
    default:
     reValidChars = ''
     reValidString = ''
     return true
    }
}


// Mask Public Functions
function maskPaste(objEvent,inputType) {
 var strPasteData = window.clipboardData.getData("Text");
 var objInput = objEvent.srcElement;

 setRegEx(inputType);
 
 if (!isValid(strPasteData)) {
//   alert("Invalid data");
   objInput.focus();
   return false;
 }
}

function maskChange(objEvent,inputType) {
 var objInput;

 setRegEx(inputType);
        
 if (isIE)
   objInput = objEvent.srcElement; 
 else
   objInput = objEvent.target;
         
 if (!isValid(objInput.value)) {
//   alert("Invalid data");
   objInput.value = objInput.validValue || "";
   objInput.focus();
   objInput.select(); 
 } else {
   objInput.validValue = objInput.value;
 }
}

function maskKeyPress(objEvent,inputType) {
 var iKeyCode, strKey, objInput;  
 
 setRegEx(inputType);
           
 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)) {
//      alert("Invalid Character Detected!\nKeyCode = " 
//         + iKeyCode + "\nCharacter =" + strKey);
     return false;
   }
 } else {
//   alert("Invalid Data");
   return false;
 }
}