﻿function clear_form_elements(ele) {
    $(ele).find(':input').each(function () {
        switch (this.type) {
            case 'password':
            case 'select-multiple':
            case 'select-one':
            case 'text':
            case 'textarea':
                $(this).val('');
                break;
            case 'checkbox':
            case 'radio':
                this.checked = false;
        }
    });
    $(ele).find('.Validator').each(function () {
        $(this).hide();
    });
}

/*
* Set the max length for textbox multiline. 
*/
function limitLength(oSrc, maxLength) {
    if (oSrc != null && oSrc.value != null && oSrc.value.length > maxLength) {
        oSrc.value = oSrc.value.substring(0, maxLength);
    }
}

function jqDropDown_Validation(source, args) {
    if (document.getElementById(source.attributes['associatedControl'].value).value != '') {
        args.IsValid = true;
    }
    else {
        args.IsValid = false;
    }
}
/* Date Validators */

function ConvertToDate(strDate) {
    var date = new Date();
    var aDate = strDate.split("/");

    var dd = aDate[0];
    var mm = aDate[1];
    var yyyy = aDate[2];

    date.setUTCFullYear(yyyy);
    date.setUTCMonth(mm - 1);
    date.setUTCDate(dd);

    return date;
}

function CompareDates(a, b) {

    var one_day = 1000 * 60 * 60 * 24;

    a = ConvertToDate(a.getUTCDate() + "/" + (a.getUTCMonth() + 1) + "/" + a.getUTCFullYear());
    b = ConvertToDate(b.getUTCDate() + "/" + (b.getUTCMonth() + 1) + "/" + b.getUTCFullYear());

    return Math.ceil((a.getTime() - b.getTime()) / (one_day));
}

function DateIntervalValidator(dateBegin, dateEnd, laterDates, daySpan, daySpanMin) {
    var result = new Object();
    result.isValid = false;
    result.errorCode = 0;

    if (laterDates && CompareDates(dateBegin, new Date()) < 0) {
        // laterDates && dateBegin < today
        result.isValid = false;
        result.errorCode = -1;
        return result;
    }

    if (laterDates && CompareDates(dateEnd, new Date()) < 0) {
        // laterDates && dateEnd < today
        result.isValid = false;
        result.errorCode = -2;
        return result;
    }

    var span = CompareDates(dateEnd, dateBegin);
    if (span > daySpan) {
        // dateEnd > dateBegin + daySpan
        result.errorCode = -3;
        return result;
    }
    if (span < daySpanMin) {
        // dateEnd < dateBegin + daySpanMin
        result.errorCode = -4;
        return result;
    }

    result.isValid = true;
    return result;
}

function IntervalValidator(source, args) {
    var tbReferential = $('#' + $(source).attr("referentialDate")).first();
    var tbComparaisonDate = $('#' + $(source).attr("comparaisonDate")).first();
    var laterDate = $(source).attr("laterDate");
    var daySpan = $(source).attr("daySpanMax");
    var daySpanMin = $(source).attr("daySpanMin");

    if (daySpanMin == null) { daySpanMin = 0; }

    var dateReferential = ConvertToDate(tbReferential.val());
    var dateComparaison = ConvertToDate(tbComparaisonDate.val());

    var res = DateIntervalValidator(dateReferential, dateComparaison, laterDate == "true" || laterDate == "True", daySpan, daySpanMin);

    args.IsValid = res.isValid;
}
