﻿/// <reference path="jquery-1.3.2-vsdoc2.js" />

var hasCalledPageSpecificFacebookScript = false; // This is used because facebook connect sometimes calls functions registered in waitUntilReady function twice, sometimes once depending on latency presumably
var localSearch;
var map;

$(document).ready(function() {
    DoCustomStyling();

    if (typeof (InitHomeScript) == "function")
        InitHomeScript();

    InitFacebook();
    InitEventHandlers();    
});

//EC - check if we are logged in or not 
function CheckServerLoginStatus() {
    // check the app login status first from the server
    var loggedIn = '<%=IsLoggedIn%>'
    if (loggedIn == false) {
        $("facebookUserBox").html("You need login register to connect to facebook");        
    }
}


function InitFacebook() {
    //debugger;
   // FB.init("2fc9648ae979f02b2d3dc3af2510a1a0", "xd_receiver.htm");
//new api secret
// FB.init("9dff73b418b38bc5b1304b5f882c923b", "xd_receiver.htm");
FB.init("127569600596048", "xd_receiver.htm");
    FB.ensureInit(function() {
        FB.Connect.get_status().waitUntilReady(function(loggedIntoFacebook) {
            processFacebookConnectedStatus(loggedIntoFacebook);
            runPageSpecificFacebookScript(loggedIntoFacebook);
        });
    });
}

function InitEventHandlers() {
    $("#addActivityToFavouritesList").click(function() { addActivityToFavouritesList($(this)); });
}

function addActivityToFavouritesList(item) {
    
    var activityId = item.metadata().ActivityId;
    var activityName = item.metadata().ActivityName;
    var templateData = {"activityName" : activityName, "activityId" : activityId };

    // ajax call
    $.post(
        "AjaxRegisterForActivity.aspx",
        { activityId: activityId },
        function(textResponse) {
            if (textResponse == "ok") {
                $("#addActivityToFavouritesList").hide();
                $("#thisActivityIsOnYourFavouritesList").show();
            }
            else {
                alert("An error occurred in the addActivityToFavouritesList jquery function :" + textResponse);
            }

        }, "text");

        // post to facebook
        var message = 'Liverpool Youth and Play Service';
        var link = 'http://www.liverpoolyouth.org/ActivityDetails.aspx?activityId=' + activityId;
        
        var attachment = {
            'name': activityName,
            'href': link,
            'caption': '{*actor*} added the above activity as a favourite!',
            'media': [{ 'type': 'image', 'src': 'http://admin.liverpoolyouth.org/images/logo.gif', 'href': 'http://www.liverpoolyouth.org/'}]
        };        
        FB.Connect.streamPublish('', attachment);
    }

function DoCustomStyling() {

	// Apply css styles to text elements on forms
	$("input[type=text]").add("input[type=password]").addClass("textfield");

	// Set the 'last' class on ul elements
	$("li:last-child").addClass("last");

	$(".ldlForm input[type=image]").addClass("rightImage");

}


function displayFacebookUserData() {

    var facebookUserBox = $("#facebookUserBox");
    var facebookText = $("#facebookText");

    //$("#facebookText").hide();
    facebookText.html("<span></span>");

    facebookUserBox.html(
	"<span>" + "<fb:profile-pic uid=loggedinuser facebook-logo=true></fb:profile-pic>" +
	"Hi!, <fb:name uid=loggedinuser useyou=false></fb:name>. You are signed into Facebook!" + " <a href=\"#\" onclick=\"logoutOfFacebook();\"> Logout</a>" + "</span>");
    FB.XFBML.Host.parseDomTree();
}

function displayFacebookLoginButton() {

    var facebookUserBox = $("#facebookUserBox");

    facebookUserBox.html(
	"<span>" +
	"<fb:login-button  size=\"icon\" length=\"long\" onlogin=\"facebookLoginReady();\"><h2>Connect with Facebook</h2></fb:login-button>" +
	"</span>");

    FB.XFBML.Host.parseDomTree();
}

function facebookLoginReady() {

    $("#ldlAppUserId").text("Refreshing application login status - please wait...");
    location.reload(true);
}

function logoutOfFacebook() {
   
    FB.Connect.logout(facebookLoginReady);    
    displayFacebookLoginButton();
}

function processFacebookConnectedStatus(status) {

    //ec - I have taken this out temporarily - appears to mess up the display status
    //even when you are logged out of facebook        
    
    // check the app login status first from the server
    // workaround for a facebook connect bug
//    var appLoggedIn = $("#loginSection").metadata().LoggedIn;
//    if (appLoggedIn) {
//        displayFacebookUserData();
//        return;
//    }
    

    switch (status) {

        case FB.ConnectState.connected:
            displayFacebookUserData();            
            break;
        case FB.ConnectState.appNotAuthorized:
            displayFacebookLoginButton();
            break;
        case FB.ConnectState.userNotLoggedIn:
            displayFacebookLoginButton();
            break;
    }
}


// This is used for any page specific scripts that are required
// create a function pageSpecificFacebookScript(connected) on the page to
// hook into this
function runPageSpecificFacebookScript(status) {
    // Check if we have already called the function as facebook might call this multiple times
    if (hasCalledPageSpecificFacebookScript) return;
    hasCalledPageSpecificFacebookScript = true;

    // check if the function exists on the page and if so then call it
    if (typeof (pageSpecificFacebookScript) == "function") {pageSpecificFacebookScript(status == FB.ConnectState.connected); };
    //pageSpecificFacebookScript(status == FB.ConnectState.connected);
}

$.fn.metadata = function() {
    var data = this.find(".data").text();
    if (data.indexOf('{') < 0) data = "{" + data + "}";
    data = eval("(" + data + ")");
    return data;
}





