if(window['console'] === undefined)
  window.console = { log: Prototype.emptyFunction };

// Array Remove - By John Resig (MIT Licensed)
Array.remove = function(array, from, to) {
  var rest = array.slice((to || from) + 1 || array.length);
  array.length = from < 0 ? array.length + from : from;
  return array.push.apply(array, rest);
};


// LifeAggregator - By Chris Williams (Creative Commons License)
var LifeAggregator = {
	feeds: [],
	_queues: [],
	_queue_titles: [],
	filled_queues: 0,
	
	//BEHOLD THE ULTIMATE POWER OF MERGESORTING
	render:function()	{
		var CURRENT_DATE = (new Date()).getTime();
		total_elements = 0;
		life_box = $("#life");
		life_box.html("");
		
		for(var idx = 0;idx < LifeAggregator.filled_queues; idx++)	{
			total_elements+=LifeAggregator._queues[idx].length;
		}
		$("#retriculating_splines").hide();
		for (var i = 0; i < total_elements; i++)	{
			//Always assume first queue;
			var most_recent_date = null;
			var lowest_diff = null;
			var target_queue = null;
			for (var qidx = 0; qidx < LifeAggregator.filled_queues; qidx++)	{
				active_queue = LifeAggregator._queues[qidx];
				if (active_queue.length > 0)	{
					recent_date = Date.parse(active_queue[0].publishedDate);
					diff = CURRENT_DATE - recent_date.getTime();
					if (lowest_diff == null || diff < lowest_diff)	{
						lowest_diff = diff;
						target_queue = qidx;
						most_recent_date = recent_date;
					}
				}
			}
			item = LifeAggregator._queues[target_queue][0];
			LifeAggregator._queues[target_queue] = LifeAggregator._queues[target_queue].slice(1);
			queue_name = LifeAggregator._queue_titles[target_queue];
			if (queue_name != "GitHub" && queue_name!="Twitter")	{
				life_box.append("<li><h4><a href='"+item.link+"'>Posted through "+queue_name+": "+item.title+"</a></h4><div class=\"content\">"+item.content+"</div></li>");
			}	else if (queue_name == "GitHub")	{
				var pushre = /pushed/;
				if (!item.title.match(pushre))	{	//Filter out all replies 
					life_box.append("<li><h4><a href='"+item.link+"'>Posted through "+queue_name+": "+item.title+"</a></h4><div class=\"content\">"+item.content+"</div></li>");
				}
			}	else if (queue_name == "Twitter")	{
				var replyRE = /@/;
				if (!item.title.match(replyRE))	{	//Filter out all replies 
					life_box.append("<li><h4><a href='"+item.link+"'>Posted through "+queue_name+": "+item.title+"</a></h4><div class=\"content\">"+item.content+"</div></li>");
				}
			}
		}
	},
	init:function(feeds)	{
		LifeAggregator.feeds = feeds;
		$("#retriculating_splines").show();
		$.each(feeds, function(idx, feed_data)	{
			var feed = new google.feeds.Feed(feed_data.url);
			feed.setNumEntries(10); //Google Feed API method
			feed.load(function(result) {
		     if (!result.error) {
						add_idx = LifeAggregator.filled_queues++;
		       	LifeAggregator._queues[add_idx] = result.feed.entries;
		       	LifeAggregator._queue_titles[add_idx] = feeds[idx].title;
						if (LifeAggregator.filled_queues == feeds.length)	{
							LifeAggregator.render();
						}
		     } else {
						console.log("Failed on "+idx+" due to "); console.log(result.error);
				 }
		   });
		});
	}
}



function initialize() {
	myFeeds = [{
		"title": "Blog",
		"url": "http://voodootikigod.com/feed/"
	},{ 
		"title":"Delicious",
		"url": "http://feeds.delicious.com/v2/rss/voodootikigod?count=10"
	},	{
		"title": "GitHub",
		"url": "http://github.com/voodootikigod.atom"
	},	{
		"title": "Flickr",
		"url": "http://api.flickr.com/services/feeds/photos_public.gne?id=42931745@N00&lang=en-us&format=rss_200"
	}, {
		"title": "Twitter",
		"url": "http://twitter.com/statuses/user_timeline/637763.rss"
	}];
	LifeAggregator.init(myFeeds);
}


