﻿Sys.UI.EnhancedUpdateProgress = function Sys$UI$EnhancedUpdateProgress(id, position)
{
    this._position = position;
    this._id = id;    
    this._initializeDelegate = Function.createDelegate(this, this.initialize);
    $get(this._id).style.position = "absolute";
    
    // take some time to let eventual images load
    window.setTimeout(this._initializeDelegate, 1000);
};

function Sys$UI$EnhancedUpdateProgress$initialize() 
{
    switch(this._position) 
    {
        case "center": 
        default :       var elementDimensions = this.getDimensions();
                        var marginTop = -(elementDimensions.height / 2) + "px";
                        var marginLeft = -(elementDimensions.width / 2) + "px";       
                        $get(this._id).style.top = "50%";
                        $get(this._id).style.left = "50%";
                        $get(this._id).style.marginTop = marginTop;
                        $get(this._id).style.marginLeft = marginLeft;
                        break;
        case "topleft" :    $get(this._id).style.top = $get(this._id).style.left = "1%";
                            break;
        case "topright" :   $get(this._id).style.top = $get(this._id).style.right = "1%";
                            break;
        case "bottomleft":  $get(this._id).style.bottom = $get(this._id).style.left = "1%";
                            break;
        case "bottomright" : $get(this._id).style.bottom = $get(this._id).style.right = "1%";
                            break;
    }
}

function Sys$UI$EnhancedUpdateProgress$getDimensions() 
{
    if ($get(this._id).style.display != 'none')
      return {width: $get(this._id).offsetWidth, height: $get(this._id).offsetHeight};

    // All *Width and *Height properties give 0 on elements with display none,
    // so enable the element temporarily
    var els = $get(this._id).style;
    var originalVisibility = els.visibility;
    var originalPosition = els.position;
    els.visibility = 'hidden';
    els.position = 'absolute';
    els.display = '';
    var originalWidth = $get(this._id).clientWidth;
    var originalHeight = $get(this._id).clientHeight;
    els.display = 'none';
    els.position = originalPosition;
    els.visibility = originalVisibility;
    return {width: originalWidth, height: originalHeight};
}

Sys.UI.EnhancedUpdateProgress.prototype = { 
initialize: Sys$UI$EnhancedUpdateProgress$initialize,
getDimensions: Sys$UI$EnhancedUpdateProgress$getDimensions
};
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();