﻿// dependencies : Facebook, Jquery, JQuery UI


// ###############################################################################
// 
// ###############################################################################
(function(){
    //Variables and functions go here.
    permissionList = "publish_stream";
})();

swush = function() {};
swush.fb = function() {};


// ###############################################################################
// returns
// 0 for not connected
// 1 for can post
// 2 for error (unable to reach facebook)
// ###############################################################################
swush.fb.getWallPostStatus = function() {
    var result = $.ajax({
      url: "/Facebook/GetWallPostStatus",
      async: false
     }).responseText;
    return result;
};


// ###############################################################################
// binds current user to facebook. failCallback is optional
// ###############################################################################
swush.fb.bindUserToFacebook = function(successCallback, failCallback) {
    var status = swush.fb.getWallPostStatus();
    if (status == 0) {
        FB.Connect.showPermissionDialog("publish_stream", function(perms) {
            if (perms) {
                //swush.fb.connectedCurrentUser(successCallback);
                $.get("/Facebook/BindToFacebook", null, function(json) {
                    if (json == 2) {
                        if (failCallback == null)
                            alert('Unable to bind to Facebook, user is currently not authenticated with Facebook Connect.');
                        else
                            failCallback();
                    }
                    else
                        successCallback();
                });
            }
            else {
                // what to do if user rejects permission request?
            }
        });
    }
    else if (status == 1)
        successCallback();
    else {
        if (failCallback != null)
            failCallback();
        else
            alert('Unable to contact Facebook. Try again later.');
    }
};




// ###############################################################################
//
// ###############################################################################
swush.fb.importFacebookAvatar = function(language, callbackSucceed, callbackFail) {
    var OnStart = function() {
        var data = "";
        $.get("/Facebook/ImportFacebookAvatar" + data, null, function(json) {
            if (json == "1")
                callbackSucceed();
            else {
                if (callbackFail == null)
                    alert('Avatar import failed:' + json);
                else
                    callbackFail(json);
            }
        });
    };
    var onBindError = function() {
        alert('An error occurred trying to bind to Facebook.');
    };
    swush.fb.bindUserToFacebook(OnStart, onBindError);
}




// ###############################################################################
// Posts an achievement/award to Facebook. Prompts user to "swush-facebook-bind"
// if user has not already done so. Utilizes the "/Facebook/AwardPostDialog"
// posting dialog - note element and event bindings to this dialog.
// ###############################################################################
swush.fb.postAwardWithDialog = function(awardid, language, onFinished, onFailed, onCancel, dialogHolder) {
    var OnNext = function() {

        var onPost = function() {
            var txtComment = dialogHolder.find('#txtComment');
            var data = "?awardid=" + awardid + "&language=" + language + "&comment=" + txtComment.val();
            $.get("/Facebook/PostAchievement" + data, null, function(json) {
                dialogHolder.dialog('close');
                onFinished(json);
            });
        };

        var cancel = function() {
            dialogHolder.empty();
            dialogHolder.dialog('close');
            if (onCancel != null) onCancel();
        };

        var html = $.ajax({ url: "/Facebook/AwardPostDialog?awardId=" + awardid + "&language=" + language, async: false }).responseText;
        dialogHolder.empty();
        dialogHolder.append(html);

        // bind events
        dialogHolder.find('#btnPost').bind('click', onPost);
        dialogHolder.find('#btnCancel').bind('click', cancel);

        dialogHolder.css('left', ($(window).width() - dialogHolder.width()) / 2);
        dialogHolder.css('top', ($(window).height() - dialogHolder.height()) / 2 - 20);
        dialogHolder.dialog('open');
        dialogHolder.dialog().parents(".ui-dialog").find(".ui-dialog-titlebar").remove();
    };

    swush.fb.bindUserToFacebook(OnNext, onFailed);
};


