// JavaScript Document
const FACEBOOK_LOGIN = "facebookLogin";
const FACEBOOK_LOGOUT = "facebookLogout";
const FACEBOOK_PICTURE_URL = "facebookPictureURL";
const FACEBOOK_PUBLISH_POST = "facebookPublishPost";
const FACEBOOK_USER_INFO = "facebookUserInfo";
const FACEBOOK_LOGIN_STATUS = "facebookLoginStatus";
const FACEBOOK_FRIENDS = "facebookFriends";
const FACEBOOK_GET_POST = "facebookGetPost";
const FACEBOOK_POST_DELETE = "facebookPostDelete";

function goLogin()
{
		
	FB.login ( function ( response ) 
	{
		if (response.session) 
        {
			
			// alertResponse ( response );
					
            if (response.perms) 
            {
                // user is logged in and granted some permissions.
                getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_LOGIN, permissions:true, login:true, access_token:response.session.access_token, uid:response.session.uid } );
            } 
            else 
            {
                // user is logged in, but did not grant any permissions
                getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_LOGIN, permissions:false, login:true, access_token:response.session.access_token, uid:response.session.uid } );
            }
        } 
        else 
        {
			getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_LOGIN, permissions:false, login:false, access_token:response.session.access_token, uid:response.session.uid } )
        }
	}, 
	{ perms:'publish_stream,read_stream' } );
}

function goLogout()
{
	FB.logout( function ( response ) 
	{
		getFlashMovie("myFlash").FBEvent( { type:FACEBOOK_LOGOUT } );
	});
}

function getUserInfo()
{
	FB.api('/me', function(response) 
	{
		getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_USER_INFO, userName:response.name, id:response.id } );
	});
}

function getLoginStatus ()
{
	FB.getLoginStatus ( function ( response ) 
	{
		if ( response.session ) 
		{
			getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_LOGIN_STATUS, connected:true } );
		} 
		else 
		{
			getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_LOGIN_STATUS, connected:false } );
		}
	});
}

function getImage()
{
	FB.api('/me?metadata=1', function ( response ) 
	{
		getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_PICTURE_URL, picture:response.metadata.connections.picture } );
	});
}

function streamPublish ( message )
{
 	FB.ui(
	{
		method:'stream.publish',
		message:message,
		attachment: 
		{
			name: 'Thinking About',
			caption: 'Thinking About tests the new Facebook Connect JavaScript SDK',
			description: ( 'A small JavaScript library that allows you to harness the power of Facebook, bringing the user\'s identity, social graph and distribution power to your site.' ),
			href: 'http://www.thinkingabout.it',
			media: [{ 'type':'image', 'src':'http://www.thinkingabout.it/main_logo.png', 'href':'http://www.thinkingabout.it/main_logo.png'}] 
		},
		action_links: [ { text: 'ThinkingAbout', href: 'http://www.thinkingabout.it' } ],
		user_prompt_message: 'Testing Facebook JS API'
		},
		function ( response ) 
		{
			// alertResponse ( response );
			if ( response && response.post_id ) 
			{
				getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_PUBLISH_POST, postID:response.post_id, resultMessage:"Javascript.StreamPublish.Success" } );
        	}
			else 
			{
				getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_PUBLISH_POST, resultMessage:"Javascript.StreamPublish.Failed" } );
			}
		}
	);
}

function directShare ( vars )
{
	var _body = vars.message;
	var _link = vars.link; //'http://www.thinkingabout.it';
	var _description = vars.description; // 'A small JavaScript library [...]';
	var _name = vars.name; //'Thinking About';
	var _image = vars.image; //'http://www.thinkingabout.it/main_logo.png';
	FB.api('/me/feed', 'post', { message:_body, link:_link, description:_description, name:_name, image:_image }, 
		function ( response ) 
		{
			if ( !response || response.error ) 
			{
				 getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_PUBLISH_POST, resultMessage:"Javascript.DirectShare.Failed" } );
			} 
			else 
			{
				 getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_PUBLISH_POST, postID:response.id, resultMessage:"Javascript.DirectShare.Success" } );
			}
		});
}

function getFriends ()
{
	FB.api('/me', function ( response ) 
	{
		var query = FB.Data.query ( 'select name, uid, pic_square from user where uid IN (SELECT uid2 FROM friend WHERE uid1={0})', response.id );
		query.wait ( function ( rows ) 
		{
			var friends = new Array(); 
			for (var i = 0; i < rows.length; ++i)
			{
				friends [i] = { name:rows[i].name, uid:rows[i].uid, pic_square:rows[i].pic_square };
			}
			getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_FRIENDS, friends:friends } );
		});
	});
}

function getPost ( post_id )
{
	// alert( "GET POST: " + post_id );
	FB.api ( post_id, function(response) 
	{
		if ( !response || response.error ) 
		{
			getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_GET_POST, resultMessage:"Javascript.GetPost.Error" } );
		} 
		else 
		{
			getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_GET_POST, post:response.message, resultMessage:"Javascript.GetPost.Success" } );
		}
	});	
}

function deletePost ( post_id )
{
	FB.api ( post_id, 'delete', function(response) 
	{
		if ( !response || response.error ) 
		{
			getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_POST_DELETE, deleted:false } );
		} 
		else 
		{
			getFlashMovie("myFlash").FBEvent ( { type:FACEBOOK_POST_DELETE, deleted:true } );
		}
	});	
}
 
//function alertResponse ( res )
//{
//	var result = "";
//	for ( x in res )
//	{
//		result = result + x + ": " + res[x] + "\n";
//	}
//	alert( "RESULT: " + result );
//}

function getFlashMovie ( movieName ) 
{
	var isIE = navigator.appName.indexOf("Microsoft") != -1;
	return (isIE) ? window[movieName] : document[movieName];
}
