﻿// NOTE: In Firefox, this will not trigger any browser redirects from an HREF. See the method description for details.
function clickAnchor(hlink) {
    // Modified from method described at StackOverflow.com
    // http://stackoverflow.com/questions/1421584/how-can-i-simulate-a-click-to-an-anchor-tag
    if (hlink.click) { hlink.click(); } // IE
    else if (document.createEvent) {
        // Firefox, Safari, Chrome
        var evt = document.createEvent("MouseEvents");
        evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, false, null, null);
        var allowDefault = hlink.dispatchEvent(evt);
    }
}

// Validation (required by RelatedProducts on Department Page in order to show a MessageBox).
// Very complex. Taken from http://stackoverflow.com/questions/811734/elegant-way-to-make-customvalidator-work-with-validationsummary-messagebox#3652245
// Same author blogged about it at http://saplin.blogspot.com/2010/09/validationsummary-and-displaying-error.html
$(document).ready(function () {
    var displayAlert = function () {
        if (typeof Page_Validators == 'undefined') return;
        var groups = [];
        for (i = 0; i < Page_Validators.length; i++) {
            var validationGroup = typeof Page_Validators[i].validationGroup == "undefined" ? "" : Page_Validators[i].validationGroup;
            if (!Page_Validators[i].isvalid) {
                if (!groups[validationGroup]) {
                    // Loop/splice added by AP Logic. For unknown reasons, a new copy of the ValidationSummary gets added w/ each (partial) postback.
                    // Possibly because our ValidationSummary control lives within an UpdatePanel, and/or we're not "causing" validation through a button.
                    // That causes ValidationSummaryOnSubmit() to generate duplicate message boxes. We need to remove the additional summaries.
                    var isAlreadyFound = false;
                    for (var j = 0; j < Page_ValidationSummaries.length; j++) {
                        if (Page_ValidationSummaries[j].validationGroup == validationGroup) {
                            if (isAlreadyFound) {
                                Page_ValidationSummaries.splice(j, 1);
                                j--;
                            } else {
                                isAlreadyFound = true;
                            }
                        }
                    }
                    ValidationSummaryOnSubmit(validationGroup);
                    groups[validationGroup] = true;
                }
            }
        }
    };
    displayAlert();
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () { displayAlert(); });
});

