var bike_gods_page_id = '319317366263';
var can_post_to_bg = false;
var logged_in_uid = 0;
var pending_message = '';
var pending_attachment = null;
var pending_action = null;
var page_admin_cb = null;

function clone(obj) {
	if(obj == null || typeof(obj) != 'object')
		return obj;

	var temp = new Object();
	for(var key in obj)
		temp[key] = clone(obj[key]);
	return temp;
}

function got_page_admin(result, ex) {
	for (i = 0; i < result.length; i++) {
		if (result[i].page_id == bike_gods_page_id) {
			can_post_to_bg = true;
		}
	}
	if (page_admin_cb) {
		page_admin_cb();
	page_admin_cb = null;
	}
}

function do_fb_post_you() {
	var this_attachment = clone(pending_attachment);
//	for (var key in pending_attachment) {
//		this_attachment[key] = pending_attachment[key];
//	}
	this_attachment.name = 'BIKE GODS: ' + this_attachment.name;
	FB.Connect.streamPublish(pending_message, this_attachment, pending_action);
	pending_message = '';
	pending_attachment = null;
	pending_action = null;
}

function do_fb_post_bg() {
	if (can_post_to_bg) FB.Connect.streamPublish(pending_message, pending_attachment, pending_action, '', '', do_fb_post_you, false, bike_gods_page_id);
}

function do_fb_post() {
	if (logged_in_uid == 0) {
		page_admin_cb = do_fb_post;
		logged_in_fb(FB.Connect.get_loggedInUser());
		return false;
	}
	if (can_post_to_bg) {
		do_fb_post_bg();
	} else {
		do_fb_post_you();
	}
	return false;
}

function post_to_fb(message, attachment, action) {
	pending_message = message;
	pending_attachment = attachment;
	pending_action = action;
	if (logged_in_uid == 0) {
		FB.Connect.requireSession(do_fb_post, logged_out_fb, true);
	} else {
		return do_fb_post();
	}
	return false;
}

function logged_in_fb(uid) {
	if (uid == logged_in_uid) return;

	var user_box = document.getElementById("fb_user");
	// add in some XFBML. note that we set useyou=false so it doesn't display "you"
	user_box.innerHTML =
		"<span>"
		+ "<fb:profile-pic uid=loggedinuser facebook-logo=true></fb:profile-pic>"
		+ "<br>Welcome from Facebook, <fb:name uid=loggedinuser useyou=false></fb:name>"
		+ "</span>";

	var fb = document.getElementById("fb_header");
	fb.innerHTML = 'Facebook<br><a href="" onclick="FB.Connect.logout(logged_out_fb); return false;">Logout</a>';

	if (uid != logged_in_uid) {
		logged_in_uid = uid;
		var api = FB.Facebook.apiClient;
		api.fql_query("SELECT page_id FROM page_admin WHERE uid = " + uid, got_page_admin);
	}

	// because this is XFBML, we need to tell Facebook to re-process the document 
	FB.XFBML.Host.parseDomTree();
}

function logged_out_fb() {
	logged_in_uid = 0;
	can_post_to_bg = false;
	var user_box = document.getElementById("fb_user");
	pending_message = '';
	pending_attachment = null;
	pending_action = null;
	user_box.innerHTML = '';
//		'<fb:login-button onlogin="logged_in_fb();"></fb:login-button>';
	var fb = document.getElementById("fb_header");
	fb.innerHTML = 'Facebook';
	FB.XFBML.Host.parseDomTree();
}
