/**
 * Newsticker class:
 * 
 * Original copyright 2006 Wolfgang Bartelme, Bartelme Design ([url=http://bartelme.at]http://bartelme.at[/url])
 * Ported and edited for mootools by Huug Helmink, Ace Group bv
 * ([url=http://www.acegroup.nl]http://www.acegroup.nl[/url])
 *
 * version 0.13 / date 2007-05-10
 *
 * Usage:
 * var myTicker = new Ticker('idOfDivElement');
 * or (with options)
 * var myTicker = new Ticker('idOfDivElement',{interval:####});
 *
 */
 
/*
window.addEvent('domready', function() {
 // Create ticker at domready state
 var myTicker = new Ticker('eventsticker',{interval:8000});
});
*/
 
 
var Ticker = new Class({
 
	initialize: function(containerID, toggleID, options){
		this.container = $(containerID); // container ID
		this.toggleID = $(toggleID); // toggle blinder ID
		this.options = { // set options
			interval: 5000
		};
		Object.extend(this.options, options || {});
		this.interval = this.options.interval;
 
		this.messages = $A($ES('li',this.container));
		this.number_of_messages = this.messages.length;
		if (this.number_of_messages == 0){
			this.showError();
			return false;
		}
		this.current_message = 0;
		this.previous_message = null;
 
		// create toggle button
		this.toggle_button = new Element('a').setProperties({
			'href': 'javascript:void(0);',
			'id': 'toggle_eventsticker'
		//}).setHTML('').addEvent('click',this.toggleBlinder.bind(this));
		}).setHTML('');
		this.toggleBlinder();
		this.toggleID.adopt(this.toggle_button);
 
		// display first message
		this.hideMessages();
		this.showMessage();
		// install timer
		this.timer = this.showMessage.periodical(this.interval,this);
	},
 
	showMessage: function(Appear){
		Appear = new Fx.Style(this.messages[this.current_message],'opacity',{
			onStart:function(item) {
				item.setStyle('display','block');
				}
		}).start(0,1);
		this.fadeMessage.delay(this.interval-2000,this);
		if (this.current_message < this.number_of_messages-1){
			this.previous_message = this.current_message;
			this.current_message = this.current_message + 1;
		} else {
			this.current_message = 0;
			this.previous_message = this.number_of_messages - 1;
		}
	},
 
	fadeMessage: function(myFade){
		myFade = new Fx.Style(this.messages[this.previous_message],'opacity',{
			onComplete:function(item) {
				item.setStyle('display','none');
			}
		}).start(1,0);
	},
 
	hideMessages: function(){
		this.messages.each(function(message){ 
			message.setStyles({
				'display': 'none',
				'opacity': 0
			});
		})
	},
 
	toggleBlinder: function(myBlinder){
		var myBlinder = new Fx.Slide(this.container, {
			duration: 500,
			transition: Fx.Transitions.Quad.easeInOut
		});
 
		$(this.toggleID).addEvent('click', function(e){
			e = new Event(e);
			myBlinder.toggle();
			e.stop();
		});
	},
 
	showError: function(){ // error display when there is no list, or list is empty
		if ($ES('ul',this.container).length == 0){
			this.list = new Element('ul');
			this.container.adopt(this.list);
		} else {
			this.list = $E('ul',this.container);
		}
		this.errorMessage = new Element('li',{
			'class': 'error'
		}).setHTML('Could not retrieve data');
		this.list.adopt(this.errorMessage);
	}
});
