// JavaScript Document
// Handle Google Code

// Load Google API
google.load("gdata", "1.x");

// Authenticate to Google
function logMeIn() {
  scope = "http://www.blogger.com/feeds";
  var token = google.accounts.user.login(scope);
}

function logMeOut() {
  google.accounts.user.logout();
}


function setupMyService() {
  var myService =
    new google.gdata.blogger.BloggerService('danregazzi-danregazzicom-1');
  return myService;
}


function retrieveBlogs() {
	// Create the blogger service object
	var bloggerService = window['myService'];
	
	// The default "metafeed" feed is used to retrieve a list of blogs for a particular logged-in user
	var feedUri = 'http://www.blogger.com/feeds/17111946701785768830/blogs/';
	
	// The callback method invoked when getBlogFeed() returns feed data
	var handleBlogFeed = function(blogFeedRoot) {
		var blogEntries = blogFeedRoot.feed.getEntries();
		
		// Has the user created any blogs?
		if(!blogEntries.length) {
			$('#results').html('First <a href="http://www.blogger.com" target="_blank">create a blog</a>.');
			return;
		}
		
		for (var i = 0, blogEntry; blogEntry = blogEntries[i]; i++) {
			var blogTitle = blogEntry.getTitle().getText();
			var blogURL = blogEntry.getHtmlLink().getHref();
			var blogUpdated = blogEntry.getUpdated().getValue().getDate();
			
			$('#sidebar').html('Blog title: <b><a href="' + blogURL + '" target="_blank">' + blogTitle + '</a></b>');
			$('#sidebar').append('<li><small>Last updated: ' + blogUpdated + '</small></li>');
		}
	};
	
	// Error handler called when getBlogFeed() produces an error
	var handleError = function(error) {
		alert(error);
	};
	
	// Submit the request using the blogger service object
	bloggerService.getBlogFeed(feedUri, handleBlogFeed, handleError);
}


function retrieveBlogPosts() {
	/* 
	 * Retrieve a list of blog posts
	 */
	
	// Create the blogger service object
	var bloggerService = window['myService'];
	
	// The feed URI ued to retrieve a list of blogs for a particular logged-in user
	var feedUri = 'http://www.blogger.com/feeds/17111946701785768830/blogs';
	
	// The callback method invoked when getBlogFeed() returns the list of our blogs
	var handleBlogFeed = function(blogFeedRoot) {
		var blogEntries = blogFeedRoot.feed.getEntries();
	
		// Get list of posts for each blog
		for (var i = 0, blogEntry; blogEntry = blogEntries[i]; i++) {
			var postsFeedUri = blogEntry.getEntryPostLink().getHref();
			var query = new google.gdata.blogger.BlogPostQuery(postsFeedUri);
	
			// Set the maximum number of blog posts to return
			query.setMaxResults(25);
			
			bloggerService.getBlogPostFeed(query, handleBlogPostFeed, handleError);
		}
	};
	
	// A callback method invoked getBlogPostFeed() returns data
	var handleBlogPostFeed = function(postsFeedRoot) {
		var posts = postsFeedRoot.feed.getEntries();
		
		// Display blog's title
		//$('#results').html('Blog title: ' + postsFeedRoot.feed.getTitle().getText() + '<br />');
		//$('#results').html("<h1><strong>Recent Blog Posts</strong></h1><br />");
		$('#results').html('');
		
		if(isAdmin){
			var adminControls = "<h1>Admin Controls</h1><ul>" + 
				"<li><a href='javascript:newPost();'>New Post</a></li>" + 
				"<li><a href='javascript:editPost();'>Edit Post</a></li>" +
				"<li><a href='javascript:deletePost();'>Delete Post</a></li></ul><br /><br />";	
			
			$('#sidebar').html(adminControls);
		} else {
			$('#sidebar').html('');
		}
		
		var blogLinks = "<h1>Recent Posts</h1><ul>";	
		
		for (var i = 0, post; post = posts[i]; i++) {
			var postId = post.getId().getValue().substr(post.getId().getValue().indexOf('post-') + 5);
			var postTitle = post.getTitle().getText();
			var postURL = post.getHtmlLink().getHref();
			var postContent = post.getContent().getText();	
			var postUpdated = new Date(post.getUpdated().getValue().date);
			postUpdated = postUpdated.getMonth() + 1 + '-' + postUpdated.getDate() + '-' + postUpdated.getFullYear();
			var adminLinks = isAdmin ?
			"<br /><a href='javascript:;' onclick=\"editPost('" + postId + "');\">Edit Post</a> | " +
			"<a href='javascript:;' onclick=\"deletePost('" + postId + "');\">Delete Post</a><br /><br />" : '';
						
			var module = ' \
				<div id="mod_' + postId + '" class="module"> \
					<div class="mod_header"> \
						<div> \
							<div class="infoLeft"><strong>' + postTitle + '</strong></div> \
							<div class="infoRight">' + postUpdated + ' </div>&nbsp; \
						</div> \
					</div> \
					<br /> \
					<div class="content">' + postContent + '</div> \
					<br /> \
					<div class="infoLeft"><a href="javascript:;" onclick="$(\'#mod_' + postId + ' .comments\').slideToggle(\'fast\',function(){matchHeight(\'results\', \'sidebar\');});">Comments</a></div> \
					<div class="infoRight">' + adminLinks + '</div><br /> \
					<br /> \
					<div class="comments">&nbsp;</div> \
				</div><br /><br />';
					
			blogLinks = blogLinks + "<li><a href='#mod_" + postId + "'>" + postTitle + "</a><br />Posted: " + postUpdated + "</li>";
			
			$('#results').append(module);
			$.data($('#mod_' + postId).get(0), 'postNum',i)
			
			retrieveComments(postId);
		}
		$('#results').append('<br />');
		$('#sidebar').append(blogLinks);
		$('#sidebar').append('</ul><br /><br />');
		matchHeight('results', 'sidebar');
	};
	
	var handleError = function(error) {
		//alert(error);
	};
	
	bloggerService.getBlogFeed(feedUri, handleBlogFeed, handleError);
}


function createBlogPost() {
	/* 
	 * Create a new blog post 
	 */
	
	// Create the blogger service object
	var bloggerService = window['myService'];
	
	// The feed URI ued to retrieve a list of blogs for a particular logged-in user
	var feedUri = 'http://www.blogger.com/feeds/17111946701785768830/blogs';
	
	// The callback method invoked when getBlogFeed() returns the list of our blogs
	var handleBlogFeed = function(blogFeedRoot) {
		var blogEntries = blogFeedRoot.feed.getEntries();
		
		if (blogEntries.length) {
			var blogEntry = blogEntries[0]; // only get first blog
			
			// This is the feed uri for the blog's posts 
			var postsFeedUri = blogEntry.getEntryPostLink().getHref();
		
			bloggerService.getBlogPostFeed(postsFeedUri, handleBlogPostFeed, handleError);
		} 
	};
	
	// A callback invoked when getBlogPostFeed() returns the list of blog posts
	var handleBlogPostFeed = function(postsFeedRoot) {
		// Constuct an new BlogPostEntry
		var newEntry = new google.gdata.blogger.BlogPostEntry({
			title: {
				type: 'text', 
				text: 'JS-Blogger-Client: inserted post'
			},
			content: {
				type: 'text', 
				text: 'This is the body of the blog post.  I can include <b>HTML</b> tags.'
			},
			categories: [
				{scheme: 'http://www.blogger.com/atom/ns#', term: 'Label1'},
				{scheme: 'http://www.blogger.com/atom/ns#', term: 'Label2'}
			]
		});
	
		// mark post as a draft?
		// newEntry.setControl({draft: {value: google.gdata.Draft.VALUE_YES}});
		
		postsFeedRoot.feed.insertEntry(newEntry, 
				function() {
					PRINT('Blog post inserted:');
					PRINT('"<b>' + newEntry.getTitle().getText() + '</b>"');
				}, 
				handleError
		);
	};
	
	var handleError = function(error) {
		alert(error);
	};
	
	bloggerService.getBlogFeed(feedUri, handleBlogFeed, handleError);
}


function retrieveBlogPost() {
	/* 
	 * Retrieve a specific blog post
	 */
	
	// Create the blogger service object
	var bloggerService = window['myService'];
	
	// The default "metafeed" feed is used to retrieve a list of blogs for a particular logged-in user
	var feedUri = 'http://www.blogger.com/feeds/17111946701785768830/blogs';
	
	// The callback method that will be called when getBlogFeed() returns the list of our blogs
	var handleBlogFeed = function(blogFeedRoot) {
		var blogEntries = blogFeedRoot.feed.getEntries(); 
		
		if (blogEntries.length) {
			var blogEntry = blogEntries[0]; // only get first blog
			var postsFeedUri = blogEntry.getEntryPostLink().getHref();
		
			bloggerService.getBlogPostFeed(postsFeedUri, handleBlogPostFeed, handleError);
		}
	};
	
	// Called when getBlogPostFeed() returns the list of blog posts
	var handleBlogPostFeed = function(postsFeedRoot) {
		var blogTitle = postsFeedRoot.feed.getTitle().getText();
		var postEntry = postsFeedRoot.feed.getEntries()[0]; // only get first post
		var entryUri = postEntry.getSelfLink().getHref();   // post's uri
		
		// Get the blog post entry
		bloggerService.getBlogPostEntry(entryUri, 
				function(postRoot) {
					var postTitle = postRoot.entry.getTitle().getText(); 
					$('#results').html('Title of latest post to ' + blogTitle + ':');
					$('#results').append('<b>"' + postTitle + '"</b>');
				}, 
				handleError
		);
	};
	
	var handleError = function(error) {
		alert(error);
	};
	
	bloggerService.getBlogFeed(feedUri, handleBlogFeed, handleError);
}


function updateBlogPost() {
	/* 
	 * Update an existing blog post
	 */
	
	// Create the blogger service object
	var bloggerService = window['myService'];
	
	// The default "metafeed" feed is used to retrieve a list of blogs for a particular logged-in user
	var feedUri = 'http://www.blogger.com/feeds/17111946701785768830/blogs';
	
	// The callback method that will be called when getBlogFeed() returns the list of our blogs
	var handleBlogFeed = function(blogFeedRoot) {
		var blogEntries = blogFeedRoot.feed.getEntries(); 
		
		if (blogEntries.length) {
			var blogEntry = blogEntries[0]; // only get first blog
			var postsFeedUri = blogEntry.getEntryPostLink().getHref();
		
			bloggerService.getBlogPostFeed(postsFeedUri, handleBlogPostFeed, handleError);
		}
	};
	
	// Called when getBlogPostFeed() returns the list of blog posts
	var handleBlogPostFeed = function(postsFeedRoot) {
		var posts = postsFeedRoot.feed.getEntries();
		
		// Use this string to identify the targeted blog post for the update
		var targetTitleStart = 'JS-Blogger-Client';
	
		// Flag to indicate whether a match is found
		var postFound = false;
		
		for (var i = 0, postEntry; postEntry = posts[i]; i++) {
			var postTitle = postEntry.getTitle().getText();
	
			// The first matched is located!
			if (postTitle.substring(targetTitleStart.length, 0) == targetTitleStart) {      
				postFound = true;
				var entryUri = postEntry.getSelfLink().getHref();      
				break;
			}
		}
		
		// If no matched post was found, print this message
		if (!postFound) {
			PRINT('Cannot find post title starting with: ' + targetTitleStart);
		} else {
			bloggerService.getBlogPostEntry(entryUri, handlePostEntry, handleError);
		}
	};
	
	// This method is called when getBlogPostEntry() returns the blog post entry
	var handlePostEntry = function(postEntryRoot) {
		var postEntry = postEntryRoot.entry;
		
		// Update the blog's title
		postEntry.getTitle().setText('JS-Blogger-Client: updated title');
		
		// Update the blog's content
		postEntry.setContent(google.gdata.Text.create('My updated post'));
		
		// Update a category
		var categories = postEntry.getCategories();
		for(var i = 0, category; category = categories[i]; i++) {
			// Update a particular label
			if (category.getTerm() == 'Label1') {
				category.setTerm('Label1-updated');
				break;
			}
		}
		
		// Update the blog post entry
		postEntry.updateEntry(
			function(updatedPostEntryRoot) {
				PRINT('Blog post updated.');
			}, 
			handleError
		);
	};
	
	var handleError = function(error) {
		alert(error);
	};
	
	bloggerService.getBlogFeed(feedUri, handleBlogFeed, handleError);
}


function deleteBlogPost(postNum) {
	/* 
	 * Delete an existing blog post
	 */
	
	// Create the blogger service object
	var bloggerService = window['myService'];
	
	// The default feed used to retrieve a list of blogs for a logged-in user
	var feedUri = 'http://www.blogger.com/feeds/17111946701785768830/blogs';
	
	// The callback method used when getBlogFeed() returns the list of our blogs
	var blogFeedCallback = function(blogFeedRoot) {
		var blogEntries = blogFeedRoot.feed.getEntries();
		
		if (blogEntries.length) {
			var blogEntry = blogEntries[0]; // only get first blog
			
			// This is the feed uri for the blog's posts 
			var postsFeedUri = blogEntry.getEntryPostLink().getHref();
		
			bloggerService.getBlogPostFeed(postsFeedUri, handleBlogPostFeed, handleError);
		}
	};
	
	var handleBlogPostFeed = function(blogPostsFeed) {
		var postEntries = blogPostsFeed.feed.getEntries(); // only get first post
		var postEntry = postEntries[postNum];
		// Use this string to identify the targeted blog post for the update
		//var targetTitleStart = 'JS-Blogger-Client';
	
		// Flag to indicate whether a match is found
		//var postFound = false;
		
		//for (var i = 0, postEntry; postEntry = postEntries[i]; i++) { 
		//	var postTitle = postEntry.getTitle().getText();
	
			// The first matched is located!
		//	if (postTitle.substring(targetTitleStart.length, 0) == targetTitleStart) {      
		//		postFound = true;
		var entryUri = postEntry.getSelfLink().getHref();      
		//		break;
		//	}
		//}
		
		// If no matched post was found, print this message
		//if (!postFound) {
		//	$('#results').html('Cannot find a post title starting with: ' + targetTitleStart);
		//	retrieveBlogPosts();
		//} else {
			postEntry.deleteEntry(
				function() {
					$('#results').html('Blog post deleted.');
					retrieveBlogPosts();
				}, 
				handleError
			);
	//	}
	};
	
	// Error handler to be invoked when getBlogFeed() produces an error
	var handleError = function(error) {
		alert(error);
	};
	
	// Submit the request using the blogger service object
	bloggerService.getBlogFeed(feedUri, blogFeedCallback, handleError);
}


function queryForBlogPosts() {
	/* 
	 * Retrieve a specific blog post
	 */
	
	// Create the blogger service object
	var bloggerService =  new google.gdata.blogger.BloggerService('GoogleInc-jsguide-1.0');
	
	// The default feed used to retrieve a list of blogs for a logged-in user
	var feedUri = 'http://www.blogger.com/feeds/17111946701785768830/blogs';
	
	// The callback method used when getBlogFeed() returns the list of our blogs
	var handleBlogFeed = function(blogFeedRoot) {
		var blogEntries = blogFeedRoot.feed.getEntries();
		
		// Has the user created any blogs?
		if(!blogEntries.length) {
			PRINT('First <a href="http://www.blogger.com" target="_blank">create a blog</a>.');
			return;
		}
		
		var blogEntry = blogEntries[0]; // only get first blog
			
		// This is the feed uri for the blog's posts 
		var postsFeedUri = blogEntry.getEntryPostLink().getHref();
	
		// Define start/end published dates to restrict search to
		var startDate = new Date('May 31, 2008 14:00:00');
		var endDate = new Date('June 1, 2008 15:42:00');
		
		// Make query global to use in queryResultsCallback() 
		query = new google.gdata.blogger.BlogPostQuery(postsFeedUri);
		query.setPublishedMin(new google.gdata.DateTime(startDate));
		query.setPublishedMax(new google.gdata.DateTime(endDate));
		
		// Pass in our query to getBlogPostFeed() instead of the entry's URI
		bloggerService.getBlogPostFeed(query, handleQueryResults, handleError);
	};
	
	// A callback method invoked when getBlogPostFeed() returns the query results
	var handleQueryResults = function(resultsFeedRoot) {
		var blogFeed = resultsFeedRoot.feed;
		var blogTitle = blogFeed.getTitle().getText();
		
		// Retrieve our query parameters
		var startTime = google.gdata.DateTime.toIso8601(query.getPublishedMin());
		var endTime = google.gdata.DateTime.toIso8601(query.getPublishedMax());
		
		PRINT('Query: <b>' + blogTitle + '</b> posts between ' + 
					startTime + ' and ' + endTime);
	 
		var postEntries = blogFeed.getEntries(); 
		for (var i = 0, posts; postEntry = postEntries[i]; i++) {
			var postTitle = postEntry.getTitle().getText();
			var pubDate = google.gdata.DateTime.toIso8601(postEntry.getPublished().getValue());
			
			PRINT('---');
			PRINT('post title: <b>' + postTitle + '</b>');
			PRINT('published: ' + pubDate);
		}
	};
	
	var handleError = function(error) {
		alert(error);
	};
	
	bloggerService.getBlogFeed(feedUri, handleBlogFeed, handleError);
}


function retrieveComments(postId) {
	/* 
	 * Retrieve a list of blog post comments
	 */
	
	// Create the blogger service object
	var bloggerService = window['myService'];
	
	// The default feed used to retrieve a list of blogs for a logged-in user
	var feedUri = 'http://www.blogger.com/feeds/17111946701785768830/blogs';
	
	// The callback method used when getBlogFeed() returns the list of our blogs
	var handleBlogFeed = function(blogFeedRoot) {
		var blogEntries = blogFeedRoot.feed.getEntries();
		
		if (blogEntries.length) {
			var blogEntry = blogEntries[0]; // only get first blog
			
			// This is the feed uri for the blog's posts 
			var postsFeedUri = blogEntry.getEntryPostLink().getHref();
		
			bloggerService.getBlogPostFeed(postsFeedUri, handleBlogPostFeed, handleError);
		}
	};
	
	var handleBlogPostFeed = function(blogPostsFeed) {
		var index = $('#mod_' + postId).data('postNum');
		var postEntry = blogPostsFeed.feed.getEntries()[index]; // get the blog post
		var commentsFeedUri = postEntry.getRepliesLink().getHref();
	
		bloggerService.getBlogCommentFeed(commentsFeedUri, handleCommentFeed, handleError);
	};
	
	// The callback method used when getBlogCommentFeed() returns the list of our comments
	var handleCommentFeed = function(commentsFeedRoot) {
		var commentEntries = commentsFeedRoot.feed.getEntries();
		
		$('#mod_' + postId + ' .comments').html('');
		
		if (commentEntries.length > 0) {
			for(var i = 0, commentEntry; commentEntry = commentEntries[i]; i++) {
				var commentTitle = commentEntry.getTitle().getText();
				var commentText = commentEntry.getContent().getText();
				var commentAuthor = commentEntry.getAuthors()[0].name.getValue();
				var commentDate = new Date(commentEntry.getPublished().getValue().getDate());
				commentDate = commentDate.getMonth() + 1 + '-' + commentDate.getDate() + '-' + commentDate.getFullYear();
				
				var commentContent = "<div class='commentHead'> \
												 <div class='infoLeft'>" + commentTitle + "</div> \
												 <div class='infoRight'>Posted: " + commentDate + " by " + commentAuthor + "</div> \
												 </div><br />" + commentText;
				
				var commentNode = document.createElement("div");
				$(commentNode).addClass('comment');
				$(commentNode).html(commentContent);
				
				$('#mod_' + postId + ' .comments').append(commentNode);
				$('#mod_' + postId + ' .comments').append("<br />");
			}
		} else {
			$('#mod_' + postId + ' .comments').append('No comments found for that post');
		}
	};
	
	var handleError = function(error) {
		alert(error);
	};
	
	bloggerService.getBlogFeed(feedUri, handleBlogFeed, handleError);
}


function createComment() {
	/* 
	 * Create a new blog post comment
	 */
	
	// Create the blogger service object
	var bloggerService = window['myService'];
	
	// The default feed used to retrieve a list of blogs for a logged-in user
	var feedUri = 'http://www.blogger.com/feeds/17111946701785768830/blogs';
	
	// The callback method used when getBlogFeed() returns the list of our blogs
	var handleBlogFeed = function(blogFeedRoot) {
		var blogEntries = blogFeedRoot.feed.getEntries();
		
		if (blogEntries.length) {
			var blogEntry = blogEntries[0]; // only get first blog
			
			// This is the feed uri for the blog's posts 
			var postsFeedUri = blogEntry.getEntryPostLink().getHref();
		
			bloggerService.getBlogPostFeed(postsFeedUri, handleBlogPostFeed, handleError);
		}
	};
	
	// A callback invoked when getBlogPostFeed() returns the blog posts feed
	var handleBlogPostFeed = function(blogPostsFeedRoot) {
		var postEntries = blogPostsFeedRoot.feed.getEntries();
		
		// Use this string to identify the targeted blog post to post a comment to
		var targetTitleStart = 'JS-Blogger-Client';
	
		// Flag to indicate whether a match is found
		var postFound = false;
		
		for (var i = 0, postEntry; postEntry = postEntries[i]; i++) { 
			var postTitle = postEntry.getTitle().getText();
	
			// The first matched is located!
			if (postTitle.substring(targetTitleStart.length, 0) == targetTitleStart) {      
				postFound = true; 
				
				var postEntryId = postEntry.getId().getValue(); 
				
				// Extract the blogID and postID from the entry's <id> tag
				var match = /blog-(\d+)\.post-(\d+)/.exec(postEntryId);
				
				// This is the uri for posting a new comment to this blog post
				var commentsFeedUri = 'http://www.blogger.com/feeds/' + match[1] + '/' + match[2] + '/comments/default'; 
	 
				break;
			}
		}
	
		// If no matched post was found, print this message
		if (!postFound) {
			PRINT('Cannot find a blog post title starting with: ' + targetTitleStart);
		} else {  
			// Construct a new google.gdata.blogger.BlogCommentEntry
			var newComment = new google.gdata.blogger.BlogCommentEntry({
				content: {
					type: 'text', 
					text: 'JS-Blogger-Client: Great post!'
				}
			});
			
			bloggerService.insertEntry(commentsFeedUri, newComment, insertCommentCallback, handleError);
		}
	};
	
	var insertCommentCallback = function(commentEntryRoot) {
		PRINT('Comment inserted.');
	};
	
	var handleError = function(error) {
		alert(error);
	};
	
	bloggerService.getBlogFeed(feedUri, handleBlogFeed, handleError);
}


function deleteComment() {
	/* 
	 * Delete a blog post comment
	 */
	
	// Create the blogger service object
	var bloggerService = window['myService'];
	
	// The default feed used to retrieve a list of blogs for a logged-in user
	var feedUri = 'http://www.blogger.com/feeds/17111946701785768830/blogs';
	
	// The callback method used when getBlogFeed() returns the list of our blogs
	var handleBlogFeed = function(blogFeedRoot) {
		var blogEntries = blogFeedRoot.feed.getEntries();
		
		if (blogEntries.length) {
			var blogEntry = blogEntries[0]; // only get first blog
			
			// This is the feed uri for the blog's posts 
			var postsFeedUri = blogEntry.getEntryPostLink().getHref();
		
			bloggerService.getBlogPostFeed(postsFeedUri, handleBlogPostFeed, handleError);
		}
	};
	
	// A callback invoked when getBlogPostFeed() returns the blog posts feed
	var handleBlogPostFeed = function(blogPostsFeedRoot) {
		var postEntries = blogPostsFeedRoot.feed.getEntries();
		
		// Use this string to identify the targeted blog post to post a comment to
		var targetTitleStart = 'JS-Blogger-Client';
	
		// Flag to indicate whether a match is found
		var postFound = false;
		
		for (var i = 0, postEntry; postEntry = postEntries[i]; i++) {
			var postTitle = postEntry.getTitle().getText();
	
			// The first matched is located!
			if (postTitle.substring(targetTitleStart.length, 0) == targetTitleStart) {      
				postFound = true;    
				
				// This is the uri for the blog post's commend feed
				var commentsFeedUri = postEntry.getRepliesLink().getHref();
				
				break;
			}
		}
	
		// If no matched post was found, print this message
		if (!postFound) {
			PRINT('Cannot find a blog post title starting with: ' + targetTitleStart);
		} else {  
			bloggerService.getBlogCommentFeed(commentsFeedUri, handleCommentsFeed, handleError);
		}
	};
	
	var handleCommentsFeed = function(commentsFeedRoot) {
		var comments = commentsFeedRoot.feed.getEntries();
	
		if (!comments.length) {
			PRINT('No comments left to delete.');
		} else {
			// delete first comment
			comments[0].deleteEntry(
				function() {
					PRINT('Comment deleted.');
				}, 
				handleError);
		}
	};
	
	var handleError = function(error) {
		alert(error);
	};
	
	bloggerService.getBlogFeed(feedUri, handleBlogFeed, handleError);
}