var fb_logged = null;
var fb_permissions = new Object;

function TRFB_init (app, callback)
{
	window.fbAsyncInit = function() {
		var data = {appId: app, status: true, cookie: true, xfbml: true};
		if (navigator.appVersion.indexOf("MSIE") != -1 || parseFloat(navigator.appVersion.split("MSIE")[1]) < 9) {
			data.channelUrl = window.location.protocol + '//www.tourradar.com/include/xd_receiver.htm';
		}
		FB.init (data);
		if (callback) {
			callback();
		}
	};
	(function() {
		var e = document.createElement('script'); e.async = true;
		e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
		document.getElementById('fb-root').appendChild(e);
	}());
}

function TRFB_check_logging (callback)
{
	FB.getLoginStatus (function (response) {
		if (response && response.status == 'connected') {
			fb_logged = FB.getUserID();
			if (callback) {
				callback();
			}
		}
	});
}

function TRFB_check_logging_and_permissions (permissions, callback, error)
{
	FB.getLoginStatus (function (response) {
		if (response && response.status == 'connected') {
			TRFB_check_permissions (permissions, callback, error);
		} else if (error) {
			error();
		}
	});
}

function TRFB_check_permissions (permissions, callback, error)
{
	fb_permissions = new Object;
	FB.api ('/me/permissions', function (perms) {
		if (perms && perms.data && perms.data[0]) {
			for (var i in perms.data[0]) {
				if (perms.data[0][i]) {
					fb_permissions[i] = true;
				}
			}
		}
		var logged = true;
		for (var i = 0; i < permissions.length; i ++) {
			if (!fb_permissions[permissions[i]]) {
				logged = false;
				break;
			}
		}
		if (logged) {
			fb_logged = FB.getUserID();
			if (callback) {
				callback();
			}
		} else if (error) {
			error();
		}
	});
}

function TRFB_login (callback)
{
	FB.login (function (response) {
		if (response.status == 'connected') {
			fb_logged = FB.getUserID();
			if (callback) {
				callback();
			}
		}
	}, {scope: 'email'});
}

function TRFB_login_and_check_permissions (permissions, callback)
{
	FB.login (function (response) {
		if (response.status == 'connected') {
			TRFB_check_permissions (permissions, callback);
		}
	}, {scope: 'email'});
}

function TRFB_logout (callback)
{
	FB.logout (function (response) {
		if (response.status == 'unknown') {
			fb_logged = null;
			fb_permissions = new Object;
			if (callback) {
				callback();
			}
		}
	});
}
