﻿function validateAddClassReturnInvalidControl(className, elements, types) {
    var splitElements = elements.split(",");
    var splitTypes = types.split(",");
    var valid = false;
    var invalidControl = null;

    for (i = 0; i < splitElements.length; i++) {

        var obj = eval("document.getElementById('" + splitElements[i] + "')");

        if (splitTypes[i] == "text") {
            if (obj.value == "") {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
        }
        else if (splitTypes[i] == "email") {
            if (obj.value == "") {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
            else {
                if (obj.value.indexOf("@") < 0 || obj.value.indexOf(".") < 0) {
                    $(obj).addClass(className);
                    invalidControl = obj;
                    return invalidControl;
                }
            }
        }
        else if (splitTypes[i] == "email_empty") {
            if ((obj.value.indexOf("@") < 0 || obj.value.indexOf(".") < 0) && obj.value != "") {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
        }
        else if (splitTypes[i] == "currentdate") {
            if (obj.value == "") {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
            else {
                var input = new Date(obj.value);
                var current = new Date();

                if (input < current) {
                    $(obj).addClass(className);
                    invalidControl = obj;
                    return invalidControl;
                }
            }
        }
        else if (splitTypes[i] == "date") {
            if (obj.value == "") {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
            else {
                var input = new Date(obj.value);

                if (input == null) {
                    $(obj).addClass(className);
                    invalidControl = obj;
                    return invalidControl;
                }
            }
        }
        else if (splitTypes[i] == "number") {
            if (obj.value == "") {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
            else {
                if (!IsNumeric(obj.value)) {
                    $(obj).addClass(className);
                    invalidControl = obj;
                    return invalidControl;
                }
            }
        }
        else if (splitTypes[i] == "number_empty") {
            if (!IsNumeric(obj.value) && obj.value != "") {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
        }
        else if (splitTypes[i] == "number_ws") {
            if (obj.value == "") {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
            else {
                if (!IsNumeric_WS(obj.value)) {
                    $(obj).addClass(className);
                    invalidControl = obj;
                    return invalidControl;
                }
            }
        }
        else if (splitTypes[i] == "number_ws_empty") {
            if (!IsNumeric_WS(obj.value)) {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
        }
        else if (splitTypes[i] == "number_ws_wd") {
            if (obj.value == "") {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
            else {
                if (!IsNumeric_WS_WD(obj.value)) {
                    $(obj).addClass(className);
                    invalidControl = obj;
                    return invalidControl;
                }
            }
        }
        else if (splitTypes[i] == "number_ws_wd_empty") {
            if (!IsNumeric_WS_WD(obj.value)) {
                $(obj).addClass(className);
                invalidControl = obj;
                return invalidControl;
            }
        }
        else if (splitTypes[i] == "date_empty") {
            if (obj.value != "") {
                var input = new Date(obj.value);

                if (input == null) {
                    $(obj).addClass(className);
                    invalidControl = obj;
                    return invalidControl;
                }
            }
        }
        $(obj).removeClass(className);
    }
    return invalidControl;
}


function validateAddClass(className, elements, types) {
    var validatedControl = validateAddClassReturnInvalidControl(className, elements, types);
    if (validatedControl == null) {
        return true;
    }
    else {
        validatedControl.focus();
        return false;
    }
}

function IsNumeric(sText) {
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;


    for (j = 0; j < sText.length && IsNumber == true; j++) {
        Char = sText.charAt(j);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function IsNumeric_WS(sText) {
    var ValidChars = "0123456789 ";
    var IsNumber = true;
    var Char;


    for (j = 0; j < sText.length && IsNumber == true; j++) {
        Char = sText.charAt(j);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function IsNumeric_WS_WD(sText) {
    var ValidChars = "0123456789 .";
    var IsNumber = true;
    var Char;


    for (j = 0; j < sText.length && IsNumber == true; j++) {
        Char = sText.charAt(j);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function IsDate(sDate) {
    var dt = new Date(sDate);
    return dt != null;
}

function IsValidCharacters(sText, ValidChars) {
    var IsNumber = true;
    var Char;
    
    for (j = 0; j < sText.length && IsNumber == true; j++) {
        Char = sText.charAt(j);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}



function setVisible(a, b, c) { if (c) $(a).fadeOut(500, function () { $(b).fadeIn(500) }); else $(b).fadeOut(500, function () { $(a).fadeIn(500) }) } function switchVisible(a, b, c) { if (c) { $(a).hide(); $(b).show() } else { $(b).hide(); $(a).show() } }

function validateDateSequence(classToAdd, dateTextbox1, dateTextbox2) {
    validateDateSequence(classToAdd, dateTextbox1, dateTextbox2, null);
}

function validateDateSequence(classToAdd, dateTextbox1, dateTextbox2, errorLabel) {
    $("#" + dateTextbox1).change(function (e) {
        validateDateSequenceAddClass(classToAdd, dateTextbox1, dateTextbox2, errorLabel);
    });
    $("#" + dateTextbox2).change(function (e) {
        validateDateSequenceAddClass(classToAdd, dateTextbox1, dateTextbox2, errorLabel);
    });
}

function validateDateSequenceAddClass(classToAdd, dateTextbox1, dateTextbox2) {
    return validateDateSequenceAddClass(classToAdd, dateTextbox1, dateTextbox2, null);
}

function validateDateSequenceAddClass(classToAdd, dateTextbox1, dateTextbox2, errorLabel) {

    var startText = document.getElementById(dateTextbox1);
    var endText = document.getElementById(dateTextbox2);
    if (startText.value == '' || endText.value == '') {
        return true;
    }
    else {
        try {
            var startDate = new Date(startText.value);
            var endDate = new Date(endText.value);

            if (endDate < startDate) {
                $("#" + dateTextbox1).addClass(classToAdd);
                $("#" + dateTextbox2).addClass(classToAdd);

                $("#" + dateTextbox1).attr("title", "Dates need to be logical, this date needs be first");
                $("#" + dateTextbox2).attr("title", "Dates need to be logical, this date needs be second");

                if (errorLabel != null) {
                    $("#" + errorLabel).html(" - Dates need to be logical");
                }
                return false;
            }
            else {
                $("#" + dateTextbox1).removeClass(classToAdd);
                $("#" + dateTextbox2).removeClass(classToAdd);

                $("#" + dateTextbox1).attr("title", "");
                $("#" + dateTextbox2).attr("title", "");

                if (errorLabel != null) {
                    $("#" + errorLabel).html("");
                }
                return true;
            }
        }
        catch (err) {
            return true;
        }
    }
}

function calculateTotalDaysBind(dateTextbox1, dateTextbox2, totalTextbox1) {
    $("#" + dateTextbox1).change(function (e) {
        calculateTotalDays(dateTextbox1, dateTextbox2, totalTextbox1);
    });
    $("#" + dateTextbox2).change(function (e) {
        calculateTotalDays(dateTextbox1, dateTextbox2, totalTextbox1);
    });
}

function calculateTotalDays(dateTextbox1, dateTextbox2, totalTextbox1) {

    var startText = document.getElementById(dateTextbox1);
    var endText = document.getElementById(dateTextbox2);
    if (startText.value == '' || endText.value == '') {
        return 99999;
    }
    else {
        try {
            var startDate = new Date(startText.value);
            var endDate = new Date(endText.value);

            if (endDate < startDate) {
                return 99999;
            }
            else {
                if (totalTextbox1 != null) {
                    document.getElementById(totalTextbox1).value = (endDate - startDate) / (1000 * 60 * 60 * 24);
                }
                return (endDate - startDate) / (1000 * 60 * 60 * 24);
            }
        }
        catch (err) {
            return 99999;
        }
    }
}

function DaysFromNow(dateTextbox1) {
    var endText = document.getElementById(dateTextbox1);
    if (endText.value == '') {
        return 99999;
    }
    else {
        try {
            var startDate = new Date();
            var endDate = new Date(endText.value);

            if (endDate < startDate) {
                return 99999;
            }
            else {
                return (endDate - startDate) / (1000 * 60 * 60 * 24);
            }
        }
        catch (err) {
            return 99999;
        }
    }
}
