/*

v 0.1.1 - oprava - nefunkcnost pri vice sliderech na strance
v 0.1.0 - prvni zobecneni scriptu (predchazejici verze byla psana na miru konkretnim podminam)


*/

var rotatorsCount = 0;
var rotators = new Array();
var rotTimer = new Array();
var rotSwitch = new Array();
var rotWaitInterval = new Array();
var rotSteps = new Array();
var rotSwitcher = new Array();


function runRotation(e)
{
	if(rotTimer[rotators[e]] != null)
	{
		clearTimeout(rotTimer[rotators[e]]);
		rotTimer[rotators[e]] = null;
	}
	
	var nextSwtch;
	rotSwitch[rotators[e]] = rotSwitch[rotators[e]] * -1;
	if(rotSwitch[rotators[e]] < 0)
	{
		// cekani
		rotTimer[rotators[e]] = setTimeout(function() { runRotation(e) }, rotWaitInterval[rotators[e]]);
	}
	else
	{
		// animace
		if(rotSwitch[rotators[e]] == rotSteps[rotators[e]]) nextSwtch = 1;	// vracim animaci na zacatek
		else nextSwtch = rotSwitch[rotators[e]] + 1;
		
		makeRotation(e, rotSwitch[rotators[e]] -1, nextSwtch -1);
		
		rotSwitch[rotators[e]] = nextSwtch;
		//rotTimer[rotators[e]] = setTimeout(function() { runRotation(e) }, rotWaitInterval[rotators[e]]);
		runRotation(e);
	}
}
function makeRotation(e, a, b)
{
	$(e + '-' + b).css('visibility', 'visible');
	$(e + '-' + a).fadeTo(1000, 0, function() { $(this).css('visibility', 'hidden') } );
	$(e + '-' + b).fadeTo(1000, 1, function() { $(this).css('filter', ''); signStepOn(e, b) } );
}
function signStepOn(e, s)
{
	if(rotSwitcher[rotators[e]])
	{
		$(e + '-steps a').removeClass('active');
		$(e + '-step-' + s).addClass('active');
	}
}
function stopRotation(e)
{
	clearTimeout(rotTimer[rotators[e]]);
	rotSwitch[rotators[e]] = Math.abs(rotSwitch[rotators[e]]);
}
function setStep(e, s)	// drive setStep(), ale ted uz se to vola s indexama od nuly
{
	stopRotation(e);
	$(e + ' .slide').css('opacity', '0').css('visibility', 'hidden');
	$(e + '-' + s).css('opacity', '1').css('visibility', 'visible').css('filter', '');
	signStepOn(e, s);
	rotSwitch[rotators[e]] = s + 1;
}
function addRotator(elementId, interval, useSwitch)	// konfigurace/inicializace
{
	i = rotatorsCount;
	rotators[elementId] = i;	// seznam prolinacek
	rotTimer[i] = null;		// drive rotator
	rotSwitch[i] =1;			// stavovy prepinac - zacina od 1 - vyuzivam stridani kladnych a zapornych cisel pro rozpoznani pauzy a probihajici animace
	rotWaitInterval[i] = interval;	// pauza mezi kroky
	rotSteps[i] = $(elementId + ' .slide').length;
	rotSwitcher[i] = useSwitch;	// jestli ma prolinacka prepinaci policka a ma se s nimi pracovat - zatim resim jen na sucho
	rotatorsCount++;
	
	setStep(elementId, 0);
}

