
// Pluck related javascript for home page

// initialize number-of-comments counter for sidebar
var numCommentsDisplayed=0; 

// retrieve most recent Candidates
function showMostRecentCandidates() {   
	var searchSections = new Array();   
	searchSections[0] = new Section("CNGPM");   

	var searchCategories = new Array();   
	searchCategories[0] = new Category("Candidates");   

	var activityDisco = new Activity("Recent");   
	var contentType = new ContentType("Article");   
	var limitToContributorsDisco = new Array();   
	limitToContributorsDisco[0] = new UserTier("Standard");   
	var age = 15;   
	var maximumNumberOfDiscoveries = 10;   

	var requestBatch = new RequestBatch();   
	var discoveryAction = new DiscoverContentAction(   
		searchSections,   
		searchCategories,   
		limitToContributorsDisco,   
		activityDisco,   
		contentType,   
		age,   
		maximumNumberOfDiscoveries);   

	requestBatch.AddToRequest(discoveryAction);   
	requestBatch.BeginRequest(serverUrl, recentArticlesCallback);   
} 

// callback function to display retrieved most recent Candidates
function recentArticlesCallback(responseBatch){
	if (responseBatch.Responses.length == 0) {
		if (responseBatch.Messages.length == 1 && responseBatch.Messages[0].Message == 'ok') return;
		handleErrors(responseBatch);
		return;
	}
	var discoverRecentArticles = responseBatch.Responses[0].DiscoverContentAction;
	var html = "";
	for (var i in discoverRecentArticles.DiscoveredContent) {
		html="";
		var info = discoverRecentArticles.DiscoveredContent[i];
		html += "<div class='promo med'>";
		html += "<a href='" + info.PageUrl + "'>";
		html += "<img class='thumb' src='/nextprimeminister/candidates/thumbs/" + info.ArticleKey.Key + ".jpg' alt='" + info.PageTitle + "' align='left' height='60' width='52' /><dl><dt>";
		html += "</a>";
		html += "<a href='" + info.PageUrl + "'><em>Candidate</em>" + info.PageTitle + "</a></dt>";
		html += "<dd>From " + candidate[info.ArticleKey.Key][0] + "</dd></dl>";
		html += "</div>";
		document.getElementById('latest_candidates_container').innerHTML+=html;
	}
}	

// retrieve top-rated Candidates
/*function showTopRatedCandidates() {   
	var searchSections = new Array();   
	searchSections[0] = new Section("CNGPM");   

	var searchCategories = new Array();   
	searchCategories[0] = new Category("Candidate");   

	//var activityDisco = new Activity("Reviewed");   
	var activityDisco = new Activity("Rated");   	
	var contentType = new ContentType("Article");   
	var limitToContributorsDisco = new Array();   
	limitToContributorsDisco[0] = new UserTier("Standard");   
	var age = 15;   
	var maximumNumberOfDiscoveries = 10;   

	var requestBatch = new RequestBatch();   
	var discoveryAction = new DiscoverContentAction(   
		searchSections,   
		searchCategories,   
		limitToContributorsDisco,   
		activityDisco,   
		contentType,   
		age,   
		maximumNumberOfDiscoveries);   

	requestBatch.AddToRequest(discoveryAction);   
	requestBatch.BeginRequest(serverUrl, topRatedArticlesCallback);   
} 	*/

// callback function to display retrieved top-rated Candidates
/*function topRatedArticlesCallback(responseBatch){
	if (responseBatch.Responses.length == 0) {
		if (responseBatch.Messages.length == 1 && responseBatch.Messages[0].Message == 'ok') return;
		handleErrors(responseBatch);
		return;
	}
	var discoverTopRatedArticles = responseBatch.Responses[0].DiscoverContentAction;
	var html = "";
	for (var i = 0; i < discoverTopRatedArticles.DiscoveredContent.length; i++) {
		var info = discoverTopRatedArticles.DiscoveredContent[i];
		html += "<div class='toprated_audition";
		if (i==2 || i==5 || i==8) {
			html += " lastinrow";
		}			
		html += "'>";
		html += "<a href='" + info.PageUrl + "'>";
		html += "<img class='thumb' width='130' src='/NextGreatLeader/auditions/thumbs/" + info.ArticleKey.Key + ".jpg' alt='" + info.PageTitle + "' align='top' />";
		html += "</a>";
		html += "<h2><a class='headlink' href='" + info.PageUrl + "'>" + info.PageTitle + "</a></h2>";
		html += "<p class='clear spacer'>&nbsp;</p>";
		for (var j = 0 ; j < info.Ratings.AverageRating ; j++) {
		 	html += "<img src='http://sitelife.cbc.ca/ver1.0/Content/images/icons/fullstar.gif' alt='Full Star' border='0' align='left' />";
		}
		for (var k = j ; k < 5 ; k++) {
		 	html += "<img src='http://sitelife.cbc.ca/ver1.0/Content/images/icons/emptystar.gif' alt='Empty Star' border='0' align='left' />";	
		}
		html += "</div>";
		if (i==2 || i==5 || i==8) {
			html += "<div class='clear'>&nbsp;</div>";
		}				
		html += "<!-- avg rating = " + info.Ratings.AverageRating + " stars -->";
	}
	document.getElementById('toprated_auditions_container').innerHTML = html;
}	*/

// function to retrieve most recent audition articles and then reviews (comments) for each
function showRecentComments() {   
	var searchSections = new Array();   
	searchSections[0] = new Section("CNGPM");   

	var searchCategories = new Array();   
	searchCategories[0] = new Category("Candidates");   

	var activityDisco = new Activity("Recent");   
	var contentType = new ContentType("Article");   
	var limitToContributorsDisco = new Array();   
	limitToContributorsDisco[0] = new UserTier("Standard");   
	var age = 15;   
	var maximumNumberOfDiscoveries = 10;   

	var requestBatch = new RequestBatch();   
	var discoveryAction = new DiscoverContentAction(   
		searchSections,   
		searchCategories,   
		limitToContributorsDisco,   
		activityDisco,   
		contentType,   
		age,   
		maximumNumberOfDiscoveries);   

	requestBatch.AddToRequest(discoveryAction);   
	requestBatch.BeginRequest(serverUrl, recentCommentsCallback);   
} 			

// loop through retrieved audition articles and retrieve review comments for each
function recentCommentsCallback(responseBatch){
	if (responseBatch.Responses.length == 0) {
		if (responseBatch.Messages.length == 1 && responseBatch.Messages[0].Message == 'ok') return;
		handleErrors(responseBatch);
		return;
	}
	var discoverArticles = responseBatch.Responses[0].DiscoverContentAction;
	var html = "";
	for (var i = 0; i < discoverArticles.DiscoveredContent.length; i++) {
		var info = discoverArticles.DiscoveredContent[i];		
		var requestBatch = new RequestBatch();   
		var reviewPage = new ReviewPage (new ArticleKey(info.ArticleKey.Key), 10, 1, 'TimeStampDescending');
		requestBatch.AddToRequest(reviewPage);    
		var articleKey = new ArticleKey(info.ArticleKey.Key);
		requestBatch.AddToRequest(articleKey);    		
		requestBatch.BeginRequest(serverUrl, renderComments);
	}
}		

// display retrieved review comments
function renderComments(responseBatch) {   
	if (responseBatch.Responses.length == 0) {
		alert('Article Not Found.');
	} else {
		html="";
		var reviewPage = responseBatch.Responses[0].ReviewPage;
		var art = responseBatch.Responses[1].Article;		
		for(var i=0; i < reviewPage.Reviews.length; i++) {
			if (numCommentsDisplayed<1) {
				html+="<div class=\"quoteleft\">&#8220;</div>";
				html+="<div class=\"quotecopy\">";
				html+=reviewPage.Reviews[i].ReviewBody;
				html+="</div>";
				html+="<div class=\"quoteright\">&#8221;</div>";
				html+="<br clear=\"all\" />";
				html+="<div class=\"quoteauthor\">was said in: <a href=\""+art.PageUrl+"\">";
				html+=reviewPage.Reviews[i].ReviewTitle.replace("CNGPM - ","");
				html+="</a> by " + reviewPage.Reviews[i].Author.DisplayName;
				html+="</div>";			
				html+="</div>";			
				numCommentsDisplayed++;				
			}
		}   
		document.getElementById("comments_container").innerHTML += html;   
	}   
}