var Ticker = Class.create();
Ticker.prototype = {
	initialize: function(blockElemId,instanceName) {
		this.blockElemId = blockElemId;
		this.instanceName = instanceName;

		this.options = Object.extend({
			duration: 			3.0,
			playButtonId: 		'play_button',
			pauseButtonId: 		'pause_button',
			previousButtonId: 'previous_button',
			nextButtonId: 		'next_button'
		}, arguments[2] || {});

		this.currentItem = 0;
		this.looper;
		this.queue;
		this.items = $A($(this.blockElemId).getElementsByTagName("li"));

	  this.items.each(function(item) { 
			Element.hide(item); 
	  });
		Element.show(this.items[this.currentItem]); 
		
		//$('play_button').setAttribute('onclick',this.instanceName+'.play(); return false;');
		//$('pause_button').setAttribute('onclick',this.instanceName+'.pause(); return false;');
		//$('previous_button').setAttribute('onclick',this.instanceName+'.previous(); return false;');
		//$('next_button').setAttribute('onclick',this.instanceName+'.next(); return false;');

		this.looper = window.setTimeout(this.instanceName+'.play();', 1000 * this.options.duration);
	},
	
	play: function() {
		this.next();
		this.looper = window.setTimeout(this.instanceName+'.play();', 1000 * this.options.duration);
		Element.show(this.options.pauseButtonId);
		Element.hide(this.options.playButtonId);
	},
	pause: function() {
		window.clearTimeout(this.looper);
		Element.show(this.options.playButtonId);
		Element.hide(this.options.pauseButtonId);
	},
	next: function () {
		this.pause();
		Effect.Fade(this.items[this.currentItem], {to: 0, queue: { position:'end', scope: "this.queue" }, duration: 0.2})
		this.currentItem++;
		if(this.currentItem == this.items.length) {
		  this.currentItem=0
		}
		Effect.Appear(this.items[this.currentItem], {to: 1, queue: { position:'end', scope: "this.queue" }, duration: 0.2})
	},

	previous: function() {
		this.pause();
		Effect.Fade(this.items[this.currentItem], {to: 0, queue: { position:'end', scope: "this.queue" }, duration: 0.2})
		this.currentItem--;
		if(this.currentItem == -1) {
		  this.currentItem=this.items.length-1
		}
		Effect.Appear(this.items[this.currentItem], {to: 1, queue: { position:'end', scope: "this.queue" }, duration: 0.2})
	}

}

//now, let's instantiate and use one object
//Event.observe(window, 'load', "Ticker('whatsnew');");
