var social = {
	base_url			: "/api/social",
	xhr					: null,
	callback			: null,
	complexity			: 8,
	data				: [],
	
	init : function(fn) {
		if(fn) {
			social.callback = fn;
		}
	},
	
	/**
	* Request social
	*
	*	@param	t	Twitter settings user[], hashtag[], search[]
	*	@param	fb	Facebook settings id, search[]
	*/
	load : function(t, fb) {
		// Clear any existing connections and reset status variables
		social.cancel();
		
		// Search twitter
		var twitter = "";
		var query = [];
		
		for(var i = 0; i < t.length; i++) {
			if(t[i].charAt(0) == "@") {
				query.push("from:" + t[i].substr(1));
			} else {
				query.push(t[i]);
			}
		}
		
		// The Twitter query is too complex for the Twitter Search API, simplify the results automatically
		if(query.length > social.complexity) {
			query = query.slice(0, social.complexity)
		}
		
		// Search facebook
		var facebook = "";
		
		if(fb.length > 0) {
			facebook += fb[0];
		}
		
		xhr = $.ajax({
			url: social.base_url,
			data : {
				twitter: query.join(" "),
				facebook: facebook
			},
			type: "POST",
			dataType: "json",
			success: social.parseResults
		});
	},
	
	/**
	* Aborts any active ajax calls
	*/
	cancel : function() {
		if(social.xhr != null) {
			social.xhr.abort();
		}
		
		social.data = [];
	},
	
	compare : function(a,b) {
		return b.date - a.date;
	},
	
	parseResults : function(data) {
		if(data) {
			var count = 0;
			social.data = [];
			
			for(var i = 0; i < data.twitter.length; i++) {
				var item = {};
				item.type = "twitter";
				item.date = data.twitter[i].created_at;
				item.message = data.twitter[i].text;
				item.url = data.twitter[i].tweet_url;
				
				social.data.push(item);
			}
			
			for(var i = 0; i < data.facebook.length; i++) {
				var id = data.facebook[i].id.split("_");
				var item = {};
				item.type = "facebook";
				item.date = data.facebook[i].created;
				item.message = data.facebook[i].message;
				item.url = "http://www.facebook.com/"+id[0]+"/posts/"+id[1];
				
				social.data.push(item);
			}
			
			// Newest first
			social.data.sort(social.compare);
		
			// We're all done here
			if(social.callback) {
				social.callback();
			}
		} else {
			social.data.twitter = [];
			social.data.facebook = [];
		
			// We're all done here
			if(social.callback) {
				social.callback();
			}
		}
	}
}
