/*------------------------------------------------------------------------------*/
function askFacebookLogin(perms,extraLoginCB)
{
	if(extraLoginCB == undefined) extraLoginCB = function(){};
	FB.login(function(response) {
	  if (response.session) {
	    if (response.perms) {
	    	extraLoginCB();
	      // user is logged in and granted some permissions.
	      // perms is a comma separated list of granted permissions
	    } else {
	      // user is logged in, but did not grant any permissions
	    }
	  } else {
	    // user is not logged in
	  }
	}, {perms:perms});
}

/*------------------------------------------------------------------------------*/
function loadFacebookAPI(appId,loginCB,logoutCB,permsRequired,language)
{
	if(language == undefined) language = 'fr_FR';
	if(loginCB == undefined) loginCB = function(){};
	if(logoutCB == undefined) logoutCB = function(){};

	window.fbAsyncInit = function() {
		FB.init({appId: appId, status: true, cookie: true,xfbml: true});
		FB.Event.subscribe('auth.login', function(response) {loginCB();});
		FB.Event.subscribe('auth.logout', function(response) {logoutCB();});
	  	FB.getLoginStatus(function(response) 
	  	{
		  	if (response.session) 
		  	{
	  			if(hasPermissions(response,permsRequired.split(',')))
	  				loginCB();
	  			else
	  				logoutCB();
	  		}
	  		else
	  			logoutCB();
	  	});
	};
	(function() {
	  var e = document.createElement('script'); e.async = true;
	  e.src = document.location.protocol + '//connect.facebook.net/fr_FR/all.js';
	  document.getElementById('fb-root').appendChild(e);
	}());
}

/*------------------------------------------------------------------------------*/
function hasPermissions(response,perms)
{
	for (var i = 0; i < perms.length; i++)
	{
		if(!hasPermission(response,perms[i]))
			return false;
	}
	return true;
}

/*------------------------------------------------------------------------------*/
function hasPermission(response, perm) 
{
	var begin = response.perms.indexOf('extended”:[') + 11;
	var end = response.perms.indexOf(']', begin);
	var perms = response.perms.substring(begin, end);
	return (perms.indexOf(perm) != -1);
}
