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

	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];
		//console.log(this.movBtnClass);
		if(el.hasClassName(this.BtnSelected) )return false;
		try{$$('.'+this.BtnSelected)[0].removeClassName(this.BtnSelected)}catch(e){}
		el.addClassName(this.BtnSelected);	
	},
	
	autoSlide: function(startID)
	{
		obj1= this;
		if(! this.bAutoSlide ) return;
	
		if (isNaN(startID) ) startID = 0;
		nextID = (startID+1) % this.slides.length;		
		
		this.moveTo(startID);
		clearTimeout(this.timeout);
		this.timeout	=	setTimeout( "obj1.autoSlide("+nextID	+")", 3500);
	},
	
	startAutoSlide: function ()
	{
		this.bAutoSlide = (this.bAutoSlide) ? false: true;
		this.autoSlide();
	},

	observeBtn : function ()
	{
		obj = this;
		$$(this.movBtnClass).each( function(el){
			Event.observe(el, 'click', function(){
				clearTimeout(obj.timeout);
				//o.fxBtn(el.id);
				nextID = el.id+1;
				obj.timeout	=	setTimeout( "obj.autoSlide("+nextID	+")", 7000);				
				//obj.timeout 	= obj.autoSlide.delay(7, nextID);
				obj.moveTo(el.id);		
			})
		});
	}
});	
Effect.Transitions.easeInBack = function(pos)
{
	var s = 1.70158;	
	return (pos)*pos*((s+1)*pos - s);
}

