/**
 * Active Commentators 3.2 Pro for Blogger
 * @author minimus (http://simplelib.co.cc)
 */
jQuery.noConflict();
(function($) {
	$(document).ready(function($){ 
  	function oCommentator (name, url, num, comms) {
			this.name = name;
			this.url = url;
			this.num = num;
			this.comms = new Array();
			this.comms.push(comms);
  	}
		var options = {
			maxList : 7,
			filterStr : '',
			baseUrl : '',
			authorUrl : true,
			loadStr : 'Loading ...',
			errorStr : 'Error ...',
			tipWidth : 300,
			lastCommentsNum : 3,
			lastCommentsStr : 'Last Comments:',
			totalCommentsStr : 'Total Comments:',
			theme : 'cream',
			fontSize : 12,
			tipPosition : 'top'
		};
		jQuery.each(acOptions, function(key, val) { options[key] = val; });
  	var aCommentators = new Array();
  	var aFilter = options.filterStr.split(',');
		aFilter.push('Anonymous');
  	var fullUrl = options.baseUrl + 'feeds/comments/default';
		var notice = $('#ac-mx');
		notice.html(options.loadStr)
		$.getJSON(fullUrl, {'alt': 'json', 'max-results': '500'},
			function(jsonData){
				var entries = jsonData.feed.entry;
				var isNew = false;
				$.each(entries, function(index, entry) {
					if(((null != entry.author[0].uri) || (typeof entry.author[0].uri != 'undefined')) && (jQuery.inArray(entry.author[0].name.$t, aFilter) == -1)) {
						if(aCommentators.length == 0) aCommentators.push(new oCommentator(entry.author[0].name.$t, entry.author[0].uri.$t, 1, entry.content.$t));
						else {
							isNew = true;
							for(var j=0; j<aCommentators.length; j++){
								if((entry.author[0].name.$t == aCommentators[j].name) && (entry.author[0].uri.$t == aCommentators[j].url)) {
									isNew = false;
									aCommentators[j].num++;
									aCommentators[j].comms.push(entry.content.$t)
									break;
								}
								else isNew = true;
							}
							if(isNew) aCommentators.push(new oCommentator(entry.author[0].name.$t, entry.author[0].uri.$t, 1, entry.content.$t));
						}
					}
				});
				var comms = aCommentators.sort(function(a, b) {return b.num - a.num});
				var outStr = '<ul>';
				for (var k = 0; k < options.maxList && k < comms.length; k++)
	  			outStr += '<li id=ac-' + k + '>' + '<a href="' + comms[k].url + '">' + comms[k].name + '</a> (' + comms[k].num + ')</li>';
	  		outStr += '</ul>';
				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';
				}
				
				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);
				for (var k = 0; k < options.maxList && k < comms.length; k++) {
					var cont = options.totalCommentsStr + ' ' + comms[k].num + '<br/>' + options.lastCommentsStr;
					for (var m=0; m < comms[k].comms.length && m < options.lastCommentsNum; m++) 
						cont += '<p>' + (m+1) + '. ' + comms[k].comms[m] + '</p>';
					$('#ac-'+k).qtip({
						content: {
		  				text: cont,
							title: { text: comms[k].name }
		  			},
						style: { 
							name: options.theme, 
							tip: true, 
							width: options.tipWidth,
							border: { width: 2, radius: 5 },
							'font-size': options.fontSize
						},
						position: {
							corner: {
								target: tipTarget,
								tooltip: tipTooltip
							}
   					}
					});
				}			
			}
		);
	});	
})(jQuery);