var facebookLoginService = {
	appUrl: null,
	sessId: null,
	loginFacebookWindow: null,
	windowCloseTimeout: null,
	canClick: true,
	logoutAction: false,
	init: function(config) {
		facebookLoginService.appUrl = config['application_url'];
		facebookLoginService.sessId = config['session_id'];
		if (config['logout_action'])
			facebookLoginService.logoutAction = config['logout_action'];
		$('#login-facebook-service').bind('click', function(){
			facebookLoginService.clickFunction();
			return false;
		});
	},
	clickFunction: function() {
		if (!facebookLoginService.canClick)
		{
			return false;
		}
		facebookLoginService.canClick = false;
		facebookLoginService.startLoading();
		var url = facebookLoginService.appUrl+'facebook/?sess='+facebookLoginService.sessId;
		if (facebookLoginService.logoutAction)
		{
			url += '&action=logout';
		}
		facebookLoginService.loginFacebookWindow = window.open(url,'facebookwin','width=800,height=400,status=0,directories=0,location=0');
		facebookLoginService.loginFacebookWindow.focus();
		facebookLoginService.checkingWindowIsClosed();
	},	
	startLoading: function() {
		$('#social-loader').show()
	},
	stopLoading: function() {
		$('#social-loader').hide()
	},
	checkingWindowIsClosed: function() {
		if (facebookLoginService.loginFacebookWindow != null && facebookLoginService.loginFacebookWindow.closed == false)
		{
			facebookLoginService.windowCloseTimeout = setTimeout(facebookLoginService.checkingWindowIsClosed, 100)
		}
		else
		{
			clearTimeout(facebookLoginService.windowCloseTimeout);
			facebookLoginService.windowCloseTimeout = null;
			facebookLoginService.stopLoading();
			if (window.location.href.indexOf('?') > 0)
			{
				window.location = window.location.href + '&check_if_linked';
			}			
			else
			{
				window.location = window.location.href + '?check_if_linked';
			}
			facebookLoginService.canClick = true;
		}
	},
	servicesCallback: function() {
		socialLogin = true;
	}
}
