/**
 * Skrypt: Slideshow v.0.2
 *
 * Autor: Spect <spect88@gmail.com>
 */

/**
 * obecnie widoczne zdjecie
 */
var current_slide = new Object();

/**
 * stan pokazu slajdow (true - dziala, false - zapauzowany)
 */
var running = new Object();

/**
 * Zmienia zdjecie.
 *
 * @param prefix	prefix id elementow
 * @param id_from	id zdjecia, ktore jest obecnie - zwykle current_slide
 * @param id_to		id nowego zdjecia
 * @param fade_delay	jak dlugo ma trwac zmiana jednego zdjecia w drugie
 */
function change_slide (prefix, id_from, id_to, delay) {
	var slide_from = $(prefix+id_from);
	var op_from = 1;
	var slide_to = $(prefix+id_to);
	var op_to = 0;
	if (delay == 0) {
		slide_to.setOpacity( 1 );
		slide_from.setOpacity ( 0 );
	} else {
		new PeriodicalExecuter( function (pe) {
			if (op_from > 0) {
				op_from = op_from - 0.1;
				slide_from.setOpacity(op_from);
				op_to = op_to + 0.1;
				slide_to.setOpacity(op_to);
			} else pe.stop();
		}, delay );
	}
	$(prefix+id_from).setStyle({ zIndex: 3 });
	$(prefix+id_to).setStyle({ zIndex: 5 });
	current_slide[prefix] = id_to;
}

/**
 * Uruchamia slideshow.
 *
 * @param prefix	prefix id elementow
 * @param slides_count	liczba slajdow na stronie
 * @param slide_delay	jak dlugo jedno zdjecie ma sie wyswietlac
 * @param fade_delay	jak dlugo ma trwac zmiana jednego zdjecia w drugie
 */
function slideshow (prefix, slides_count, slide_delay, fade_delay) {
	$(prefix+'1').setOpacity( 1 );
	$(prefix+'1').setStyle({ zIndex: 5 });
	for (var i = 2; i <= slides_count; i++) {
		$(prefix+i).setOpacity( 0 );
		$(prefix+i).setStyle({ zIndex: 3 });
	}
	current_slide[prefix] = 1;
	running[prefix] = true;
	new PeriodicalExecuter( function (pe) {
		if (running[prefix]) {
			var prev_slide = current_slide[prefix];
			if (++current_slide[prefix] > slides_count) current_slide[prefix] = 1;
			change_slide (prefix, prev_slide, current_slide[prefix], fade_delay);
		}
	}, slide_delay );
}

Event.observe(window,'load',function() {
	slideshow ('s_', 3, 6, 0.05);
});
