/**
 * 
 * @author 	 Nicolas Pigelet
 * @contact	 team@projet-yummy.com
 * 
 */
 
/**
 * 
 * @class 	SlideBlock
 * 
 */

var SlideBlock = new Class({
	
	Implements : [Options, Events],
	
	options : {
		mask : "mask",
		blockClass : ".block"
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		this.container = $$(".blockContainer")[0];
		this.blocks = this.container.getElements(".block");
		this.mask = $(this.options.mask);
		this.aBlocks = this.mask.getElements(this.options.blockClass);
		
		this.container.tween("opacity", 1);
		this.blocks[0].addClass("current");
		
		this.mask.setStyle("width", this.aBlocks.length * 840);
		
		this._initBlocks();
	},
	
	_initBlocks : function(){
		
		var _self = this;
		this.aBlocks.each( function(div, i){
			if (this.options.currentBlock == i) {
				div.addClass("current");
				// div.getParent("div.blockContainer").setStyle('margin-left', -(840 * this.aBlocks.indexOf(div)) );
				this.currentBlock = div;
			}
			else div.addEvent( "click", this.clickHandler.bind(this) );
		}.bind(this) );
	},
	
	clickHandler : function(e){
		e.stop();
		
		var _self = this;
		if ( e.target != null )
			var div = e.target.hasClass("block") ? e.target : e.target.getParent(".block");
		else 
			var div = e.srcElement.hasClass("block") ? e.srcElement : e.srcElement.getParent(".block");
		
		if(_self.currentBlock) {
			_self.currentBlock.removeClass("current").addEvent( "click", _self.clickHandler.bind(_self) );
		}
		
		div.removeEvents("click").addClass("current");
		div.getParent("div.blockContainer").set("tween", { duration : 400 }).tween('margin-left', -(840 * this.aBlocks.indexOf(div)) );
		
		_self.fireEvent("change", this.aBlocks.indexOf(div));
		_self.currentBlock = div;
		
	}
	
});

