window.fbAsyncInit = function() {
  FB.init(fb_opt);

  // login
  $(".facebookLogin a").click(function () {
    FB.login(function(resp1) {
      if (resp1.status !== "connected") { return; }
      FB.api("/me", function(resp2) {
        params = {
          fb_token: resp1.authResponse.accessToken,
          email: resp2.email,
          crumb: iqon_crumb
        };
        iqon_login_by_fb(params);
      });
    }, {scope: "email,publish_stream,offline_access"});
  });

  // connect
  $("#facebookConnect a").click(function () {
    FB.login(function(resp1) {
      if (resp1.status !== "connected") { return; }
      $.cookie("fb_token", resp1.authResponse.accessToken, {path: "/"});
      window.location.href = "/user/facebook/connect/";
    }, {scope: "email,publish_stream,offline_access"});
  });

  // disconnect
  $("#facebookDisconnect a").click(function () {
    if (iqon_user_id) {
      FB.api({method: "Auth.revokeAuthorization"}, function (response) {
        window.location.href = "/user/facebook/disconnect/";
      });
    }
  });

  function iqon_login_by_fb(params) {
    $.getJSON("/api/fb_login/", params, function(json, status) {
      if (json.status == 200) {
        session_key = json.results[0].session_key;
        $.cookie("iqon_session", session_key, {path: "/", expires: 7});

        redirect_after_login();
      } else {
        var options = {path: "/"};
        $.cookie("email", params.email, options);
        $.cookie("fb_token", params.fb_token, options);
        redirect_to_create();
      }
    });
  }

  function redirect_after_login() {
    var path = "/my/";
    if (typeof after_login_url != "undefined") {
      if (window == window.parent) {
        path = after_login_url;
      } else {
        window.open(after_login_url);
        return;
      }
    } else if (typeof iqon_smartphone != "undefined") {
      if (iqon_smartphone) { path = "/"; }
    }
    window.location.href = path;
  }

  function redirect_to_create() {
    if (window == window.parent) {
      window.location.href = "/register/facebook/";
    } else {
      window.open("/register/facebook/");
    }
  }
};

