$(document).ready(function() {
  FB.init({ apiKey: fb_api_key,
            cookie: false,
            logging: true
  });

  // Callbacks for FB-C
  FB.Event.subscribe('auth.sessionChange', gotStatus);
  FB.Event.subscribe('auth.sessionChange', persistSession);

  // Hook up facebook login buttons with FB connect
  $(".fb-login").bind('click', function() {
    FB.login();
    return false;
  });

  // Get initial status
  FB.getLoginStatus(function(response) {
    $("#account .loading").hide();

    if (!response.session) {
      $("#user-login").show();
    } else {
      $("#user-login").hide();
    }

    updateUserInfo();
  });

  // Handle session change
  function gotStatus(response) {
    if (response.session) {
      $("#user-login").hide();
    } else {
      $("#user-login").show();
    }

    updateUserInfo();
  }

  function persistSession(response) {
    if (response.session && !persisted_session) {
      /*for (var prop in response.session) {
        alert("KEY: " + prop);
      }*/

      // Persist log in with server
      var inputs = $("#user-login form input");
      $.each(inputs, function(i, val) {
        var input = $(val);
        input.attr('value', response.session[input.attr('name')]);
      });

      $("#user-login form").submit();
    }
  }

  function updateUserInfo() {
    if (!FB.getSession()) {
      $("#user-info").hide();
    } else {
      var params = {
        method: 'Fql.query',
        query: (
          'SELECT ' +
            'name,' +
            'pic_square,' +
            'profile_url ' +
          'FROM ' +
            'user ' +
          'WHERE ' +
            'uid=' + FB.getSession().uid
        )
      };

      FB.api(params, function(info) {
        if (info.error_code) {
          return;
        }

        info = info[0];

        $('#user-name').text(info.name);
        $('#user-pic').attr('src', info.pic_square);
        $("#user-info").show();
      });
    }
  }
});
