
/***
 * fb_connect.js - Facebook Connect helper functions.
 * Christian Hentschel
 */

function chkHint() {
  var showHint = false;
  var visible = $('#feed_hint').is(':visible');

  if ($("#joins").val() == 2 || $("#notes").val() == 2 || $("#photos").val() == 2)
    showHint = true;

  if (showHint && !visible)
    $("#feed_hint").fadeIn();
  else if (!showHint && visible)
    $("#feed_hint").hide();
}

function showSettings() {
  $("#fblogin").remove();
  $("#sform").show();

  $("#fb_uid").val(FB.Facebook.apiClient.get_session().uid);
  $("#fb_session").val(FB.Facebook.apiClient.get_session().session_key);

  showLogin();
}

function showLogin() {
  $("#fbloader").hide();
  $("#settings").fadeIn();
}

function fb_init(api_key, callback) {
  FB_RequireFeatures(["XFBML"], function() {
    FB.init(api_key, callback, {
      "ifUserConnected": chkOffline, 
      "ifUserNotConnected": showLogin 
    });
  });
}

function chkOffline() {
  FB.Facebook.apiClient.users_hasAppPermission('offline_access', function(res) {
    if (res) showSettings(); else showLogin();
  });
}

function fb_authorize() {
  FB.ensureInit(function() {
    FB.Facebook.get_sessionState().waitUntilReady(function() {
      FB.Connect.showPermissionDialog('offline_access', function(res) {
        if (res) showSettings();
      });
    });
  });
}

function fb_login_ready() {
    var fb_uid = FB.Facebook.apiClient.get_session().uid;
    var fb_session = FB.Facebook.apiClient.get_session().session_key;

    gotoUrl('/account/facebook/auth' + '?fb_uid=' + fb_uid + '&fb_session=' + fb_session);
}

function doCheck(item, permission) {
  $(":submit").attr("disabled","disabled");
  item.disabled = true;

  FB.Facebook.apiClient.users_hasAppPermission(permission, function(res) {
    if (!res) FB.Connect.showPermissionDialog(permission, function(res) {
      if (!res) {
        item.value = 0;
      }
      $(":submit").removeAttr("disabled");
      item.disabled = false;
    });
    else {
      $(":submit").removeAttr("disabled");
      item.disabled = false;
    }
  });
}

function chkItem(item) {
  FB.ensureInit(function() {
    FB.Facebook.get_sessionState().waitUntilReady(function() {
      switch (item.value) {
        case '1': doCheck(item, 'status_update'); break;
        case '3': doCheck(item, 'photo_upload'); break;
      }
    });
  });
  chkHint();
}
