// FACEBOOK CONNECT JAVASCRIPT LIBRARY
// ---------------------------------------------
// connect_with_facebook(redirect_url)
// connect_and_publish_feed_story(link_to_current_user, message, form_bundle_id_str, template_data, redirect_url)
// facebook_invite_friends()
// facebook_profile_setFBML(profile_box_fbml)
// ---------------------------------------------

/*
 * Invokes login php script via AJAX and then redirects to a url.  This would be
 * typically called in response to the onclick handler of a "Connect" button,
 * essentially anywhere on the site where a user can log in via Facebook.  
 *
 */   
function connect_with_facebook(redirect_url) {
  // jQuery ajax call to log in
	$.get('facebook/admin/fbajax_login', null, function(response) { window.location = redirect_url; return; });
}

/*
 * Show the publish feed form. This would be typically called in response to the
 * onclick handler of a "Publish" button, or in the onload event after
 * the user submits a form with info that should be published.  Ensures that
 * there is a valid facebook session first. 
 *
 */
function connect_and_publish_feed_story(message, form_bundle_id_str, template_data, redirect_url) {

  // make sure facebook libraries are loaded
  FB.ensureInit( function() {
		
		// require facebook session
		FB.Connect.requireSession(null, function() { window.location = redirect_url; });

    // once facebook session is ready...
  	FB.Facebook.get_sessionState().waitUntilReady(function() {

      // jQuery ajax call to link accounts
      $.get('facebook/admin/fbajax_link_accounts', null, function(is_linked) { 

  		  // if facebook and sitejabber accounts linked successfully, show prompt		
    		if (is_linked == 1) {
    			var user_message_prompt = 'Publish your review!';
          var user_message = {value: message}; 
    			var form_bundle_id = parseInt(form_bundle_id_str);
    			FB.Connect.showFeedDialog(form_bundle_id, template_data, null, null, null, FB.RequireConnect.require, function() { window.location = redirect_url; }, user_message_prompt, user_message);
  
  			// otherwise, redirect to url
    		} else {
    			window.location = redirect_url;
    		}
		  });
    });  
  });
}

/*
 * Displays popup dialog box allowing user to invite facebook friends.  Used
 * for the Invite Friends tab, if user is connected to facebook.
 *   
 */
function facebook_invite_friends() {

  // make sure facebook libraries are loaded
	FB.ensureInit( function() {

    // require facebook session
		FB.Connect.requireSession();

    // once facebook session is ready...		
  	FB.Facebook.get_sessionState().waitUntilReady(function() {

      // display pop up invitation box
  		var dialog = new FB.UI.FBMLPopupDialog('Invite your friends to join SiteJabber', '');
  		var fbml = "<fb:fbml>"+"<fb:request-form action=\"" + document.location.href + "\"\tmethod=\"POST\" invite=\"false\" type=\"SiteJabber\" "+"content=\"I've invited you and few friends to share reviews of online businesses and websites with me.<fb:req-choice url='http://www.sitejabber.com/registration' label='Join' />\">"+"<fb:multi-friend-selector\tshowborder=\"false\" exclude_ids=\"\" actiontext=\"Invite your friends to SiteJabber\" rows=\"3\" bypass=\"cancel\"\tshowborder=\"false\" />"+"</fb:request-form>"+"</fb:fbml>";
  		dialog.setFBMLContent(fbml);
  		dialog.setContentWidth(760);  
  		dialog.setContentHeight(540);
  		dialog.show();
    });
  });
}

/*
 * Update facebook profile box with review that was just written.
 *   
 */
function facebook_profile_setFBML(profile_box_fbml) {
	
  // make sure facebook libraries are loaded
  FB.ensureInit( function() {
		
		// require facebook session
		FB.Connect.requireSession();
		
    // once facebook session is ready...		
  	FB.Facebook.get_sessionState().waitUntilReady(function() {
      
      var fb_user_id = FB.Facebook.apiClient.get_session() ? FB.Facebook.apiClient.get_session().uid : null;
		  // using $facebook->api_client->profile_setFBML(session_key, uid, 'profile', 'profile_action', 'mobile_profile', 'profile_main');
			response = FB.Facebook.apiClient.profile_setFBML(null, fb_user_id, null, null, null, profile_box_html); 
    });
	});
}	