var ThrowErrors = new Class({
	
	options:{ Obj:'',success:'yeah',container:$('div_errors')},
	
	initialize: function(options){
		this.setOptions(options);
		
		
		this.options.container.setStyles({'overflow':'hidden','opacity':1});
		var maclass = this;
		
		new Fx.Scroll(document.body, {    duration: 1000,    wait: false}).toElement(this.options.container).chain(function(){ maclass.launch(); });
		
		
			
			
		
		
	},
	
	launch: function(){
		var wait = 0;
		var maclass = this;
		$$('#clrz_ul_error li').each(function(el,i){
		

			var fn = (function(){ new Fx.Morph(el,{duration:300}).start({'margin-top':-el.getHeight().toInt()-15,'opacity':0 })  }).delay(wait);
			wait = wait+200;
			});
			
		
		var start = (function(){ maclass.show(); }).delay(wait+300);
		
		
	},
	
	show: function(){
		
		if($('clrz_ul_error'))
		$('clrz_ul_error').destroy();
	if( (!this.options.Obj) || (!this.options.Obj.errors) )
			this.successMessage();
		else
			this.errorMessage();	
		
		
	},
	
	successMessage: function(){
		
		this.fireEvent('onSuccess');
		this.options.container.addClass('clrz_success');
		this.options.container.set('html','<p>'+this.options.success+'</p>');
		/*alert(this.options.success);*/
			this.onComplete();
		
		
	},
	
	
	errorMessage: function(){
		this.fireEvent('onError');
		this.options.container.addClass('clrz_error');
		var listing = new Element('ul',{id:'clrz_ul_error'});
		
	this.options.Obj.errors.each(function(el,i){
		var val = el.item.toString();
			var li = new Element('li').set('html',val).inject(listing,'bottom');	
			
			
			
		});	
		
		var listingFx = new Fx.Morph(listing,{duration:300}).set({'opacity':0 });
		listing.inject(this.options.container);	
		listingFx.start({'opacity': 1});
		this.onComplete();
	},
	
	onComplete:function(){
		var maclass = this;
		var closing = (function(){ new Fx.Morph(maclass.options.container,{duration:300}).start({'opacity':0 }).chain(function(){ maclass.options.container.empty() }); });
		
		closing.delay(3000);
	}
	
	
	
});
ThrowErrors.implement(new Events, new Options);



/****************************/
/****** preload class *******/
/****************************/


var clrzLoader = new Class({
	
		options:{container:$('loader') },

		initialize: function(obj,options){
			if(this.options.container)
			{
			this.options.container.addClass('clrz_loader');
			this.options.container.setStyle('display','none');
			}
			this.setOptions(options);
		
			this.starting();
			
			 obj.addEvents({	
				 onComplete: this.ending.bind(this, [obj])
				});
		
		
	},
	
	starting : function(){
		this.options.container.setStyle('display','block');
		this.options.container.set('html','loading..');
		
		
		
		
	},
	
	ending : function(){
		
		this.options.container.setStyle('display','none');
		this.options.container.set('html','');
		
	}
	
});
clrzLoader.implement(new Events, new Options);

