﻿/********* LIKES **********/
var likeDebug = function (s) {
    // comment this out when done debugging!
    if (typeof console !== 'undefined') {
        //console.log(s);
    }
}
var likeError = function (s) {
    if (typeof console !== 'undefined') {
        //console.log(s);
    }
}
var likeCount = function (obj) {
    likeDebug("Call to likeCount(" + obj + ")");
    $.ajax({
        url: '/services/interfaces/LikeService.asmx/SelectLikeStats',
        type: 'POST',
        data: '{ObjectNameIds:"' + obj + '",UserName:"' + UserName + '"}',
        success: function (data) {
            likeDebug(data.d);
            if ($.parseJSON(data.d) && $.parseJSON(data.d).Status && $.parseJSON(data.d).GFLikeInfoList) {
                $.each($.parseJSON(data.d).GFLikeInfoList, function (i, item) {
                    var n = item.ObjectName.toLowerCase();
                    var c = item.Count;
                    var likeText = (parseInt(c) == 1 ? "Like" : "Likes");
                    var liked = false;
                    likeDebug(likeName);
                    if (item.Liked == UserName && UserName.length > 0) {
                        $('.Likes[name=' + n + '] a').addClass('off');
                    }
                    else if (likeName.length > 0) { //checks cookie for unauthenticated users
                        if (likeName.toString().indexOf(n) != -1) {
                            $('.Likes[name=' + n + '] a').addClass('off');
                        } else {
                            $('.Likes[name=' + n + '] a').addClass('true');
                        }
                    } else {
                        $('.Likes[name=' + n + '] a').addClass('true');
                    }
                    //$('.Likes[name=' + n + '] span.likeCount').html();
                    $('.Likes[name=' + n + '] span.likeText').html('<span class="likeCount">' + c + '</span> ' + likeText);
                });
            }
            else {
                likeError("Error parsing likeCount data");
            }
        },
        error: function (error) {
            likeError("Error processing likeCount " + error.statusText);
        }
    });
};

var likeClick = function (l, t, ot) {
    if (typeof t == 'undefined') {
        t = 'true';
    }
    likeDebug("Call to likeClick(" + l + ", " + t + ")");
    var lBtn = $('.Likes[name=' + l + '] div.likeBtn a');
    var c = parseInt($('.Likes[name=' + l + '] span.likeCount').html());
    if (t == 'off') {
        $('.Likes[name=' + l + '] a').removeClass('off');
        $('.Likes[name=' + l + '] a').addClass('true');

        if (LoggedOn) {
            likeSubAuthenticated(l, lBtn, c);
        } else {
            likeSub(l, lBtn, c);
        }
    } else {
        likeAdd(l, lBtn, c, ot);
    }
    return false;
};

//  ID for updating User Likes
var likeId = new Array();
if ($.readCookie('likeId') != null) {
    likeId.push($.readCookie('likeId'))
};
//  Name for hightlighting active likes
var likeName = new Array();
if ($.readCookie('likeName') != null) {
    likeName.push($.readCookie('likeName'))
};


var likeAdd = function (l, lBtn, c, ot) {
    likeDebug("Call to likeAdd(" + l + ", " + lBtn + ", " + c + ")");

    var obType = ObjectTypeId; //check if object type is included onclick or is global
    if (ot) { obType = ot }
    else { obType = ObjectTypeId };
    $.ajax({
        url: '/services/interfaces/LikeService.asmx/AddLikeStat',
        data: '{ObjectName:"' + l + '",UserName:"' + UserName + '",ObjectTypeId:"' + obType + '"}',
        type: 'POST',
        success: function (data) {
            //if true refresh page
            if ($.parseJSON(data.d) && $.parseJSON(data.d).Status) {
                if ($.parseJSON(data.d).likeId == -1) {
                    likeDebug("Already liked");
                }
                else {
                    lBtn.addClass('true');
                    var likeText = (c + 1 == 1 ? "Like" : "Likes");

                    $('.Likes[name=' + l + '] span.likeText').html('<span class="likeCount">' + (c + 1) + '</span> ' + likeText);
                    $('.Likes[name=' + l + '] a').removeClass('true').addClass('off');

                    likeId.push($.parseJSON(data.d).LikeId);
                    setCookie('likeId', likeId);
                    likeName.push(l);
                    GF.omniture.like(l);
                    setCookie('likeName', likeName);
                }
            }
            else {
                likeError("Error parsing likeAdd data");
            }
        },
        error: function (error) {
            likeError("Error processing likeAdd " + error.statusText);
        }
    });


    /* We must also check for badges after a like, but only for logged in users.*/
    var Badges_To_Check = '';

    for (var key in pageBadges) {
        var obj = pageBadges[key];
        for (var prop in obj) {
            if (prop != undefined && prop != 'undefined') {
                Badges_To_Check += prop + ",";
            }
        }
    }

    Badges_To_Check = Badges_To_Check.slice(0, -1);

    var in_game_play = false;

    if (LoggedOn) {
        $.ajax({
            url: '/services/interfaces/BadgeManagementService.asmx/AwardBadge',
            data: '{user_name:"' + UserName + '",badges_to_check:"' + Badges_To_Check + '",in_game_play:"' + in_game_play + '", badge_action:"like"}',
            type: 'POST',
            success: function (data) {
                if ($.parseJSON(data.d) && $.parseJSON(data.d).Status) {

                    likeDebug("user is logged on. Let's get badges from JSON now.");

                    var badges_now = $.parseJSON(data.d).BadgeAwards.now;
                    var badges_now_split = badges_now.split(",");

                    if (badges_now_split[0] != "") {
                        Badging.showAwardedBadges(badges_now_split, 'global')
                    }

                    var badges_total = $.parseJSON(data.d).BadgeAwards.total;
                    var badges_total_split = badges_total.split(",");

                }
                else {
                    likeError("Error Checking Badges");
                }
            },
            error: function (error) {
                likeError("Error Checking Badges " + error.statusText);
            }
        });
    }
};




var likeSubAuthenticated = function (l, lBtn, c) {

    likeDebug("Call to likeSubAuthenticated(" + l + ", " + lBtn + ", " + c + ")");
    likeDebug("RemoveListStat for ObjectName" + l + " and UserName: " + UserName);

    $.ajax({
        url: '/services/interfaces/LikeService.asmx/RemoveLikeStat',
        data: '{ObjectName:"' + l + '", UserName:"' + UserName + '"}',
        type: 'POST',
        success: function (data) {
            $('.Likes[name=' + l + '] a').removeClass('off').addClass('true');
            var likeText = (c - 1 == 1 ? "Like" : "Likes");
            var count = c - 1;
            $('.Likes[name=' + l + '] span.likeText').html('<span class="likeCount">' + count + '</span> ' + likeText);
            //$('.Likes[name=' + l + '] span.likeCount').html(c - 1);
        }
    });
};



var likeSub = function (l, lBtn, c) {
    likeDebug("Call to likeSub(" + l + ", " + lBtn + ", " + c + ")");
    if ($.readCookie('likeName') != null) {
        var newLikeName = $.readCookie('likeName');
        var newLikeId = $.readCookie('likeId');
    }
    else {
        var newLikeName = '';
        var newLikeId = '';
    }

    var arrLikeName = newLikeName.split(',');
    var arrLikeId = newLikeId.split(',');

    $.delCookie('likeId');
    $.delCookie('likeName');

    for (i = 0; i < arrLikeName.length; i++) {
        if (arrLikeName[i] == l) { var idKey = i; }
        else {
            setCookie('likeId', arrLikeId[i]);
            setCookie('likeName', arrLikeName[i]);
        }
    }
    var currentId = arrLikeId[idKey];

    likeDebug("RemoveListStat for currentId" + currentId + " and UserName: " + UserName);

    $.ajax({
        url: '/services/interfaces/LikeService.asmx/RemoveLikeStatById',
        data: '{ObjectName:"' + l + '",Id:"' + currentId + '"}',
        type: 'POST',
        success: function (data) {
            $('.Likes[name=' + l + '] a').removeClass('off').addClass('true');
            var likeText = (c - 1 == 1 ? "Like" : "Likes");
            var count = c - 1;
            $('.Likes[name=' + l + '] span.likeText').html('<span class="likeCount">' + count + '</span> ' + likeText);
            //$('.Likes[name=' + l + '] span.likeCount').html(c - 1);
        }
    });
};


var likeUpdate = function () {
    likeDebug("Call to likeUpdate()");
    $.ajax({
        url: '/services/interfaces/LikeService.asmx/UpdateLikeStats',
        data: '{LikeIds:"' + likeId + '",UserName:"' + UserName + '"}',
        type: 'POST',
        success: function (data) {
            //if true refresh page
            if ($.parseJSON(data.d) && $.parseJSON(data.d).Status) {
                $.delCookie('likeId');
                $.delCookie('likeName');
            }
            else {
                likeError("Error parsing likeUpdate data");
            }
        },
        error: function (error) {
            likeError("Error processing likeUpdate " + error.statusText);
        }
    });
};




/************* LIKES **********/
