// JavaScript Document

function cycler(options)
{

/* ------------------- LET'S GO ------------------- */

		var switcher = $('#switcher'),						// element, v ktorom budeme menit backgrounds
			firstPicSrc = switcher.css('backgroundImage'),	// cesta k prvemu obrazku
			count = options.pics.length,					// pocet obrazkov, pouzije sa neskor v cykle menenia..
			i = 0,											// iterator.. 
			imgs;											// obrazky, ktore budeme menit
			
		// shuffle obrazkov pola, aby sa menili nahodne, a odstranenie prvotneho obrazku z pola, nech tam neni 2x
		options.pics = $.grep(shuffle(options.pics), function(src) {
			return (firstPicSrc.indexOf(src)  < 0);
		});
		
		// v html mame 1 div z background obrazkom, zmenime ho na wrapper, do ktoreho budeme pridavat dalsie obrazky
		switcher.html( $('<div/>').html('&nbsp;').css({ backgroundImage: firstPicSrc, opacity: 1 }) );
		
		// lets go
		setInterval(function() 
		{	
			// ak este mame v options.pics poli obrazky, pridame ich do html
			if (options.pics.length)
			{
				var newSrc = options.pics.shift(),			// cesta k novemu obrazku, array.shift() ho vyhodi z pola obrazkov.. 
					newImg = $('<img/>', { src: newSrc });	// vytvorime novy image, kvoli cache noveho obrazku 
					
				// load zaruci, ze to co je vo vnutri sa spusti, az ked bude cely obrazok nacitany
				newImg.load(function()
				{
					$('<div/>').html('&nbsp;')
							   .css({ backgroundImage: 'url(' + newSrc + ')', opacity: 0 })
							   .appendTo(switcher)
							   .animate({ opacity: 1 }, options.fadeSpeed);
				});
			}
			else
			{
				// vsetky obrazky uz boli nacitane, teraz im budeme len dokola vymienat.. pomocou opacity
				imgs = switcher.children();
				
				if (i == 0)
				{
					imgs.eq(0).css({opacity: 1});
					imgs.not(':eq(0)').animate({ opacity: 0 }, options.fadeSpeed);
					i++;
				}
				else
				{
					imgs.eq(i).animate({ opacity: 1 }, options.fadeSpeed);					
					if (++i >= count) i = 0;
				}
			}
			
		}, options.switchTimeout);
};
  
// shuffle array funkcia
function shuffle(v) {
	for(var j, x, i = v.length; i; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x);
	return v;
};

