var _reqdValidatorFunc = RequiredFieldValidatorEvaluateIsValid;           

IsValidationGroupMatch = function(control, validationGroup) 
{      
    if ((typeof(validationGroup) == "undefined") || (validationGroup == null) || (validationGroup == "")) 
    {
        return true;
    }
    
    var controlGroup = "";
    
    if (typeof(control.validationGroup) == "string") 
    {
        controlGroup = control.validationGroup;
    }
    
    return (controlGroup == validationGroup);
}

RequiredFieldValidatorEvaluateIsValid = function(val) 
{       
    if(val.onlywhenvisible == "False" || IsVisible(document.getElementById(val.controltovalidate)))
    {
        return _reqdValidatorFunc(val, (val.recursion!=null)?val.recursion:-1);
    }
    
    return true;
}
            
function IsVisible(control, recursion)
{
    var result;
        
    while(control && control.style && control.style.display!='none' && recursion != 0) 
    {
        control = control.parentNode;
        recursion--;
    }
    return (control==null || control.style == null || control.style.display!='none');
}

var Page_ValidationVer = "125";
var Page_IsValid = true;
var Page_BlockSubmit = false;
var Page_InvalidControlToBeFocused = null;

function ValidatorUpdateDisplay(val) {
    if (typeof(val.display) == "string") {
        if (val.display == "None") {
            return;
        }
        if (val.display == "Dynamic") {
            val.style.display = val.isvalid ? "none" : "inline";
            return;
        }
    }
    if ((navigator.userAgent.indexOf("Mac") > -1) &&
        (navigator.userAgent.indexOf("MSIE") > -1)) {
        val.style.display = "inline";
    }
    val.style.visibility = val.isvalid ? "hidden" : "visible";
    val.style.position = val.isvalid ? "absolute" : "";
}

function ValidationSummaryOnSubmit(validationGroup) {
    if (typeof(Page_ValidationSummaries) == "undefined")
        return;
    var summary, sums, s, hasItems;
    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;
                }
                hasItems = false;
                s += first;
                for (i=0; i<Page_Validators.length; i++) {                                        
                    if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string" && Page_Validators[i].validationGroup == summary.validationGroup) {
                        s += pre + Page_Validators[i].errormessage + post; hasItems = true;
                    }
                }
                s += end;
                
                if(hasItems)
                {
                    summary.innerHTML = s;
                    window.scrollTo(0,0);
                }                
            }
            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;
                        }
                    }
                }
            }
        }
    }
}