﻿
var facebook =
{
	vAction: '',

	promtLogin: function () {
		FB.login(facebook.handlePromtLoginResponse, { scope: 'email,publish_stream' });
	},

	handlePromtLoginResponse: function (res) {
		if (res && res.status === 'connected') {
			// user successfully logged in
			Cookie.write('fb_oauth_token', res.authResponse.accessToken, { path: '/' });
			window.location = '/default.aspx?fb=1';
		} else {
			// user cancelled login
		}
	},

	streamPublish: function (data, vAction) {
		facebook.vAction = vAction;
		var params = {
			method: 'feed',
			name: data.title, // clickable title
			link: data.linkUrl,
			picture: data.imageUrl,
			caption: data.caption,
			description: data.description,
			actions: [{ 'name': data.actionLinkName, 'link': data.linkUrl}]
		};
		fbEnsureInit(function () { FB.ui(params, facebook.handleStreamPublishResponse); });
	},

	streamShare: function (vAction, url) {
		facebook.vAction = vAction;
		var params = { method: 'stream.share', u: url };
		fbEnsureInit(function () { FB.ui(params, facebook.handleStreamPublishResponse); });
	},

	handleStreamPublishResponse: function (res) {
		if (res) {
			var request = facebook.getHelperServiceRequest('TrackAction', function () { });
			request.send(JSON.encode({ vAction: facebook.vAction }));
		}
	},

	isLoggedIn: function () {
		FB.getLoginStatus(function (response) {
			if (response.session) {
				// logged in and connected user
				console.log(response);
			}

			// no user session available
			console.log(response);
		});
	},

	getHelperServiceRequest: function (path, callback) {
		var req = new Request.JSON({
			method: 'post',
			url: '/WebServices/HelperService.asmx/' + path,
			urlEncoded: false,
			headers: {
				'Content-Type': 'application/json; charset=utf-8'
			},
			onSuccess: function (response) {
				callback(response.d);
			},
			onComplete: function () {
				if (this.status === 500) {
					// server error
				}
			}
		});

		return req;
	}
};


