function checkdate(objName) {
	var datefield = objName;
	var result = chkdate(objName);
	if (result != '') {
		alert("Please enter a valid date");
		return false;
	}	
	return true;
}

function chkdate(objName) {
	var strDatestyle = "mm/dd/yy";  //(dd/mm/yyyy) o (mm/dd/yyyy)
	var strDate, strDateArray, strDay, strMonth, strYear, intday, intMonth, intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = '';
	strDate = datefield.value;

	if (strDate.length < 1)
		return err;
	
        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 err;
				} else {
					strMonth = strDateArray[0];
					strDay = strDateArray[1];
					strYear = strDateArray[2];
					if (strYear.length == 2)
						strYear = '20' + strYear;
					if (strYear.length == 1)
						strYear = '200' +strYear;
                    if (strYear.length > 4 || strYear.length == 3) {
                        err = 1;
                        return err;
                    }
				}
				booFound = true;
			}
        }

		if (booFound == false) {
			if (strDate.length > 5) {
				strMonth = strDate.substr(0, 2);
				strDay = strDate.substr(2, 2);
				strYear = strDate.substr(4);
				if (strYear.length == 2)
					strYear = '20' + strYear;
			}
		}

        intday = parseInt(strDay, 10);
        if (isNaN(intday)) {
                err = 2;
                return err;
        }
	
        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 err;
			}
        }

		if (intMonth > 12 || intMonth < 1) {
            err = 5;
            return err;
        }
		if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
            err = 6;
            return err;
        }
        if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
            err = 7;
            return err;
        }

        intYear = parseInt(strYear, 10);
		if (isNaN(intYear)) {
			err = 4;
			return err;
        }

        if (intMonth == 2) {
			if (intday < 1) {
            	err = 8;
                return err;
			}
			if (LeapYear(intYear) == true) {
				if (intday > 29) {
					err = 9;
					return err;
				}
			} else {
				if (intday > 28) {
					err = 10;
					return err;
				}
			}
        }

        if (strDatestyle == "mm/dd/yyyy" || strDatestyle == "mm/dd/yy")
			datefield.value = intMonth + "/" + intday + "/" + strYear;
        else
			datefield.value = intday + "/" + intMonth + "/" + strYear;
        return err;
}

function LeapYear(intYear) {
        if (intYear % 100 == 0) {
                if (intYear % 400 == 0)
                        return true;
        } else {
                if ((intYear % 4) == 0)
                        return true;
        }
        return false;
}