﻿function isValueSomething(chkstr) {
    var blisValueSomething = false;
    if ((isNull(chkstr) == false) && (isEmptySpace(chkstr) == false)) {
        blisValueSomething = true;
    }
    return blisValueSomething;
}

function isNull(chkstr) {
    var blisNull = true;
    var len = chkstr.length;
    if (len) {
        blisNull = false;
    }
    return blisNull;
}

function isEmptySpace(chkstr) {
    var CHAR_FOR_SPACE = 32;
    var len = chkstr.length;
    var k = 0;
    var blisSpaces = true;
    if (len > 0) {
        for (k = 0; k < len; k++) {
            if (chkstr.charCodeAt(k) != CHAR_FOR_SPACE) {
                blisSpaces = false;
                break;
            }
        }
    }
    return blisSpaces;
}


function CheckDateFormat(source, arguments) {
    var blnisDate = true;
    var separator1 = "/";
    var UseSeparator;

    var chkstr = arguments.Value;
    
    if (isValueSomething(chkstr) == false) {
        arguments.IsValid = blnisDate;
        return;
    }
    if ((chkstr.length > 10) || (chkstr.length < 10)) {
        blnisDate = false;
        arguments.IsValid = blnisDate;
        return;
    }
    var pos1 = chkstr.indexOf(separator1)

    
    
    if (pos1 < 0) {
        blnisDate = false;
        arguments.IsValid = blnisDate;
        return;
    }
    else if (pos1 >= 0) {
        UseSeparator = separator1
    }
    else {
        blnisDate = false;
        arguments.IsValid = blnisDate;
        return;

    }

    
    
    var pos = chkstr.indexOf(UseSeparator)
    strDay = chkstr.substring(0, pos)
    pos2 = chkstr.lastIndexOf(UseSeparator)
    strMonth = chkstr.substring(pos + 1, pos2)
    strYear = chkstr.substring(pos2 + 1, chkstr.length)
    if ((isValueSomething(strDay) == false) || (isValueSomething(strMonth) == false) || (isValueSomething(strYear) == false)) { //Check if the values are present for Day, Month and Year
        blnisDate = false;
        arguments.IsValid = blnisDate;
        return;
    }
    else
        if ((isNaN(strDay)) || (isNaN(strMonth)) || (isNaN(strYear))) {
        blnisDate = false;
        arguments.IsValid = blnisDate;
        return;
    }



    dtDay = eval(strMonth)
    dtMonth = eval(strMonth)
    dtYear = eval(strYear)

    
    
    if (dtDay < 1 || dtDay > 31) {
        blnisDate = false;
        arguments.IsValid = blnisDate;
        return;
    }

    
    if (dtMonth < 1 || dtMonth > 12) {
        blnisDate = false;
        arguments.IsValid = blnisDate;
        return;
    }
    if ((dtYear < 1900) || (dtYear > 2079)) {
        blnisDate = false;
        arguments.IsValid = blnisDate;
        return;
    }
    if (dtYear == 2079) {
        if (dtMonth > 6) {
            blnisDate = false;
            arguments.IsValid = blnisDate;
            return;
        }
        else if (dtMonth == 6) {
            if (dtDay > 6) {
                blnisDate = false;
                arguments.IsValid = blnisDate;
                return;
            }
        }
    }
    if (dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) {
        if (dtDay == 31) {
            blnisDate = false;
            arguments.IsValid = blnisDate;
            return;
        }
    }

   
    if (dtMonth == 2) {
        if (dtDay > 29) {
            blnisDate = false;
            arguments.IsValid = blnisDate;
            return;
        }
        if (dtDay == 29) {
            if ((dtYear % 4) != 0) {
                blnisDate = false;
                arguments.IsValid = blnisDate;
                return;
            }
            if (((dtYear % 400) != 0) && ((dtYear % 100) == 0)) {
                blnisDate = false;
                arguments.IsValid = blnisDate;
                return;
            }
        }
    }
    arguments.IsValid = blnisDate;
}