// Keep track of what we're doing so we don't get out of sync
var fbPermsChecking = false;
var fbLoggingIn = false;

function facebook_onlogin(username) {
  if (fbLoggingIn || fbPermsChecking) {
    return;
  }
  fbLoggingIn = true;
  var url = LIVING_SITE_URL+'/users/loginFacebookUser/'+new Date().getTime();
  if (username != undefined) {
    url += '/'+escape(username);
  }
  new Request({
    url: url,
    method: 'get',
    onComplete: function () {
      switch (this.response.text) {
        case '1': // existing FB user, logged in
        case '3': // new FB user
        case '7': // username already belongs to this user
          facebook_checkPerms();
          break;
        case '6': // could not create username due to clashes
          window.location.href = '/users/fbChooseUsername';
          break;
        case '0': // not logged in at FB - shouldn't get here?
        case '2': // user banned
        default:
          break;
      }
      fbLoggingIn = false;
    }
  }).send();
}

function facebook_checkPerms() {
  if (fbPermsChecking) { // don't check twice
    return false;
  }
  fbPermsChecking = true;
  new Request({
    url: LIVING_SITE_URL+'/users/checkFacebookPerms/'+new Date().getTime(),
    method: 'get',
    onComplete: function() {
      if (this.response.text !== '') {
        FB.Connect.showPermissionDialog(this.response.text, facebook_permscallback);
      } else {
        window.location.href = '/home';
      }
      fbPermsChecking = false;
    }
  }).send();
}

facebook_permscallback = function(granted) {
  if (granted === false) { // user closed dialog box
    return;
  }
  new Request({
    url: LIVING_SITE_URL+'/users/refreshFacebookEmail/'+$time(),
    method: 'get',
    onComplete: function() {
      window.location.href = '/home';
    }
  }).send();
};
