var BackgroundSlider = new Class({

	Implements: Options,
	options: {
			duration: 300,
			wait: 500,
			transition: Fx.Transitions.Sine.easeInOut,
			className: false,
			divContainer : false,
			padding: {top:0,right:0,bottom:0,left:0}
	},

	initialize: function(elements, options){
		this.setOptions(options);
		
		this.elements = $$(elements);
		this.timer = 0;
		
		this.container = $(this.options.divContainer);
		
		this.bg = new Element('div').set('id','BgSlider_'+new Date().getTime()).inject(this.container,'inside');
		if(this.options.className){
			this.bg.addClass(this.options.className);	
		}
		
		this.effet = new Fx.Morph(this.bg, {
 							duration: this.options.duration,
 							transition: this.options.transition
						});
		
		this.elements.each(function(el,i){
			
			el.addEvent('click', this.setStart.bind(this, el))
			if(el.hasClass('bgStart')){
				this.set(el);
			}
		},this);
		
		window.addEvent('resize',function(){
			this.move(this.startElement);
		}.bind(this));
		
	},
	
	setStart: function(el){
		this.startElement = el;
	},
	
	set: function(el){
		this.setStart(el);
		var pos = el.getCoordinates();
			
		var obj = {};
		obj.top = (pos.top-this.options.padding.top)+'px';
		obj.left = (pos.left-this.options.padding.left)+'px';
		obj.height = (pos.height+this.options.padding.top+this.options.padding.bottom)+'px';
		obj.width = (pos.width+this.options.padding.left+this.options.padding.right)+'px';
		
		this.bg.setStyles(obj);
	},
	
	reset: function(){
		if(this.options.wait){
			this.timer = this.move.delay(this.options.wait, this, this.startElement);
		}
	},
	
	move: function(el){
		$clear(this.timer);
		var pos = el.getCoordinates(this.container);
		
		var obj = {};
		obj.top = pos.top-this.options.padding.top;
		obj.left = pos.left-this.options.padding.left;
		obj.height = pos.height+this.options.padding.top+this.options.padding.bottom;
		obj.width = pos.width+this.options.padding.left+this.options.padding.right;
				
		this.effet.start(obj);
		
	},	
	
	arret: function(){			
		this.effet.stop();	
	}

});


