﻿if (!RSSJS) { var RSSJS = {}; }
RSSJS.TwitterFeed = Class.create({
    
    container:null,
    tweetList:null,
    
    initialize: function(container) 
    {    
        this.container = $(container);        
    },
    
    load:function()
    {
        this.getTwitterItems();
    },
    
    getTwitterItems:function()
    {
        RyanSteeleShow.UI.Web.WebServices.BlogWebService.GetTwitterFeed(
            5, 
            this.onTwitterItemsReceived.bind(this), 
            this.onTwitterItemsFailed.bind(this)
        );
    },
    
    onTwitterItemsReceived:function(response)
    {
        this.addItems(response);            
    },
        
    addItems:function(items)
    {        
        this.tweetList = new Element("ul");        
                          
        for (var i = 0; i < items.length; i++)  {
            this.tweetList.insert(this.createItem(items[i]));
        }            
        this.container.update(this.tweetList);                 
    },           
    
    createItem:function(item)
    {        
        var li = new Element("li");
        
        li.update(this.feedTemplate().evaluate({
            tweetText: item.Text,
            tweetDate: item.CreateDate
        }));
                
        return li;             
    },
    
    onTwitterItemsFailed:function(response)
    {
        this.container.update("<div style='text-align:center; padding:20px;'>Twitter Feed is not available at this moment.</div>");
    },
    
    feedTemplate:function()
    {
        var markup = 
            "<div class='tweet'>"+
                "<div class='tweetText'>#{tweetText}</div>" +
                "<div class='tweetDate'>Posted on: #{tweetDate}</div>" +
            "</div>";
        
        return new Template(markup);
    }
});
