var ekFB = {

	apiKey: ekConfig.fbApiKey,
	idTimeoutConnectedUser: null,
	isRealUserLoggedIn: ekConfig.userIsLoggedIn,
	
	login: function() {
		FB.ensureInit(function() {
			FB.Connect.requireSession(function() {
				if (ekFB.isAutologinDisabled(true)) {
					ekFB.connectedUser();
				}
			});
		});
	},
	
	onPermission: function(sRequestPermissions, sPermissions) {
		if (!sPermissions || sPermissions != sRequestPermissions) {
			var bRetry = confirm("Attenzione, per poter utilizzare al meglio eureKasa.it dovresti consentire l'invio di mail.\n\nDesideri riprovare?");
			if (bRetry) {
				ekFB.requestPermissions('email');
				return;
			}
		}
		ekFB.authorizeUser(false);
	},
	
	requestPermissions: function(sRequestPermissions) {
		FB.ensureInit(function() {
			FB.Facebook.get_sessionState().waitUntilReady(function(session) {
				if (session) {
					FB.Facebook.apiClient.users_hasAppPermission(sRequestPermissions, function(bHasPermission, errors) {
						if (errors) {
							ekFB.isAutologinDisabled(true);
							window.location.reload();
							return;
						}
						if (!bHasPermission) {
							FB.Connect.showPermissionDialog(sRequestPermissions, function(sPermissions) {
								ekFB.onPermission(sRequestPermissions, sPermissions);
							});
						} else {
							ekFB.authorizeUser(true);
						}
					});
				}
			});
		});
	},
	
	authorizeUser: function(bShowLoginAlert) {
		if (bShowLoginAlert && !ekFB.isRealUserLoggedIn) {
			FB.ensureInit(function() {
				FB.Facebook.get_sessionState().waitUntilReady(function(session) {
					if (session) {
						FB.Facebook.apiClient.users_getInfo([FB.Facebook.apiClient.get_session().uid], ['first_name'], function(result) {
							if(result.length > 0) {
								var fbUserInfo = result.shift();
								ekFB.loginAlert(fbUserInfo['first_name']);
							}
						});
					}
				});
			});
		} else {
			ekFB.authRedirect();
		}
	},

	authRedirect: function() {
		window.location = '/utenti/login.html?source=facebook&backurl=' + escape(window.location.href);
	},

	connectedUser: function() {
		if (ekFB.idTimeoutConnectedUser) {
			clearTimeout(ekFB.idTimeoutConnectedUser);
			ekFB.idTimeoutConnectedUser = null;
		}

		if (ekFB.isAutologinDisabled()) {
			return;
		}
		
		if (!ekFB.isRealUserLoggedIn) {
			if (document.cookie.indexOf(ekFB.apiKey + '_user=') > -1) {
				ekFB.requestPermissions('email');
			} else {
				ekFB.idTimeoutConnectedUser = window.setTimeout(ekFB.connectedUser, 300);
			}
		}
	},
	
	loginAlert: function(sFbUserName) {
		dojo.addOnLoad(function() {
			var alertBox = dojo.create('div', {
				innerHTML: '<p style="font-size:16px; margin:10px"><b>' + sFbUserName + '</b>, bentornato su eureKasa.it</p> \
				<p style="font-size:14px; margin:10px">Facebook Connect ti ha consentito di accedere automaticamente</p> \
				<p><img style="cursor:pointer" src="http://static.ak.fbcdn.net/images/fbconnect/login-buttons/connect_white_large_short.gif" onclick="ekFB.authRedirect()"></p>',
				style: {
					zIndex: 101,
					color: "#292929", textAlign: "center", fontFamily: "Arial,Helvetica,Tahoma,Verdana,sans-serif",
					width: "480px", border: "4px solid #3b5998", backgroundColor: "#d3effc", opacity: 0,
					overflow: "hidden", position: "absolute",
					borderRadius: "10px", MozBorderRadius: "10px", WebkitBorderRadius: "10px", WebkitBoxShadow: "0px 3px 7px #adadad"
				}}, dojo.body());

			alertBox.style.left = parseInt((dijit.getViewport().w - alertBox.offsetWidth) / 2) + "px";
			alertBox.style.top = parseInt((dijit.getViewport().h - alertBox.offsetHeight) / 2) + "px";

			dojo.fx.chain([
				dojo.fadeIn({node: alertBox, duration: 1000}),
				dojo.fadeOut({node: alertBox, duration: 1000, delay: 3000, onEnd: ekFB.authRedirect})
			]).play();
		});
	},
	
	isAutologinDisabled: function(bEnable) {
		dojo.require("dojo.cookie");
		if (dojo.cookie.isSupported()) {
			var cookie = dojo.cookie('disable_remote_auto_login');
			if (!bEnable) {
				return cookie;
			}
			dojo.cookie('disable_remote_auto_login', null, {
				domain: ekConfig.cookieDomain,
				path: '/',
				expires: -1
			});
			return cookie;
		}
		return false;
	}
}

FB.init(ekFB.apiKey, "/xd_receiver.php", {'ifUserConnected':ekFB.connectedUser, 'permsToRequestOnConnect' : "email"});
