//---- Variables ----------------------------------------------------------------

var nextPageTimeout = 4;
var slideshowSelector = "#slideshow"
var slideshowItemClassSelector = ".slideshow-item"
var playStopButtonSelector = '#slideshow-play-stop';
var playClass = 'slideshow-play';
var pauseClass = 'slideshow-pause';
var pagenumberButtonsSelector = '.slideshow-controls a';
var pagenumberActiveClass = 'slideshow-active'
var controlsSelector = '.slideshow-controls';



//---- Callback Functions -------------------------------------------------------

function slideshow_initCallback(slideshow) {

	// Seitenzahlen
	jQuery(pagenumberButtonsSelector).bind('click', function() {
		if(isThePlayStopButton(jQuery(this)) == false) {
			var pagenumberToScrollTo = jQuery(this).text();
			scrollToPagenumber(slideshow, pagenumberToScrollTo);
			if(playStopButtonSetToPlay()) {
				startSlideshow(slideshow);
			}
			else {
				stopSlideshow(slideshow);
			}
		}
    	return false;
	});

	// Slideshow stoppen, wenn der Benutzer mit der Maus ueber die Bilder faehrt
	slideshow.clip.hover(function() {
		// Maus rein
		if(playStopButtonSetToPlay())
			stopSlideshow(slideshow);
	}, function() {
		// Maus raus
		if(playStopButtonSetToPlay())
			startSlideshow(slideshow);
	});

	// Play und Stop
	jQuery(playStopButtonSelector).bind('click', function() {
		if(playStopButtonSetToPlay()) {
			stopSlideshow(slideshow);
			jQuery(this).removeClass(playClass);
			jQuery(this).addClass(pauseClass);
		}
		else {
			startSlideshow(slideshow);
			jQuery(this).removeClass(pauseClass);
			jQuery(this).addClass(playClass);
		}
    });

};

function slideshow_itemFirstInCallback(slideshow, listElement, index, state) {
	jQuery(controlsSelector).children()[index - 1].className = 'slideshow-active';
}

function slideshow_itemFirstOutCallback(slideshow, listElement, index, state) {
	jQuery(controlsSelector).children()[index - 1].className = '';
}



//---- Utility Functions ------------------------------------------------------------

function playStopButtonSetToPlay() {
	return jQuery('#slideshow-play-stop').hasClass('slideshow-play');
}

function isThePlayStopButton(button) {
	return button.text() == "";
}

function scrollToPagenumber(slideshow, pagenumberToScrollTo) {
	slideshow.scroll(jQuery.jcarousel.intval(pagenumberToScrollTo));
}

function startSlideshow(slideshow) {
	slideshow.startAuto(nextPageTimeout);
}

function stopSlideshow(slideshow) {
	slideshow.startAuto(0);
}



//---- Initialisation ---------------------------------------------------------------

jQuery(document).ready(function() {
	var randomStartIndex = Math.floor( Math.random() *  (jQuery(slideshowItemClassSelector).size()) ) + 1;
    jQuery(slideshowSelector).jcarousel({
    	start: randomStartIndex,
        scroll: 1,
        initCallback: slideshow_initCallback,
        itemFirstInCallback: slideshow_itemFirstInCallback,
        itemFirstOutCallback: slideshow_itemFirstOutCallback,
		auto: nextPageTimeout,
		wrap: 'last',
        buttonNextHTML: null,
        buttonPrevHTML: null,
        visible: 1
    });
});
