/* Checks cross-domain sessions
 */
var XD_SESSION_CHECKED_COOKIE_VALUE = 'true'
var SESSION_ID_COOKIE_NAME = 'sessionid';

var COOKIE_USER_NAME = 'username';

function checkXdSession(){
	console.log('fuction checkXdSession() started...');
	console.log('XDC_HOST='+XDC_HOST);
	if( userIsSigned){
		console.log('User is signed-in, no need to check XD session. Local SID: ' + $.cookie(SESSION_ID_COOKIE_NAME));
		return
	}
	if($.cookie(XD_SESSION_CHECKED_COOKIE_NAME)==XD_SESSION_CHECKED_COOKIE_VALUE){
		console.log('XD session is already checked. Local SID: ' + $.cookie(SESSION_ID_COOKIE_NAME));
		return
	}
	
	localSID = $.cookie(SESSION_ID_COOKIE_NAME);
	console.log('Local SID: '+localSID);
	ajax_url = 'http://'+XDC_HOST+'/xdc/session/get-xd';
	console.log('AJAX call to: ' + ajax_url)
	$.ajax({
		url: ajax_url,
		dataType: 'jsonp',
		data: {localSID: localSID},
		context: document.body,
		success: function(response){
			sessionId = response['sid'];
			console.log('We got response from auth XDC server: SID = ' + sessionId);
			if( sessionId != localSID){
                console.log('sessionId != localSID')
                if(response['user_is_authenticated'])
                {
                    /*
                	$('#header_unsigned_user').hide();
                	$('#header_signed_user').show();
                	console.log('user_name: ' + response['user_name']);
                	$('#header_signed_user_link').text(response['user_name']);
                	*/
                }
                $.cookie(XD_SESSION_CHECKED_COOKIE_NAME, XD_SESSION_CHECKED_COOKIE_VALUE);
                console.log("We've set cookie " + XD_SESSION_CHECKED_COOKIE_NAME + "=" + XD_SESSION_CHECKED_COOKIE_VALUE);
				setLocalSession(sessionId, response['user_is_authenticated']);
			}
			else{
				console.log('No need to set local session as it is equal to XD-session.')
                $.cookie(XD_SESSION_CHECKED_COOKIE_NAME, XD_SESSION_CHECKED_COOKIE_VALUE);
                console.log("We've set cookie " + XD_SESSION_CHECKED_COOKIE_NAME + "=" + XD_SESSION_CHECKED_COOKIE_VALUE);
			}
		},
		error: function(jqXHR, textStatus, errorThrown){
			console.log('Error. textStatus: '+textStatus+'; errorThrown: '+errorThrown);
		}
	});
	console.log('fuction checkXdSession() completed.');
}

function setXdSession(redirect_url){
	console.log('fuction setXdSession(redirect_url) started...');
	console.log('redirect_url=' + redirect_url);
	localSID = $.cookie(SESSION_ID_COOKIE_NAME);
	console.log('AJAX call to: http://classes-xdc:8080/xdc/session/set-xd')
	$.ajax({
		url: 'http://'+XDC_HOST+'/xdc/session/set-xd',
		data: {localSID: localSID},
		dataType: 'jsonp',
		context: document.body,
		success: function(response){
			console.log('Local session ' + localSID +' stored on XDC domain.')
			document.location = redirect_url;
		},
		error: function(jqXHR, textStatus, errorThrown){
			console.log('Local session DID NOT stored to XDC domain: ' + textStatus);
		}
	}
	);
	console.log('fuction setXdSession() completed.');
}

function setLocalSession(sessionId, userIsAuthenticated)
{
	console.log('fuction setLocalSession(sessionId='+sessionId+') started...');
	if(sessionId){
		if(sessionId == $.cookie(SESSION_ID_COOKIE_NAME)){
			console.log('Passed session ID is equal to local SID.')
		}
		else{
			console.log('AJAX call to "/xdc/session/set-local" with paramter "xdsid"='+sessionId);
			$.ajax({
				url: '/xdc/session/set-local',
				data: {xdsid: sessionId},
				dataType: 'jsonp',
				context: document.body,
				success: function(response){
					console.log('Local session is set, SID: ' + $.cookie(SESSION_ID_COOKIE_NAME));
					if(userIsAuthenticated)
                    {
                        console.log('TODO: temporary workaround - reload page for 1st visit');
						location.reload();
                    }
					else
						console.log('No need to reload page as user is anonymous.');
				},
				error: function(jqXHR, textStatus, errorThrown){
					console.log('Error. textStatus: '+textStatus +'; errorThrown: '+errorThrown)
				}
			}
			);
		}
	}
	else{
		console.log('No global session');
	}
	console.log('fuction setLocalSession() completed.');
}

