
/*
 * Dependencies:
 * - /js/yui/build/yahoo-dom-event/yahoo-dom-event.js
 * - /js/yui/build/connection/connection-min.js
 * - /js/graft.js
 * - /js/ee.js
 */
ee = function(){}
ee.rss = function(){}
ee.rss.parse = function(rssUrl, containerElementID, presenter){
	var callbacks = {
            success: function(o){ 
            	if( presenter ) 
            	   presenter( o.responseXML, o.argument[0] );
                else 
                   ee.rss.present( o.responseXML, o.argument[0] );
            },
            failure: function(o){ /* feed missing */ },
            scope: this,
            argument: [containerElementID,presenter]
        };

    YAHOO.util.Connect.asyncRequest('GET', rssUrl, callbacks);
}

ee.rss.present = function( xml, containerElementID ){
	var rss = xml.documentElement;
    var channel = rss.firstChild;
    var channelTitle = channel.getElementsByTagName('title')[0].firstChild.nodeValue;
    var channelDesc  = channel.getElementsByTagName('description')[0].firstChild.nodeValue;
    var items = channel.getElementsByTagName('item');
    if( items == null || items.length == 0 ) return;
    
    var itemsEl = null;
    graft( $(containerElementID),
        ["div.rssChannel",
            function(e){ itemsEl = e; },
            ["div.rssChannelTitle", channelTitle],
            ["div.rssItems", function(e){ itemsEl = e; } ]
        ]
    );
    
    for( var i=0; i<items.length; i++ ){
        var itemTitle =  items[i].getElementsByTagName('title')[0].firstChild.nodeValue;
        var itemLink =  items[i].getElementsByTagName('link')[0].firstChild.nodeValue;
        var itemDesc =  items[i].getElementsByTagName('description')[0].firstChild.nodeValue;
        
        var itemHdId = containerElementID + "_itemHd" + i;
        var itemBdId = containerElementID + "_itemBd" + i;
        var itemBdToggleImgId = itemBdId + "_img";
        graft( itemsEl, 
           ["div.rssItem",
               ["div.rssItemHd",{ id: itemHdId },
                 ["div.rssItemHdImg", 
                     ["a", 
                         {href: "javascript:ee.rss.toggleItemDesc('" + itemBdId + "')"},
                         ["img", {id: itemBdToggleImgId, src: "/images/expand1.gif", border: "0"}]
                     ]
                 ],
                 ["div.rssItemHdLink",
                     ["a", 
                         {href: itemLink, target: "_blank"}, 
                         itemTitle
                     ]
                 ]
               ],
               ["div", {style:{clear: "both"}}],
               ["div.rssItemBd",{
                   id: itemBdId,
                   style: {display: "none"}
                   },
                   itemDesc,
                   ["div.rssMoreLink",
                       ["a", 
                           {href: itemLink, target: "_blank"}, 
                           "More..."
                       ]
                   ]
               ]
           ]
        );
    }
}
ee.rss.toggleItemDesc = function(elementID){
	var itemBd = $(elementID);
	var toggleImg = $(elementID + "_img");
	if( itemBd.style.display == "none" ){
		itemBd.style.display = "";
		toggleImg.src = "/images/collapse1.gif";
	}else{
		itemBd.style.display = "none";
        toggleImg.src = "/images/expand1.gif";
	}
}