function add_banner_shuffle( containerObject, topPosition, leftPosition, ignoreFirstBanner, showControls ) {
	
	containerObject.fadeDelay = 5000;
	containerObject.fadeSpeed = 500;

	containerObject.ignoreFirstBanner = ignoreFirstBanner || false;
	containerObject.topPosition = topPosition || 0;
	containerObject.leftPosition = leftPosition || 0;
	containerObject.showControls = showControls || false;

	containerObject.banners = new Array();
	containerObject.currentBannerIndex = 0;
	containerObject.containerMinHeight = 0;
	
	containerObject.timeout = 0;
	containerObject.animating = false;
	
	containerObject.initialise = function() {
		containerObject.banners = containerObject.find('> div .Banner:has(img)');

		if(ignoreFirstBanner)
			containerObject.banners = containerObject.banners.slice(1);
		
		if (containerObject.banners.length > 1) {
			
			containerObject.banners.each(function( index ) {
				jQuery( containerObject.banners.get(index) ).find('img').load( function() {
					
					var containerMinHeight = parseInt( jQuery(this).parent().parent().parent().css('min-height') );
					var thisHeight = this.height + parseInt( jQuery(this).parent().parent().css('margin-top') ) + parseInt( jQuery(this).parent().parent().css('padding-top') ) + parseInt( jQuery(this).parent().parent().css('margin-bottom') ) + parseInt( jQuery(this).parent().parent().css('padding-bottom') );

					if (containerMinHeight<thisHeight) {
						jQuery(this).parent().parent().parent().css({
							'min-height': thisHeight
						});
					}
				});
			});			
			containerObject.banners.parent().css({
				'min-height': containerObject.containerMinHeight
			});

			containerObject.banners.css({
				'position': 'relative'
			});

			containerObject.banners.css({
				'position': 'absolute',
				'top': containerObject.topPosition,
				'left': containerObject.leftPosition,
				'display': 'none'
			});
			
			if (containerObject.showControls) {
			
				var bannerControls = '<div class="banner-controls"><div class="banner-controls-previous"></div>';
				bannerControls = bannerControls + '<div class="banner-controls-counter"><ul>'
				bannerControls = bannerControls + '<li class="on"></li>';
				for (i=1;i<containerObject.banners.length;i++){
					bannerControls = bannerControls + '<li></li>';
				}
				bannerControls = bannerControls + '</ul></div>';
				bannerControls = bannerControls + '<div class="banner-controls-next"></div></div>';
				
				containerObject.find('> div').append(bannerControls);
				
				containerObject.find('.banner-controls-previous').click( function() {
					containerObject.fadeToPreviousBanner();
				});
				containerObject.find('.banner-controls-next').click( function() {
					containerObject.fadeToNextBanner();
				});

				containerObject.currentBannerIndex = 0;
			
			} else {
				containerObject.currentBannerIndex = Math.floor(Math.random() * (containerObject.banners.length));
			}
			
			jQuery( containerObject.banners.get( containerObject.currentBannerIndex ) ).show();
			
			setTimeout( function() {
				containerObject.fadeToNextBanner();
			}, containerObject.fadeDelay);
		}
		
	}

	containerObject.fadeToRandomBanner = function() {
		containerObject.fadeToParticularBanner( containerObject.getRandomBannerIndex() );
	};

	containerObject.fadeToNextBanner = function() {
		containerObject.fadeToParticularBanner( containerObject.getNextBannerIndex() );
	};
	
	containerObject.fadeToPreviousBanner = function() {
		containerObject.fadeToParticularBanner( containerObject.getPreviousBannerIndex() );
	};	
	
	containerObject.fadeToParticularBanner = function(nextBannerIndex) {
		
		if (!containerObject.animating) {
		
			clearTimeout(containerObject.timeout);
			
			currentBanner = jQuery( containerObject.banners.get( containerObject.currentBannerIndex ) )
			containerObject.currentBannerIndex = nextBannerIndex;		
			nextBanner = jQuery( containerObject.banners.get( containerObject.currentBannerIndex ) )
	
			containerObject.animating = true;

			containerObject.find('.banner-controls-counter li.on').removeClass('on');
			
			currentBanner.stop(true, true).fadeOut( containerObject.fadeSpeed );
			nextBanner.stop(true, true).fadeIn( containerObject.fadeSpeed, function() {
				
				containerObject.animating = false;
				
				containerObject.find('.banner-controls-counter li').eq( containerObject.currentBannerIndex ).addClass('on');
				
				containerObject.timeout = setTimeout( function() {
					if (containerObject.showControls) {
						containerObject.fadeToNextBanner();
					} else {
						containerObject.fadeToRandomBanner();
					}
				}, containerObject.fadeDelay);			
			});				
		
		}
			
	};	

	containerObject.getRandomBannerIndex = function() {
		tempNewIndex = Math.floor(Math.random() * (containerObject.banners.length));
		if (tempNewIndex==containerObject.currentBannerIndex) {
			tempNewIndex = containerObject.getRandomBannerIndex();
		}
		return tempNewIndex;
	}
	
	containerObject.getNextBannerIndex = function() {
		tempNewIndex = containerObject.currentBannerIndex + 1;
		if (tempNewIndex==containerObject.banners.length) {
			tempNewIndex = 0;
		}
		return tempNewIndex;
	}	
	
	containerObject.getPreviousBannerIndex = function() {
		tempNewIndex = containerObject.currentBannerIndex - 1;
		if (tempNewIndex<0) {
			tempNewIndex = containerObject.banners.length-1;
		}
		return tempNewIndex;
	}		
	
	var windowLocation = window.location + '';
	if (windowLocation.toLowerCase().indexOf('/admin') == -1 ) {
		containerObject.initialise();
	}
	
}
