var FB_Connect = {
    fb_inited: false,

    init: function() {
        var self        = this;

        if ('undefined' === typeof(FB_DATA) || FB_DATA.APP_KEY.length == 0) {
            return false;
        }

        if ('object' !== typeof(FB)) {
            /*
            $.getScript('http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/hr_HR', function() {
                self._fb_init();
            });
            */

            $.ajax({
                async:      false,
                type:       "GET",
                url:        "http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/hr_HR",
                success:    function(){ self._fb_init() },
                dataType:   "script",
                timeout:    4000,
                cache:      true
            });

        } else {
            self._fb_init();
        }

        this._setHandlers();
    },

    _fb_init: function() {
        if ($('#FB_HiddenContainer').length == 0) {
            var fbHiddenDiv = document.createElement("div");
            fbHiddenDiv.id = "FB_HiddenContainer";
            fbHiddenDiv.style.position = "absolute";
            fbHiddenDiv.style.left = "-9999em";
            fbHiddenDiv.style.top = "-9999em";
            fbHiddenDiv.style.width = "0px";
            fbHiddenDiv.style.height = "0px";
            window.document.body.insertBefore(fbHiddenDiv, window.document.body.firstChild);
        }
        
        FB.init(FB_DATA.APP_KEY, '/xd_receiver.html', {permsToRequestOnConnect: 'email'});

        this.fb_inited = true;

        return true;
    },

    onFacebookConnect: function() {
        window.location = FB_DATA.USERS_MODULE + 'login/?fb_auth=1';
    },

    onFacebookRevoke: function() {
        window.location = FB_DATA.USERS_MODULE + 'profil/?fb_revoke=1';
    },

    _setHandlers: function() {
        var self = this;

        $('a.fb_connect_logout').click(function(e) {
            window.location = FB_DATA.USERS_MODULE + 'logout/';
            e.preventDefault();
        });

        $('a.fb_connect_login').click(function(e) {
            if (self.fb_inited) {
                FB.Connect.requireSession(self.onFacebookConnect);
            }
            e.preventDefault();
        });

        $('a.fb_email_approve').click(function(e) {
            if (self.fb_inited) {
                FB.Connect.showPermissionDialog('email', self.onFacebookConnect);
            }
            e.preventDefault();
        });

        $('a.fb_connect_revoke').click(function(e) {
            if (self.fb_inited) {
                FB.Facebook.apiClient.revokeAuthorization(FB_DATA.UID, self.onFacebookRevoke);
            }
            e.preventDefault();
        });
    }
};