var callback = "";
var flashcontent = "";
var apiKey = "";
var receiver = "";
var logged = false;
var permissionStream = false;
var permissionOffline = false;
var getPermissions = false;

//START
function Start(keyValue,flashValue,receiverValue) {
	apiKey = keyValue;
	flashcontent = flashValue;
	receiver = receiverValue;
	FB.init(apiKey, receiver);
}

//CHECK LOGIN
function CheckLogin(callbackValue)
{
    FB.Connect.IfUserConnected(function(){FlashCallBack(callbackValue, true);},function(){FlashCallBack(callbackValue, false);});
}

//LOGIN
function Login(permissionsValue, callbackValue) {
	callback = callbackValue;
	getPermissions = permissionsValue;
	FB.Connect.requireSession(LoginOk);
}
function LoginOk(){
	logged = true;
	if(getPermissions)
	{
		FB.Facebook.apiClient.users_hasAppPermission("publish_stream",GetPublish);
	}
	else
	{
		FBComplete();
	}
}


//GRANT STREAM_PUBLISH PERMISSION
function GetPublish(result) {
	if(result == 0){
		FB.Connect.showPermissionDialog("publish_stream",GetPublishOk);
	}else{
		permissionStream = true;
		FB.Facebook.apiClient.users_hasAppPermission("offline_access",GetOffline);
	}
}
function GetPublishOk(result) {
	if (result == null || result == ""){
		permissionStream = false;
		FBComplete();
	}else{
		permissionStream = true;
		FB.Facebook.apiClient.users_hasAppPermission("offline_access",GetOffline);
	}
}


//GRANT OFFLINE_ACCESS PERMISSION
function GetOffline(result) {
	if(result == 0){
		FB.Connect.showPermissionDialog("offline_access", GetOfflineOk);
	}else{
		permissionOffline = true;	
		FBComplete();
	}
}
function GetOfflineOk(result) {
	if (result == null || result == ""){
		permissionOffline = false;
	}else{
		permissionOffline = true;	
	}
	FBComplete();
}


//FLASH CALLBACK
function FlashCallBack(callbackValue, param) {
	document.getElementById(flashcontent)[callbackValue](param);		
}
function FBComplete() {
	var object = FB.Facebook.apiClient.get_session();
	var session_key = "0";
	if(permissionOffline)
	{
		session_key = object["session_key"];
	}
	document.getElementById(flashcontent)[callback](logged,FB.Facebook.apiClient.get_session().uid,permissionStream,permissionOffline,session_key);		
}

