var FBLogin = {};

FBLogin.loginTriggers = new Array ();
FBLogin.logoutTriggers = new Array ();

FBLogin.firstrun = 1;

FBLogin.doLoginTriggers = function (uid) {
  for (var i = FBLogin.loginTriggers.length; i > 0; --i)
    {
      FBLogin.loginTriggers[i - 1] (uid);
    }

  FBLogin.firstrun = 0;
};

FBLogin.doLogoutTriggers = function () {
  for (var i = FBLogin.logoutTriggers.length; i > 0; --i)
    {
      FBLogin.logoutTriggers[i - 1] (null);
    }

  FBLogin.firstrun = 0;
};

$(document).ready (function () {
  if (navigator.userAgent.indexOf ('Opera') == -1) 
    {
      FB.init (FBLogin.appid,
               FBLogin.xdreceiver,
               { "ifUserConnected" : FBLogin.doLoginTriggers,
                 "ifUserNotConnected" : FBLogin.doLogoutTriggers }); 
    };
});

FBLogin.ifUserConnected = function (yes, no, nosup) {
  if (navigator.userAgent.indexOf ('Opera') != -1) 
    {
      if (nosup)
        {
          nosup ();
        }
    }
  else
    {
      FB.ensureInit (function () {
        FB.Connect.ifUserConnected (yes, no);
      });
    };
};

FBLogin.initializeFBLogin = function (loginId) {
  FBLogin.loginTriggers.push (function (uid) { FBLogin.updateFBLogin (loginId); });
  FBLogin.logoutTriggers.push (function (uid) { FBLogin.updateFBLogin (loginId); });

  FBLogin.updateFBLogin (loginId);
}

FBLogin.updateFBLogin = function (loginId) {
  FBLogin.ifUserConnected (
    function (uid) {
      var login = document.getElementById (loginId);
      var targetHTML = 
          '<fb:profile-pic class="fbprofilepic" uid="' + uid + '"'
                        + 'facebook-logo=true></fb:profile-pic><br/>' 
        + '<a onclick="FB.Connect.logout (function (b) { return true; });">'
        + 'Log out'
        + '</a>';

      if (login.innerHTML !== targetHTML)
        {
          login.innerHTML = targetHTML;
          FB.XFBML.Host.parseDomTree ();
        }
    },
    function (uid) {
      var login = document.getElementById (loginId);
      var targetHTML = 
          '<fb:login-button>'
        + '</fb:login-button>';

      if (login.innerHTML !== targetHTML)
        {
          login.innerHTML = targetHTML;
          FB.XFBML.Host.parseDomTree ();
        }
    },
    function () {
      $('#' + loginId).html 
        ('<p>Your browser is not supported by Facebook Connect.</p>');
    }
  );
};
