var carousel = Class.create({
  initialize: function(maskID, divsClass, itemsClass, movBtnClass ) {
	try{
		this.startPoint = Position.cumulativeOffset($(maskID))[0];	
		this.bAutoSlide = false;
		this.movBtnClass= '.'+movBtnClass;
		this.itemsClass = itemsClass;
		this.divsClass  = divsClass;
		this.container	= $(divsClass);
		this.slides		= $$('.'+this.divsClass+' < div[class~='+this.itemsClass+']');
		this.nextID		= 0;
		this.timeout	= {};
		this.observeBtn();
		this.observePre();
		this.observeNext();
		this.moveTo(0);
		//this.startAutoSlide();
	}
	catch(e){
		//console.log("carousel started with error: "+e);	
		}
	},
	
	fx: function (o,iX)
	{
	   new Effect.Move(o, { 
			x: iX, 
			y: 0,
			duration:0.95,
			transition: Effect.Transitions.spring
		});
	},

	moveTo: function(objNo)
	{
		diff_x =  this.startPoint - (Position.cumulativeOffset( this.slides[objNo] )[0]) ;
		this.fx(this.container, diff_x );
		this.fxBtn(objNo);
	},

	fxBtn: function (objNo)
	{
		el = $$(this.movBtnClass)[objNo];
		if(el.hasClassName('slideBtn_selected') )return false;
		try{$$('.slideBtn_selected')[0].removeClassName('slideBtn_selected')}catch(e){}
		el.addClassName('slideBtn_selected');	
	},
	
	autoSlide: function(startID)
	{
		var o = this;
		if(! this.bAutoSlide ) return;
	
		if (isNaN(startID) ) startID = 0;
		this.nextID = (startID+1) % this.slides.length;		
		
		this.moveTo(startID);
		o.timeout	=	setTimeout( "o.autoSlide("+ this.nextID	+")", 3500);
	},
	
	startAutoSlide: function ()
	{
		this.bAutoSlide = (this.bAutoSlide) ? false: true;
		this.autoSlide();
	},

	observeBtn : function ()
	{
		var o = this;
		$$(o.movBtnClass).each( function(el){
			Event.observe(el, 'click', function(){
				clearTimeout(o.timeout);
				o.moveTo(el.id);		
				o.timeout	=	setTimeout( "o.autoSlide("+o.nextID	+")", 7000);
			})
		});
	},

	observePre : function ()
	{
		var o = this;
		Event.observe($('carouselPrev'), 'click', function(){
				clearTimeout(o.timeout);
				if(o.nextID==0) return;
				o.nextID = ((o.nextID-1) % o.slides.length);
				o.moveTo(o.nextID);		
			});
	},
	
	observeNext : function ()
	{
		var o = this;
		Event.observe($('carouselNext'), 'click', function(){
				clearTimeout(o.timeout);
				o.nextID = ((o.nextID+1) % o.slides.length);
				o.moveTo(o.nextID);		
			});
	}		
	
});	


Event.observe(window, 'load', function(){
	oCarousel=new carousel('carsouelMask', 'carsouelAllNews','item', 'CarMovBtn');
	}
);
