﻿ValidatorOnLoad = function() {
    if (typeof(Page_Validators) == "undefined")
        return;
    var i, val;
    for (i = 0; i < Page_Validators.length; i++) {
        val = Page_Validators[i];
        
        if (typeof(val.evaluationfunction) == "string") {
            eval("val.evaluationfunction = " + val.evaluationfunction + ";");
        }
        if (typeof(val.isvalid) == "string") {
            if (val.isvalid == "False") {
                val.isvalid = false;
                Page_IsValid = false;
                
                var inputControl = document.getElementById(val.controltovalidate);
                
                if (typeof(inputControl) != 'undefined')
                {
                    WebForm_AppendToClassName(inputControl, 'error');
                    ValidationSummaryOnSubmit(val.validationGroup);
                }
            }
            else {
                val.isvalid = true;
            }
        } else {
            val.isvalid = true;
        }
        if (typeof(val.enabled) == "string") {
            val.enabled = (val.enabled != "False");
        }
        if (typeof(val.controltovalidate) == "string") {
            ValidatorHookupControlID(val.controltovalidate, val);
        }
        if (typeof(val.controlhookup) == "string") {
            ValidatorHookupControlID(val.controlhookup, val);
        }
    }
    Page_ValidationActive = true;
}

ValidatorValidate = function(val, validationGroup, event) 
{
    val.isvalid = true;
    if ((typeof(val.enabled) == 'undefined' || val.enabled != false) && IsValidationGroupMatch(val, validationGroup)) 
    {
        if (typeof(val.evaluationfunction) == 'function') 
        {
            val.isvalid = val.evaluationfunction(val);
            if (!val.isvalid && Page_InvalidControlToBeFocused == null && typeof(val.focusOnError) == 'string' && val.focusOnError == 't') 
            {
                ValidatorSetFocus(val, event);
            }
        }
    }

    ClearValidatorCallouts();
    SetValidatorCallouts(); 
    ValidatorUpdateDisplay(val);
}

SetValidatorCallouts = function()
{
    var i;
    var pageValid = true;                    
    for (i = 0; i < Page_Validators.length; i++) 
    {         
        if (typeof(Page_Validators[i].controltovalidate) == 'undefined' 
                || (typeof(Page_Validators[i].enabled) != 'undefined' && !Page_Validators[i].enabled))
            continue;
            
        var inputControl = document.getElementById(Page_Validators[i].controltovalidate);               
        if (!Page_Validators[i].isvalid) 
        {   
            if(pageValid)
                inputControl.focus();
            WebForm_AppendToClassName(inputControl, 'error');
            pageValid = false;                                                     
        }                        
    }                   

  return pageValid;
}

ClearValidatorCallouts = function()
{
    var i;                    
    var invalidConrols = [];
    for (i = 0; i < Page_Validators.length; i++) 
    {           
        //alert(Page_Validators[i].controltovalidate);
        if (typeof(Page_Validators[i].controltovalidate) == 'undefined' 
                || (typeof(Page_Validators[i].enabled) != 'undefined' && !Page_Validators[i].enabled))
            continue;
            
        //alert('i am in');
        var inputControl = document.getElementById(Page_Validators[i].controltovalidate);               
        WebForm_RemoveClassName(inputControl, 'error');                                                  
    }                                        
}

function WebForm_RemoveClassName(element, className) 
{
    if (typeof(element) == 'undefined' || element == null)
        return;
        
    var current = element.className;
    if (current) 
    {
      if (current.substring(current.length - className.length - 1, current.length) == ' ' + className) 
      {
        element.className = current.substring(0, current.length - className.length - 1);
        return;
      }
      
      if (current == className) 
      {
        element.className = '';
        return;
      }
      
      var index = current.indexOf(' ' + className + ' ');
      if (index != -1) 
      {
        /* BUG 1: index + 1 instead of index to include one space */
        element.className = current.substring(0, index + 1) + current.substring(index + className.length + 2, current.length);
        return;
      }
      
      /* BUG 2: className.length + 1 instead of className.length in order that the comparison is true */
      if (current.substring(0, className.length + 1) == className + ' ') 
        element.className = current.substring(className.length + 1, current.length);
    }
}

function WebForm_AppendToClassName(element, className) 
{
    if (typeof (element) == 'undefined' || element == null)
        return;

    var current = element.className;
    if (current) 
    {
        if (current.charAt(current.length - 1) != ' ') 
        {
            current += ' ';
        }
        current += className;
    }
    else 
    {
        current = className;
    }
    element.className = current;
}

ValidationSummaryOnSubmit = function(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)) {
                summary.style.display = 'block';
        }
    }
    }



    ValidatorOnChange = function (event) {


        Page_InvalidControlToBeFocused = null;
        var targetedControl;
        
        if (typeof (event) == 'undefined')
            return;

        if (!event) {
            event = window.event;
        }



        if ((typeof (event.srcElement) != "undefined") && (event.srcElement != null)) {
            targetedControl = event.srcElement;
        }
        else {
            targetedControl = event.target;
        }
        var vals;
        if (typeof (targetedControl.Validators) != "undefined") {
            vals = targetedControl.Validators;
        }
        else {
            if (targetedControl.tagName.toLowerCase() == "label") {
                targetedControl = document.getElementById(targetedControl.htmlFor);
                vals = targetedControl.Validators;
            }
        }
        var i;


        if (typeof (vals) == 'undefined')
            return;

        for (i = 0; i < vals.length; i++) {
            ValidatorValidate(vals[i], null, event);
        }
        ValidatorUpdateIsValid();
    }
