﻿// --------------------------------------------------------------------------------------------------------
//      Validation Functions
// --------------------------------------------------------------------------------------------------------

window.onbeforeunload = ConfirmExit;

function ConfirmExit() {
    var formChanged = false;
    $("form").each(function () {
        var input = $("#" + this.id + "Values");
        if (input.length > 0) {
            if (input.val() != $(this).serialize()) {
                formChanged = true;
            }
        }
    });
    if (formChanged) {
        return "One or more fields on this page have been modified but not saved.";
    }
}

function UpdateFormValueCache(formID) {
    var inputID = formID + "Values";
    var selector = "#" + inputID;
    if ($(selector).length == 0) {
        $("#DawFormValues").append("<input type='hidden' id='" + formID + "Values'/>");
    }
    $(selector).val($("#" + formID).serialize());
}

$.validator.setDefaults({
    errorElement: "span",
    ignoreTitle: true,
    //debug:true,             
    errorPlacement: function (error, element) {
        $(error).addClass("errorFlag");
        $(error).html(errorImage);
        $(error).attr({ id: "error_" + $(element).attr("id") });
        $(element).after(error);
    },
    showErrors: function (errorMap, errorList) {
        this.defaultShowErrors();
        //if (this.numberOfInvalids() > 0) {  // gives false count for non-required fields
        if (this.errorList.length > 0) {
            if ($("#dialogMessage").length > 0)
                ShowFailOnDialog("<span>Invalid values found (see </span>" + errorImageMsg + "<span> icon for info)</span>");
            else
                ShowFail("<span>One or more fields is invalid.  Please hold your mouse pointer over the </span>" + errorImageMsg + "<span> icon for more information.</span>");
        }
        for (var i = 0; this.errorList[i]; i++) {
            var error = this.errorList[i];
            var errorID = "#error_" + error.element.id;
            $(errorID).attr({ title: error.message });
            $(errorID).html(errorImage);
            $(errorID).addClass("errorFlag");
        }
    },
    highlight: function (element, errorClass) {
        $(element).addClass(errorClass);
        $(element.form).find("label[for=" + element.id + "]")
                        .addClass(errorClass);
    },
    unhighlight: function (element, errorClass) {
        $(element).removeClass(errorClass);
        $(element.form).find("label[for=" + element.id + "]")
                        .removeClass(errorClass);
    }
});

// --------------------------------------------------------------------------------------------------------
//      Custom Validation Methods
// --------------------------------------------------------------------------------------------------------

// validates a number in given range after number formatting is removed.
$.validator.addMethod("formattedRange", function (value, element, params) {
    result = value.replace(/[$,%]/mg, "");
    return this.optional(element) || result >= params[0] && result <= params[1];
}, $.validator.format("Value must be betwween {0} and {1}."));

// validates for a valid number after number formatting is removed.
$.validator.addMethod("formattedNumber", function (value, element, params) {
    result = value.replace(/[$%\s]/mg, "");
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(result);
}, $.validator.format("Please enter a valid number."));



//return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
