function bannerSlideShow() {
	var TRANSITION_TIME = 6000;		// number of milliseconds to spend on transition
	var DISPLAY_TIME = 4000;		// number of milliseconds to display after transition
	
	
	var loadedImages = [];
	var slideIndex = -1;
	
	function randomSort( a, b )
	{
		return Math.random() - 0.4;
	}
	
	function initSlideShow()
	{
		var images = [
			'images/banner01.jpg',
			'images/banner02.jpg',
			'images/banner03.jpg',
			'images/banner04.jpg',
			'images/banner05.jpg'
		];
		var loaded = {};
		var gallery = $('gallery');
		images.sort( randomSort );
	
		new Asset.images(images, {
			onProgress: function(i) {
				this.setStyles({
					'position': 'absolute',
					'opacity': 0,
					'left': 0,
					'top': 0
				});
				if( !loaded[this.src] )
				{
					loaded[this.src] = 1;
					loadedImages.push( this );
					this.inject( gallery );
				}
			},
			onComplete: function() {
				gallery.ondblclick = skipSlide;
				showNextSlide();
			}
		});
		
		document.getElementById('gallery').style.background = "white";
	}
	
	var slideTimer = false;
	
	function showNextSlide()
	{
		if( slideIndex != -1 )
		{ // hide the old image after the new one has transitioned in
			var oldSlide = slideIndex % loadedImages.length;
			loadedImages[oldSlide].setStyle('z-index', 1);
			var disappear = function() { this.setStyles({'display': 'none', 'opacity': '0'}); };
			disappear.delay( TRANSITION_TIME, loadedImages[oldSlide] );
			if( oldSlide + 1 == loadedImages.length )
			{ // reshuffle when we get through the list.  avoid repeats.
				var f = loadedImages.shift();
				var l = loadedImages.pop();
				loadedImages.sort( randomSort );
				loadedImages.push( l );
				loadedImages.push( f );
			}
		}
	
		var nextSlide = ++slideIndex % loadedImages.length;
		// fade in the next image
		loadedImages[nextSlide].setStyles({'display': 'block', 'z-index': 2});
		loadedImages[nextSlide].effect('opacity', {'duration': TRANSITION_TIME}).start(1);
	
		var nextTime = TRANSITION_TIME + DISPLAY_TIME;
		if( nextSlide + 1 == loadedImages.length ) // last slide
			nextTime *= 28;
		slideTimer = window.setTimeout( showNextSlide, nextTime );
	}
	
	function skipSlide()
	{
		window.clearTimeout( slideTimer );
		showNextSlide();
	}
	
	initSlideShow();
}

var twenty20 = {
	
	start: function(){
		
		if ($('newNSfeature')) twenty20.parsePillars();
	},
	
	parsePillars: function(){
		var pillars = $$('#newNSfeature .newNSfeature');
		var fx = new Fx.Elements(pillars, {wait: false, duration: 200, transition: Fx.Transitions.quadOut});
		pillars.each(function(newNSfeature, i){
			newNSfeature.addEvent('mouseenter', function(e){
				var obj = {};
				obj[i] = {
					'height': [newNSfeature.getStyle('height').toInt(), 152]
				};
				pillars.each(function(other, j){
					if (other != newNSfeature){
						var h = other.getStyle('height').toInt();
						if (h != 105) obj[j] = {'height': [h, 42]};
					}
				});
				fx.start(obj);
			});
		});
		
		$('newNSfeature').addEvent('mouseleave', function(e){
			var obj = {};
			pillars.each(function(other, j){
				obj[j] = {'height': [other.getStyle('height').toInt(), 64]};
			});
			fx.start(obj);
		});
	}
	
};


window.addEvent('domready', bannerSlideShow);
window.addEvent('load', twenty20.start);