/**
 * Most Commented Posts 2.2 Pro for Blogger
 * @author minimus (http://simplelib.co.cc)
 */
jQuery.noConflict();
(function($) {
	$(document).ready(function($) {
		var options = {
			maxList : 7,
			scanDepth: 500,
			baseUrl : '',
			authorUrl : true,
			loadStr : 'Loading ...',
			errorStr : 'Error ...',
			tipWidth : 300,
			lastCommentsNum : 3,
			lastCommentsStr : 'Last Comments:',
			totalCommentsStr : 'Total Comments:',
			theme : 'cream',
			fontSize : 12,
			tipPosition : 'top'
		}
		function oPost(title, url, cUrl, num) {
			this.title = title;
			this.url = url;
			this.cUrl = cUrl;
			this.num = num;
			this.comms = new Array();
		}
		jQuery.each(mcpOptions, function(key, val) { options[key] = val; });
		var aPosts = new Array();
		var fullUrl = options.baseUrl + 'feeds/posts/default';
		var commUrl = options.baseUrl + 'feeds/comments/default';
		var tipTarget = 'topLeft';
		var	tipTooltip = 'bottomLeft';
		switch (options.tipPosition) {
			case 'top':
				tipTarget = 'topLeft';
				tipTooltip = 'bottomLeft';
				break;
				
			case 'bottom':
				tipTarget = 'bottomLeft';
				tipTooltip = 'topLeft';
				break;
				
			case 'left':
				tipTarget = 'leftMiddle';
				tipTooltip = 'rightMiddle';
				break;
				
			case 'right':
				tipTarget = 'rightMiddle';
				tipTooltip = 'leftMiddle';
				break;
					
			default:
				tipTarget = 'topLeft';
				tipTooltip = 'bottomLeft';
		}
		var notice = $('#mcp-mx');
		notice.html(options.loadStr);
	
		$.getJSON(fullUrl, {'alt': 'json', 'max-results': options.scanDepth},
			function(json) {
				var entries = json.feed.entry;
				$.each(entries, function(index, entry) {
					var link = '';
					var cLink = '';
					for(var i = 0; i < entry.link.length; i++) {
						if(entry.link[i].rel == "alternate") link = entry.link[i].href;
						if((entry.link[i].rel == "replies") && (entry.link[i].href.lastIndexOf("default") > entry.link[i].href.length - 9))
							cLink = link = entry.link[i].href;						
					}
					if(((null != entry.thr$total) || (typeof entry.thr$total != 'undefined')) && (parseInt(entry.thr$total.$t) > 0) && (link != ''))
						aPosts.push(new oPost(entry.title.$t, link, cLink, parseInt(entry.thr$total.$t)));
				});
				aPosts.sort(function(a, b) {return b.num - a.num});
				var outStr = '<ul>';
				for(var k=0; k<options.maxList && k<aPosts.length; k++)
					outStr += '<li id=mcp-' + k +'>' + '<a href="' + aPosts[k].url + '">' + aPosts[k].title + '</a> (' + aPosts[k].num + ')</li>';
				outStr += '</ul>';
				outStr += '<div style="text-align:right; font-size:x-small">widget by <a href="http://blogovod.co.cc/?p=1237">minimus</a><br/>powered by <a href="http://craigsworks.com/projects/qtip/">qTip</a></div>';
				notice.html(outStr);
				$.each(aPosts, function(index, entry){
					var comUrl = aPosts[index].cUrl;
					$.getJSON(comUrl, {'alt': 'json', 'max-results': options.scanDepth},
						function(cJSON) {
							var cEntries = cJSON.feed.entry;
							var cont = options.totalCommentsStr + ' ' + aPosts[index].num + '<br/>' + options.lastCommentsStr;
							for(var j = 0; j < cEntries.length && j < options.lastCommentsNum; j++) 
								cont += '<p><strong>' + cEntries[j].author[0].name.$t + '</strong> (' + cEntries[j].published.$t.slice(0, 16).replace('T', ' ') + '):<br/> ' + cEntries[j].content.$t + '</p>';
							$('#mcp-'+index).qtip({
								content: {
		  						text: cont,
									title: { text: aPosts[index].title }
		  					},
								style: { 
									name: options.theme, 
									tip: true, 
									width: options.tipWidth,
									border: { width: 2, radius: 5 },
									'font-size': options.fontSize
								},
								position: {
									corner: {
										target: tipTarget,
										tooltip: tipTooltip
									}
   							}
							});							
					});
					return (index < options.maxList);
				});					
			}
		);
	});
})(jQuery);