var SL_Slider = new Class({

	//implements
	Implements: [Options],	
	
	//variables setup
	numNav: new Array(),		//will store number nav elements (if used)
	timer: null,					//periodical function variable holder
	isSliding: 0,					//flag for animation/click prevention
	direction: 1,					//flag for direction (forward/reverse)
	
	//options
	options: {
	slideTimer: 8000,  			//Time between slides (1 second = 1000), a.k.a. the interval duration
	isPaused: false,				//flag for paused state
	transitionTime: 2600, 		//Transition time (1 second = 1000)
	transitionType: 'linear:out',	//Transition type
	container: null,					//container element
	items:  null, 					//Array of elements for sliding
	itemNum: 0						//Current item number
	},
	

	//initialization
	initialize: function(options) {
		var self = this;
		
		//set options
		this.setOptions(options);
		
		//remove any scrollbar(s) on the container
		self.options.container.setStyle('overflow', "hidden");  
	
		//setup items (a.k.a. slides) from list
		self.options.items.each(function(el, i){
			  //f.y.i.  el = the element, i = the index
			  el.setStyle('position', "absolute");
			  var itemH = el.getSize().y;
			  var itemW = el.getSize().x;
			 
			 //el.setStyle('top', (-1 * itemH));  //would use this if doing vertical transition
			 if (i>0) {
			  el.setStyle('left', (-1 * itemW));
	     } else {
        el.setStyle('left', 0);
       } 
		  
		 });
	
	},

	//startup method
	start: function() {
		
		var self = this;
		
		self.slideIt(self.options.itemNum+1);  //initialize first slide

		if(self.options.isPaused == false){
			self.timer = self.slideIt.periodical(self.options.slideTimer, self, null);
		}
	
	},
	
	
	slideIt: function(passedID) {
		
		var self = this;
		
		//get item to slide out
		var curItem = self.options.items[self.options.itemNum]; 
		if(self.options.numNavActive == true){
			var curNumItem =  self.numNav[self.options.itemNum];
		}
		
		//check for passedID presence
		if(passedID != null) {
			if(self.options.itemNum != passedID){
				if(self.options.itemNum > passedID) { 
					self.direction = 0; 
				} else { 
					self.direction = 1;
				}
				self.options.itemNum = passedID;
			}
		}
		else{
			self.changeIndex();	
		}
		
		
		//now get item to slide in using new index
		var newItem = self.options.items[self.options.itemNum];
		if(self.direction == 0){
			var curX = self.options.container.getSize().x;
			var newX = (-1 * newItem.getSize().x);
		}
		else{
			var curX = (-1 * self.options.container.getSize().x);	
			var newX = newItem.getSize().x;
		}
		
		
		//set up our animation stylings
		var item_in = new Fx.Morph(newItem, {
		     duration: self.options.transitionTime, 
		     transition: 'cubic:out', 
		     link: 'ignore',
		     
		     onStart: function(){
				self.isSliding = 1;  //prevents extra clicks
			},
		     
		     onComplete: function(){
				self.isSliding = 0;  //prevents extra clicks
			}
		     
		});
		
		
		item_in.start({
			//'opacity':[0,1],
			'left' : [newX, 0]
		});
		
		if(curItem != newItem){
			var item_out = new Fx.Morph(curItem, {
				     duration: self.options.transitionTime, 
				     transition: 'cubic:out', 
				     link: 'ignore'
			});
			
			if(self.options.numNavActive == true){
				curNumItem.removeClass('active');
			}
			
			item_out.start({
				//'opacity':[0],
				'left' : [(curX)]
			});
		}
	
	},
	
		changeIndex: function() {
		var self = this; 
		
		var numItems = self.options.items.length;  //get number of slider items
		
		//change index based on value of 'direction' parameter
		if(self.direction == 1){
			if(self.options.itemNum < (numItems - 1)){
				self.options.itemNum++; 
			}
			else{
				self.options.itemNum = 0;
			}
		}
		else if(self.direction == 0){
			if(self.options.itemNum > 0){
				self.options.itemNum--; 
			}
			else{
				self.options.itemNum = (numItems - 1);
			}
		}	
		
	}
	
	//------------------------  end supp. functions -----------------------------------------//

});


var slider_timer = 6000;
var mySlider;
window.addEvent('domready', function() {
		if ($('obrazek')) {
		//variables for making things more simple below
		var itemsHolder = $('obrazek');
		var myItems = $$('#obrazek img');
		
		//create an instance of the slider, and start it up
		mySlider = new SL_Slider({
			slideTimer: slider_timer,
			isPaused: false,
			container: itemsHolder,
			items: myItems
		});
		//mySlider.start();
		(function() {mySlider.start()}).delay(slider_timer);	
	}		 
});


