var carousel={
	base:false,
	delay:30,
	intervalID:-1,
	increment:4.9,
	direction:"RIGHT",
	getLimit:function(r){
		var c, h, f, d;
		if(!r.elements)r.elements=compono.getElements(r);
		if(this.direction == "LEFT"){
			h = r.scrollTop - r.offsetHeight;
			d = compono.getFirst(r);
		}else if(this.direction == "RIGHT"){
			h = r.scrollTop + r.offsetHeight;
			d = compono.getLast(r);
		}
		for(var i=0,o; (o=r.elements[i]) && o.offsetTop <= h; i++){c=o;}
		return c || d;
	},
	prev:function(a,e){
		this.direction = "LEFT";
		this.run(a,e);
	},
	next:function(a,e){
		this.direction = "RIGHT";
		this.run(a,e);
	},
	run:function(a,e){
		if(!this.base)this.base=a.parentNode.parentNode;
		if(!this.base.region)this.base.region=this.base.getElementsByTagName("dl")[0];
		this.base.region.limit = this.getLimit(this.base.region);
		var _this=this, f;
		if(this.direction == "LEFT"){
			f=function(){_this.toPrev();};
		}else if(this.direction == "RIGHT"){
			f=function(){_this.toNext();};
		}
		this.intervalID = window.setInterval(f,this.delay);
	},
	toPrev:function(){
		var c = window.carousel;
		var r = c.base.region;
		var l = r.limit;
		r.scrollTop += (l.offsetTop - r.scrollTop) / c.increment;
		if(r.scrollTop <= l.offsetTop || (r.oldScrollTop && r.oldScrollTop == r.scrollTop)){
			c.kill();
		}
		r.oldScrollTop = r.scrollTop;
	},
	toNext:function(){
		var c = window.carousel;
		var r = c.base.region;
		var l = r.limit;
		r.scrollTop += (l.offsetTop - r.scrollTop) / c.increment;
		if(r.scrollTop >= l.offsetTop || (r.oldScrollTop && r.oldScrollTop == r.scrollTop)){
			c.kill();
		}
		r.oldScrollTop = r.scrollTop;
	},
	kill:function(){
		window.clearInterval(carousel.intervalID);
	},
	toString:function(){return "Carousel";}
}