var userID;
var userInfo;
var friendInfo;
var flashObj;

//STAGING OR PROD FB
if (document.location.href.indexOf("tedperezexternal") == -1){
	var api_key = "c5eb8978bd06565f96d7c85dd15c3f76"; //LIVE
}else{
	var api_key = "cb81be598b1208b5e7ee97edf9d3329a"; //DEV FB APP
}
/*----------------------------------------------------------------------------
CORE FUNCTIONS
----------------------------------------------------------------------------*/
function traceJS(msgIn){
	var fb_status = document.getElementById('fb_status');  	
	if (fb_status){
		fb_status.innerHTML += "<br />" + msgIn;
	}
}
/*----------------------------------------------------------------------------
FACEBOOK CONNECT HOOKUP
----------------------------------------------------------------------------*/
function loginConnect(){
	traceJS("Login FB Connect...");
	FB.Connect.requireSession();
	checkConnect();
}
function logoutConnect(){
	FB.Connect.logout(onSendLogoutStatus);
}
function checkConnect(){
	//FACEBOOK WILL WAIT UNTIL THERE IS A CONNECTION BEFORE RUNNING FUNCTION
	traceJS("Check FB Connect...");
	
	//Set flashObj for later use
	flashObj = (navigator.appName.indexOf ("Microsoft") !=-1)?window["container"]:document["container"];
	
	FB_RequireFeatures(["XFBML"], function()
	{
	  FB.Facebook.init(api_key, "xd_receiver.htm");	  
	  FB.Facebook.get_sessionState().waitUntilReady(function()	  {
		userID = FB.Facebook.apiClient.get_session().uid;		
		if (!userID) {
			traceJS("USER NOT VALID!");
		}else{
			getProfile();
		}
	  });
	});
}
/*----------------------------------------------------------------------------
FACEBOOK ACCESS METHODS
----------------------------------------------------------------------------*/
function getProfile(){
	//Get the user's info	
	traceJS("Loading profile..." + userID);
		
	//FB.Facebook.apiClient.users_getInfo(userID,'first_name,last_name,name,pic_square,is_app_user',function(result, ex) {
	FB.Facebook.apiClient.users_getInfo(userID,'first_name,last_name,current_location,birthday_date,pic_square,pic_big,sex',onGetProfile);     	
}
function getFriends(){
	traceJS("Loading friends...");
	
	//Get the friend's and their info        
	//FB.Facebook.apiClient.friends_get(null, function(result, ex) {
	
	FB.Facebook.apiClient.friends_getAppUsers(function(result, ex) {		
		var ids = result.slice();		
		FB.Facebook.apiClient.users_getInfo(ids,'name,pic_square,is_app_user',onGetFriends);
	});    	
}
function streamPost(user_message,attachment,action_links,target_id,user_message_prompt,auto_publish,actor_id) {
	traceJS("Prompt stream post...");	
	
	//Must have setTimeout for IE Browser bug
	setTimeout(function(){	
		FB.Connect.streamPublish(
			user_message, 
			attachment, 
			action_links,
			target_id,
			user_message_prompt,
			onStreamPost,
			auto_publish,
			actor_id
		);		
	}, 500); 	
}
/*------------------------------------------------------------------------------
CALLBACKS
------------------------------------------------------------------------------*/
function onGetProfile(result, ex){   
	traceJS("Finished loading profile!");	
	if (result != null) {
		userInfo = result.slice();	
	}else{
		userInfo = null;
	}
	//Send back to Flash
	flashObj.returnProfile(userInfo);
	
	//Trigger getting friends
	getFriends();
}
function onGetFriends(result,ex){
	traceJS("Finished loading friends!");
	friendInfo = result.slice();	
	flashObj.returnFriends(friendInfo);	
}
function onSendLogoutStatus(){
	traceJS("Finished logout");	
	flashObj.returnLogoutStatus(true); 	
}
function onStreamPost (post_id, ex) {
	if (post_id) { 
		traceJS("STREAM POST FINISHED:" + post_id);
	} 
}