var isInitialized = false;

function ensureInit(callback) {
	if(!apiKey) {
		//console.error("apiKey not set");
	}
	if(isInitialized) {
		//console.log("already initialized > callback");
		callback();
	}
	else {
		//console.log("loading features...");
		FB_RequireFeatures(["XFBML", "CanvasUtil"], function() {
			FB.Facebook.init(apiKey, "xd_receiver.php", { permsToRequestOnConnect : "publish_stream" });
			isInitialized = true;
			//console.log("Features are loaded...calling back.");
			callback();
    	});
    }
}

function login(callback) {
	//console.log("callback: " + callback);
	ensureInit(function() {
		//console.log("getting session state.");
		FB.Facebook.get_sessionState().waitUntilReady(function() {
			sessionIsReady();
		});
		FB.Connect.requireSession(callback);
    });
}

function logout() {
	FB.Connect.logout(function() {
		callFlashFunction('loggedOut');
	});
}

function sessionIsReady() {
	var user = FB.Facebook.apiClient.get_session() ? FB.Facebook.apiClient.get_session().uid : null;
	//console.log('user=' + user);
	if (!user) {
    	return;
    }
    callFlashFunction('loggedIn');
}

function callFlashFunction(handler) {
	document['mainFlash'][handler]();
}

// Hiding the Share Action Bar
if (top.location != location) {
	top.location.href = document.location.href;
}
