/* */
		
var Slideshow = new Class({
	options: {
		'current_position': 1, 
		'timeout': 4000, 
		'duration': 500,
		'height': 304
	},
	transitions: {},
	initialize: function(list, options){
		this.setOptions(options);
		this.list = $$(list);
		
		// AlleItems initialisieren
		var self = this; 
		this.list.each(function(item, i){
			var _index = item.id = 'item' + (i+1) ;
			item.addClass((i==0) ? 'positionCenter' : 'positionTop'); 
			self.transitions[_index] = new Fx.Style(_index, 'top', {duration: self.options.duration, wait: true});
			self.generateLinks(item.getElement('h1').getText(), item.getElement('a').getProperty('href'), _index);
		});
		

		this.highlightLinks('item' + this.options.current_position);
		this.change.periodical(this.options.timeout, this);
		
	},
	
	generateLinks:  function(headline, link, index){
		var li = new Element('li',{'id': 'li' + index});
		var a = new Element('a', {'title': headline, 'href': link});
					
		a.appendText(headline);
		a.injectInside(li);
		li.injectInside($('remoteUl'));
	},
	
	highlightLinks: function(highlight){
		$$('#remoteUl li').removeClass('actualPosition');
		$('li' + highlight).addClass('actualPosition');
	},
	
	position: function(slideshowElement, position){
		this.transitions[slideshowElement].start(position);
	},
	
	change: function(){
		
		var listLength = this.list.length;
		var nextPosition = (this.options.current_position == listLength) ? 1 : (this.options.current_position + 1);
		var previousPosition = (this.options.current_position == 1) ? listLength : (this.options.current_position - 1);
		$('item' + previousPosition).setStyle('top', '-' + this.options.height + 'px');

		this.position('item' + this.options.current_position, this.options.height);
		this.position('item' + nextPosition, 0);
				
		this.highlightLinks('item' + nextPosition);
				
		this.options.current_position++;
		if (this.options.current_position > listLength) this.options.current_position = 1;
	}
	
});

Slideshow.implement(new Events, new Options);


