jQuery.fn.bannerTimer = function(settings) {
	
	settings = jQuery.extend({
			divPrefix: "banner-timer-",
			navigationPrefix: "banner-navigation-",
			stepCount: 4,
			stepValues: new Array()
	}, settings);

	return this.each(function() {

		var actualStep = 1;
		var steps = new Array(settings.stepCount);
		var intervalTimer;
	
		for(var i=0; i<settings.stepCount;i++) {
			steps[i] = settings.stepValues[i];	
		}

		start();

		function start() {
			jQuery("div[id^=" + settings.navigationPrefix + "]").click(function() {
				var bannerId = jQuery(this).attr("id").replace(settings.navigationPrefix, "");
				if(bannerId != (actualStep-1) && bannerId != settings.stepCount) {
					setActualStep(bannerId);
				} else if(bannerId == settings.stepCount && actualStep != 1) {
					setActualStep(bannerId);
				}
			});
			changeBanner();
		}
		
		function setActualStep( id ) {
			jQuery(window).stopTime("bannerTimer");
			actualStep = id;
			changeBanner();
		}
		
		function hideAllBanners() {
			jQuery("div[id^=" + settings.divPrefix + "]").hide();
		}
		
		function removeAllSelected() {
			jQuery("div[id^=" + settings.navigationPrefix + "]").removeClass("selected");
		}
		
		function showBanner( bannerId ) {
			jQuery("div[id=" + settings.divPrefix + bannerId + "]").fadeIn("slow");
			removeAllSelected();
			jQuery("div[id=" + settings.navigationPrefix + bannerId + "]").addClass("selected");
		}

		function changeBanner() {
			hideAllBanners();
			showBanner(actualStep);
			jQuery(window).oneTime(steps[actualStep-1], "bannerTimer",  function() {
				changeBanner();
			 });
			actualStep++;
			if(actualStep > settings.stepCount) {
				actualStep = 1;
			}
		}
	});
};
