Pop.Users = function() {
	var me = {};
	me.requireFacebookSession = function(callback) {
		FB_RequireFeatures(["Api", "Connect", "XFBML"], function() {
			FB.XFBML.Host.autoParseDomTree = false;
			FB.init(
				Pop.Users.facebookApiKey, 
				Pop.info.baseUrl+"/plugins/users/facebook/xd_receiver.htm"
			);
			FB.Connect.requireSession(function(exception) {
				var api = FB.Facebook.apiClient;
				callback(api, api.get_session().uid, api.get_session());
			});
		});
	};
	return me;
}();

Pop.Users.getFriends = function(includeMe, fields, onDone) {

		// you can now require login and do FQL queries:

	if (!fields || fields == '*') {
		fields = "uid, first_name, last_name, pic_square";
	}
	Pop.Users.requireFacebookSession(function (api, uid, session) {
		var sequencer = new FB.BatchSequencer();
		var pendingAlbumsResult = api.fql_query("SELECT aid, owner FROM album WHERE owner = " + uid, sequencer);
		var pendingFriendsResult = api.fql_query(
			"SELECT " + fields + " FROM user WHERE uid IN ("
			+ "SELECT uid2 FROM friend WHERE uid1 = " + uid
			+ ")",
			sequencer
		);
		var pendingMyResult = api.fql_query(
			"SELECT " + fields + " FROM user WHERE uid = " + uid,
			sequencer
		);
		sequencer.execute(function() {
			var friends = pendingFriendsResult.result;
			var my = pendingMyResult.result;
			var albums = pendingAlbumsResult.result;
			var friends_div = $("<div class='friends' />");
			var photos_div = $("<div class='photos' />");
			friends.sort(Pop.Users.sortByFirstName);
			if (includeMe) {
				friends.unshift(my[0]);
			}

			onDone(friends);
		});
	});
}

Pop.Users.sortByFirstName = function (a, b) {
    var x = a.first_name.toLowerCase() + ' ' + a.last_name.toLowerCase();
    var y = b.first_name.toLowerCase() + ' ' + b.last_name.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

Pop.Users.sortByName = function (a, b) {
    var x = a.name.toLowerCase();
	var y = b.name.toLowerCase();
	return ((x < y) ? -1 : (x > y) ? 1 : 0)
}


/**
 * Pop.Facebook
 */

if (!('Facebook' in Pop)) {
	Pop.Facebook = {};
}

Pop.Facebook.stuff = {}; // todo: move it all to facebook




