function isDate(oForm, iElementIdx, sElementName) {

//------------------------------------------------------------------
// isDate
//
// Determine if an element (e.g.textbox) has empty value. Prompt
// default error message or pass in one. 
//------------------------------------------------------------------

    with (oForm.elements[iElementIdx]) {
    	
        if (!isValidDate(value, sElementName)) {
            focus();
            return false;
        }
        	    
        return true;
    }
}   


function isValidDate(dateStr, sElementName) {

//------------------------------------------------------------------
// isDate
//
// Checks for the following valid date formats:// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
// Courtesy of Sandeep V. Tamhankar (stamhankar@hotmail.com)//------------------------------------------------------------------
    if (dateStr != "") {        var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year        var matchArray = dateStr.match(datePat); // is the format ok?            if (matchArray == null) {                alert("Please enter a valid date for " + sElementName + " field.");            return false;        }
            month = matchArray[3]; // parse date into variables        day = matchArray[1];        year = matchArray[4];
            if (month < 1 || month > 12) { // check month range            alert("Please enter a valid month (between 1 and 12) for " + sElementName + " field.");            return false;        }
        if (day < 1 || day > 31) {            alert("Please enter a valid day (between 1 and 31) for " + sElementName + " field.");            return false;        }
        if ((month==4 || month==6 || month==9 || month==11) && day==31) {            alert("Month " + month + " doesn't have 31 days for " + sElementName + " field.")            return false;        }
        if (month == 2) { // check for february 29th            var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));            if (day>29 || (day==29 && !isleap)) {                alert("February " + year + " doesn't have " + day + " days for " + sElementName + " field.");                return false;            }        }        if ((year < 1900) || (year > 3000)) {	        	
                alert("Please enter a valid year value for " + sElementName + " field.");                  	    	
	        	return false;
	        }

    }
            return true;}

function checkDate(oForm, iElementIdx, sElementName, bAllowEqualDate, bGetLargerDate) {

//------------------------------------------------------------------
// checkDate
//
// Check date, either equal, smaller or larger dates allowed. 
//------------------------------------------------------------------

    var dNow = new Date(); // system date
    var sNow = (dNow.getMonth()+1) + "/" + dNow.getDate() + "/" + dNow.getFullYear();
    dNow = new Date(sNow); // time is set to 00:00:00

    sDate = oForm.elements[iElementIdx].value;
    sDate = sDate.substring(3,5) + "/" + sDate.substring(0,2) + "/" + sDate.substring(6); // inverse date & month

    var dDate = new Date(sDate); // user date

    if (!bAllowEqualDate)
        if (dDate.toString() == dNow.toString()) {
            alert("Please enter a date other than today's date for " + sElementName + " field.");
            oForm.elements[iElementIdx].focus();
            return false;
        }    

    if (bGetLargerDate) {
        if (dDate < dNow) {
            alert("Please enter a date after today's date for " + sElementName + " field.");
            oForm.elements[iElementIdx].focus();
            return false;
        }    
    } else {
        if (dDate > dNow) {
            alert("Please enter a date before today's date for " + sElementName + " field.");
            oForm.elements[iElementIdx].focus();
            return false;
        }
    }
    
    
    return true;
}  