var api_key 		= 'be289b9d82c38015e221fc5c17ce347e';
var dev_api_key 	= '68b7733633638865e5b9b481cab68bd0';
var as_swf_name 	= "flashContent";
var channel_path 	= '/script/xd_receiver.htm';
var dev_channel_path = '/canvas/script/xd_receiver.htm';
var uid;
var session_key;
var session_secret;
var connected;
var logging_in;

//Local Variable with Flash Content id. default = flashcontent

// workaround for getting to know if user clicked cancel or close "X"
var fb_cancel_workaround_count_frames_before = frames.length;
var fb_cancel_workaround_timer;

//Initialize Facebook
function fbInit(pAsSwfName,pApi_key,pReceiver){
	as_swf_name = pAsSwfName;
	FB.init(pApi_key, pReceiver);

}


function getUserInfo() {
	FB.Facebook.get_sessionState().waitUntilReady(function() {
		FB.Facebook.apiClient.fql_query('SELECT first_name,last_name,pic_small,pic_big,pic_square,pic,timezone,religion,birthday,birthday_date,sex,relationship_status,political,activities,interests,music,tv,movies,books,quotes,about_me,status,online_presence,locale,proxied_email,profile_url,pic_small_with_logo,pic_big_with_logo,pic_square_with_logo,pic_with_logo,allowed_restrictions,verified,profile_blurb,website FROM user WHERE uid='+FB.Facebook.apiClient._session.uid, function(result,ex) {
			getUserInfo_COMPLETE(result, ex);
		});
	})
}

function getUserInfo_COMPLETE(result,ex) {
	flashCallBack("onGetUserInfo", result);
}


function getAlbums() {
	FB.Facebook.get_sessionState().waitUntilReady(function() {
		FB.Facebook.apiClient.photos_getAlbums(uid, Array(), function(result,ex) {
			getAlbums_COMPLETE(result, ex);
		})
	});
}


function getAlbums_COMPLETE(result, ex) {
	flashCallBack("onAlbums", result);
}
var userAlbumPhotos;

function getUserAlbumPhotos() {
	FB.Facebook.get_sessionState().waitUntilReady(function() {
		FB.Facebook.apiClient.fql_query('SELECT src_big FROM photo WHERE aid IN (SELECT aid FROM album WHERE owner="'+FB.Facebook.apiClient._session.uid+'") ORDER BY rand() LIMIT 0,13', function(result,ex) {
			getPhotosByAlbum_COMPLETE(result, ex);
		});
	})
}

function getPhotosByAlbum_COMPLETE(result,ex) {
	
	if(result.length == undefined){
		userAlbumPhotos = new Array();
	} else {
		userAlbumPhotos = result;
	}
	
	getUserTaggedPhotos();
}

function getUserTaggedPhotos() {
	FB.Facebook.get_sessionState().waitUntilReady(function() {
		FB.Facebook.apiClient.fql_query("SELECT src_big FROM photo WHERE pid IN (SELECT pid FROM photo_tag WHERE subject="+FB.Facebook.apiClient._session.uid+") ORDER BY rand() LIMIT 0,12", function(result, ex) {
			getUserTaggedPhotos_COMPLETE(result, ex);
		});
	})
}

function getUserTaggedPhotos_COMPLETE(result, ex) {
	
	if(result.length == undefined){
		flashCallBack("onUserAlbumPhotos", userAlbumPhotos);
		
	} else {
		userAlbumPhotos = userAlbumPhotos.concat(result);
		flashCallBack("onUserAlbumPhotos", userAlbumPhotos);
	}

}


//JavaScript Connect methods
function login(){
	
	if (FB.Connect.get_status().result == FB.ConnectState.connected) {
		//user has auth'd app. revoke auth.
		FB.Facebook.apiClient.revokeAuthorization(FB.Connect.get_loggedInUser(), function() {
			FB.Connect.forceSessionRefresh();
			setTimeout('login()', 500);		
		});
		
	} else {
		//user is not authd.
		fb_cancel_workaround_count_frames_before = frames.length;
		FB.Connect.requireSession(onLoginHandler);
		fb_cancel_workaround_timer = window.setTimeout('fb_cancel_do_sniff()', 2000);
	}
	
}



//Event Handlersv
function onLoginHandler(){
	if (fb_cancel_workaround_timer) {
		 window.clearTimeout(fb_cancel_workaround_timer);
	}
	//getUserInfo();
	flashCallBack("onLogin");
}



function logout() {
	FB.Connect.logout(onLogout);
}

function onLogout() {
	//console.log("onLogout");
}


function hasExtendedPermission(_permission) {
	FB.Facebook.apiClient.users_hasAppPermission(_permission, hasExtendedPermission_HANDLER);
}

function hasExtendedPermission_HANDLER(r) {
	flashCallBack("onHasExtendedPermission", r);
}

function getExtendedPermission(_permission){
	FB.Connect.showPermissionDialog(_permission, getExtendedPermission_HANDLER );
}

function getExtendedPermission_HANDLER(r){
	
	flashCallBack("onGetExtendedPermission", r);
}

function getFriendList(flid){
	FB.Facebook.get_sessionState().waitUntilReady(function() {
	FB.Facebook.apiClient.friends_get(null,function(result,ex) {
			//console.log(result);
			//console.log(ex);
		})
	})
}

function onFriendsHandler(e) {
	//console.log('onFriendsHandler');
	//FB.Connect.streamPublish('message here', '', '', '', '', '', '');
}

function publishToWall() {
	var attachment = {'media':[{'type':'image','src':'http://bit.ly/AJTnf','href':'http://bit.ly/hifZk'},{'type':'image','src':'http://bit.ly/AJTnf','href':'http://bit.ly/hifZk'},{'type':'image','src':'http://bit.ly/AJTnf','href':'http://bit.ly/hifZk'},{'type':'image','src':'http://bit.ly/AJTnf','href':'http://bit.ly/hifZk'}]}; FB.Connect.streamPublish('', attachment);
	FB.Connect.streamPublish('Message!', attachment);
	//FB.Connect.streamPublish('message here', '', '', '', '', '', '');
}

function publishToWallHandler() {
	//console.log('publishToWallHandler');
}

function publishToProfile() {
	FB.Facebook.get_sessionState().waitUntilReady(function() {
		FB.Facebook.apiClient.friends_get(null,function(result,ex) {
			//console.log(result);
			//console.log(ex);
		})
	})
}




// Method to dispatch an Event to Flash
function flashCallBack(func) {
	
	if (arguments.length > 1) {
		document[as_swf_name][func]( Array.prototype.slice.call(arguments).slice(1)[0]);
	} 
	else {
		document[as_swf_name][func]();
	}
}

function fb_cancel_do_sniff() {
	if (fb_cancel_workaround_count_frames_before == frames.length) {
	//	flashCallBack("onCancelClick");
	}
	else {
		fb_cancel_workaround_timer = window.setTimeout('fb_cancel_do_sniff()', 500);
	}
}

function hideFacebook() {
	var fbContainer = document.getElementById('FB_HiddenContainer');
	if (fbContainer != null) fbContainer.style.top = "-10000px";
}




