


/**
 * Expertise Xerxes2 XerxesBox - a version of lightbox
 */
var XerxesBox = function(config){
	Ext.apply(this, config);
}

XerxesBox.prototype = {
	mask: null, //The mask for this object
	maskContent: null,//The element holding the actual content
	maskLoading:null, //"Loading" message
	maskUrl: function(url){
		this.maskLoading = document.createElement("div");
		this.maskLoading.className = "ext-el-mask-msg x-mask-loading";
		this.maskLoading.innerHTML = "<div>Loading...</div>";
		document.body.appendChild(this.maskLoading);
		this.maskLoading = Ext.get(this.maskLoading);
		this.maskLoading.center();
		this.maskContent = document.createElement("div");
		this.maskContent.setAttribute("style", "position:absolute;top:-500px;z-index:2000000;visibility:hidden")
		document.body.appendChild(this.maskContent);
		this.maskContent = Ext.get(this.maskContent);
		this.maskContent.load({url:url, callback:this.loadCallback.createDelegate(this)});
		this.centerMask();
		this.showMask();
	},
	centerMask:function(){
		this.maskContent.center();
		if(this.maskContent.getTop() < 24)this.maskContent.setTop(24);
	},
	loadCallback:function(){
		this.maskLoading.remove();
		this.centerMask();
		this.maskContent.show({duration:0.5});
	},
	
	showMask: function(){
		this.mask = document.createElement("div");
		this.mask.className = "ext-el-mask";
		this.mask.setAttribute("style", "text-align:center;background:#000000;opacity:0;display:none;height:"+this.getDocumentHeight()+"px;");
		this.mask.innerHTML = "&nbsp;";
		document.body.appendChild(this.mask);
		this.mask = Ext.get(this.mask);
		this.mask.setVisibilityMode(Ext.Element.DISPLAY);
		this.mask.on("click",this.clearMask.createDelegate(this));
		this.mask.fadeIn({endOpacity:0.8});
	},
	clearMask: function(){
		this.mask.fadeOut({
			duration: 1,
			callback: this.clearMaskCallback.createDelegate(this)
		});
		this.maskContent.fadeOut({
			duration: 0.8
		});
	},
	clearMaskCallback: function(){
		this.mask.stopFx();
		this.mask.remove(); 
		this.maskContent.stopFx();
		this.maskContent.remove(); 
		this.maskLoading.stopFx();
		this.maskLoading.remove();
	},
	getDocumentHeight: function(){
		var D = document;
		return Math.max(Math.max(D.body.scrollHeight, D.documentElement.scrollHeight), Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), Math.max(D.body.clientHeight, D.documentElement.clientHeight));
	}
};