var bannerDelay = 5; // Seconds
var fadeSpeed = 0.5; // Seconds
var rotatingBanners = new Array();
var bannersToRun = false;

function initialiseBanners()
{
	i=0;
	$$('.banner').each(function(banner)
	{
		slides = banner.select('.slide');
		selectors = new Array();
		banner.hold = false;
		
		banner.maxWidth = 0;
		banner.maxHeight = 0;
		
		if(slides.length >= 1)
		{
			j=0;
			slides.each(function(slide)
			{
				if(slide.getWidth() > banner.maxWidth)
				{
					banner.maxWidth = slide.getWidth();
				}
				
				if(slide.getHeight() > banner.maxHeight)
				{
					banner.maxHeight = slide.getHeight();
				}
				
				if(slides.length > 1)
				{
					bannersToRun = true;
				
					selector = new Element('div', {'class': 'selector'});
					selector.style.marginTop = (banner.maxHeight - 30) + 'px';
					banner.insert({bottom: selector}); // ...then throw in the selectors for each slide...
					slide.selector = selector;
					
					if(j > 0)
					{
						slide.style.zIndex = 0;
						slide.setOpacity(0); // Turn off all the slides that aren't the first
					}
					else
					{
						slide.style.zIndex = 1;
						slide.selector.addClassName('highlighted');
						banner.currentSlide = slide;
					}
					
					slide.selector.observe('click', function(s) {
						banner.hold = slide;
						fadeIn(banner, slide, 0);
					});
					
					j++;
				}
			});
			
			banner.style.width = banner.maxWidth + 'px';
			banner.style.height = banner.maxHeight + 'px';
			
			if(slides.length > 1)
			{
				banner.observe('mouseout', function(s) {
					banner.hold = false;
				});
				
				banner.slides = slides;
				rotatingBanners.push(banner);
				i++;
			}
		}
	});
	
	if (bannersToRun === true)
	{
		setTimeout("runBanners()", bannerDelay*1000);
	}
}

function runBanners()
{
	rotatingBanners.each(function(banner)
	{
		if (banner.hold == false || (banner.hold && banner.hold.getOpacity() < 1))
		{
			if(banner.hold && banner.hold.getOpacity() < 1)
			{
				fadeIn(banner, next, 0);
			}
			else
			{
				if (banner.currentSlide.next('.slide'))
				{
					next = banner.currentSlide.next('.slide');
				}
				else
				{
					next = banner.slides[0];
				}
				
				fadeIn(banner, next, fadeSpeed);
			}
		}
	});
				
	setTimeout("runBanners()", bannerDelay*1000);
}

function fadeIn(banner, next, speed)
{
	if (next.getOpacity() == 0)
	{
		current = banner.currentSlide;
		
		next.setOpacity(0);
		next.style.zIndex = 1;
		current.style.zIndex = 0;
		next.selector.addClassName('highlighted');
		current.selector.removeClassName('highlighted');
		
		if(speed > 0)
		{
			renderEngine.addRenderable(new OpacityInterpolator(next, 1, speed));
			setTimeout("current.setOpacity(0);", (speed*1000));
		}
		else
		{
			next.setOpacity(1);
			current.setOpacity(0);
		}
	}
	
	banner.currentSlide = next;
}

document.observe('dom:loaded', initialiseBanners);
