var FaceBookConnector = {
	APIKey : '2beadf4651315a60fb2230064bd4f235',
	xdReceiver : 'http://www.havana-cultura.com/xd_receiver.htm',
	uid : null, // user facebook id
	loggedIn : false,
	permission : false,
	userInfo : null,
	linkInfo : null,
	getPermisionEndType : 0,
	pageUrl : window.location.toString(),
	//permissionType : "publish_stream,email",
	permissionType : "publish_stream",
	locale : "en_US", //this for your locale settings

	init : function () {
		/*FB_RequireFeatures(['XFBML'], function() {
				FB.Facebook.init(APIKey, xdReceiver);
		});*/
		
		FaceBookConnector.updatePageUrl();
		
		
		FB.ensureInit(function() {		
		
			FB.Connect.get_status().waitUntilReady( function( status ) {
			//alert(status)
				switch (status) {
					case FB.ConnectState.connected:				
					FB.Connect.forceSessionRefresh(function() {

					if (FB.Connect.get_loggedInUser()) {
                            FaceBookConnector.uid = FB.Connect.get_loggedInUser();
							FaceBookConnector.loggedIn = true;
							FaceBookConnector.getInformations();
                        }

					});
					case FB.ConnectState.appNotAuthorized:
					case FB.ConnectState.userNotLoggedIn:
						//FB.Connect.requireSession(); 
						FaceBookConnector.loggedIn = false;
				}			
			});
			//hideFlash()
			//FaceBookConnector.getPermission("publish_stream,email");

    });

	},
	updatePageUrl : function updatePageUrl() {
			//http://www.havana-cultura.com/INT/en/3388.html
		//http://www.havana-cultura.com/preview.html#/3388
		FaceBookConnector.pageUrl = window.location.toString();
		if(FaceBookConnector.pageUrl.lastIndexOf("/") != -1)
		{
			//alert(FaceBookConnector.pageUrl.lastIndexOf("/"))
			//FaceBookConnector.pageUrl = "http://www.havana-cultura.com/INT/en/" + FaceBookConnector.pageUrl.substring(FaceBookConnector.pageUrl.lastIndexOf("/")+1,FaceBookConnector.pageUrl.lenght ) + ".html"
			//FaceBookConnector.pageUrl = FaceBookConnector.pageUrl.substring(FaceBookConnector.pageUrl.lastIndexOf("/")+1,FaceBookConnector.pageUrl.lenght )
			//FaceBookConnector.pageUrl =  "http://www.havana-cultura.com/INT/en/" +  FaceBookConnector.pageUrl.substring(FaceBookConnector.pageUrl.lastIndexOf("/")+1) + ".html"
			FaceBookConnector.pageUrl =  RACINE_PROJET + ZONECODE + "/" + LANGCODE.toLowerCase() + "/" +  FaceBookConnector.pageUrl.substring(FaceBookConnector.pageUrl.lastIndexOf("/")+1) + ".html"
			
		}
		//var str="http://www.havana-cultura.com/preview.html#/3388";
		//alert(FaceBookConnector.pageUrl)
	},
	getInformations : function getInformations () {
		FaceBookConnector.promptPermission(FaceBookConnector.permissionType);
		FaceBookConnector.getUserInfo();
		FaceBookConnector.getLinksStats(FaceBookConnector.pageUrl)
	},
	getLoggedIn : function () { return FaceBookConnector.loggedIn;	},
	// post without facebook dialog
	streamPublishWithoutDialog : function () {	
		FB.ensureInit(function() {
			var message = 'the message';
			var attachment = {
				'name': 'a simple app to send gifts',
				'href': 'http://www.gokcebulbul.com', 'caption': '{*actor*} sent u something',
				'description': 'some description',
				"media": [{ "type": "image", "src": "http://www.gokcebulbul.com", "href": "http://www.gokcebulbul.com"}]
			};
			//action links can only be seen AFTER the feed is published
			var action_links = [{ 'text': 'gokcebulbul.com!', 'href': 'http://www.gokcebulbul.com'}];
			FB.Connect.forceSessionRefresh(function() {
				FB.Connect.streamPublish(message, attachment, action_links, null, "Share the gift with your friends", FaceBookConnector.callbackStreamPublish, true, null);
			});
		});
	},
	// post with facebook dialog
	streamPublishWithDialog : function () {
		hideFlash();
		if(!FaceBookConnector.permission) {
			FaceBookConnector.getPermisionEndType = 1;
			FaceBookConnector.getPermission(FaceBookConnector.permissionType);
		}
		
		var url = FaceBookConnector.pageUrl;
		//http://www.havana-cultura.com/INT/en/3388.html
		//http://www.havana-cultura.com/preview.html#/3388
		
		//alert(window.location)
		//var url = "http://www.havana-cultura.com/INT/en/3388.html";
		FB.ensureInit(function() {
			var message = '';
			var attachment = {
				'name': 'Havana Cultura!',
				'href': url, 'caption': '{*actor*} sent u something',
				'description': 'Havana Cultura!',
				"media": [{ "type": "image", "src": url, "href": url}]
			};
			//action links can only be seen AFTER the feed is published
			var action_links = [{ 'text': 'Havana Cultura!', 'href': url}];
			FB.Connect.streamPublish(message, attachment, action_links, null, "Havana Cultura!", FaceBookConnector.callbackStreamPublish, false, null);
			/*FB.Connect.forceSessionRefresh(function() {
				FB.Connect.linksPost(url,'Havana Cultura!');
			});*/
		});
	},
	callbackStreamPublish: function callbackStreamPublish() {
		showFlash();
	},
	// post without facebook dialog
	streamLinkPublishWithoutDialog : function () {	
		/*FB.ensureInit(function() {
			var message = 'Check out CNN!';
			var attachment = { title:'CNN.com - Breaking News', href:'http://www.gokcebulbul.com', description:'Todays news at its newsiest' };
			FB.Connect.forceSessionRefresh(function() {
				 FB.Connect.streamPublish(message,attachment);
			});
		});*/
		var api = FB.Facebook.apiClient; 	
		//FB.Facebook.apiClient.links_post('http://www.gokcebulbul.com','Best. Website. Ever.');
		FB.Connect.linksPost('http://www.gokcebulbul.com','Best. Website. Ever.');
		//stream_publish FB.Connect.streamPublish
		//links_post 
		
		/*var attachment = {'name':'gokce bulbul','href':'http://www.gokcebulbul.com/','description':'gokce bulbul'}; 
		FB.ensureInit(function() {
			FB.Connect.forceSessionRefresh(function() {
				FB.Connect.streamPublish('',attachment,null,null,null ,FaceBookConnector.callbackStreamPublish, true, null);
			});
		});*/
	},
	//publish_stream,status_update
	getPermission: function getPermission(permission) {
		//alert("getPermission")
		FB.ensureInit(function(){
			FB.Connect.requireSession(FB.Connect.showPermissionDialog(permission, FaceBookConnector.callbackGetPermission)
			, function() { 
				showFlash(); 
			});
		});
	},
	callbackGetPermission: function callbackGetPermission() {
		
		//alert(FaceBookConnector.getPermisionEndType)
		switch (FaceBookConnector.getPermisionEndType)
		{
			case 0:
			showFlash();
			break;
			case 1:
			//hideFlash();
			FaceBookConnector.streamPublishWithDialog();
			hideFlash();
			break;
			case 2:
			showFlash();
			FaceBookConnector.postLinkToPhp();
			break;
		}
	
		FB.Connect.forceSessionRefresh(function() {

					if (FB.Connect.get_loggedInUser()) {
                            FaceBookConnector.uid = FB.Connect.get_loggedInUser();
							FaceBookConnector.loggedIn = true;
							FaceBookConnector.getInformations();
                        }

					});
		//alert("onLogin2 - callbackGetPermission")
		//showFlash();

		
		
	},
	returnPermission : function returnPermission() {
		return FaceBookConnector.permission;
	},
	promptPermission : function promptPermission(permission) {
		FB.ensureInit(function() {
			FB.Connect.requireSession(function(){
				//check is user already granted for this permission or not
				FB.Facebook.apiClient.users_hasAppPermission(permission,
				function(result) {
					// prompt offline permission
					if (result == 0) {
						FaceBookConnector.permission = false;						
						return "false";
					} else {
						// permission already granted.
						FaceBookConnector.permission = true;
						return "true";
					}
					//alert(FaceBookConnector.permission )
				});
			});
		});
	
	},
	logout : function disconnect() {
	FaceBookConnector.permission = false;	
		/*var params = {
		"perm": FaceBookConnector.permissionType,
		"uid": FB.Connect.get_loggedInUser(),
		"v": "1.0"
		};
		var method = "auth.revokeExtendedPermissions";

		FB.Facebook.apiClient.callMethod(method,params,function(){alert("revoked");}); */
		FB.ensureInit(function(){
            FB.Connect.requireSession(FB.Connect.logout(FaceBookConnector.logoutCallback)
			, function() { showFlash() });
        });

	},
	logoutCallback : function logoutCallback() {
		showFlash();
	},
	statusSet : function statusSet(status) {
		var api = FB.Facebook.apiClient; 	
		FB.Facebook.apiClient.users_setStatus(
			status,
			false,
			true,
			function(result, exception) { if (result) { alert(result) }; if (exception) { alert(exception); } }
		);
	},
	getLinksStats : function getLinksStats (links) {
	//alert(links)
		/*FB.api(
		  {
			method: 'links.getStats',
			urls: links
		  },
		  function(response) {
			alert('Total: ' + (response[0].total_count + response[1].total_count));
		  }
		);*/
		FB.Facebook.apiClient.fql_query(
		'SELECT share_count, like_count, comment_count, total_count FROM link_stat WHERE url="'+links+'"',FaceBookConnector.buildLinksStats);
		/*
		<url>developers.facebook.com</url>  
		<share_count>67</share_count>  
		<like_count>0</like_count>  
		<comment_count>0</comment_count>  
		<total_count>67</total_count>  
		<normalized_url>http://developers.facebook.com</normalized_url>  
		<click_count>0</click_count> 
		*/
	},
	buildLinksStats : function buildLinksStats(data) {
		if(data == null )return;
		if (!data.length) return;
		
		var share_count = data[0].share_count;
		var like_count = data[0].like_count;
		var comment_count = data[0].comment_count;
		var total_count = data[0].total_count;

		//alert(share_count)
		/*$.each(data[0], function(key, value) { 
		  alert(key + ': ' + value); 
		});*/
		FaceBookConnector.linkInfo = data[0];
		//alert(data[0].share_count)
		if(getFlashMovie("website").updateLinkStatus)
			getFlashMovie("website").updateLinkStatus();
		return data[0];
	},
	returnLinkStatus : function returnLinkStatus () {
		//alert(FaceBookConnector.linkInfo)
		return FaceBookConnector.linkInfo;
	},
	getFriends : function getFriends (limit) {
	
	/*FB.Facebook.apiClient.friends_get(null, function(result) {
	
      var markup = "";
      var num_friends = result ? Math.min(10, result.length) : 0;
      if (num_friends > 0) {
        for (var i=0; i<num_friends; i++) {
         markup +=
           '<fb:profile-pic size="square" uid="'
           + result[i]
           + '" facebook-logo="true">'
           + ' </fb:profile-pic>';
        }
      }
*/
	  
	 //var FQL = "SELECT uid2 FROM friend WHERE uid1=539973939";
	//FB.Facebook.apiClient.fql_query(FQL,FaceBookConnector.buildFriendList);
		FB.Facebook.apiClient.fql_query(
		"SELECT profile_url,name FROM user WHERE uid IN "+"(SELECT uid2 FROM friend where uid1 = "+ FaceBookConnector.uid + " ORDER BY rand() LIMIT "+limit+") "+" ORDER BY name",FaceBookConnector.buildFriendList);
	},
	buildFriendList :  function buildFriendList (data) {	
		if (!data.length) return;
		return data;
	},
	getFriendsCount : function getFriends () {
		FB.Facebook.apiClient.fql_query(
		"SELECT name FROM user WHERE uid IN "+"(SELECT uid2 FROM friend where uid1 = "+ FaceBookConnector.uid + ") "+"",FaceBookConnector.buildFriendCountList);
	},
	buildFriendCountList :  function buildFriendCountList (data) {	
		if (!data.length) return;
		alert(data.length)
		return data;
	},
	getUserInfo : function   () {
		//alert("getUserInfo")
		var api = FB.Facebook.apiClient;
		api.users_getInfo(
            FaceBookConnector.uid,
            ["name", "pic_square", "profile_url","email","birthday","pic_small", "first_name", "last_name", "current_location"],
            function(users, ex) {
                /* use the data here */
				if(users == null) return null
				
				//getFlashMovie("website").onLoginCompleteToFB();
				
				var userName= users[0]['name'];
				var first_name= users[0]['first_name'];
				var last_name= users[0]['last_name'];
				var profile_url= users[0]['profile_url'];
				var current_location= users[0]['current_location'];
				var birthday= users[0]['birthday'];
				var email= users[0]['email'];
				FaceBookConnector.userInfo = users[0];
				if(getFlashMovie("website").onLoginCompleteToFB)
					getFlashMovie("website").onLoginCompleteToFB(FaceBookConnector.userInfo);
				return users[0];
				//alert(email)
            });

	},
	returnUserInfo : function returnUserInfo() {
		return FaceBookConnector.userInfo;
	},
	postLinkToPhp : function postLinkToPhp() {
	
		if(!FaceBookConnector.permission) {
			hideFlash();
			FaceBookConnector.getPermisionEndType = 2;
			FaceBookConnector.getPermission(FaceBookConnector.permissionType);
		}
		else {
		
		var myRequest = new Request({url: 'http://www.havana-cultura.com/fbLinkLike.php5'});
		myRequest.send({
			method: 'post',
			data: 'pageUrl='+FaceBookConnector.pageUrl
		});
		}


	}, 
	updateFlashLinkStatus : function updateFlashLinkStatus () {
		FaceBookConnector.updatePageUrl();
		//alert(FaceBookConnector.pageUrl)
		FaceBookConnector.getLinksStats(FaceBookConnector.pageUrl)
		/*if(getFlashMovie("website").updateLinkStatus)
			getFlashMovie("website").updateLinkStatus();*/
	}
}

if(RACINE_PROJET == "http://www.havana-cultura.com/") {
	document.write('<scr'+'ipt src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/' + FaceBookConnector.locale + '" type="text/javascript"></sc'+'ript>');
}

window.addEvent('domready', function() {
	if(RACINE_PROJET == "http://www.havana-cultura.com/") {
		//FB_RequireFeatures(['XFBML'], function() {
		FB_RequireFeatures(['Api'], function() {
				FB.Facebook.init(FaceBookConnector.APIKey, FaceBookConnector.xdReceiver);
				FaceBookConnector.init();
			});
	}
});


