// JavaScript Document

FBrequestPerms = '';
FBtemp = null;
FBg_url = null;
FBappID = null;
FBappUrl = null;
FBaccessToken = null;

function FacebookInit(appID, appUrl, g_url) {
	FBappID = appID;
	FBappUrl = appUrl;
	FBg_url = g_url;
	FB.init({
		appId  : appID,
		status : true, // check login status
		cookie : true, // enable cookies to allow the server to access the session
		xfbml  : true  // parse XFBML
	  });
	  
	  FB.provide("UIServer.Methods",
	   { 'permissions.request' : { size : {width: 575, height: 300}, 
						url: 'connect/uiserver.php',
					transform : FB.UIServer.genericTransform }
			} );
}

function FacebookSetAccessToken(access_token) {
	FBaccessToken = access_token;
}

function FacebookGetUid() {
	var sess = FB.getSession();
	if(sess)
		return sess.uid;
	return null;
}

// step1 : login
function FacebookLoginStep1(redirigeOK, requestPerms, gostep2) {
	FBtemp = redirigeOK;
	FBrequestPerms = requestPerms;
	if(gostep2) {
		FacebookLoginStep2();
		return;
	}
	if(FacebookGetUid() != null) {
		var sess = FB.getSession();
		FBaccessToken = sess.access_token;
		$.ajax({type: "GET",url: FBg_url+"core/Service/ServiceCaller.php",data: "service=FacebookSetSession&uid="+sess.uid+"&access_token="+sess.access_token+"&session_key="+sess.session_key+"&checksum=0",success: function() { FacebookLoginStep2(); }});
	} else {
		
		top.location.href = 'https://www.facebook.com/dialog/oauth?client_id='+FBappID+'&scope='+FBrequestPerms+'&redirect_uri='+FBappUrl+'%3Fr=1';
		
		
		/*FB.ui({ method: 'auth.login',
			display: 'popup' },
			function (response) {
				if(response.session) { 
					// user successfully logged in
					var uid = FacebookGetUid();
					var access_token = response.session.access_token;
					var session_key = response.session.session_key;
					$.ajax({type: "GET",url: FBg_url+"core/Service/ServiceCaller.php",data: "service=FacebookSetSession&uid="+uid+"&access_token="+access_token+"&session_key="+session_key+"&checksum=0",success: function() { FacebookLoginStep2(); }});
				} else {
					// user cancelled login
					document.location.href='index.php';
					return false;
				}
			}
		);*/
		
		/*FB.login(function(response) {
		  if (response.session) {
			// user successfully logged in
			var uid = FacebookGetUid();
			var access_token = response.session.access_token;
			var session_key = response.session.session_key;
			$.ajax({type: "GET",url: FBg_url+"core/Service/ServiceCaller.php",data: "service=FacebookSetSession&uid="+uid+"&access_token="+access_token+"&session_key="+session_key+"&checksum=0",success: function() { FacebookLoginStep2(); }});
		  } else {
			// user cancelled login
			document.location.href='index.php';
			return false;
		  }
		});*/
	}
}

// step2 : permissions
function FacebookLoginStep2() {
	FB.ui({method: "permissions.request", perms: FBrequestPerms, access_token: FBaccessToken, display: "iframe"} , function(response) { 
		if(response.perms != FBrequestPerms) {
			// ko
		} else {
			// ok
			$.ajax({type: "GET",url: FBg_url+"core/Service/ServiceCaller.php",data: "service=FacebookSetSession&perms="+response.perms,success: function() { FacebookLoginStep3(); }});
		}
	});
}

// step3 : infos complementaires
function FacebookLoginStep3() {
	var sess = FB.getSession();
	var query = FB.Data.query('select uid, name, contact_email, username from user where uid={0}', sess.uid);
	query.wait(function(rows) {
			   $.ajax({type: "GET",url: FBg_url+"core/Service/ServiceCaller.php",data: "service=FacebookSetSession&name="+rows[0].name+"&email="+rows[0].contact_email+"&username="+rows[0].username+"&checksum=0",success: function() { document.location.href=FBtemp; }});
			});
}

function FacebookLogout() {
	FB.logout(function(response) {
	  // user is now logged out
	});
}

function FacebookRequestPerms(requestPerms, redirige, display, access_token) {
	FBtemp = redirige;
	FBrequestPerms = requestPerms;
	if(!display)
		display = 'popup';
	FB.ui({method: "permissions.request", perms: FBrequestPerms, display: display, access_token: access_token} , function(response) { 
		if(response.perms != FBrequestPerms) {
			// ko
		} else {
			// ok
			$.ajax({type: "GET",url: FBg_url+"core/Service/ServiceCaller.php",data: "service=FacebookSetSession&perms="+response.perms,success: function() { document.location.href=FBtemp;}});
		}
	});
}

function FacebookFeed(nom, reference, image, description, message, lien) {
	FB.ui(
	   {
		 method: 'feed',
		 name: nom,
		 link: lien,
		 picture: image,
		 caption: reference,
		 description: description,
		 message: message
	   },
	   function(response) {
		 if (response && response.post_id) {
		   //alert('Post was published.');
		 } else {
		   //alert('Post was not published.');
		 }
	   }
	 );
}

function FacebookAppRequest(titre, message) {
	FB.ui(
	   {
		 method: 'apprequests',
		 title: titre,
		 message: message
	   },
	   function(response) {
		 if (response) {
			 //response.request_ids (uid,uid,uid,...)
			 $.ajax({type: "GET",url: FBg_url+"core/Service/ServiceCaller.php",data: "service=FacebookInviteFriends&uid="+FacebookGetUid()+"&ids="+response.request_ids});
		   //alert('Post was published.');
		 } else {
		   //alert('Post was not published.');
		 }
	   }
	 );
}
