
 function ChkKey(fld,ftype,addallowlist)
 {
     var theobj=eval(fld);
     var mlen= new String(theobj.value);
	 if (!addallowlist)
	     var addallowlist='';
 
     if (ftype=='Ip')
     {
	     var rexp=new RegExp("[^0-9"+addallowlist+"]","g");
         var tvar=mlen.replace(rexp,"");
         if (theobj.value!=tvar) theobj.value=tvar;
     }
     else if (ftype=='I')
     {
	     var rexp=new RegExp("[^0-9\-"+addallowlist+"]","g");
         var tvar=mlen.replace(rexp,"");
         if (theobj.value!=tvar) theobj.value=tvar;
     
     }
     else if (ftype=='N')
     {
	     var rexp=new RegExp("[^0-9\-."+addallowlist+"]","g");
         var tvar=mlen.replace(rexp,"");
         if (theobj.value!=tvar) theobj.value=tvar;
     }
     else if (ftype=='Np')
     {
	     var rexp=new RegExp("[^0-9."+addallowlist+"]","g");
         var tvar=mlen.replace(rexp,"");
         if (theobj.value!=tvar) theobj.value=tvar;
     }
     else if (ftype=='D') 
     {
	     var rexp=new RegExp("[^0-9\/"+addallowlist+"]","g");
         var tvar=mlen.replace(rexp,"");
         if (theobj.value!=tvar) theobj.value=tvar;
     }
     else if (ftype=='C' && addallowlist!='') 
     {
	     var rexp=new RegExp("[^"+addallowlist+"]","g");
         var tvar=mlen.replace(rexp,"");
         if (theobj.value!=tvar) theobj.value=tvar;
     }
 }
 
 function ValFld(fld,type,lo,hi,valmsg)
 {
     if (ValFldData(fld,type,lo,hi,valmsg)==false)
     { 
       var theobj=eval(fld);
       if (valmsg && valmsg!='')
	       alert(valmsg);
	   else
	   {
		  var emsg="Invalid Entry";
		  if (lo!='' || hi!='')
		  {
		     emsg+=', Entry must be';
			 if (lo!='')
		         emsg+=' greater than or equal to '+lo;
			 if (hi!='')
			 {
			     if (lo!='') emsg+=' and';
			     emsg+=' less than or equal to '+hi;	 
			 }
		  }
		  else
		     emsg+='.';
		  alert(emsg); 
	   }
	   theobj.focus();
       return false;
     } 
     return true;
 }

 function ValFldData(fld,type,lo,hi,valmsg)
 {
     var theobj=eval(fld);
     if (theobj.value=='') return true;
     if (type=='I' || type=='N')
     {
         if (parseFloat(theobj.value)!=theobj.value) return false;
         if (eval(theobj.value)<eval(lo) || eval(theobj.value)>eval(hi))
         {
         return false;
         } 
     }
     if (type=='S' || type=='T')
     {
         if (theobj.value<lo || theobj.value>hi)
         {
         return false;
         } 
     }
     else if (type=='D') 
     {
         if (theobj.value=='' && lo=='' && hi=='')
		 {
		   return true;
		 }
		 
		 var t = Date.parse(theobj.value);
         if (isNaN(t)) 
         {
           return false;
         }
         var dobj = new Date(t);
         
         var CYear = (dobj.getYear() < 1000) ? dobj.getYear() + 1900 : dobj.getYear();
         
		 var arrDate = theobj.value.split("/"); // expecting mm/dd/yyyy
		 var tDAY = arrDate[1];
		 var tMONTH = arrDate[0];
		 var tYEAR = arrDate[2];

		 if (dobj.getMonth()+1!=tMONTH || dobj.getDate()!=tDAY || CYear!=tYEAR)  return false;
		 
         theobj.value=(dobj.getMonth()+1) + "/" + dobj.getDate() + "/" + CYear;
         var tval=(dobj.getYear() * 10000) + ((dobj.getMonth()+1)*100) + dobj.getDate();
         if (lo!='' && hi !='')
         {
             var dobj=new Date(Date.parse(lo));
             lval=(dobj.getYear() * 10000) + ((dobj.getMonth()+1)*100) + dobj.getDate();
             var dobj=new Date(Date.parse(hi));
             hval=(dobj.getYear() * 10000) + ((dobj.getMonth()+1)*100) + dobj.getDate();
             if (eval(tval)<eval(lval) || eval(tval)>eval(hval))
             {
             return false;
             } 
         } 
     } 
    return true;
 }
 
