﻿function validateInovexCalendar(val) {
    var isValid = false;

    if (val != null) {
        var validator = $("#" + val.id);
        var controlsToValidate = validator.attr("controlstovalidate");
        var clientIDPrefix = validator.attr("clientidprefix");
        var minimumDate = validator.attr("minimumDate");
        var maximumDate = validator.attr("maximumDate");
        var isRequired = validator.attr("isrequired").toLowerCase() == "true";
        var requiredErrMsg = validator.attr("requiredfieldmsg");
        var outOfRangeErrMsg = validator.attr("outofrangemsg");

        var controls = controlsToValidate.split(", ");
        if (controls.length == 3) {
            var monthDropDownList = $("#" + clientIDPrefix + controls[0]);
            var dayTextBox = $("#" + clientIDPrefix + controls[1]);
            var yearTextBox = $("#" + clientIDPrefix + controls[2]);

            var day = dayTextBox.length > 0 ? dayTextBox.val() : "1";
            var month = monthDropDownList.val();
            var year = yearTextBox.val();
            //if it is required OR any of the fields are filled out we need to validate
            if (isRequired || ((day != "" && day != "1") || month != "-1" || year != "")) {
                //if any of the fields are not filled out
                if(day == "" || month == "-1" || year == ""){
                    validator.html(requiredErrMsg);
                }
                //if the date is invalid
                else if(!IsValidDate(day, month, year)){
                    validator.html(requiredErrMsg);
                }
                //if the date is out of range
                else if(!IsInValidDateRange(day, month, year, minimumDate, maximumDate)){
                    validator.html(outOfRangeErrMsg);
                }
                else{
                    isValid = true;
                }
            }
            //if it's not required and none of the fields are filled out
            else {
                isValid = true;
            }             
        }

        if (!isValid) {
            $('#' + val.id).parent().find('label.label').addClass('red');
        } else {
            $('#' + val.id).parent().find('label.label').removeClass('red');
        }
    }
    return isValid;
}

function IsValidDate(day, month, year) {
    var date = new Date(month + "/" + day + "/" + year);
    //date.setFullYear(year, month, day);
    var parsedDay = date.getDate();
    var parsedMonth = date.getMonth()+1;
    var parsedYear = date.getFullYear();
    
    return (day == parsedDay && month == parsedMonth && year == parsedYear);
}

function IsInValidDateRange(day, month, year, minimumDate, maximumDate) {
    var date = new Date(month + "/" + day + "/" + year);
    var isValidDateRange = true;
    // Check if the date is greater than the min date and less than the max date.
    if (!jQuery.isNullOrEmpty(minimumDate)) {
        var dateMinimum = Date.parse(minimumDate);
        isValidDateRange = date >= dateMinimum;
    }

    if (!jQuery.isNullOrEmpty(maximumDate)) {
        var dateMaximum = Date.parse(maximumDate);
        isValidDateRange = isValidDateRange && date <= dateMaximum;
    }

    return isValidDateRange;
}
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();