var FBappId = 0;

function FBinit(json) {
    FBappId = json;
    FB.init({appId: FBappId,
             status: true,
             cookie: true, xfbml: true});
    var logoutClickFn = function() {
        if (FB.getSession()) {
            FB.logout(function(response){
                          jQuery('#logout_submit').trigger('submit');
                      });
            return false;
        };
        return true;
    };
    var realignLBox = function() {
        var lBox = jQuery('#facebook-login-box').find('div');
        lBox.width(lBox.width()+parseInt(lBox.css('margin-left')));
        lBox.css('margin-left', '0');
    };
    FB.Event.subscribe('auth.sessionChange',
                       function(response) {
                           jQuery.getJSON('/_json/',
                                          { 'component' : 'cFacebookLogin',
                                            'method' : 'afterLogin',
                                            'page' : location.pathname},
                                          function (json) {
                                              if (json.needsRefresh) {
                                                  window.location.reload();
                                              }
                                              else {
                                                  for(divid in json.htmls) {
                                                      jQuery('#'+divid).html(json.htmls[divid]);
                                                  }
                                                  for(divid in json.replaces) {
                                                      jQuery('#'+divid).replaceWith(json.replaces[divid]);
                                                  }
                                                  jQuery('#logout_submit').click(logoutClickFn);
                                                  realignLBox();
                                                  FB.init({appId: FBappId,
                                                           status: true,
                                                           cookie: true,
                                                           xfbml: true});
                                              }
                                          });
                       });
    jQuery('#logout_submit').click(logoutClickFn);
    realignLBox();
};

jQuery(document).ready(function () {
    var initialWidth;
    if (! document.getElementById('fb-root')) {
        jQuery('body').append('<div id="fb-root" />');
    };
    jQuery.getJSON('/_json/',
                   { 'component': 'cFacebookLogin',
                     'method' : 'getAppId' },
                   FBinit);
    jQuery("#facebook-login-box").live('mouseenter',
        function(elem) {
            if (!initialWidth) {
                initialWidth  = jQuery('#facebook-login-box').width();
            }
            var fbButtonWidth = jQuery('fb\\:login-button .fb_button').width();
            jQuery("#facebook-login-box").stop();
            jQuery("#facebook-login-box").animate({'width' : fbButtonWidth});
        }).live('mouseleave',
        function(elem) {
            jQuery("#facebook-login-box").stop();
            jQuery("#facebook-login-box").animate({'width' : initialWidth+'px'});
        });
});

