/*
 * Homepage perexes slideshow
 *
 * Copyright (c) 2010 Michal Wiglasz
 */
 
jQuery(banner_init);
 
 
/* 
Banners at homepage
	
	z-indexes: 
		10 = current visible banner
		11 = all other banners
		
	how it works:
		INIT:
			1. load all banners into array (all have z-index 11 set in css)
			2. set top-most banner z-index to 10
			3. start the loop
			
		LOOP/NEXT/PREV:
			1. fade-in next/prev banner
			2. hide previously top-most banner and set its z-index to 11
			3. set newly displayed banner z-index to 10
			
*/

// settings
var banner_autostart = false;
var banner_delay = 1000;
var banner_resume_delay = 10000;
var banner_transition_speed = 0;
var banner_zindex_inactive = 11;
var banner_zindex_active = 10;


var banners = new Array();
var current_banner = 0;
var banner_count;
var banner_stopped = false;

function banner_init() {
	$('#perexes .perex').each(function(i) {
		banners[i] = tmp = $(this);
		if(i != 0) {
			tmp.hide();
			tmp.css('z-index', banner_zindex_inactive);
		}
	});
	
	banner_count = banners.length;
	if(banner_count > 1)
	{
		banners[current_banner].css('z-index', banner_zindex_active);
		$('body').addClass('perex-1');
		
		if(banner_autostart)
			setTimeout(banner_loop, banner_delay);
	}
}

function cb_banner_next() {
	current_banner++;
	if(current_banner == banner_count)
		current_banner = 0;
}

function cb_banner_prev() {
	current_banner--;
	if(current_banner == -1)
		current_banner = banner_count-1;
}

function banner_next()
{
	banner_show(cb_banner_next, false);
}

function banner_prev()
{
	banner_show(cb_banner_prev, false);
}

function banner_goto(index)
{
	if(current_banner == index) return;
	if(index < 0 || index >= banner_count) return; 
	banner_show(function() {current_banner = index;}, false);
}

function banner_show(nextitem_callback, pause, finished_callback) {
	var old = banners[current_banner];
	var old_banner = current_banner;
	
	nextitem_callback();
	
	var next = banners[current_banner];
	
	if(banner_transition_speed)
	{
		old.children().fadeOut(banner_transition_speed);
		next.add(next.children()).fadeIn(banner_transition_speed, function() {
			old.hide();
			old.css('z-index', banner_zindex_inactive);
			next.css('z-index', banner_zindex_active);
			if($.isFunction(finished_callback)) finished_callback();
			$('body').removeClass('perex-' + (old_banner*1 + 1));
			$('body').addClass('perex-' + (current_banner*1 + 1));
		});
	}
	else
	{
		next.show();
		old.hide();
		$('body').removeClass('perex-' + (old_banner*1 + 1));
		$('body').addClass('perex-' + (current_banner*1 + 1));
	}
	
	if(pause) banner_pause();
}

function banner_loop() {
	if(!banner_stopped) {
		banner_show(cb_banner_next, false, function() { setTimeout(banner_loop, banner_delay); });
	}
}

function banner_stop() {
	banner_stopped = true;
}

function banner_pause() {
	banner_stopped = true;
	setTimeout(banner_resume, banner_resume_delay);
}

function banner_resume() {
	banner_stopped = false;
	banner_loop();
}

