OnlineHub.Rotator = Class.create();
OnlineHub.Rotator.prototype = 
{
    initialize: function(i, c, m)
    {
        this.interval = i;
        this.container = $(c);
        this.messages  = this.container.select(m);
        
        this.number_of_messages = this.messages.length;
        if (this.number_of_messages == 0)
        {
                return false;
        }
        this.current_message = 0;
        this.previous_message = null;
        this.slide_show = false;
        setTimeout(this.start_show.bind(this), this.interval);
    },
    
    show_message: function()
    {
        if(this.slide_show)
        {
            Effect.Appear(this.messages[this.current_message]);
            setTimeout(this.fade_message.bind(this), this.interval-1000);
            this.next_message();
            setTimeout(this.show_message.bind(this), this.interval);
        }
    },
    
    fade_message: function()
    {
        if(this.slide_show)
        {
            Effect.Fade(this.messages[this.previous_message]);
        }
    },
    
    hide_messages: function()
    {
        this.messages.each(function(message)
        {
                Element.hide(message);
        })
    },
        
    stop_show: function()
    {
        this.slide_show = false;
    },
        
    start_show: function()
    {
        this.hide_messages();
        this.slide_show = true;
        this.next_message();
        this.show_message();
    },
        
    next_message: function()
    {
        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;
        }
    },
    
    prev_message: function()
    {
        if (this.current_message == 1)
        {
            this.current_message = 0;
            this.previous_message = this.number_of_messages - 1;
        }
        else if(this.current_message == 0)
        {
                this.current_message = this.number_of_messages - 1;
                this.previous_message = this.number_of_messages - 2;
        } else {
                this.current_message = this.previous_message;
                this.previous_message = this.previous_message - 1;
        }
    },
        
    show_next: function()
    {
        if(this.slide_show)
        {
            this.slide_show = false;
            Effect.Fade(this.messages[this.previous_message]);
            setTimeout(this.show_current.bind(this), 1000);            
        }
        else
        {
            Effect.Fade(this.messages[this.current_message]);
            this.next_message();
            setTimeout(this.show_current.bind(this), 1000);
        }
    },
        
        show_prev: function()
        {
            if(this.slide_show)
            {
                this.slide_show = false;
                Effect.Fade(this.messages[this.previous_message]);
                this.prev_message();
                this.prev_message();
                setTimeout(this.show_current.bind(this), 1000);            
            }
            else
            {
                Effect.Fade(this.messages[this.current_message]);
                this.prev_message();
                setTimeout(this.show_current.bind(this), 1000);
            }
        },
        
        show_current: function()
        {
            Effect.Appear(this.messages[this.current_message]);
        }
};
