﻿
// declared to be used with BlogList.ascx repeater
var commentsFaceBookHash = new Object();

/*************
** Primära init/refresh-functioner som bas för att få connect,like,share, och comments-komponenterna att fungera.
** FB JavaScript SDK Api genererar automatiskt in cookie vid inloggning. 
** De övriga komponenterna behöver ingen extra konfigurering för att funka rakt av, men använder då aktuell sid-url
** som id för vad de postar eller hämtar.
************/
function initFacebook() {
    //FB.init({ appId: $("#AppID").val(), channelUrl: $("#ChannelURL").val(), status: true, cookie: true, xfbml: true });
    //No need for ChannelUrl, root by default
    FB.init({ appId: $("#AppID").val(), status: true, cookie: true, xfbml: true });

    FB.Event.subscribe('auth.login', function(response) {
        // alert("Event auth.login:\n" + JSON.stringify(response));
        updateLoginButton(response.session.uid);
    });


    FB.getLoginStatus(function(response) {
        if (response.session) {
            // logged in and connected user, someone you know
            updateLoginButton(response.session.uid);
        } else {
            // no user session available, someone you dont know               
        }
        refreshFacebook();
    });
    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 updateLoginButton(uid) {
    document.getElementById('loginbutton').innerHTML = "<fb:login-button>You are now connected</fb:login-button>";
    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

    });
}