/*
* JQuery.Scripts.JQuery.UI.CallOut.js
*/

var __globalScope = this;

$(document).ready(function(){    

    var jqSummaries = $([]); 
    
    // grab the reference to the HTML DOM elements that hold the validation summaries.
    var validationSummaries = __globalScope.Page_ValidationSummaries;
    if (typeof(validationSummaries) != "undefined")
    {        
        if (validationSummaries.length > 0)
        {        
            jqSummaries = $(validationSummaries);
        }               
    }
        
    function UpdateCallOuts()
    {
        var jqCallOuts = jqSummaries.parents(".ui-callout-clientside");
        
        if (jqCallOuts.length == 0) return;
        
        jqCallOuts
            .css("display", "")
            .css("visibility", "");
                
        jqCallOuts
            .find(".ui-callout-content")
            .filter(":not(:has(:visible))")
            .parent(".ui-callout-clientside")
                .css("display", "none")
                .css("visibility", "hidden");
                            
        jqSummaries                
            .filter(function(){ return (this.style.display != "none"); })
                .parents(".ui-callout-clientside")                    
                    .css("display", "")
                .end()
            .end()                
            .filter(function(){ return (this.style.visibility != "hidden"); })
                .parents(".ui-callout-clientside")
                    .css("visibility", "")                        
                .end()
            .end();
    }

     /* Hook into asp.net's page validation framework here.
     * We wrap the ValidationSummaryOnSubmit function to set
     * a timeout that invokes the visibility update check
     * on any registered callouts on the page.
     */     
    var validationHook = __globalScope.ValidationSummaryOnSubmit;        
    if (typeof(validationHook) == "function")
    {
        __globalScope.ValidationSummaryOnSubmit = function(validationGroup)
        {
            var hookResult = validationHook.apply(__globalScope, arguments);
                                    
            UpdateCallOuts();                
            return hookResult;
        }    
    }
        
    // Initial call to update the call outs with validation summaries on board.
    UpdateCallOuts();  
});