google.load("feeds", "1");
google.setOnLoadCallback(loadNews);

function loadNews() {

	var blog = new BlogPreview(document.getElementById('latestNews'));
	blog.show('http://blog.firstbasesolutions.com/category/news/feed/atom/', true);

}

function BlogPreview(container, options) {
    
	this.options = {
		numEntries: 3
	};
	
    for (opt in options) {
    	this.options[opt] = options[opt];
    }
	this.container_ = container;
}

BlogPreview.prototype.show = function(url, opt_noTitle) {
	var feed = new google.feeds.Feed(url);
	feed.setNumEntries(this.options.numEntries);
	var preview = this;
	feed.load(function(result) {
				preview.render_(result, opt_noTitle);
			});
};

BlogPreview.prototype.render_ = function(result, opt_noTitle) {
	if (!result.feed || !result.feed.entries)
		return;
	while (this.container_.firstChild) {
		this.container_.removeChild(this.container_.firstChild);
	}

	var blog = this.createDiv_(this.container_, "blog");
	if (!opt_noTitle) {
		var header = this.createElement_("h2", blog, "");
		this.createLink_(header, result.feed.link, result.feed.title);
	}

	for (var i = 0; i < result.feed.entries.length; i++) {
		var entry = result.feed.entries[i];
		var div = this.createDiv_(blog, "entry");
		var linkDiv = this.createDiv_(div, "title");
		this.createLink_(linkDiv, entry.link, this.fixQuote_(entry.title));
		var body = this.createDiv_(div, "body", this.fixQuote_(entry.contentSnippet));
		if (entry.author) {
			this.createDiv_(body, "author", " [Posted by " + entry.author + "]");
		}

	}
};

BlogPreview.prototype.fixQuote_ = function(str) {
	return str.replace('&#8217;', "'");
};

BlogPreview.prototype.createDiv_ = function(parent, className, opt_text) {
	return this.createElement_("div", parent, className, opt_text);
};

BlogPreview.prototype.createLink_ = function(parent, href, text) {
	var link = this.createElement_("a", parent, "", text);
	link.href = href;
	return link;
};

BlogPreview.prototype.createElement_ = function(tagName, parent, className,
		opt_text) {
	var div = document.createElement(tagName);
	div.className = className;
	parent.appendChild(div);
	if (opt_text) {
		div.appendChild(document.createTextNode(opt_text));
	}
	return div;
};

