/**
 * håndterer visning av animasjon ved ajax-kall
 * 
 * @author	Thomas Sømoen <thomas@apt.no>
 * @version	20061030
 */
var Loader = Class.create();

Loader.prototype = {
	initialize: function(parent) {
		this.loaded = false;
		this.parent = $(parent);
		this.html = Builder.node('div');
		$(this.html).addClassName('loader');
		delay(function(){this.start()},this,500);
	},
	
	/* starter animasjon */
	start:function(){
		this.showImage();
	},
	
	/* viser animasjon */
	showImage:function(){
		if(!this.loaded){
			Position.centerOn(this.html,this.parent);
			new Effect.Appear($(this.html));
		}
	},
	
	/* avslutter animasjon */
	stop:function(){
		this.loaded = true;
		$(this.html).remove();
	}
}

/* registrer funksjonen på alle ajax-kall */
Ajax.Responders.register({
	/* når ett ajax-kall opprettes starter animasjonen */
	onCreate : function(a){
		var parent = $('start');
		if(a.container && a.container.success){
			parent = $(a.container.success);
			parent.setStyle({cursor:'wait'});
			a.loader = new Loader(parent);
		}
	},
	
	/* når klienten har fått svar avsluttes animasjonen */
	onComplete : function(a){
		if(a.loader){
			a.loader.stop();
			a.loader = null;
		}
		
		var parent = $('start');
		if(a.container && a.container.success){
			parent = $(a.container.success);
		}
		parent.setStyle({cursor:''});
	}
});