
var Slider=new Class({
		


	getOptions:function(){
		return{
			mode:"drawer",
			layout:"vertical",
			itemstyle:"top",
			shiftSize:50,
			sizeNormal:100,
			sizeSmall:50,
			sizeFull:150,
			transition:Fx.Transitions.Expo.easeOut
		}
	},


	initialize:function(a,b,c){
		this.setOptions(this.getOptions(),c);
		this.list=$(a);
		this.items=$$(b);
		this.fx=new Fx.Elements(this.items,{wait:false,duration:600,transition:this.options.transition});
		switch(this.options.mode){
			case"drawer":
				if(this.options.layout=="vertical"){
					this.options.itemstyle="top";
				}else{
					this.options.itemstyle="left";
				}
				this.createDrawerFx();
				break;
			case"slider":
				if(this.options.layout=="vertical"){
					this.options.itemstyle="height";
				}else{
					this.options.itemstyle="width";
				}
				this.createSliderFx()
		}
		this.items[0].addClass("active");
	},


	createDrawerFx:function(){
		var d={};
		var index=this.items[0].style["zIndex"]+this.items.length;
		this.items.each(function(c,i){
			c.style[this.options.itemstyle]=i*this.options.sizeNormal+"px";
			c.style["zIndex"]=index-i;
			d[i]=c.getStyle(this.options.itemstyle).toInt();
			c.addEvent("mouseenter",function(b){
				var o={};
				c.addClass("active");
				this.items.each(function(a,j){
					var s=a.getStyle(this.options.itemstyle).toInt();
					if(j>=i){
						if(s!=d[j]){
							o[j]=this.getItemStyle(s,d[j]);
						}
					}
					else{
						if(s!=d[j]-this.options.shiftSize){
							o[j]=this.getItemStyle(s,d[j]-this.options.shiftSize);
						}
					}
					if(j!=i){
						a.removeClass("active");
					}
				}.bind(this));
				this.fx.start(o);
			}.bind(this));
		}.bind(this));
	},


	createSliderFx:function(){
		this.items.each(function(c,i){
			c.addEvent("mouseenter",function(b){
				var o={};
				o[i]=this.getItemStyle(c.getStyle(this.options.itemstyle).toInt(),this.options.sizeFull);
				c.addClass("active");
				this.items.each(function(a,j){
					if(i!=j){
						var s=a.getStyle(this.options.itemstyle).toInt();
						if(s!=this.options.sizeSmall){
							o[j]=this.getItemStyle(s,this.options.sizeSmall)
						}a.removeClass("active")
					}
				}.bind(this));
				this.fx.start(o)
			}.bind(this))
		}.bind(this));
		this.list.addEvent("mouseleave",function(b){
			var o={};
			this.items.each(function(a,i){
				o[i]=this.getItemStyle(a.getStyle(this.options.itemstyle).toInt(),this.options.sizeNormal);
				a.removeClass("active")
			}.bind(this));
			this.fx.start(o)
		}.bind(this))
	},


	getItemStyle:function(a,b){
		switch(this.options.mode){
			case"drawer":if(this.options.layout=="vertical"){return{top:[a,b]}}else{return{left:[a,b]}}break;
			case"slider":if(this.options.layout=="vertical"){return{height:[a,b]}}else{return{width:[a,b]}}
		}
	}


});

Slider.implement(new Options);