﻿//-------------------------------------------------------------------------------------------
// Redefine offending function as per http://forums.asp.net/p/999418/1377906.aspx
//    This script is loaded with ClientAPI.RegisterStartUpScript in ascx Page_Load event.
//    Only change is window.scrollTo replaced to DNNify the method.
// Lifted from original code, Page_ValidationVer = 125.
//-------------------------------------------------------------------------------------------

function ValidationSummaryOnSubmit(validationGroup) {
    if (typeof(Page_ValidationSummaries) == "undefined")
        return;
    var summary, sums, s;
    for (sums = 0; sums < Page_ValidationSummaries.length; sums++) {
        summary = Page_ValidationSummaries[sums];
        summary.style.display = "none";
        if (!Page_IsValid && IsValidationGroupMatch(summary, validationGroup)) {
            var i;
            if (summary.showsummary != "False") {
                summary.style.display = "";
                if (typeof(summary.displaymode) != "string") {
                    summary.displaymode = "BulletList";
                }
                switch (summary.displaymode) {
                    case "List":
                        headerSep = "<br>";
                        first = "";
                        pre = "";
                        post = "<br>";
                        end = "";
                        break;
                    case "BulletList":
                    default:
                        headerSep = "";
                        first = "<ul>";
                        pre = "<li>";
                        post = "</li>";
                        end = "</ul>";
                        break;
                    case "SingleParagraph":
                        headerSep = " ";
                        first = "";
                        pre = "";
                        post = " ";
                        end = "<br>";
                        break;
                }
                s = "";
                if (typeof(summary.headertext) == "string") {
                    s += summary.headertext + headerSep;
                }
                s += first;
                for (i=0; i<Page_Validators.length; i++) {
                    if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
                        s += pre + Page_Validators[i].errormessage + post;
                    }
                }
                s += end;
                summary.innerHTML = s;
                //window.scrollTo(0,0);
                if (__dnn_ClientAPIEnabled()) {
                   for (i=0; i < Page_ValidationSummaries.length; i++) {
                      if (Page_ValidationSummaries[i].validationGroup == validationGroup) {
                         //__dnn_setScrollTop(null);

                         iTop = document.forms[0].ScrollTop.value; // Current screen scroll position.
                         var oCtl = dnn.dom.getById(Page_ValidationSummaries[i].id);
                         cTop = dnn.dom.positioning.elementTop(oCtl); // Top of validation summary to make visible.
                         if (oCtl != null && cTop < iTop) {
                            window.scrollTo(0, cTop);
                         }
                         break;
                      }
                   }
                }
            }
            if (summary.showmessagebox == "True") {
                s = "";
                if (typeof(summary.headertext) == "string") {
                    s += summary.headertext + "\r\n";
                }
                var lastValIndex = Page_Validators.length - 1;
                for (i=0; i<=lastValIndex; i++) {
                    if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
                        switch (summary.displaymode) {
                            case "List":
                                s += Page_Validators[i].errormessage;
                                if (i < lastValIndex) {
                                    s += "\r\n";
                                }
                                break;
                            case "BulletList":
                            default:
                                s += "- " + Page_Validators[i].errormessage;
                                if (i < lastValIndex) {
                                    s += "\r\n";
                                }
                                break;
                            case "SingleParagraph":
                                s += Page_Validators[i].errormessage + " ";
                                break;
                        }
                    }
                }
                alert(s);
            }
        }
    }
}

