var clientID = "";// initFacebookIntegration assigns it

function initFacebookIntegration(clientId) {
	window.fbAsyncInit = function() {
		FB.init({
			appId : clientId,
			status : true,
			cookie : true,
			xfbml : true,
			oauth : true
		});

		clientID = clientId

		FB.Canvas.setAutoGrow(true);

		var last_height = 0;
		setInterval(function() {
			var height = $('html').height();
			if (height != last_height) {
				FB.Canvas.setSize({
					height : height
				});
				last_height = height;
			}
		}, 500);
		
		$(".fb-preload").css("visibility", "visible").removeClass("fb-preload");
	};

	(function() {
		var e = document.createElement('script');
		e.async = true;
		e.src = document.location.protocol
				+ '//connect.facebook.net/en_US/all.js#xfbml=1';
		document.getElementById('fb-root').appendChild(e);
	}());
}

function inviteFriendsToAppPredef(accessToken) {
	inviteFriends(
			accessToken,
			'iframe',
			function(response) {
				if (response && response.request_ids) {
					var inviteCount = (response.request_ids).toString().split(
							',').length;
					var message;
					if (inviteCount == 1) {
						message = '<p><strong>Congrats!</strong> Thank you for inviting your friend</p>';
					} else if (inviteCount > 1) {
						message = '<p><strong>Congrats!</strong> Thank you for inviting '
								+ inviteCount + ' friends</p>';
					}
					showSuccessMessage(message);
				}
			}, message("common.invite_friends"));
}

function inviteFriend(button,userId, accessToken) {
	inviteFriendHelper(button,
			accessToken,
			userId,
			'iframe',
			message("common.invite_friends"));
}

function inviteFriendHelper(button,fbaccessToken, userId, displayType,inviteMessage) {
	FB.ui({
		method : 'apprequests',
		message : inviteMessage,
		to : userId
	}, function(response) {
		if(response){			
			showSuccessMessage('The user has been invited successfully');
			button.addClass("disabled");
			button.attr('onClick','');
		}
	});
}

function inviteFriends(fbaccessToken, displayType, callBackFunction,
		inviteMessage) {
	FB.ui({
		access_token : fbaccessToken,
		method : 'apprequests',
		title : 'Tradefields',
		message : inviteMessage,
		filters : [ 'app_non_users' ],
		display : displayType
	}, function(response) {
		callBackFunction(response);
	});
}

function postYourTrade(fbClientId, fbaccessToken, displayType, captionText,
		symbol, successText) {
	FB.ui({
		access_token : fbaccessToken,
		method : 'feed',
		to : fbClientId,
		name : 'Tradefields',
		display : displayType,
		link : 'http://apps.facebook.com/tradefields',
		picture : 'http://static.tradefields.com/symbols/logo/'
				+ symbol.toUpperCase() + '.gif',
		caption : captionText
	}, function(response) {
		if (response && response.post_id) {
			showSuccessMessage(successText);
		}
	});
}

function postYourBalance(fbaccessToken, displayType, userTo, captionText,
		successText) {
	FB.ui({
		access_token : fbaccessToken,
		method : 'feed',
		to : userTo,
		name : 'Tradefields',
		display : displayType,
		link : 'http://apps.facebook.com/tradefields',
		picture : 'http://static.tradefields.com/balance.png',
		caption : captionText
	}, function(response) {
		if (response && response.post_id) {
			showSuccessMessage(successText);
		}
	});
}

function sharePost(fbaccessToken, captionText, successText, link) {
	var reg = /[^\s\r\n]?\$(\.?([a-zA-Z])+(\.[a-zA-Z])?)/g;
	var ar = reg.exec(captionText);
	var symbol = ar ? ar[1].toUpperCase() : 'clover';
	var obj = {
		method : 'feed',
		name : 'Follow this post on Tradefields',
		link : link,
		picture : 'http://static.tradefields.com/symbols/logo/' + symbol
				+ '.gif',
		caption : captionText,
		actions : [ {
			name : 'Comment on Tradefields',
			link : link
		} ],
		user_message_prompt : 'Join this conversation on Tradefields'
	};

	// if (fbaccessToken!=''){
	// obj.access_token=fbaccessToken;
	// }

	FB.ui(obj, function(response) {
		if (response && response.post_id) {
			showSuccessMessage(successText);
		}
	});
}

function shareOnFacebook(title, captionText, successText, link, img) {
	var obj = {
		method : 'feed',
		name : title,
		link : link,
		picture : (img)?img:'http://static.tradefields.com/symbols/logo/clover.gif',
		caption : captionText,
		actions : [ {
			name : 'Join Tradefields',
			link : 'http://www.tradefields.com'
		} ],
		user_message_prompt : title
	};

	// if (fbaccessToken!=''){
	// obj.access_token=fbaccessToken;
	// }

	FB.ui(obj, function(response) {
		if (response && response.post_id) {
			showSuccessMessage(successText);
		}
	});
}

function shareTradeFacebook(fbaccessToken, captionText, successText, link) {
	var obj = {
		method : 'feed',
		name : 'Share something',
		link : link,
		picture : 'http://static.tradefields.com/symbols/logo/clover.gif',
		caption : captionText,
		actions : [ {
			name : 'Comment on Tradefields',
			link : link
		} ],
		user_message_prompt : 'Join this conversation on Tradefields'
	};
	FB.ui(obj, function(response) {
		if (response && response.post_id) {
			showSuccessMessage(successText);
		}
	});
}

function socialLogin(provider) {
	var a = document.getElementsByName('loginForm' + provider);
	a[0].submit();
}

function renewFacebookAccessToken() {
	FB.login(function(response) {
		if (response.authResponse) {
			var accessToken = response.authResponse.accessToken;
			console.log(accessToken);
		} else {
			console.log('User cancelled login or did not fully authorize.');
		}
	}, {
		scope : 'email'
	});
}

function loginWithFacebook() {
	FB.login(
		function(response) {
			if (response.authResponse) {
				var accessToken = response.authResponse.accessToken;
				var userId = response.authResponse.userID;
				$("body").css("cursor", "progress");
				$.ajax({
					type : 'POST',
					data : 'accessToken=' + accessToken,
					url : baseAppUrl + '/facebook/login',
					dataType : 'html',
					success : function(data) {
						window.location.href = window.location.href;
					},
					error : function(data) {
						$("body").css("cursor", "auto");
					}
				});
			} else {
				console.log('User cancelled login or did not fully authorize.');
			}
	}, {
		scope : 'email'
	});
}

function linkFacebookModalDialog() {
	FB
			.login(
					function(response) {
						if (response.authResponse) {
							var accessToken = response.authResponse.accessToken;
							FB
									.api(
											'/me',
											function(response) {
												$
														.ajax({
															type : 'GET',
															data : 'facebookId='
																	+ response.id,
															url : baseAppUrl
																	+ '/facebook/linkedUser',
															dataType : 'json',
															complete : function(
																	data) {
																var res = $
																		.parseJSON(data.responseText)
																if (res.error
																		&& res.ans.code == 5) {
																	// NO
																	// USUARIOS
																	// LINKEADOS
																	$
																			.ajax({
																				type : 'POST',
																				data : 'facebookId='
																						+ response.id
																						+ "&keep=true&accessToken="
																						+ accessToken,
																				url : baseAppUrl
																						+ '/facebook/linkFacebook',
																				dataType : 'html',
																				success : function(
																						data) {
																					window.location
																							.reload();
																				},
																				error : function(
																						data) {
																					$(
																							'#modalDialog')
																							.remove();
																					showErrorMessage("<p><strong>Error!</strong> "
																							+ data.responseText
																							+ "</p>");
																				}
																			});
																} else {
																	// SE
																	// ENCONTRO
																	// USUARIO
																	// LINKEADO
																	var json = JSON
																			.stringify(response);
																	$
																			.ajax({
																				type : 'POST',
																				data : json,
																				contentType : "application/json; charset=utf-8",
																				dataType : "html",
																				url : baseAppUrl
																						+ '/facebook/linkFacebookModal',
																				success : function(
																						data) {
																					showDialog(data);
																				}
																			});
																}
															}
														});
											});
						} else {
							console
									.log('User cancelled login or did not fully authorize.');
						}
					}, {
						scope : 'email'
					});
}

function linkFacebookAccount() {
	FB.login(function(response) {
		if (response.authResponse) {
			var accessToken = response.authResponse.accessToken;
			FB.api('/me', function(response) {
				var keep = $('#keep-portfolio input:checked').val() == '0';
				$.ajax({
					type : 'POST',
					data : 'facebookId=' + response.id + "&keep=" + keep
							+ "&accessToken=" + accessToken,
					url : baseAppUrl + '/facebook/linkFacebook',
					dataType : 'html',
					success : function(data) {
						window.location.reload();
					},
					error : function(data) {
						$('#modalDialog').remove();
						showErrorMessage("<p><strong>Error!</strong> "
								+ data.responseText + "</p>");
					}
				});
			});
		} else {
			console.log('User cancelled login or did not fully authorize.');
		}
	}, {
		scope : 'email'
	});
}


