﻿/// <reference path = "../system/jquery-1.4.4-vsdoc.js"/>
$(document).ready(function () {
    $("#friendsList").oneTime(1000, function () { checkForOnlineFriends(); });
    friendCounter = 0;
    friendArray = $("div.friend");
});

$("div.acceptFriend").live("click", function () { toggleFriendRequestCheck(this); });
$("div.deleteFriend").live("click", function () { deleteFriend(this); });

var friendArray;
var friendCounter;

function checkForOnlineFriends() {
    var friendElement = friendArray[friendCounter];
    var friend = $(friendElement).attr("fxn");
    if (friend && friend.length == 0) {
        setFriendTimer();
        return;
    }

    if (friend && friend.length > 0) {
        $.ajax({
            url: "/Member/UserIsOnline/" + friend,
            type: "GET",
            success: function (result) {
                if (result == "true") {
                    $(friendElement).removeClass("friendOffline").addClass("friendOnline");
                } else {
                    $(friendElement).removeClass("friendOnline").addClass("friendOffline");
                }
                setFriendTimer();
            }
        });
    }
}

function setFriendTimer() {
    friendCounter++;
    if (friendCounter > friendArray.length)
        friendCounter = 0;
    $("#friendsList").oneTime(60000, function () { checkForOnlineFriends(); });
}

function toggleFriendRequestCheck(elem) {
    var $elem = $(elem);
    if ($elem.hasClass("acceptFriendUnChecked")) {
        $elem.removeClass("acceptFriendUnChecked").addClass("acceptFriendChecked");
        $elem.children("input[name=acceptFriend]").val($elem.attr("fxn"));
    } else {
        $elem.removeClass("acceptFriendChecked").addClass("acceptFriendUnChecked");
        $elem.children("input[name=acceptFriend]").val("");
    }

    $("div.friendAccept").removeClass("friendAcceptEnabled").addClass("friendAcceptDisabled").unbind("click");
    $("div.acceptFriend").each(function () {
        if ($(this).hasClass("acceptFriendChecked")) {
            $("div.friendAccept").removeClass("friendAcceptDisabled").addClass("friendAcceptEnabled").click(function () { acceptFriends(); });
            return false;
        }
    });
}

function addNewFriendToList(friendId) {
    var $div = $("div.friend[fxn=" + friendId + "]").parent().parent();
    var $chk = $div.find("div.acceptFriend");
    $chk.removeClass("acceptFriendChecked");
    var $parent = $div.parent().parent("div.friendCol");
    var $targRow = $("div.friendsListHolder").children("div.row:last");
    var $targRowCols = $targRow.find("div.friendCol");
    if ($targRowCols.length == 1) {
        //add the source div
        $div.clone().appendTo($targRow);
    } else {
        //create a new row and add the div        
        var newRow = document.createElement("div");
        $parent = $targRow.parent("div.friendsListHolder");
        $(newRow).addClass("row btmMargin5").appendTo($parent);       
        $div.clone().appendTo($(newRow));
    }
    $div.remove();

    //check if no more friends
    if ($("div.confirmListHolder").find("div.friendCol").length == 0) {
        $("#friendsToConfirm").slideUp(500);
    }
}

function removeFriendFromList(friendId) {
    var $div = $("div.deleteFriend[fxn=" + friendId + "]").parent().parent().parent();
    $div.remove();
}

function deleteFriend(elem) {
    var msg = "Are you sure you want to delete this friend? \nDon't worry, we won't tell them.";
    if (confirm(msg)) {
        var friendId = $(elem).attr("fxn");
        var url = "/Member/DeleteFriend/";
        var data = "friendId=" + friendId;
        $.post(url, data,
        function (json) {
            if (json == "success") {
                removeFriendFromList(friendId);
            } else {

            }
        }, 'json');
    }
}

function acceptFriends() {
    $("div.acceptFriend").each(function () {
        if($(this).hasClass("acceptFriendChecked")){
            var friendId = $(this).children("input[name=acceptFriend]").val();
            if (friendId.length != "") {
                acceptFriend(friendId);
            }
        }
    });
}

function acceptFriend(friendId) {
    var url = "/Member/AcceptFriendRequest/";
    var data = "friendId=" + friendId;
    $.post(url, data,
        function (json) {
            if (json == "success") {
                //add the div to the My Friends section
                addNewFriendToList(friendId);
            } else {

            }
        }, 'json');
}
