/**
* Accessible JavaScript Newsticker
*
* Copyright 2006 Wolfgang Bartelme
* Bartelme Design - http://bartelme.at
*/

// Create namespace ------------------------------------------------------------
if (at == undefined) var at = {};
if (at.bartelme == undefined) at.bartelme = {};

// Newsticker class ------------------------------------------------------------
at.bartelme.newsticker = Class.create();
at.bartelme.newsticker.prototype = {

  initialize: function()
  {
    this.interval           = 5000;
    this.container          = $("newsticker");
    this.messages           = $A(this.container.getElementsByTagName("li"));
    this.number_of_messages = this.messages.length;
    this.last_message       = this.number_of_messages - 1;

    if( this.number_of_messages == 0 )
    {
      this.showError();
      return false;
    }

    this.current_message = 0;
    this.previous_message = null;

    // Display first message -----------------------------------------------
    // this.hideMessages();
    // this.container.style.display = 'block';
    this.showMessage();

    // Install timer
    this.timer = setInterval( this.showMessage.bind( this ), this.interval );
  },

  showMessage: function()
  {
    Effect.Appear( this.messages[this.current_message] );

    setTimeout( this.fadeMessage.bind( this ), this.interval - 500 );

    if( this.current_message < this.last_message )
    {
      this.previous_message = this.current_message;
      this.current_message++;
    }
    else
    {
      this.current_message  = 0;
      this.previous_message = this.last_message;
    }
  },

  fadeMessage: function()
  {
    Effect.Fade( this.messages[this.previous_message] );
  },

  hideMessages: function()
  {
    this.messages.each( function( message )
      {
        Element.hide(message);
      }
    )
  },

  showError: function()
  {
    if( this.container.getElementsByTagName( "ul" ).length == 0 )
    {
      this.list = document.createElement( "ul" );
      this.container.appendChild(this.list);
    }
    else
    {
      this.list = this.container.getElementsByTagName( "ul" )[0];
    }

    this.errorMessage = document.createElement( "li" );
    this.errorMessage.className = "error";
    this.errorMessage.innerHTML = "Could not retrieve data";
    this.list.appendChild( this.errorMessage );
  }
}

Event.observe(window, "load", function(){new at.bartelme.newsticker()}, false);