function streamPublishCallback(post_id, exception, url, source_url, fb_action)
{
  if(post_id)
  {
    fb_result = post_id;
  }
  else
  {
    fb_result = exception;
  }
  storeFbTracking(url, source_url, fb_action, fb_result);
}

function checkFbPmUser(url)
{
  returnStatus = false;
  //send user answers to server via ajax
  var ajaxCall = new Ajax.Request(url + '/schedule/ajaxCheckFbPmUser',
  {
      asynchronous: false,
      method:'post',
      postBody: '',
      onSuccess: function(transport){
        if(transport.responseText == 'diff'){ 
               returnStatus = true;
        }
      },
      onFailure: function(transport) {
       }
  });

  return returnStatus;
}

// function to publish to wall
//   also checks user accounts
function callPublish(url, source_url, fb_action, msg, attachment, action_link) {
 
  //check to see if the user calling the publish button is already logged in via facebook as a different user 
  diffUsers = checkFbPmUser(url);

  //if diffUsers, then logout
  if(diffUsers) { FB.Connect.logout(function() {
     streamPublishWrapper(url, source_url, fb_action, msg, attachment, action_link);
    });
  } else {
     streamPublishWrapper(url, source_url, fb_action, msg, attachment, action_link);
  }
}

function streamPublishWrapper(url, source_url, fb_action, msg, attachment, action_link)
{
    FB.ensureInit(function () {
      FB.Connect.streamPublish('', attachment, action_link, '', msg, function(post_id, exception) { streamPublishCallback(post_id, exception, url,source_url, fb_action); });
    });
}

function grantPermission(url, source_url, fb_action)
{ FB.ensureInit(function () {
    FB.Connect.showPermissionDialog('publish_stream', function(response) {storeFbTracking(url, source_url, fb_action, response);}, false, null);
  });
}

function storeFbTracking(url, source_url, fb_action, fb_result)
{
  //send user answers to server via ajax
  var ajaxCall = new Ajax.Request(url + '/schedule/ajaxFBTrack?source_url=' + source_url + '&fb_action=' + fb_action + '&fb_result=' + fb_result, // + '&ref=' + urlEncode(window.location.href),
  {
      asynchronous: false,
      method:'post',
      postBody: '',
      onSuccess: function(transport){
      },
      onFailure: function(transport) {
       }
  });
}

function storeFbLogin(url, source_url, fb_login_action)
{
  //send user answers to server via ajax
  var ajaxCall = new Ajax.Request(url + '/schedule/ajaxStoreFBLogin?url=' + source_url + '&fb_login_action=' + fb_login_action, // + '&ref=' + urlEncode(window.location.href),
  {
      asynchronous: false,
      method:'post',
      postBody: '',
      onSuccess: function(transport){
      },
      onFailure: function(transport) {
       }
  });
}
