﻿if(typeof web == 'undefined')
    var web = {}

web.updatePanel = {
    showOverlay: function(panel, callback) {
        var overlay = document.createElement("div");
        overlay.id = panel.id + "_Overlay";
        if($("#" + overlay.id).length == 0)
            $(overlay).addClass("UpdatePanelOverlay").css("opacity",0).appendTo(document.body);
        
        this.resizeOverlay(overlay,panel);
        
        $(overlay).fadeTo('fast',0.5,function() {
            if($.isFunction(callback))
                callback();
        });
    },
    
    resizeOverlay: function(overlay,panel) {
       var panelW = $(panel).width();
       var panelH = $(panel).height();
       var panelO = $(panel).offset();
       $(overlay).css({ width: panelW, height: panelH, left: panelO.left, top: panelO.top }); 
    },
    
    hideOverlay: function(panel, callback) {
        var overlay = jQuery("#" + panel.id + "_Overlay");
    
        this.resizeOverlay(overlay,panel);
    
        overlay.fadeOut('fast',function() {
            jQuery(this).remove();
        });
    }
}

$(document).ready(
  function() {
      var old_prm_updatePanel = Sys.WebForms.PageRequestManager.getInstance()._updatePanel; 

      Sys.WebForms.PageRequestManager.getInstance()._updatePanel = 
          function(updatePanelElement, rendering) {
          if(jQuery(updatePanelElement).hasClass("UpdatePanelOverlayed")) {
              web.updatePanel.showOverlay(updatePanelElement,
                  function() {
                      loadShowUpdatePanel(old_prm_updatePanel, updatePanelElement, rendering,true);
                  });
             } else {
                    loadShowUpdatePanel(old_prm_updatePanel, updatePanelElement, rendering);
             }
          }
   });  
   
    
function loadShowUpdatePanel(old_prm_updatePanel, updatePanelElement, rendering,overlayed) {
    old_prm_updatePanel.apply(Sys.WebForms.PageRequestManager.getInstance(),
                                                               new Array(updatePanelElement, rendering));
                                                               
    if(overlayed) {
        web.updatePanel.hideOverlay(updatePanelElement);
    }
}
