if (typeof(Venstre) === 'undefined') {
	Venstre = {};
}
if (typeof(Venstre.FE) === 'undefined') {
	Venstre.FE = {};
}
if (typeof(Venstre.FE.Facebook) === 'undefined') {
	Venstre.FE.Facebook = {};
}


Venstre.FE.Facebook.login_status_callback = function(response) {
	if (typeof(response.session) === 'undefined') {
		Venstre.FE.Facebook.show_login_container();
		return false;
	}

	Venstre.FE.Facebook.fb_session = response.session;
	if (response.status === 'connected') {
		Venstre.FE.Facebook.is_friends();
	} else {
		Venstre.FE.Facebook.show_login_container();
	}
};

Venstre.FE.Facebook.is_friends = function() {
	var my_id = jQuery('#fb-login').attr('title');

	if (typeof(my_id) === 'undefined' || !my_id) {
		return false;
	}

	if (Venstre.FE.Facebook.checking_facebook_status) {
		return false;
	}

	Venstre.FE.Facebook.checking_facebook_status = true;

	var url = "https://api.facebook.com/method/friends.areFriends?uids1=" + Venstre.FE.Facebook.fb_session.uid + "&uids2=" + my_id + "&access_token=" + Venstre.FE.Facebook.fb_session.access_token + "&format=json&callback=?";
	jQuery.getJSON(url, function(data) {
		//console.log(data);
		Venstre.FE.Facebook.checking_facebook_status = false;
		//console.log((data[0] && data[0].are_friends));
		Venstre.FE.Facebook.fb_is_friends = (data[0] && data[0].are_friends);
		//console.log(fb_is_friends);
		Venstre.FE.Facebook.set_is_friends_state();
	});
};

Venstre.FE.Facebook.set_is_friends_state = function() {
	if (Venstre.FE.Facebook.fb_is_friends) {
		Venstre.FE.Facebook.show_is_already_friends();
	} else {
		Venstre.FE.Facebook.show_login_container();
	}
};

Venstre.FE.Facebook.hide_all_states = function() {
	//console.log('hide_all_states');
	jQuery('.facebook_state').hide();
};

Venstre.FE.Facebook.show_facebook_friend_request_sent = function() {
	Venstre.FE.Facebook.hide_all_states();
	//console.log('show_facebook_friend_request_sent');
	jQuery('#facebook_friend_request_sent').show();
};

Venstre.FE.Facebook.show_login_container = function() {
	Venstre.FE.Facebook.hide_all_states();
	//console.log('show_login_container');
	jQuery('#facebook_login').show();
};

Venstre.FE.Facebook.show_is_already_friends = function() {
	Venstre.FE.Facebook.hide_all_states();
	//console.log('show_is_already_friends');
	jQuery('#facebook_already_friends').show();
};


jQuery(document).bind('ready', function() {
	/* Bind events */
	jQuery('#fb-login').bind('click', function() {
		var clickedElement = $(this);
		FB.login(function(response) {
			if (response.status === 'connected') {
				FB.ui(
					{
						method: 'friends.add',
						id: clickedElement.attr('title')
					},
					function(success) {
						if (success) {
							Venstre.FE.Facebook.show_facebook_friend_request_sent();
						}
					}
				);
			}
	});
	});

	FB.Event.subscribe('auth.sessionChange', function(response) {
		Venstre.FE.Facebook.fb_session = response.session;
		if (response.status === 'connected') {
			Venstre.FE.Facebook.is_friends();
		} else {
			Venstre.FE.Facebook.show_login_container();
		}
	});

/* Check if user is currently logged in */
	FB.getLoginStatus(Venstre.FE.Facebook.login_status_callback);
});
