// settings
var api_key = '5be3b54e7b2aecb250685530b01d7f7e';
//var api_key = 'd1af3acf4ad6338e4b1ec65a0761b9de';
var flashObj = 'flash';
var debugId = 'debug';
var path_to_xd = 'xd_receiver.htm';

var is_initialized = false;

FB.init(api_key, path_to_xd);

/*
 * Ensure Facebook app is initialized and call callback afterward
 *
 */
function ensure_init(callback) {
    if(!api_key) {
            alert("api_key not set");
    }

    if(is_initialized) {
		trace("We're already initialized. Just call back.");
		callback();
    } else {
    	trace("Loading features...");
		FB.ensureInit(function() {
			FB.Facebook.get_sessionState().waitUntilReady(function() {
				trace("call is ready()");
				session_is_ready();
		      });
			FB.Connect.requireSession(function() {}, true);
		});
    }
}


/**
 * User login. Shows login screen 
 */
function login() {
		
	ensure_init(function() {
		trace("getting session state.");
		FB.Facebook.get_sessionState().waitUntilReady(function() {
			if(FB.Facebook._isloggedIn) {
				trace("is logged in");
				session_is_ready();
			} else {
				trace("not logged in");
				FB.Connect.requireSession(function() {}, true);
			}
		});
		
	});
}

/**
 * Logout from FB Connect and inform flash movie
 */
function logout() {
	FB.Connect.logout(function() {
		loggedOut();
	});
}

/**
 * determines if the session is ready informs the flash movie
 */
function session_is_ready() {
	trace("session_is_ready()");
	
	if(!FB.Facebook.apiClient.get_session())  
	        return;
	
	user = FB.Facebook.apiClient.get_session().uid;
	session_key = FB.Facebook.apiClient.get_session().session_key;
	secret = FB.Facebook.apiClient.get_session().secret;
	
	trace("trigger loggedIn("+ user +", "+ session_key +", "+ secret +")");
	loggedIn(user, session_key, secret);
}

/*********************** HELPERS *****************************/

/**
 * debug function. renders debug information to debug container with id="debug" and/or console
 */
function trace(msg) {
	if(document.getElementById(debugId)) document.getElementById(debugId).innerHTML += msg + "<br/>";
}


/*********************** FlashBridge *****************************/

function loggedIn(user, session_key, secret) {
	document.getElementById(flashObj).loggedIn(
		user, 
		session_key,
		secret
	);
}

function loggedOut() {
	document.getElementById(flashObj).loggedOut();
}

function callStreamPublish(uid, subject, message, image) {
	if(image == null) image = 'http://www.mach-dir-freude-auf.de/assets/img/fb.jpg';
	var attachment = {
		'name': subject, 
		'description': message, 
		'media': [{
			'type':'image',
			'src':image,
			'href':'http://www.mach-dir-freude-auf.de/'
		}]
	};
	var action_links = [{'text':'Dreh deine Laune auf', 'href':'http://apps.facebook.com/machdirfreudeauf'}]; 
	FB.Connect.streamPublish(null, attachment, action_links);
}
