/*
 slider(selector, delay, duration, type, callback)
 slider(options)
 options = {
	selector: string,
	delay: string or number,
	duration: string or number,
	type: string,
	callback: function,
	endSlide: string or number,
	random: boolean,
	direct: boolean
 }
 
 all types need at least 3 slides, except default which needs at least 2
*/
function slider(selector, delay, duration, type, callback, endSlide, random, direct){
	var $J = getJQuery();
	
	if(!$J){
		return;
	}
	
	var options;
	if(typeof selector == "object"){
		options = selector;
		selector = options.selector;
		delay = options.delay;
		duration = options.duration;
		type = options.type;
		callback = options.callback;
		endSlide = options.endSlide;
		random = options.random;
		direct = options.direct;
	}
	
	if(typeof delay == "string" || typeof delay == "number"){
		delay = parseInt(delay) || 2000;
	} else {
		delay = 2000;
	}
	
	if(typeof duration == "string" || typeof duration == "number"){
		duration = parseInt(duration) || 500;
	} else {
		duration = 500;
	}
	
	if(typeof callback != "function"){
		callback = function(){};
	}
	
	if(!type){
		type = "fade";
	}
	
	if(direct !== true){
		direct = false;
	}
	
	if(random && type !== "fade"){
		throw("randomized slides only available with type fade");
	}
	
	var slides = $J(selector);
	var numSlides = slides.length;
	
	if(typeof endSlide == "string" || typeof endSlide == "number"){
		switch(endSlide){
			case 'next': break;
			case 'prev': break;
			default: endSlide = parseInt(endSlide) % numSlides; break;
		}
		stopSlider(selector);
	} else {
		endSlide = null;
	}
	
	var width = $J(selector).parent().width();
	var height = $J(selector).parent().height();
	
	function slide(index, prev){
		if(endSlide != null){
			delay = 0;
		}
		
		if(typeof prev != "number"){
			prev = (index-1+numSlides)%numSlides;
		}
		
		var next = (index+1)%numSlides;
		
		if(direct && endSlide !== null){
			index = endSlide;
			next = (index+1)%numSlides;
		}
		
		if(random){
			do {
				index = Math.floor(Math.random()*numSlides);
			} while(prev === index)
		}
		
		if(prev === endSlide){
			return;
		}
		
		switch(type){
			case "slideleft":
				$J(slides[prev]).delay(delay).animate({ left: -width}, duration, "swing", function(){ $J(slides[prev]).hide(); });
				$J(slides[index]).delay(delay).show().animate({ left: 0 }, duration, "swing", function(){ callback(selector, index); slide(next); });
				$J(slides[next]).delay(delay).css({ left: width });
				break;
			case "slideright":
				$J(slides[prev]).delay(delay).animate({ right: -width}, duration, "swing", function(){ $J(slides[prev]).hide(); });
				$J(slides[index]).delay(delay).show().animate({ right: 0 }, duration, "swing", function(){ callback(selector, index); slide(next); });
				$J(slides[next]).delay(delay).css({ right: width });
				break;
			case "slideup":
				$J(slides[prev]).delay(delay).animate({ top: -height}, duration, "swing", function(){ $J(slides[prev]).hide(); });
				$J(slides[index]).delay(delay).show().animate({ top: 0 }, duration, "swing", function(){ callback(selector, index); slide(next); });
				$J(slides[next]).delay(delay).css({ top: height });
				break;
			case "slidedown":
				$J(slides[prev]).delay(delay).animate({ bottom: -height}, duration, "swing", function(){ $J(slides[prev]).hide(); });
				$J(slides[index]).delay(delay).show().animate({ bottom: 0 }, duration, "swing", function(){ callback(selector, index); slide(next); });
				$J(slides[next]).delay(delay).css({ bottom: height });
				break;
			default:
				$J(slides[prev]).delay(delay).fadeOut(duration);
				$J(slides[index]).delay(delay).fadeIn(duration, function(){ callback(selector, index); slide(next, index); });
				break;
		}
	}
	
	var curSlide = 0;
	for(var i=numSlides-1; i>=0; i--){
		if($J(slides[i]).css("display") != "none"){
			curSlide = i;
		}
	}
	
	switch(type){
		case "slideleft":
			for(var i=1; i<numSlides; i++){
				$J(slides[i]).css({ left: width });
			}
			$J(slides[curSlide]).css({ left: 0 });
			break;
		case "slideright":
			for(var i=1; i<numSlides; i++){
				$J(slides[i]).css({ right: width });
			}
			$J(slides[curSlide]).css({ right: 0 });
			break;
		case "slideup":
			for(var i=1; i<numSlides; i++){
				$J(slides[i]).css({ top: height });
			}
			$J(slides[curSlide]).css({ top: 0 });
			break;
		case "slidedown":
			for(var i=1; i<numSlides; i++){
				$J(slides[i]).css({ bottom: height });
			}
			$J(slides[curSlide]).css({ bottom: 0 });
			break;
	}
	
	if(random && endSlide === null){
		curSlide = Math.floor(Math.random()*numSlides);
	}
	
	if(typeof endSlide === 'string'){
		switch(endSlide){
			case 'next': endSlide = (curSlide+1)%numSlides; break;
			case 'prev': endSlide = (curSlide-1+numSlides)%numSlides; break;
		}
	}
	
	$J(slides[curSlide]).show();
	
	callback(selector, curSlide);
	
	if(numSlides > 1){
		slide((curSlide+1) % numSlides, curSlide);
	}
}

function stopSlider(selector){
	var $J = getJQuery();
	
	if(!$J){
		return;
	}
	
	$J(selector).clearQueue();
}

var showSlide = slider;

function getJQuery(version, alert){
	if(typeof jQuery != "function"){
		if(alert){
			alert("jQuery nicht gefunden!\n[http://www.jquery.com/]");
		}
		return undefined;
	}

	if(typeof version == "string" && version > jQuery().jquery){
		if(alert){
			alert("jQuery "+version+" benötigt!\nVersion "+jQuery().jquery+" gefunden\n[http://www.jquery.com/]");
		}
		return undefined;
	}
	
	return jQuery;
}

function showText(selector, index){
 var cap = $(".content-top-overlay");
 cap.hide();
 $(cap[index]).fadeIn("fast");
}


var sliderOptions = {
 selector: "#content-top-left .slide",
 delay: 5000,
 duration: 500,
 type: "",
 callback: showText
}; 

var sliderLoaded = false;

$(document).ready(function(){
		if(!sliderLoaded){
			sliderLoaded = true;
			slider(sliderOptions);
		}
});

////////////////////////////////////////////////////////////////////////////////

//function setIndex(event, index){
//	if(typeof sessionStorage === "undefined" || sessionStorage.disabled){
//		return;
//	}
//	
//	if(typeof index == 'string' || typeof index == 'number'){
//		sessionStorage.clear();
//		sessionStorage.setItem("tabIndex", index.toString());
//	}
//}
//
//function getIndex(){
//	var index;
//	
//	if(typeof sessionStorage === "undefined" || sessionStorage.disabled){
//		index = 4;
//	} else {
//		index = sessionStorage.getItem("tabIndex");
//	}
//	
//	if(index){
//		index = parseInt(index);
//	} else {
//		index = 4;
//	}
//	
//	return index;
//}
