﻿
// declared to be used with BlogList.ascx repeater
var commentsFaceBookHash = new Object();


function initFacebook() {
    
    FB.init({ appId: $("#AppID").val(), status: true, cookie: true, xfbml: true });
   
    if (!FB._apiKey) {
        setTimeout(initFacebook, 100);
    } else {
        FB.Event.subscribe('auth.login', function (response) {
            updateLoginButton(response.authResponse.userID);
            setCookie("fbToken", response.authResponse.accessToken, 1);
            getLoginStatus();
            window.location.href = document.location.href;            
        });
        getLoginStatus();
        updateBlogList();
    }
   
}

/************
** Den här refresh-funktionen blev nödvändig efter implemenationen av ajaxRender och ajaxPost i master.js
** Anropet sker efter varje färdig asynkron ajaxPost från master.js, och säger i princip till
** FB.init({}) att initiera facebook igen och därmed parsa/rendera komponenterna igen.
*************/
function refreshFacebook() {
    FB.XFBML.parse();   // instead of running init again
}

function getLoginStatus() {
    if (!FB._apiKey) {
        initFacebook();
    }
    
    
    FB.getLoginStatus(function (response) {
       
        if (response.status != "unknown") {
            updateLoginButton(response.authResponse.userID);
            $('.FaceBookLikePage').show();
            //ticker
            $('#connectFB').hide();
            $('#fbTickerPosts').show();
            //feed
            $('.FacebookFeed').show();
            //set cookie
            setCookie("fbToken", response.authResponse.accessToken, 1);
            
        }
        //user is not logged in to fb, hide like box
        else {
            $('.FaceBookLikePage').hide();
            //ticker
            $('#connectFB').show();
            $('#fbTickerPosts').hide();
            //feed
            $('.FacebookFeed').hide();
        }
        refreshFacebook();

    });
}


function updateLoginButton(uid) {
    document.getElementById('loginbutton').innerHTML = "<img src='/Templates/Images/btn_fb_stripe.gif' class='border' /><span><fb:login-button>" + $("#FacebookConnected").val() + "</fb:login-button></span>";
    $('.FacebookFeed').show();
    $('#fbTickerPosts').show();
//    refreshFacebook();
//    updateBlogList();
}

function updateBlogList() {
    i = 0;
    var queries = new Array();
    var multipleQueryTemplate = "select xid, text from comment where xid='{0}'";
    for (var containerId in commentsFaceBookHash) {
        var item = commentsFaceBookHash[containerId];
        queries[i] = FB.Data.query(multipleQueryTemplate, item.xid);
        // alert("containerId: " + containerId + ", " + JSON.stringify(queries[i]));
        i++;
    }

    FB.Data.waitOn(queries, function(respons) {
        // alert("Multiple Q respons: " + respons[0].length + ", " + JSON.stringify(respons) + "\nxid=" + respons[0][0].xid);
        var nrComments = 0;
        for (var blog in respons) {
            item = respons[blog];
            nrComments = item.length;
            if (nrComments > 0) {
                elementId = commentsFaceBookHash[item[0].xid].elementId;
                commentsFaceBookHash[item[0].xid].nrComments = nrComments;
                value = " (" + nrComments + " comment" + ((nrComments > 1) ? "s)" : ")");
                element = $("#" + elementId);
                element.html(value);
            }
        }
        // seems to works only if user allready is logged in
        // but what if user logs in later... then call this function from login handler

    });
}
