// JavaScript Document

function toggleContent(divID)
{
	var div = document.getElementById(divID);
	
	if (div.collapsed)
	{
		div.innerHTML = collapseLink("Less...", divID) + 
						div.content + 
						collapseLink("Less...", divID);
		div.collapsed = false;
	}
	else
	{
		div.innerHTML = div.snippet + collapseLink("More...", divID);
		div.collapsed = true;
	}
}

function buildTextDiv(cssClass, content)
{
	var div = document.createElement("div");
	div.innerHTML = content;
	div.className = cssClass;
	return div;
}

function collapseLink(text, divID)
{
	return '<div class="collapseLink"><a href=javascript:toggleContent("' + divID + '");>' + text + '</a></div>';
}

function buildDynamicDiv(id, cssClass, content, snippet)
{
	var div = document.createElement("div");
	div.className = cssClass;
	div.id = id;
	div.innerHTML = snippet;
	
	div.snippet = snippet;
	div.content = content;
	div.collapsed = true;
	
	div.innerHTML += collapseLink("More...", div.id);
	return div;
}

function reformatDate(dateText)
{
	var dt = new Date(dateText);
	var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
	
	return dt.getDate() + ' ' + months[dt.getMonth()] + ' ' + dt.getFullYear()
}

function insertFeedEntry(container, entry, id, abbrev)
{
	var feedEntry = document.createElement("div");
	feedEntry.className = 'feedEntry';
	feedEntry.id = 'feedEntry' + id;
	feedEntry.appendChild(buildTextDiv('entryTime', reformatDate(entry.publishedDate)));
	feedEntry.appendChild(buildTextDiv('entryTitle', entry.title));
	feedEntry.appendChild(buildTextDiv('entryAuthor', 'by ' + entry.author));
	
	if (abbrev)
		feedEntry.appendChild(buildDynamicDiv('entryContent' + id, 'entryContent', entry.content, entry.contentSnippet));
	else
		feedEntry.appendChild(buildTextDiv('entryContent', entry.content));
		
	container.appendChild(feedEntry);
}

function initialize()
{
	var container = document.getElementById("feed");
	var feed = new google.feeds.Feed(container.title);
	feed.load(function(result) {
		if (!result.error) 
		{
			for (var i = 0; i < result.feed.entries.length; i++) 
			{
				var entry = result.feed.entries[i];
				insertFeedEntry(container, entry, i, false);
			}
		}
	});
}

function getEntries(numEntries, feedUrl, callbackFunc)
{
	var feed = new google.feeds.Feed(feedUrl);
	
	feed.setNumEntries(numEntries);
	
	feed.load(function(result) {
		if (!result.error) 
		{
			callbackFunc(result.feed.entries);	
		}
	});
}

function fillFeedDiv(divID, feedEntries, abbrev)
{
	var container = document.getElementById(divID);

	for (var i = 0; i < feedEntries.length; i++)
	{
		var entry = feedEntries[i];
		insertFeedEntry(container, entry, 'feedEntry' + i, abbrev);
	}
}