


/*****************************
*  WASABI_LOADINGITEM CLASS  *
*****************************/
var wasabi_loadingItem=Class.create({
	status:0,//0:loading is closed, 1:loading is open
	element:null,//element to overlay the  loading-div
	loading:null,//loading-element
	zIndex:2555,//default zIndex for loadingElements
	CSSclass:'loading',//default class for loading-div-element
	content:'',//default content of loading-div-element

	initialize:function(element,parameters) {
		if(parameters) {
			if(parameters.zIndex) {this.zIndex=parameters.zIndex;}
			if(parameters.CSSclass) {this.CSSclass=parameters.CSSclass;}
			if(parameters.content) {this.content=parameters.content;}
		}

		this.element=$(element);
		this.element.wasabi_loading=this;
		this.loading=new Element('div',{'class':this.CSSclass}).setStyle({position:'absolute',zIndex:this.zIndex}).hide().update(this.content);
		$(document.body).insert(this.loading);
	},
	setPositionAndDimension:function() {
		var elementPosition=this.element.cumulativeOffset();
		var elementDimensions=this.element.getDimensions();//PROTOTYPE-BUG with diplay:none and getDimensions() !!!!!!
		var loadingPosition=elementPosition;
		var loadingDimensions=elementDimensions;

		this.loading.setStyle({top:loadingPosition.top+'px',left:loadingPosition.left+'px',width:loadingDimensions.width+'px',height:loadingDimensions.height+'px'});
		//alert('elementPosition.left:'+elementPosition.left+'\n'+'elementPosition.top:'+elementPosition.top+'\n'+'elementDimensions.width:'+elementDimensions.width+'\n'+'elementDimensions.height:'+elementDimensions.height);
		//alert('loadingPosition.left:'+loadingPosition.left+'\n'+'loadingPosition.top:'+loadingPosition.top+'\n'+'loadingDimensions.width:'+loadingDimensions.width+'\n'+'loadingDimensions.height:'+loadingDimensions.height);
	},
	show:function() {
		//alert('open()');
		if(this.status==1) {return false;}//open only if loading is currently closed
		this.status=1;
		this.setPositionAndDimension();
		this.loading.show();
		this.element.fire('wasabiLoading:open');
	},
	hide:function() {
		//alert('close()');
		if(this.status==0) {return false;}//open only if loading is currently opened
		this.status=0;
		this.loading.hide();
		this.element.fire('wasabiLoading:close');

	},
	remove:function() {
		//alert('remove(): '+this.element.id);
		this.status=0;
		this.element.wasabi_overlay=null;
		this.loading.remove();
	}
});
//new wasabi_loadingItem('testElement',{content:'<img src="loading.png" />'});
//extend testElement with wasabi_loading object: $('testElement').wasabi_loading.show();



