var bannerCarousel = function(bannerToken, bannersInGroup, bannerHeight, enableNavigation) {

	// Jos token on annettu, jatketaan funktion suoritusta.
	if ( bannerToken ) {
	
		// Määritellään tarvittavat muuttujat.
		var n = 0;
		if ( ! bannersInGroup ) {
			// Oletuksena yhteen ryhmään kuuluu viisi banneria.
			var bannersInGroup = 5;
		}
		if ( ! bannerHeight ) {
			// Oletuksena bannerin korkeus on 60px.
			var bannerHeight = 60;
		}
		var banners = "";
		var tempBanners = "";
		var divEnd = '</div>';
		var bannerDivStart = '<div class="banner">';
		var containerDivStart = '<div class="bannerContainer">';
		var navigation = '<div class="bannerCarouselNav"><a id="bannerCarouselPrev" href="#">Edellinen</a> <a id="bannerCarouselNext" href="#">Seuraava</a></div>';

		function randOrd() { return (Math.round(Math.random())-0.5); }
		jQuery.fn.sort = [].sort;

		// Käydään olemassaolevat bannerit läpi, ympäröidään kukin bannersInGroup-muuttujan määrittämä ryhmä divillä ja lisätään muodostetut kokonaisuudet banners-muuttujaan.
		$(bannerToken + ' .banner').sort(randOrd).each(function() {
			n++;
			if ( $(this).height() < bannerHeight ) {
				paddingToAdd = Math.floor( (bannerHeight - $(this).height()) / 2 );
				$(this).prepend('<div style="clear: both; width: 1px; height: ' + paddingToAdd + 'px;"></div>');
			}
			tempBanners += bannerDivStart + $(this).html() + divEnd;
			if ( n == bannersInGroup ) {
				// Ryhmän viimeinen banneri: ympäröidään ryhmä divillä, lisätään se banners-muuttujaan, tyhjennetään tempBanners-muuttuja ja aloitetaan uusi ryhmä.
				tempBanners = containerDivStart + tempBanners + divEnd;
				banners += tempBanners;
				tempBanners = "";
				n = 0;
			}
		});
		
		// Jos viimeisessä ryhmässä ei ollut bannersInGroup-muuttujalla asetettua maksimimäärää bannereita, myös se ympäröidään divillä ja lisätään banners-muuttujaan.
		if ( n > 0 ) {
			tempBanners = containerDivStart + tempBanners + divEnd;
			banners += tempBanners;
		}
		
		// Tyhjennetään banneriosion sisältö ja korvataan se muodostetulla banners-muuttujalla.
		$(bannerToken)
			.empty()
			.html('<div class="bannerContainers">' + banners + '</div>');
			
		// Jos navigointi on tarpeen, liitetään vielä se banneriosion loppuun.
		if ( enableNavigation ) {
			$(bannerToken).append(navigation);
		}
			
		// Lisätään tyylisääntöjen edellyttämä luokka.
		$(bannerToken).addClass('bannerCarousel');
		
		// Määritetään tarpeelliset tyylit.
		$(bannerToken + ' .bannerContainers').css('height', ( bannersInGroup * bannerHeight ) +'px');
		$(bannerToken + ' .bannerContainer').css('width', $(bannerToken).width()+'px');
		$(bannerToken + ' .banner').css('height', bannerHeight + 'px');
		
		// Käynnistetään karuselli.
		$(bannerToken + ' .bannerContainers')
			.cycle({
				fx:   		'scrollVert',
				prev:  		'#bannerCarouselPrev',
				next: 	 	'#bannerCarouselNext',
	 	  		timeout: 	5000,
	  			delay:		-1000
			});

	}
	
	// bannerTokenia ei annettu, näytetään virheilmoitus.
	else {
		alert("Virhe: bannerCarousel.js ei saanut tarvittavia muuttujia!");
	}
		
}
