var is_initialized = false;

function ensure_init(callback) {
  if(!window.api_key) {
    window.alert("api_key is not set");
  }

  if(window.is_initialized) {
	trace("already initialized");
    callback();
  } else {
	  trace("Loading...");
      FB_RequireFeatures(["XFBML", "CanvasUtil"], function() {
		  FB.Facebook.init(api_key, "xd_receiver.htm");
		  window.is_initialized = true;
		  trace("FB loaded.");
		  callback();
      });
  }
}

function login() {
	pageTracker._trackEvent('Facebook', 'Login');
	replaceSwfWithEmptyDiv("gameContent");	
	document.getElementById("game").style.visibility = "hidden";
	document.getElementById("gameContent").style.visibility = "hidden";
	
	var actionHint = false;
	trace("BrowserDetect: "+BrowserDetect.browser);

	ensure_init(function() {
		trace("getting session state.");
		FB.Facebook.get_sessionWaitable().waitUntilReady(function() {
			session_is_ready();
		});
		trace("require session");
		FB.Connect.requireSession();
	});
	
}

var user
function session_is_ready() {
	trace("session_is_ready");
	user = FB.Facebook.apiClient.get_session() ? FB.Facebook.apiClient.get_session().uid : null;
	trace("UID: " + user);
	if (!user) {
		return;
	}  
	// let flash know we're logged in
	showLoader(true);
	loggedIn(user);
}

function logout() {
	FB.Connect.logout(function() {
	  // let flash know we're logged out
	  loggedOut();
	});
}

function facebook_onload() {
  FB_RequireFeatures(["XFBML", "CanvasUtil"], function() {
	  FB.Facebook.init(api_key, "xd_receiver.htm");
	  window.is_initialized = true;
	  trace("FB loaded.");
  });
}

function getData(uid) {
	var sequencer = new FB.BatchSequencer();
	var fields = new Array("pic_square_with_logo", "pic_square", "first_name", "last_name", "affiliations");
	
	var pendingFriendsResult = FB.Facebook.apiClient.friends_get(null, sequencer);
	var pendingProfileResult = FB.Facebook.apiClient.users_getInfo([uid], fields, sequencer);
	
	sequencer.execute(function() {
		gotData(pendingProfileResult.result[0], pendingFriendsResult.result);
	});
}
function getFriendData(uid) {
	var sequencer = new FB.BatchSequencer();
	var fields = new Array("pic_square_with_logo", "pic_square", "first_name", "last_name");
	
	var pendingProfileResult = FB.Facebook.apiClient.users_getInfo([uid], fields, sequencer);
	
	sequencer.execute(function() {
		gotFriendData(pendingProfileResult.result[0]);
		//trace("return");
		//return pendingProfileResult.result[0];
	});
}
function getFriendImage(uid) {
	var sequencer = new FB.BatchSequencer();
	var fields = new Array("pic_square_with_logo", "pic_square");
	
	var pendingProfileResult = FB.Facebook.apiClient.users_getInfo([uid], fields, sequencer);
	
	sequencer.execute(function() {
		gotFriendImage(pendingProfileResult.result[0]);
	   return pendingProfileResult.result[0];
	});
}

//---------------------------------------------------------------------------------------------------------------------
// Functions to send info to Facebook page
var pageURL = "http://www.collapse-games.com";

function taunt(uids) {
	pageTracker._trackEvent('Facebook', 'Taunt');
	var str = "collapse them back!";
	var txt = "has collapsed you, " + "<a href='"+pageURL+"'>"+str+"</a>";
	var temp = new Array();
	var sequencer = new FB.BatchSequencer();
	var pendingResult = FB.Facebook.apiClient.notifications_send(uids, txt, sequencer);
	
	sequencer.execute(function() {
    	tauntCallback(pendingResult.result);
  	});	
}
function tauntCallback(res) {
	trace("taunt success: " + res);
}

function brag(str) {
	pageTracker._trackEvent('Facebook', 'Brag');
	var txt = "You should check out this website, I just collapsed my friends on it!";
	var actionLink = [{ "text": "Go to site!", "href": pageURL}];
	
	var attachment = {'description':txt, 'media': [{'type':'image',									
													'src':'http://www.collapse-games.com/img/logo.jpg',
													'href':pageURL}]								
	};


	
	FB.Connect.streamPublish("", attachment, actionLink, user, "Would you like to let your friends know?", null, true);
}
//--------------------------------------------------------------------------------------------------------------------


function trace(msg) {
	var div = document.getElementById('debug');
	if(div){
		div.innerHTML += msg + "<br/>";
	}
}

