﻿<!-- Original: Richard Gorremans (RichardG@spiritwolfx.com) ==>
<!-- Updates: www.spiritwolfx.com

// Check browser version
var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/"; 
// If you are using any Java validation on the back side you will want to use the / because 
// Java date validations do not recognize the dash as a valid date separator.

var vDateType = 3; // Global value for type of date format
//                1 = mm/dd/yyyy
//                2 = yyyy/dd/mm  (Unable to do date check at this time)
//                3 = dd/mm/yyyy

var vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape
var vYearLength = 4; // Set to 4 if you want to force the user to enter 4 digits for the year before validating.

var err = 0; // Set the error code to a default of zero


if(navigator.appName == "Netscape") 
{
   if (navigator.appVersion < "5")  
   {
      isNav4 = true;
      isNav5 = false;
	}
   else
   if (navigator.appVersion > "4") 
   {
      isNav4 = false;
      isNav5 = true;
	}
}
else  
{
   isIE4 = true;
}

isNav4 = false;
isNav5 = false;


function DateTimeFormat(vDateName, vDateValue, e, dateCheck, dateType)
{

vDateType = dateType;
mDateValue = vDateValue;

// vDateName = object name
// vDateValue = value in the field being checked
// e = event
// dateCheck 
//       True  = Verify that the vDateValue is a valid date
//       False = Format values being entered into vDateValue only
// vDateType
//       1 = mm/dd/yyyy
//       2 = yyyy/mm/dd
//       3 = dd/mm/yyyy


	if (vDateValue.length > 2)
    {		
		if (vDateName.value.substr((vDateValue.length-1), 1) == strSeperator)
		{
			if (vDateName.value.substr((vDateValue.length-2), 1) == strSeperator)
			{
				vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
				return true;
			}
		}
    }

      
   var whichCode = (window.Event) ? e.which : e.keyCode;
 
   //Eliminate all the ASCII codes that are not valid
   var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
   if (alphaCheck.indexOf(vDateValue) >= 1)  
   {
      vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
      return false;
   }
   if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value
      return false;
   else 
   {
      //Create numeric string values for 0123456789/
      //The codes provided include both keyboard and keypad values
      
      var strCheck = 'undefined,0,47,48,49,50,51,52,53,54,55,56,57,58,59,65,95,96,97,98,99,100,101,102,103,104,105';
      if (strCheck.indexOf(whichCode) != -1)  
      {
			if (vDateType == 3)
			{
				if (vDateValue.length == 2)  
				{
					vDateName.value = vDateValue+strSeperator;
				}
				if (vDateValue.length == 5)  
				{
					vDateName.value = vDateValue+strSeperator;
				}
			}
			return true;    
      }      
   }
}


function dateValid(objName) {
      var strDate;
      var strDateArray;
      var strDay;
      var strMonth;
      var strYear;
      var intday;
      var intMonth;
      var intYear;
      var booFound = false;
      var datefield = objName;
      var strSeparatorArray = new Array("-"," ","/",".");
      var intElementNr;
      // var err = 0;
      var strMonthArray = new Array(12);
      strMonthArray[0] = "Jan";
      strMonthArray[1] = "Feb";
      strMonthArray[2] = "Mar";
      strMonthArray[3] = "Apr";
      strMonthArray[4] = "May";
      strMonthArray[5] = "Jun";
      strMonthArray[6] = "Jul";
      strMonthArray[7] = "Aug";
      strMonthArray[8] = "Sep";
      strMonthArray[9] = "Oct";
      strMonthArray[10] = "Nov";
      strMonthArray[11] = "Dec";
      
      //strDate = datefield.value;
      strDate = objName;
      
      if (strDate.length < 1) {
         return true;
      }
      for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
         if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) 
         {
            strDateArray = strDate.split(strSeparatorArray[intElementNr]);
            if (strDateArray.length != 3) 
            {
               err = 1;
               return false;
            }
            else 
            {
               strDay = strDateArray[0];
               strMonth = strDateArray[1];
               strYear = strDateArray[2];
            }
            booFound = true;
         }
      }
      if (booFound == false) {
         if (strDate.length>5) {
            strDay = strDate.substr(0, 2);
            strMonth = strDate.substr(2, 2);
            strYear = strDate.substr(4);
         }
      }
      //Adjustment for short years entered
      if (strYear.length == 2) {
         strYear = '20' + strYear;
      }
      strTemp = strDay;
      strDay = strMonth;
      strMonth = strTemp;
      intday = parseInt(strDay, 10);
      if (isNaN(intday)) {
         err = 2;
         return false;
      }
      
      intMonth = parseInt(strMonth, 10);
      if (isNaN(intMonth)) {
         for (i = 0;i<12;i++) {
            if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
               intMonth = i+1;
               strMonth = strMonthArray[i];
               i = 12;
            }
         }
         if (isNaN(intMonth)) {
            err = 3;
            return false;
         }
      }
      intYear = parseInt(strYear, 10);
      if (isNaN(intYear)) {
         err = 4;
         return false;
      }
      if (intMonth>12 || intMonth<1) {
         err = 5;
         return false;
      }
      if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
         err = 6;
         return false;
      }
      if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
         err = 7;
         return false;
      }
      if (intMonth == 2) {
         if (intday < 1) {
            err = 8;
            return false;
         }
         if (LeapYear(intYear) == true) {
            if (intday > 29) {
               err = 9;
               return false;
            }
         }
         else {
            if (intday > 28) {
               err = 10;
               return false;
            }
         }
      }
         return true;
      }

   function LeapYear(intYear) {
      if (intYear % 100 == 0) {
         if (intYear % 400 == 0) { return true; }
      }
      else {
         if ((intYear % 4) == 0) { return true; }
      }
         return false;
      }
	
   function RefDateFormat(vRefDateName, vRefDateValue, e, refDateCheck)  {
   
   mDateValue = vRefDateValue;
   
   // vRefDateName = object name
   // vRefDateValue = value in the field being checked
   // e = event
   // refDateCheck 
   //       True  = Verify that the vRefDateValue is a valid date
   //       False = Format values being entered into vRefDateValue only
   
         
      var whichCode = (window.Event) ? e.which : e.keyCode;
    
      //Eliminate all the ASCII codes that are not valid
      var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
      if (alphaCheck.indexOf(vRefDateValue) >= 1)  
      {
         vRefDateName.value = vRefDateName.value.substr(0, (vRefDateValue.length-1));
         return false;
      }
      if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value
         return false;
      else 
      {
         //Create numeric string values for 0123456789/
         //The codes provided include both keyboard and keypad values
         
         var strCheck = 'undefined,0,47,48,49,50,51,52,53,54,55,56,57,58,59,65,95,96,97,98,99,100,101,102,103,104,105';
         if (strCheck.indexOf(whichCode) != -1)  
         {
            if (vRefDateValue.length == 2)  
            {
               vRefDateName.value = vRefDateValue+strSeperator;
            }
            return true;
         }
         else  
         {
            // If the value is not in the string return the string minus the last
            // key entered.
            if (isNav4)
            {
               vRefDateName.value = "";
               vRefDateName.focus();
               vRefDateName.select();
               return false;
            }
            /*
            else
            {
   			if (whichCode != 16){
   	            vRefDateName.value = vRefDateName.value.substr(0, (vRefDateValue.length-1));
   			}
               return false;
            }
            */
   		}
   	}
}

