function validateDate (vField , vEdits, vFieldLabel) {
	var trimmed = trim_blanks(vField.value)
	if (vEdits != null) {
		if ( (vEdits.indexOf("nr") > -1) || (vEdits.indexOf("NR") > -1) ) { 
			if (trimmed.length == 0) {
		       	vField.value = "";
				return true;
			  }
		  }
	  }
	var inStr = replace_chars(trimmed, "-", "/");
	var inLen = inStr.length;
	var messagebase = "The date is invalid.  It must be in MM/DD/YY or MM/DD/YYYY format.  ";

	//Check for minimum formatting
	if ((inLen < 6) || (inStr.indexOf("/") < 1)) {
		vMessage = messagebase;
		alertBox ( vField, vMessage, vFieldLabel);
		return false;
	  }

	// Get the Month, day and year strings
	inStr = inStr + "/x/x";   // this line guarantees a value for the 2nd and 3rd parts of the arrayOfDateParts.
	arrayOfDateParts = inStr.split("/")
	var mm = arrayOfDateParts[0];
	if (mm.length == 1) { mm = "0" + mm;}
	var dd = arrayOfDateParts[1];
	if (dd.length == 1) { dd = "0" + dd;}
	var yy = arrayOfDateParts[2];
	if (yy.length == 1) { yy = "0" + yy;}

	//if (yy < 10) { yy = "20" + yy;}     // special case converts single digit years to 20yy.
	if (yy.length == 2){
		//fix for Y2010
		var mToday = new Date();
		//If the year is greater than 30 years from now use 19, otherwise use 20
		var checkYear = mToday.getFullYear() + 30; 
		var mCheckYear = '20' + yy;
		if (mCheckYear >= checkYear)  yy= '19' + yy;
		else  yy= '20' + yy;
	}

	var leapflag = yy % 4;

        for(var i=0; i<inLen; i++) {
            var ch = inStr.substring(i,i+1)
            if (((ch < "0") || ("9" < ch)) && (ch != "/")) {
		vMessage = messagebase;
		alertBox ( vField, vMessage, vFieldLabel);
            return false;
	    }
        }
	if ((mm == 0) || (mm > 12)) {
		vMessage = messagebase + "The month must be between 1 and 12.  You entered "+mm;
		alertBox ( vField, vMessage, vFieldLabel);
		return false;
        }
	if ((dd == 0) || (dd > 31)) {
		vMessage = messagebase + "The day must be between 1 and 31.  You entered "+dd;
		alertBox ( vField, vMessage, vFieldLabel);
		return false;
        }
        // Note:  the numbers with a leading 0 have to be in quotes, because JS treats them as octal numbers otherwise.
	if (((mm == "04") || (mm == "06") || (mm == "09") || (mm == 11)) && (dd == 31)) {
		vMessage = messagebase + "The day must be between 1 and 30.  You entered "+dd;
		alertBox ( vField, vMessage, vFieldLabel);
		return false;
        }
	if ((mm == 02) && (((dd > 29) && (leapflag == 0)) || ((dd > 28) && (leapflag > 0))) ) {
		vMessage = messagebase + "The day must be between 1 and 28, or 29 in leap years.  You entered "+dd;
		alertBox ( vField, vMessage, vFieldLabel);
		return false;
        }
	if (((yy > 99) &&  (yy <= 1900)) || (yy >= 2100)) {
		vMessage = messagebase + "The year must be between 1900 and 2100.";
		alertBox ( vField, vMessage, vFieldLabel);
		return false;
        }

	//Reformat the date and put it back.
        var  fixedNumber = mm + "/" + dd + "/" + yy;

        vField.value = fixedNumber;

	//Perform Edit Checks if vEdits is present.
	if (vEdits != null) {
		// changed parseInt(dd) to parseInt(dd*1) to force into numeric format
		var sToday = new Date();
		var  sDateEnd = new Date( parseInt(yy), parseInt(mm - 1), parseInt(dd*1), 23, 59, 59);
		var  sDateStart = new Date( parseInt(yy), parseInt(mm - 1), parseInt(dd*1));

		if ( (vEdits.indexOf(">=") > -1) || (vEdits.indexOf("=>") > -1) ) {
			if ( sDateEnd < sToday ) {
				vMessage = "The date must be today or a future date.";
				alertBox ( vField, vMessage, vFieldLabel);
				return false;
			  } else {
				return true;
			  }
		  }
		if ( (vEdits.indexOf("<=") > -1) || (vEdits.indexOf("=<") > -1) ) {
			if ( sDateStart > sToday ) {
				vMessage = "The date must be today or a past date.";
				alertBox ( vField, vMessage, vFieldLabel);
				return false;
			  } else {
				return true;
			  }
		  }
		if (vEdits.indexOf(">") > -1) { 
			if ( sDateStart < sToday )  {
				vMessage = "The date must be a future date.";
				alertBox ( vField, vMessage, vFieldLabel);
				return false;
			  } else {
				return true;
			  }
		  }
		if (vEdits.indexOf("<") > -1) { 
			if ( sDateEnd > sToday )  {
				vMessage = "The date must be a past date.";
				alertBox ( vField, vMessage, vFieldLabel);
				return false;
			  } else {
				return true;
			  }
		  }
	  }

        return true;
}

function ValidateDate (vField , vEdits, vFieldLabel) {
	return validateDate (vField , vEdits, vFieldLabel) }
