var oFlash = null;
var sessionData = null;

trace("tu facebookconnectobject.js");

//Initialize Facebook
function fbInit(pAsSwfName,pApi_key,pReceiver){
trace("fbInit pAsSwfName:"+pAsSwfName+" pApi_key:"+pApi_key+" pReceiver:"+pReceiver+" oFlash:"+oFlash);
	oFlash = swfobject.getObjectById(pAsSwfName);
	FB.init(pApi_key, pReceiver);
			
	FB.Bootstrap.requireFeatures(["Connect"], function() {
		FB.Connect.requireSession(function(exception) {
			//Pull out the current session data from Facebook
			sessionData = FB.Facebook.apiClient.get_session();
			var returnObj = {
				secret: sessionData.secret,
				session_key: sessionData.session_key
			};

			flashDispatcher("onLoggedIn", returnObj);				
		});
	});
}

function checkConnection(pAsSwfName,pApi_key,pReceiver){
trace("checkConnection pAsSwfName:"+pAsSwfName+" pApi_key:"+pApi_key+" pReceiver:"+pReceiver+" oFlash:"+oFlash);
	oFlash = swfobject.getObjectById(pAsSwfName);
	FB.init(pApi_key, pReceiver);

	FB.Bootstrap.requireFeatures(["Connect"], function() {
		FB.Connect.get_status().waitUntilReady(function(status) {
			switch(status) {
				case FB.ConnectState.connected:
					trace("checkConnection	ConnectState.connected");
					FB.Connect.requireSession(function(exception) {
						sessionData = FB.Facebook.apiClient.get_session();
						var returnObj = {
							status: "connected",
							secret: sessionData.secret,
							session_key: sessionData.session_key
						};

						flashDispatcher("onCheckConnection", returnObj);				
					});
					break;
					
				case FB.ConnectState.appNotAuthorized:
					trace("checkConnection	ConnectState.appNotAuthorized");
					var returnObj = {
						status: "appNotAuthorized"
					};
					flashDispatcher("onCheckConnection", returnObj);				
					break;
					
				case FB.ConnectState.userNotLoggedIn:
					trace("checkConnection	ConnectState.userNotLoggedIn");
					var returnObj = {
						status: "userNotLoggedIn"
					};
					flashDispatcher("onCheckConnection", returnObj);				
					break;
			}
		});
	});
}

function grantExtendedPermission(){
trace("grantExtendedPermission");
	FB.Connect.showPermissionDialog("publish_stream", function(perms) {
		if (perms) {
			var returnObj = {
				permission: "true"
			};
			flashDispatcher("onGrantExtendedPermissionJS", returnObj);				
		} else {
			var returnObj = {
				permission: "false"
			};
			flashDispatcher("onGrantExtendedPermissionJS", returnObj);				
		}
	});
}


function publishPost(message,  attachment,  action_links,  target_id, user_message_prompt){
trace("publishPost message:"+message+" attachment:"+attachment+" action_links:"+action_links+" target_id:"+target_id);

//	FB.Connect.streamPublish('', null, null, 4);
//	FB.Connect.streamPublish('', attachment, action_links, target_id);
	FB.Connect.streamPublish(message, attachment, action_links, target_id, user_message_prompt, function(post_id, exception) {
		if (post_id) {
			var returnObj = {
				published: "true"
			};
			flashDispatcher("onPublished", returnObj);				
		} else {
			var returnObj = {
				published: "false"
			};
			flashDispatcher("onPublished", returnObj);				
		}
	});
}

function flashDispatcher(func)
{
trace("FBFlashBridgeFlashDispatcher");
	if(oFlash)
	{		
		if(arguments.length > 1)
			oFlash[func](Array.prototype.slice.call(arguments).slice(1)[0]);
		else
			oFlash[func]();
	}
}

function trace( msg ){
  if( typeof( jsTrace ) != 'undefined' ){
    jsTrace.send( msg );
  }
}

