﻿
function isValidDate(value) {

    //looks for the format mm/dd/yyyy
    var flag = true;
    valid = "0123456789";
    var dateStr = value;

    if (dateStr.length == 0) return true;
    if (dateStr.length != 10) return false;
    slash1Pos = dateStr.indexOf("/");
    if (slash1Pos == "-1") return false;

    tmpStr = dateStr.substr(slash1Pos + 1, value.length);

    slash2Pos = slash1Pos + tmpStr.indexOf("/") + 1;
    if (slash2Pos == "-1") return false;

    for (var i = 0; i < dateStr.length; i++) {
        if ((i == slash1Pos) || (i == slash2Pos)) continue;
        tmp = "" + dateStr.substring(i, i + 1);
        if (valid.indexOf(tmp) == "-1") {
            return false;
        }
    }
    var month = parseInt(dateStr.substr(0, slash1Pos), 10);
    var day = parseInt(dateStr.substr(slash1Pos + 1, slash2Pos), 10);
    var year = parseInt(dateStr.substr(slash2Pos + 1, dateStr.length), 10);
    if (year < 1900) {
        flag = false;
    }
    if (month < 1 || month > 12) { flag = false; }
    if (day < 1 || day > 31) { flag = false; }
    if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) { flag = false; }
    if (month == 2) {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day == 29 && !isleap)) {
            flag = false;
        }
    }
    return flag;
}
