function InitializeValidators()
{
    if ((typeof(Page_Validators) != "undefined") && (Page_Validators != null))
    {
        Page_IsValid = true; 
        var i; 
      
        for (i = 0; i < Page_Validators.length; i++)
        { 
            Page_Validators[i].isvalid = true; 
            if (Page_Validators[i].enabled != false)
            { 
      
                if (typeof(Page_Validators[i].evaluationfunction) == "function")
                { 
                    Page_Validators[i].isvalid = Page_Validators[i].evaluationfunction(Page_Validators[i]);  
                    if(!Page_Validators[i].isvalid)
                    { 
                        Page_IsValid = false; 
                    } 
                } 
            }
        }  
    } 
}
function CustomCheckAllFields()
{
    InitializeValidators(); //Force validation
    
    for( var i = 0; i < document.forms[0].elements.length; i++)
    {
        if ((typeof(document.forms[0].elements[i].onchange) != "undefined") && (document.forms[0].elements[i].onchange != null))
        {   

            var onchange = document.forms[0].elements[i].onchange.toString();
            if(onchange.search("CustomValidate") > -1)
            {
                CustomValidate(document.forms[0].elements[i]);
            }
            
        }
    }
    
}

function CustomValidate(field)
{         
    var fieldIsValid = true;
    if ((typeof(field.Validators) != "undefined") && (field.Validators != null))
    {
        for (var i = 0; i < field.Validators.length; i++)
        {
            if (field.Validators[i].controltovalidate == field.id)
            {
                fieldIsValid = fieldIsValid && field.Validators[i].isvalid;
            }
            if (field.Validators[i].controltovalidate != field.id && document.getElementById(field.Validators[i].controltovalidate).value.length > 0)
            {  
                CustomValidate(document.getElementById(field.Validators[i].controltovalidate));
            }
         }
     }
 
    if(fieldIsValid)
    {
        if (field.value.length > 0)
        {
            if (document.getElementById(field.id+"_Valid") != null)
            {
                document.getElementById(field.id+"_Valid").style.display = "block";
            }
       
            addClass(field,"validated");
            removeClass(field,"initialized");
            removeClass(field,"errordetected");
        }
        else
        { 
            if (document.getElementById(field.id+"_Valid") != null)
            {
                document.getElementById(field.id+"_Valid").style.display = "none";    
            }       
        
            addClass(field,"initialized");
            removeClass(field,"errordetected");
            removeClass(field,"validated");
        }
    }
    else
    {
        if (document.getElementById(field.id+"_Valid") != null)
        {
            document.getElementById(field.id+"_Valid").style.display = "none";
        }

        addClass(field,"errordetected");
        removeClass(field,"initialized");
        removeClass(field,"validated");
    }
}