/** mooTicker - Newsticker class
 *  Original copyright 2006 Wolfgang Bartelme, Bartelme Design - http://bartelme.at
 *
 *  Ported and edited for mootools by Huug Helmink
 *  version 0.3
 *  date 2009-09-10
 *
 *  Usage:
 *  var myTicker = new Ticker('idOfDivElement');
 *      or (with options)
 *  var myTicker = new Ticker('idOfDivElement',{interval:####});
 *  with #### as an integer > 2000
  */
var mooTicker = new Class({
  Implements: Options,
  options: {
    interval: 5000
  },
  
  initialize: function(containerId,options) {  
    // Set options
    this.setOptions(options);
    // Set container div
    this.container = $(containerId);
    
    this.interval = this.options.interval;
 
    this.messages = $(this.container).getElements('li');
    this.number_of_messages = this.messages.length;
    
    this.current_message = 0;
    this.previous_message = null;
    
    this.Fader = new Fx.Tween($($empty),{property:'opacity'});
    
    // Display first message
    this.hideMessages();
    this.showMessage();
    // Install timer
    this.timer = this.showMessage.periodical(this.interval,this);
  },
 
  showMessage: function() {
    this.Fader.element = this.messages[this.current_message];
    this.Fader.onStart = function() {this.element.setStyle('display','block');};
    this.Fader.onComplete = $empty;
    this.Fader.start(0,1);
    
    this.fadeMessage.delay(this.interval-1000,this);
    if (this.current_message < this.number_of_messages-1) {
      this.previous_message = this.current_message++;
    } else {
      this.current_message  = 0;
      this.previous_message = this.number_of_messages - 1;
    }
  },
 
  fadeMessage: function() {
    this.Fader.element = this.messages[this.previous_message];
    this.Fader.onStart = $empty;
    this.Fader.onComplete = function() {this.element.setStyle('display','none');};
    this.Fader.start(1,0);
  },
 
  hideMessages: function() { 
    this.messages.setStyles({
      'display':'none',
      'opacity':0
    });
  }
});
