var is_initialized = false;
function ensure_init(callback) {
  if(!window.api_key) {
    window.alert("api_key is not set");
  }

  if(window.is_initialized) {
    callback();
  } else {
    if(typeof(FB) !== 'undefined'){ 
	    FB_RequireFeatures(["XFBML", "CanvasUtil"], function() {
	        FB.FBDebug.logLevel = 4;
	        FB.FBDebug.isEnabled = true;
	        FB.Facebook.init(window.api_key, xd_receiver_url);
	        window.is_initialized = true;
	        callback();
	      });
	}
  }
}
function facebook_onload(already_logged_into_facebook) {
  ensure_init(function() {
      FB.Facebook.get_sessionState().waitUntilReady(function(session) {
          var is_now_logged_into_facebook = session ? true : false;
          if (is_now_logged_into_facebook == already_logged_into_facebook) {
            return;
          }
          //refresh_page();
        });
    });
}
function fb_connect_logout_onclick(logoutUrl) {
 ensure_init(function() {	
    FB.Facebook.get_sessionState().waitUntilReady(function() {
        var fbu = FB.Facebook.apiClient.get_session() ? FB.Facebook.apiClient.get_session().uid :0;	
	FB.Connect.logoutAndRedirect(logoutUrl);
    });
    FB.Connect.requireSession();
 });
}

function fb_connect_prompt_permission(permission, callbackFunc) {
  ensure_init(function() {
    FB.Facebook.apiClient.users_hasAppPermission(permission,
     function(result) {
        if (result == 0) {
            FB.Connect.showPermissionDialog(permission, callbackFunc);
        } else {
            callbackFunc(true);
        }
    });
  });
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

