﻿
/// Login and logout Facebook via FacebookConnect
/// FacebookLink.aspx uses this script

//Description: Call at the end of the page below </body> tag
//Param: You need to register your application with Facebook to get ApplicationID
function fbInitialiseSession(ApplicationID) {

    FB.init({ appId: ApplicationID, status: true, cookie: true, xfbml: true });
    FB.Event.subscribe('auth.sessionChange', function(response) {
        if (response.session) {
            //alert(' A user has logged in, and a new cookie has been saved');
            //alert (isLoggedIn);

        } else {
            //alert(' The user has logged out, and the cookie has been cleared');
            //alert(isLoggedIn);
        }
    });
}

//Description: Call to log on Facebook
//             Extended Permissions and FQL can be changed depend on requirements. 
//Param: RedirectURL the URL to go to after login.
function fbLogin() {
    FB.login(function(response) {
        if (response.session) {
            //user is logged in, reload page
            //window.location.reload(true);

            if (response.perms) {
                // user is logged in and granted some permissions.
                // perms is a comma separated list of granted permissions
                FB.api('/me', function(response) {
                    var query = FB.Data.query('select first_name, last_name, email, hometown_location from user where uid={0}', response.id);

                    query.wait(function(rows) {

                        if (rows.length <= 0) return;   /* no result = do nothing */
                        var row = rows[0];              /* reference first row */
                        var s = {};                     /* create a copy json object to hold what's returned by facebook */

                        /* go through facebook result - and copy each key/value pair to s (our own object) */
                        for (var obj in row) s[obj] = row[obj];

                        var fb_cookie_prefix = 'fb_';
                        for (var key in s) {
                            if (s[key]) {

                                if (key == 'hometown_location') {
                                    createCookie('fb_hometown_location', s[key].name, 1);

                                }
                                else {
                                    var cookie_key = '{0}{1}'.format(fb_cookie_prefix, key);
                                    //trace('{0} = {1}'.format(cookie_key, s[key]));

                                    /* using our own object, create our cookies */
                                    createCookie(cookie_key, s[key], 1);    // FIXME: use localStorage or sessionStorage
                                }
                            }
                        }

                        //REDIRECT URL after login
                        window.parent.location = "Details.aspx?element=32&category=1";
                        
                    });
                });
            } else {
                // user is logged in, but did not grant any permissions
            }

        } else {
            // user is not logged in
        }
    }, { perms: 'email,user_birthday,user_hometown' });
}

//Description: Call to log out Facebook
//
function fbLogout() {

    FB.init({ appId: '157043787642394', status: true, cookie: true, xfbml: true });
    FB.logout(function(response) {
        alert('user is now logged out of Facebook');
    });
    //delete user's cookies
    eraseCookie('fb_first_name');
    eraseCookie('fb_last_name');
    eraseCookie('fb_email');
    eraseCookie('fb_hometown_location');

    //alert('cookies removed');
}

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}


