﻿/*
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>
*/


var FBConnect =
{
    //the api secret key
    fb_api_key: "",

    //cross domain channel url
    cross_domain_channel_url: "",

    //initialize the wrapper
    init: function(_fb_api_key, _cross_domain_channel_url) {
        fb_api_key = _fb_api_key;
        cross_domain_channel_url = _cross_domain_channel_url;
        FB.init(fb_api_key, cross_domain_channel_url);
    },

    //check users' logged-in status
    isUserLoggedIn: function(callback) {
        FB.ensureInit(function() {
            callback(
                FB.Facebook != null && FB.Facebook != undefined
                && FB.Facebook.apiClient != null && FB.Facebook.apiClient != undefined
                && FB.Facebook.apiClient.get_session() != null && FB.Facebook.apiClient.get_session() != undefined);
        });
    },

    //login method
    login: function(callback) {
        FB.ensureInit(function() {
            FB.Connect.ifUserConnected('#', function() {
                FB.Connect.requireSession(callback);
            });
        });
    },

    //logout method
    logout: function(callback) {
        FB.ensureInit(function() {
            FB.Connect.logout(callback);
        });
    },

    //show feed dialog
    showFeedDialog: function(templateId, data) {
        FB.ensureInit(function() {
            FB.Connect.showFeedDialog(templateId, data);
        });
    },

    //get user name
    getName: function(callback) {
        FB.ensureInit(function() {
            var uid = FB.Facebook.apiClient.get_session().uid;
            var fields = ["first_name", "last_name"];
            FB.Facebook.apiClient.users_getInfo(uid, fields, function(result) {
                callback(result);
            });
        });
    },

    //gets the user's profile pictures
    getPics: function(callback) {
        FB.ensureInit(function() {
            var uid = FB.Facebook.apiClient.get_session().uid;
            var fields = ["pic", "pic_with_logo", "pic_big", "pic_big_with_logo", "pic_small", "pic_small_with_logo", "pic_square", "pic_square_with_logo"];
            FB.Facebook.apiClient.users_getInfo(uid, fields, function(result) {
                callback(result);
            });
        });
    },

    //gets profile fields (passed in)
    getUserInfo: function(uids, fields, callback) {
        FB.ensureInit(function() {
            FB.Facebook.apiClient.users_getInfo(uids, fields, function(result) {
                callback(result);
            });
        });
    },

    //gets current user id
    getUserId: function() {
        return FB.Facebook.apiClient.get_session().uid;
    },

    //gets the birthday of the user
    getBirthday: function(callback) {
        FB.ensureInit(function() {
            var uid = FB.Facebook.apiClient.get_session().uid;
            var fields = ["birthday"];
            FB.Facebook.apiClient.users_getInfo(uid, fields, function(result) {
                callback(result[0]);
            });
        });
    },

    //get Friends list
    getFriends: function(fields, callback) {
        FB.ensureInit(function() {
            FB.Facebook.apiClient.friends_get(String(new Array()), function(ids) {
                FB.Facebook.apiClient.users_getInfo(ids, fields, function(result) {
                    callback(result);
                });
            });
        });
    }

};