var Slider=$H();
Object.extend(Slider,{
	speed:0.01,
	changeStep:10,
	dimension:
	[
		{dim: 50,left:-50,top:47},
		{dim: 75,left: 13,top:34},
		{dim:120,left: 98,top:12},
		{dim: 75,left:228,top:34},
		{dim: 50,left:315,top:47}
	],
	delta:[],
	prepare:function()
	{
		this.length=this.data.length;
		this.userid=$('slider_id');
		this.title=$('roll_title');
		this.roots=$('slider0','slider1','slider2','slider3','slider4');
//		this.currentNum= currentNum ;
		var nums=this.getSeriesNumbers(this.currentNum);
		this.roots.each(function(item){item.setStyle({position:'absolute'});});
		this.setPosition(nums);
		this.changeContent();
		this.observeNext=new Observer(this.roots[3],'click',this.next,{bind:this});
		this.observePrev=new Observer(this.roots[1],'click',this.prev,{bind:this});
		new Observer($('roll_next').down(),'click',this.next,{bind:this});
		new Observer($('roll_prev').down(),'click',this.prev,{bind:this});
		if(document.all&&!window.opera)this.next();
	},
	getSeriesNumbers:function(n)
	{
		var l=this.length;
		return [n-2<0?l-2+n:n-2,n-1<0?l-1+n:n-1,n,n+1>=l?n+1-l:n+1,n+2>=l?n+2-l:n+2];
	},
	setPosition:function(nums)
	{
		for(var i=0;i<5;i++)
		{
			this.roots[i].setStyle({
				top: this.dimension[i].top +'px',
				left:this.dimension[i].left+'px'
			});
			var d=this.dimension[i].dim+'px';
			this.roots[i].down('img').setStyle({width:d,height:d});
			this.roots[i].down('img').src=this.data[nums[i]].cover;
		}
		
		
		return;
		(5).times(function(i){
			this.roots[i].setStyle({
				top: this.dimension[i].top +'px',
				left:this.dimension[i].left+'px'
			});
//			var d=this.dimension[i].dim+'px';
			var dd=this.dimension[i].dim;
			
//			this.roots[i].down('img').setStyle({width:d,height:d});
			this.roots[i].down('img').width=dd;
			this.roots[i].down('img').height=dd;
			this.roots[i].down('img').src=this.data[nums[i]].cover;
		}.bind(this));
	},
	next:function(e)
	{
		if(typeof e!='undefined')
		{
			Event.stop(e);
			var o=$(Event.element(e));
			if(o.tagName.toLowerCase()=='img')
				o.up().blur();
		}
		if(this.sliding)return;
		this.sliding=true;
		this.counter=0;
		this.nextMode=true;
		for(var i=0;i<4;i++)
		{
			this.delta[i]={};
			this.delta[i].dim  = (this.dimension[4-i].dim -this.dimension[3-i].dim )/this.changeStep;
			this.delta[i].left = (this.dimension[4-i].left-this.dimension[3-i].left)/this.changeStep;
			this.delta[i].top  = (this.dimension[4-i].top -this.dimension[3-i].top )/this.changeStep;
		}
		new PeriodicalExecuter(this.doSlide.bind(this),this.speed);
	},
	prev:function(e)
	{
		if(typeof e!='undefined')
		{
			Event.stop(e);
			var o=$(Event.element(e));
			if(o.tagName.toLowerCase()=='img')
				o.up().blur();
		}
		if(this.sliding)return;
		this.sliding=true;
		this.counter=0;
		this.nextMode=false;
		for(var i=0;i<4;i++)
		{
			this.delta[i]={};
			this.delta[i].dim  = (this.dimension[i].dim -this.dimension[i+1].dim )/this.changeStep;
			this.delta[i].left = (this.dimension[i].left-this.dimension[i+1].left)/this.changeStep;
			this.delta[i].top  = (this.dimension[i].top -this.dimension[i+1].top )/this.changeStep;
		}
		new PeriodicalExecuter(this.doSlide.bind(this),this.speed);
	},
	doSlide:function(pe)
	{
		for(var j=0,pn;j<4;j++)
		{
			pn=this.nextMode?4-j:j;
			for(var i=0,p={},pos=['left','top'];i<2;i++){
				p[pos[i]]=this.dimension[pn][pos[i]] - this.delta[j][pos[i]]*this.counter+'px';}
			dimval=this.dimension[pn].dim - this.delta[j].dim*this.counter+'px';
			this.roots[pn].setStyle(p);
			this.roots[pn].down('img').setStyle({width:dimval,height:dimval});
		}
		this.counter++;
		if(this.counter==this.changeStep+1)
		{
			pe.stop();
			if(this.nextMode)
				this.currentNum=this.currentNum==this.length-1?0:this.currentNum+1;
			else
				this.currentNum=this.currentNum==0?this.length-1:this.currentNum-1;
			this.stealTheSkyAndPutUpAShamSun();
			this.changeContent();
			this.sliding=false;
		}
	},
	stealTheSkyAndPutUpAShamSun:function()
	{
		this.observeNext.stop();
		this.observePrev.stop();
		if(this.nextMode)
			this.roots.push(this.roots.shift());
		else
			this.roots=[this.roots.pop(),this.roots].flatten();
		this.setPosition(this.getSeriesNumbers(this.currentNum));
		this.observeNext=new Observer(this.roots[3],'click',this.next,{bind:this});
		this.observePrev=new Observer(this.roots[1],'click',this.prev,{bind:this});
	},
	changeContent:function()
	{
		var anchor=this.userid.down();
		anchor.innerHTML=this.data[this.currentNum].id;
		anchor.href=this.data[this.currentNum].location;
		this.roots[2].down('a').href=this.data[this.currentNum].location;
		this.title.innerHTML=this.data[this.currentNum].name;
	}
});
