HJ.NewsFeed = Class.create();

HJ.NewsFeed.prototype = {
    // tested on an newsfeed that is a div
    initialize: function(newsFeedArea) {
        // Using a list to display the items
        // XXX: Get list by looking into newsFeed? 
        this.list = document.getElementById("newsFeedList");
		this.selectedFeedType = null;
    },

    // query (or re-query) data from the server
    load: function() {
        var req 
        = new Af.DataRequest(svcURL,
                             this.requestLoadCompleted.bind(this), 
                             requestFailedCommon.bind(this), 
                             null, 
                             requestTimedoutCommon.bind(this));
        req.addService("WorkspaceService", "getNewsFeed");
        ajaxEngine.processRequest(req);
    },

    requestLoadCompleted: function(response) {
	   //debugA(response.responseText);
	   var xds = new Af.XMLToDataSet(response.responseXML);
       this.newsFeed = xds.data;
       // XXX: fixme: copy and do an insertion sort, since the 
       // items should already be sorted
       this.render();
    },

    render: function() {
        this.list.innerHTML = "";
        this.renderDataItems(this.newsFeed.Schedule);
        this.renderDataItems(this.newsFeed.Resource);
        this.renderDataItems(this.newsFeed.Question);
    },
    
    renderDataItems: function(dataItems) {
        if (dataItems == null) {
            return;
        }
        for (var i = 0; i < dataItems.length; i++) {
            var item = document.createElement("li");
            this.renderDataItem(dataItems[i], item);
            this.list.appendChild(item);
        }
    },

    renderDataItem: function(dataItem, element) {
        // XXX: I would like to do this with class inheritance on but it looks
        // like the old version of the prototype framework that we are using 
        // is kind of clumsy for that
        if (dataItem.__className == "Resource") {
            element.innerHTML = "<a href=\"#\">" + dataItem.businessName + "</a>";
            element.onclick = this.loadCommunityResourcesTemplate.bind(this);
        } else if (dataItem.__className == "Event") {
            // XXX: Event not currently used
            element.innerHTML = "<a href=\"#\">" + dataItem.displayName + "</a>";
        } else if (dataItem.__className == "Schedule") {
            element.innerHTML = "<a href=\"#\">" + dataItem.communityTitle + "</a>";
            element.onclick = this.loadCommCalendarTemplate.bind(this);
        } else if (dataItem.__className == "Question") {
            element.innerHTML = "<a href=\"#\">" + dataItem.question + "</a>";
			element.onclick = this.loadMHMTemplate.bind(this);
        }
    },
	
	loadCommCalendarTemplate: function() {
		app.db.init();
		app.db.loadCommCalendarTemplate();
	},
	loadCommunityResourcesTemplate: function () {
		app.db.init();	
		app.db.loadCommunityResourcesTemplate();
	},
	
	loadMHMTemplate: function () {
		app.db.init();
		app.db.loadMHMTemplate();		
	}

}


