// SLIDESHOW:
// config for slideshow:
// view: "carousel", default fading
// navigation: "withPagination", default no navigation

// needs:
// - /js/jquery/jquery-1.4.2.min.js
// - /js/jquery/jquery.cycle.min.js
// - /js/jquery/jquery.easing.1.2.js
// - /css/slideshow.css

(function($) {
	var initialize = function(){
			$('.slideshow').each(startSlideshow);
		},			
		startSlideshow = function(){
			var $item = $(this)
				$opts = {};
			
			if($item.hasClass('withPagination')){
				// add pagination wrapper
				$item.append('<ul class="pagination"></ul>');
				
				$opts.pager = '.pagination';
				$opts.pagerAnchorBuilder = function(index, slide) {
			        return '<li>' + $(slide).attr('title') + '</li>'; 
			    };
				$opts.updateActivePagerLink = function(selector, index, activeClass){
					$pagination = $item.find('.pagination');
			    	$pagination.find('li').removeClass('active');		    	
			    	$($pagination.find('li')[index]).addClass('active');
			    };
				
				// fade in pagination in order to prevent flapping
				$pagination = $item.find('.pagination').fadeIn('slow');
			}
			
			if($item.hasClass('withPagerButton')){
				// add nav buttons
				$pagerButtons = $item.append('<a class="pagerButton nextSlide">nächstes</a><a class="pagerButton previousSlide">vorheriges</a>');
				
				// fade in pagination in order to prevent flapping
				$pagerButtons = $item.find('.pagerButton').fadeIn('slow');
				
				$opts.next = $('.nextSlide', $item);
				$opts.prev = $('.previousSlide', $item);
			}			
			
			if($item.hasClass('vertScroll')){
				$opts.fx = 	'scrollVert';
			} else if($item.hasClass('horScroll')){
				$opts.fx = 	'scrollHorz';
			} else {
				$opts.fx = 'fade';
			}
			
			initializeSlideshow($item,$opts);
		},
		
		initializeSlideshow = function(slideshowElement,options){
			var $slideshowElement = $(slideshowElement);
			
			var defaultOptions = {
				fx: 'fade',
				speed: 'slow',
				timeout: 7000,
				slideExpr: '.slide',
				next: null,
				prev: null
			};
			
			var slideshowOptions = $.extend({}, defaultOptions, options);
			var slideshow = $slideshowElement.cycle(slideshowOptions);
			
			$slideshowElement.mouseenter(function(){
				$slideshowElement.cycle('pause');
			});
			$slideshowElement.mouseleave(function(){
				$slideshowElement.cycle('resume');
			});
		};
	
	$(function(){
		initialize();
	});
})(jQuery);