dojo.require("dijit._base.place");

var lb_data_obj;
function LoadingBoxData()
{
	this.lb_obj;
	this.wo_obj;
	this.orig_loading_box_width = 0;
	this.orig_loading_box_height = 0;
	this.is_modal = false;
	this.positioning_data_obj = new function(){var vp_obj, screen_center, box_center_left, box_center_top;};
}
LoadingBoxData.prototype.Init = function(loading_box_obj, white_out_box_obj)
{
	this.lb_obj = loading_box_obj;
	this.wo_obj = white_out_box_obj;
	this.orig_loading_box_width = this.lb_obj.style.width.substr(0, this.lb_obj.style.width.length-2);
	this.orig_loading_box_height = this.lb_obj.style.height.substr(0, this.lb_obj.style.height.length-2);
	this.is_modal = false;
}
LoadingBoxData.prototype.HandleOnScroll = function()
{
	if(this.is_modal)
		this.ShowWhiteOut();
}
LoadingBoxData.prototype.ShowWhiteOut = function()
{
	this.is_modal = true;
	var vp_obj = dijit.getViewport();
	this.wo_obj.style.width = vp_obj.w + 'px';
	this.wo_obj.style.height = vp_obj.h + 'px';
	this.wo_obj.style.left = vp_obj.l + 'px';
	this.wo_obj.style.top = vp_obj.t + 'px';
	this.wo_obj.style.display = '';
}

LoadingBoxData.prototype.HideWhiteOut = function()
{
	this.is_modal = false;
	this.wo_obj.style.display = 'none';
}
LoadingBoxData.prototype.LoadPositioningData = function()
{
	this.positioning_data_obj.vp_obj = dijit.getViewport();
	this.positioning_data_obj.screen_center = [this.positioning_data_obj.vp_obj.w/2+this.positioning_data_obj.vp_obj.l, this.positioning_data_obj.vp_obj.h/2+this.positioning_data_obj.vp_obj.t];
	this.positioning_data_obj.box_center_left = this.positioning_data_obj.screen_center[0] - this.orig_loading_box_width/2;
	this.positioning_data_obj.box_center_top = this.positioning_data_obj.screen_center[1] - this.orig_loading_box_height/2;

}
LoadingBoxData.prototype.ShowCenterModal = function()
{
	this.LoadPositioningData();
	this.ShowWhiteOut();

	this.lb_obj.style.left = this.positioning_data_obj.box_center_left + 'px';
	this.lb_obj.style.top = this.positioning_data_obj.box_center_top + 'px';
	this.lb_obj.style.width = this.orig_loading_box_width+'px';
	this.lb_obj.style.height = this.orig_loading_box_height+'px';
	this.lb_obj.style.display = '';
	
	dojo.anim(this.lb_obj, 
			{
				display: 'block', 
				opacity:{start:0, end:1}
			}, 200);
}
LoadingBoxData.prototype.ShowCenter  = function()
{
	this.LoadPositioningData();
	
	this.lb_obj.style.left = this.positioning_data_obj.box_center_left + 'px';
	this.lb_obj.style.top = this.positioning_data_obj.box_center_top + 'px';
	this.lb_obj.style.width = this.orig_loading_box_width+'px';
	this.lb_obj.style.height = this.orig_loading_box_height+'px';
	this.lb_obj.style.display = '';
	
	dojo.anim('loading_box', 
			{
				display: 'block', 
				opacity:{start:0, end:1}
			}, 200);
}

LoadingBoxData.prototype.ShowCenterBlip = function()
{
	this.LoadPositioningData();

	this.lb_obj.style.left = this.positioning_data_obj.vp_obj.l + 'px';
	this.lb_obj.style.top = this.positioning_data_obj.vp_obj.t + 'px';
	this.lb_obj.style.width = this.orig_loading_box_width+'px';
	this.lb_obj.style.height = this.orig_loading_box_height+'px';
	this.lb_obj.style.display = '';
	
	dojo.anim('loading_box', 
			{
				display: 'block', 
				opacity:{start:1, end:0}
			}, 1000, null, this.___loading_box_hide(this));
}

LoadingBoxData.prototype.ShowUpperLeft = function()
{
	this.LoadPositioningData();

	this.lb_obj.style.left = this.positioning_data_obj.vp_obj.l + 'px';
	this.lb_obj.style.top = this.positioning_data_obj.vp_obj.t + 'px';
	this.lb_obj.style.display = '';
	
	dojo.anim('loading_box', 
			{
				//top: {start:vp_obj.t - box_center_top, end:'0', unit:'px'}, 
				left: {start: this.positioning_data_obj.vp_obj.l - this.orig_loading_box_width, end:'0', unit:'px'}, 
				//top: {start:vp_obj.t, end:box_center_top, unit:'px'}, 
				//left: {start: vp_obj.l, end:box_center_left, unit:'px'}, 
				//height: {start:'0', end:orig_loading_box_height, unit:"px"}, 
				//width: {start:'0', end:orig_loading_box_width, unit:"px"}, 
				display: 'block', 
				opacity:{start:0, end:1}
			}, 250);
}

LoadingBoxData.prototype.Hide = function()
{
	this.LoadPositioningData();
	
	this.lb_obj.style.display = '';
	
	dojo.anim('loading_box', 
			{
				display: 'none', 
				opacity:{start:1, end:0}
			}, 250, null, this.___loading_box_hide(this));
}

LoadingBoxData.prototype.HideModal = function()
{
	this.Hide();
	this.HideWhiteOut();
}

LoadingBoxData.prototype.HideUpperLeft = function()
{
	this.LoadPositioningData();
	
	this.lb_obj.style.display = '';
	
	dojo.anim('loading_box', 
			{
				top: {end:this.positioning_data_obj.vp_obj.t - this.orig_loading_box_height, unit:'px'}, 
				left: {end:this.positioning_data_obj.vp_obj.l - this.orig_loading_box_width, unit:'px'}, 
				//height: {end:'0', unit:"px"}, 
				//width: {end:'0', unit:"px"}, 
				display: 'none', 
				opacity:{start:1, end:0}
			}, 250, null, this.___loading_box_hide(this));
}

LoadingBoxData.prototype.___loading_box_hide = function(lb_data_obj)
{
	lb_data_obj.lb_obj.style.top = '0px';
	lb_data_obj.lb_obj.style.left = '0px';
	lb_data_obj.lb_obj.style.width = lb_data_obj.orig_loading_box_width+'px';
	lb_data_obj.lb_obj.style.height = lb_data_obj.orig_loading_box_height+'px';
	lb_data_obj.lb_obj.style.display = 'none';
}

function LoadingBoxInitCallback()
{
	lb_data_obj = new LoadingBoxData();
	lb_data_obj.Init(dojo.byId('loading_box'), dojo.byId('white_out_box'));
	
	//lb_data_obj.ShowCenterModal();
	window.onscroll = lb_data_obj.HandleOnScroll;
}

AddSafeLoaderCallback(LoadingBoxInitCallback);