var ContentTicker = Class.create({

	initialize: function() {
	
		this.featuredItemsMax = featuredItemsMax;
		this.idx = featuredItemsMax; // featured content array index
		this.cIdx = 1; // container TD index
		this.featuredItemsRowInterval = featuredItemsRowInterval;
		this.featuredItemsItemInterval = featuredItemsItemInterval;
		
		this.cacheImages();
	
	},
	
	changeItem: function(container, item) {

		var html = '<div class="thumbnail featured_item">';
		html += '<a href="' + item['href'] + '">';
		html += '<img src="' + item['src'] + '" alt="' + item['title'].replace(/(<([^>]+)>)/ig,"");
		html += '" title="' + item['title'].replace(/(<([^>]+)>)/ig,"") + '" /></a></div>';
		html += '<div style="thumbnail"><a href="' + item['href'] + '">';
		html += '<i>' + item['title'] + '</i></a>';
		
		if (item['summary'] != undefined) {
			html += item['summary'];
		}
		
		html += '</div>';
	
		container.setStyle({opacity: 0});
		container.innerHTML = html;
		new Effect.Opacity(container, { from: 0, to: 1, duration: 1 });
		
	},
	
	cascade: function() {
	
		// Once all containers have had
		// their contents changed, start 
		// from the left hand side again
		if (this.cIdx > this.featuredItemsMax) {
			this.cIdx = 1;
			window.clearInterval(this.itemTimer);
			return;
		}
		
		// Loop around the featured content
		if (this.idx >= featuredItems.length) {
			this.idx = 0;
		}
		
		if (featuredItems[this.idx] !== undefined && featuredItems[this.idx].src !== null) {
			this.changeItem($('featured_item_' + this.cIdx), featuredItems[this.idx]);
		}
		
		this.cIdx++;
		this.idx++;
	
	},
	
	changeRow: function() {

		this.itemTimer = window.setInterval('ticker.cascade()', this.featuredItemsItemInterval);
		
	},
	
	cacheImages: function() {

		var cache = new Array();
	
		// preload first few containers to prevent hammering image cache
		for (var i = 0, j = this.featuredItemsMax; i < j; i++) {
			var img = new Image();
			img.src = featuredItems[i].src;
			cache[i] = img;
		}
	
	}

});

var ticker = new ContentTicker();
window.setInterval('ticker.changeRow()', featuredItemsRowInterval);
