﻿if (!PaN) { var PaN = {}; }

PaN.TwitterFeed = Class.create({

    container: null,
    tweetList: null,

    initialize: function(container) {
        this.container = $(container);
    },

    load: function() {
        this.getTwitterItems();
    },

    getTwitterItems: function() {
        PinsAndNeeds.Web.WebServices.FeedWebService.GetTwitterFeed(
            1,
            this.onTwitterItemsReceived.bind(this),
            this.onTwitterItemsFailed.bind(this)
        );
    },

    onTwitterItemsReceived: function(response) {        
        var item = response[0];
        this.container.update(this.feedTemplate().evaluate({
            tweetText: item.Text,
            tweetDate: item.CreateDate
        }))
    },

    addItems: function(items) {
        this.tweetList = new Element("ul", { className: "feedItems" });

        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>News Feed is not available at this moment.</div>");
    },

    feedTemplate: function() {
        var markup =
            "<div class='tweet'>" +
                "<a href='http://twitter.com/pinsandneeds' target='_blank' title='Follow Pins+Needs on Twitter'>" +
                    "<span class='text'>#{tweetText}</span>&nbsp;&nbsp;&nbsp;" +
                    "<span class='time'>#{tweetDate}</span>" +
                 "</a>"+
            "</div>";

        return new Template(markup);
    }
});
