﻿
/* Facebook XFBML initialization */
jQ(document).ready(xfbmlInit);

function xfbmlInit() {
    FB_RequireFeatures(["XFBML"], function() {
        FB.Facebook.init(facebookApiKey, "/pages/login/xd_receiver.htm");

        // init forward checkbox
        if (jQ('.forward .fb input').length > 0) {
            jQ('.forward .fb input').each(function(i, e) {
                if (jQ(this).attr('checked') === true) {
                    jQ(this).attr('desiredState', "checked");
                } else {
                    jQ(this).attr('desiredState', "");
                }
            });
            if (typeof facebookUserId != "undefined") {
                var session = FB.Facebook.apiClient.get_session();
                if (session && facebookUserId == session.uid) {
                    FB.Facebook.apiClient.users_hasAppPermission("publish_stream", adjustPublishCheckBoxes);
                }
            }

        }

        // init find friends
        if (jQ('.ffFbUpdateBtn').length > 0) {
            fbLoginAndPromptPermission(initFindFriendsLoading, false, true)
        }
    });
}


function fbLoginAndPromptPermission(callback, askPublishPermission, forceIdentityUpdate) {

    var sessionGenerated = false;

    var fbPermissionGranted = function(permissions) {
        if (sessionGenerated || forceIdentityUpdate) {
            window.location.href = jQ('.fbConnectUpdate').attr("href");
        }
        if (callback) {
            callback(permissions);
        }
    };

    var fbAskPermission = function() {
        if (askPublishPermission) {
            FB.Connect.showPermissionDialog("publish_stream", fbPermissionGranted);
        } else {
            fbPermissionGranted("");
        }
    };

    var session = FB.Facebook.apiClient.get_session();
    if (!session) {
        sessionGenerated = true;
        FB.Connect.requireSession(fbAskPermission, null, true);
    } else {
        fbAskPermission();
    }
}

function initFindFriendsLoading(hasPermission) {
    window.location.href = jQ('.ffFbUpdateBtn').attr("href");
};

function adjustPublishCheckBoxes(hasPermission) {
    var checkbox = jQ(".forward .fb input");
    checkbox.unbind("click");
    if (!!hasPermission) {
        checkbox.attr('checked', checkbox.attr('desiredState'));
    } else {
        checkbox.attr('checked', '');
        checkbox.click(function() {
            checkbox.attr("desiredState", "checked");
            checkbox.attr("checked", "");
            fbLoginAndPromptPermission(adjustPublishCheckBoxes, true, null);
        });
    }
};









