//Initialize Facebook
function fbInit(pAsSwfName,pApi_key,pReceiver){
	FB.init(pApi_key,pReceiver);
	FB.ensureInit(function() {
		FB.Connect.get_status().waitUntilReady(function(status) {
			flashCallBack(pAsSwfName, "facebookReady");
		})
	})
}

//JavaScript Connect methods
function login(swf){
	FB.Connect.requireSession(function() { onLoginHandler(swf); }, function() { onCancelHandler(swf) }, true);
}

function getSession(keyName){
	return (FB.Facebook.get_sessionWaitable().result[keyName]);
}

function onCancelHandler(swf) {
	flashCallBack(swf, 'onCancelLogin')
}

//Event Handlers
function onLoginHandler(swf){
	flashCallBack(swf, "onLogIn");
}

//Method to dispatch an Event to Flash
function flashCallBack ( swf, func ) {
	if( arguments.length > 2 ){
		document.getElementById(swf)[func]( Array.prototype.slice.call(arguments).slice(2)[0]);
	} else {
		document.getElementById(swf)[func]();
	}
}

function promptForPublishAccess(swf) {
	FB.Connect.showPermissionDialog("publish_stream", function(perms) {
		if (perms) {
			flashCallBack(swf, "onGrantAccess");
		} else {
			flashCallBack(swf, "onDenyAccess");
		}
	})
}