//-------------------------------
// Class
//-------------------------------

function RecentActivityFeed() {
	
	var _self = this;

	//-------------------------------
	// Constants
	//-------------------------------
	
	_self.XML_PATHS	= 	[	

							{"type" : "blog", "image" : "http://cdn.iamatrailblazersfan.com/avatars/barrett_88.jpg", "source" : "Mike Barrett's Blog", "com" : "0", "url" : "http://feeds.feedburner.com/MikeBarrettsBlog", "site" : "http://www.iamatrailblazersfan.com/BroadcasterProfile/BroadcasterBlog/tabid/188/BroadcasterID/2/Default.aspx"}, 
							{"type" : "blog", "image" : "http://cdn.iamatrailblazersfan.com/avatars/UserID0000574_Square_88-770.png", "source" : "Casey Holdahl's Center Court Blog", "com" : "1", "url" : "http://feeds.feedburner.com/centercourtiama", "site" : "http://www.iamatrailblazersfan.com/BroadcasterProfile/BroadcasterBlog/tabid/188/BroadcasterID/4/Default.aspx"},
							{"type" : "news", "image" : "http://www.nba.com/blazers/media/tbr2-feed-tblogo.gif", "source" : "News", "com" : "2", "url" : "http://feeds.feedburner.com/IamatrailblazersfancomNewsFeed", "site" : "http://www.iamatrailblazersfan.com/Home/News/tabid/71/Default.aspx"},
							{"type" : "twitter", "image" : "http://www.nba.com/blazers/media/tbr2-feed-twitter.png", "source" : "Twitter", "com" : "3", "url" : "http://twitter.com/statuses/user_timeline/6395222.rss", "site" : "http://twitter.com/pdxtrailblazers"},
							{"type" : "messageboards", "image" : "http://www.nba.com/blazers/media/tbr2-feed-iama.png", "source" : "Trail Blazers Talk: Official Message Boards", "com" : "4", "url" : "http://feeds.feedburner.com/TrailBazersTalk", "site" : "http://www.iamatrailblazersfan.com/MessageBoardRoot/tabid/158/aff/488/afv/topicsview/Default.aspx"}, 
							{"type" : "blog", "image" : "http://cdn.iamatrailblazersfan.com/avatars/userID000519_88.jpg", "source" : "Cristi's Lifestream", "com" : "5", "url" : "http://www.iamatrailblazersfan.com/Blog.rss?BlogId=460", "site" : "http://www.iamatrailblazersfan.com/IAmTrailBlazersFanDancerHome/DancerBlog/tabid/187/DancerID/9/Default.aspx"}


						];
	
	_self.TIME = 25000;
	
	//-------------------------------
	// Properties
	//-------------------------------
	
	var _recentActivityDataModel;
	var _recentActivityController;
	
	var _feedArray = new Array();
	var _staticArray = new Array();
	var _secondaryArray = new Array();
	var _updateArray;
	
	//-------------------------------
	// Constructor
	//-------------------------------
	
	$j(function() {
		_recentActivityDataModel = new RecentActivityDataModel();
		_recentActivityController = new RecentActivityController();
		
		$j(_recentActivityDataModel).bind(_recentActivityDataModel.DATA_COMPLETE, onFeedDataComplete);
		
		$j(_recentActivityController).bind(_recentActivityController.REFRESH_FEED, onFeedRefresh);
		init(0);
	});
	
	//-------------------------------
	// Public Methods
	//-------------------------------
	
	//-------------------------------
	// Private Methods
	//-------------------------------
	
	function init(index) {
		_recentActivityDataModel.loadData(_self.XML_PATHS[index]);
	}
	
	function sortDate(a, b) {
		//return new Date($j(b).find("pubDate").text()) - new Date($j(a).find("pubDate").text());
		return new Date($j(b.content).find("pubDate").text()) - new Date($j(a.content).find("pubDate").text());
	}
	
	function sortDate2(a, b) {
		//return new Date($j(b).find("pubDate").text()) - new Date($j(a).find("pubDate").text());
		return new Date($j(a.content).find("pubDate").text()) - new Date($j(b.content).find("pubDate").text());
	}
	
	Array.prototype.unique = function() {
		var a = [];
		var l = this.length;
		for(var i = 0; i < l; i++) {
		  for(var j = i + 1; j < l; j++) {
		    if ($j(this[i].content).find("title").text() == $j(this[j].content).find("title").text())
		      j = ++i;
		  }
		  a.push(this[i]);
		}
		return a;
	};
	
	//-------------------------------
	// Listeners
	//-------------------------------
	
	function onFeedDataComplete(event, data, path, index) {
		var tmpArr = [];
		
		$j(data).find("item").each(function(i, item) {
			var data = new Object();
			data.content = item;
			data.source = path.source;
			data.type = path.type;
			data.image = path.image;
			data.site = path.site;
			data.com = path.com;
			
			tmpArr.push(data);
			
			if(i == 6) return false;
		});
		
		$j(tmpArr).sort(sortDate).each(function(i, data) {
			if(i < ((path.type == "news") ? 2 : 1)) _staticArray.push(data);
			else _secondaryArray.push(data);
		});

		if(index < _self.XML_PATHS.length) init(index);
		else if(index == _self.XML_PATHS.length) {
			_staticArray.sort(sortDate);
			_secondaryArray.sort(sortDate);
			_feedArray = _staticArray.concat(_secondaryArray);
		
			_recentActivityController.init(_feedArray);
			_recentActivityController.controls(_self.XML_PATHS);
			
			$j(_recentActivityDataModel).bind(_recentActivityDataModel.DATA_COMPLETE, onFeedDataUpdate);
			$j(_recentActivityDataModel).unbind(_recentActivityDataModel.DATA_COMPLETE, onFeedDataComplete);
			
			setTimeout(function() { onFeedRefresh() }, _self.TIME);
		}
	}
	
	function onFeedDataUpdate(event, data, path, index) {
		var tmpArr = [];
		var updateArr = [];
		var tmp;
	
		$j(data).find("item").each(function(i, item) {
			var data = new Object();
			data.content = item;
			data.source = path.source;
			data.type = path.type;
			data.image = path.image;
			data.site = path.site;
			data.com = path.com;
			
			$j(_feedArray).each(function(o, object) {
				if(data.com == object.com) {
					tmp = object;
					return false;
				}
			});
			
			updateArr.push(data);

			if(i == 6) return false;
		});
		
		$j(updateArr).sort(sortDate).each(function(i, data) {
			if(Date.parse($j(data.content).find("pubDate").text()) > Date.parse($j(tmp.content).find("pubDate").text())) {
				//$j("body").append($j(data.content).find("title").text() + " | " + $j(tmp.content).find("title").text() + "<br/>");
				tmpArr.push(data);
			}
		});
		
		$j(tmpArr.reverse()).each(function(i, item) {
			_feedArray.splice(_feedArray.length - 1, 1);
			_feedArray.splice(0, 0, item);
			_recentActivityController.update(item);
		});

		
		if(index < _self.XML_PATHS.length) init(index);
		else if(index == _self.XML_PATHS.length) setTimeout(function() { onFeedRefresh() }, _self.TIME);
	}
	
	function onFeedRefresh() {
		_updateArray = new Array();
		_recentActivityDataModel.reset();
		init(0);
	}

}
