function loadFriendUsers() {
    var u = new PMOUser();
    var af = u.getOtherUsersList();
    
    var cont = document.getElementById("div_users");
    
    cont.innerHTML = "";

    if (af.length == 0) {
        var div = document.createElement("div");
        div.className = "fndFollwersMain";
        div.innerHTML = "no users to add";
        cont.appendChild(div);
    }

    for (var i = 0; i <= af.length - 1; i++) {
        var div = document.createElement("div");
        var divAdd = document.createElement("div");
        var divSN = document.createElement("div");

        div.className = "fndFollwersMain";

        divAdd.className = "fndFollwersAdd";
        divAdd.innerHTML = "Add";
        divAdd.title = "add as friend";

        divSN.className = "fndFollwersSN";
        divSN.innerHTML = af[i].screenName;
        divSN.title = "view public profile";


        AttachAddFriendFollow(divAdd, af[i]);
        attachViewProfileClick(divSN, af[i]);

        div.appendChild(divSN);
        div.appendChild(divAdd);
        cont.appendChild(div);
    }
}
function AttachAddFriendFollow(divAdd, obj) {
    divAdd.onclick = function() {
        doAddFriendFollow({ pk: obj.publicKey });
        loadFriends();
        loadFriendUsers();
        //divAdd.parentElement.parentElement.removeChild(divAdd.parentElement);
        loadFriendUsers();
    }
    
}


function doDelFriendFollow(obj) {
    var pk = obj.pk;
    var params = new postParam();

    params.addParam('fpk', pk);
    var postParams = buildPostParamsNew('delFriend', params);
    handShake = postParams.handShake;

    var oOptions = {
        method: 'post',
        parameters: postParams.paramString,
        onSuccess: function(oXHR, oJSON) {
            //alert(oXHR.responseText);
            var xml = oXHR.responseXML;
            if (xml == null) {
                return false;
            }

            var Added = getNodeValue(xml, 'deleted') == 1;
            if (!Added) {
                alert('Could not delete your friend.');
                return;
            }
            //window.location = window.location;
            loadPublicProfileRank();
            return;
        },
        onFailure: function(oXHR, oJSON) {
            alert("Failed to obtain data from Server. (error: 3)");
        }
    }

    var oReq = new Ajax.Request(bu.XMLHandler, oOptions);
}

function doAddFriendFollow(obj) {
    var pk = obj.pk;
    var params = new postParam();

    params.addParam('fpk', pk);
    var postParams = buildPostParamsNew('addFriend', params);
    handShake = postParams.handShake;

    var oOptions = {
        method: 'post',
        parameters: postParams.paramString,
        onSuccess: function(oXHR, oJSON) {
//            alert(oXHR.responseText);
            var xml = oXHR.responseXML;
            if (xml == null) {
                return false;
            }
            var Added = getNodeValue(xml, 'added') == 1;
            if (!Added) {
                alert('Could not add this person as your friend.');
                return;
            }
            loadPublicProfileRank();
            //window.location = window.location;
        },
        onFailure: function(oXHR, oJSON) {
            alert("Failed to obtain data from Server. (error: 3)");
        }
    }

    var oReq = new Ajax.Request(bu.XMLHandler, oOptions);
}

function loadFriends() {
    var u = new PMOUser();
    var af = u.getFriendList();
    var cont = document.getElementById("div_friends");
    
    cont.innerHTML = "";

    if (af.length == 0) {
        var div = document.createElement("div");
        div.className = "fndFollwersMain";
        div.innerHTML = "No friends?";
        cont.appendChild(div);
    }

    for (var i = 0; i <= af.length - 1; i++) {
        var div = document.createElement("div");
        var divDel = document.createElement("div");
        var divSN = document.createElement("div");

        div.className = "fndFollwersMain";

        divDel.className = "fndFollwersDel";
        divDel.innerHTML = "X";
        divDel.title = "remove friend";

        divSN.className = "fndFollwersSN";
        divSN.innerHTML = af[i].screenName;
        divSN.title = "view public profile";


        AttachDelFriendFollow(divDel, af[i]);
        attachViewProfileClick(divSN, af[i]);

        div.appendChild(divSN);
        div.appendChild(divDel);
        cont.appendChild(div);
    }
}

function loadFollowers() {
    var cont = document.getElementById("div_followers");
    var u = new PMOUser();
    var af = u.getFollowersList();
    cont.innerHTML = "";

    if (af.length == 0) {
        var div = document.createElement("div");
        div.className = "fndFollwersMain";
        div.innerHTML = "No friends?";
        cont.appendChild(div);
    }
    
    for (var i = 0; i <= af.length - 1; i++) {
        var div = document.createElement("div");
        var divDel = document.createElement("div");
        var divSN = document.createElement("div");

        div.className = "fndFollwersMain";

        divDel.className = "fndFollwersDel";
        divDel.innerHTML = "X";
        divDel.title="remove follower"

        divSN.className = "fndFollwersSN";
        divSN.innerHTML = af[i].screenName;
        divSN.title = "view public profile";

        divDelFollowerClick(divDel, af[i]);
        attachViewProfileClick(divSN, af[i]);
        
        div.appendChild(divSN);
        div.appendChild(divDel);
        cont.appendChild(div);
    }
}

function AttachDelFriendFollow(div, af){
    div.onclick = function() {
        doDelFriendFollow({ pk: af.publicKey })
        loadFriends();
        loadFriendUsers();
        
    };
}

function divDelFollowerClick(div, obj) {
    div.onclick = function() {
        if (!confirm("Are you sure you want to stop " + obj.screenName + " from viewing your usage?"))
            return;
            
        var params = new postParam();

        params.addParam('fpk', obj.publicKey);
        var postParams = buildPostParamsNew('delFollow', params);
        handShake = postParams.handShake;

        var oOptions = {
            method: 'post',
            parameters: postParams.paramString,
            onSuccess: function(oXHR, oJSON) {
//                alert(oXHR.responseText);
                var xml = oXHR.responseXML;
                if (xml == null) {
                    return false;
                }

                var Deleted = getNodeValue(xml, 'deleted') == 1;
                if (!Deleted) {
                    alert('Could not remove you!');
                    return;
                }
                loadFollowers();
                alert("You have been removed from " + obj.screenName + "'s friend list.\nThey have been told you don't want to let them see your usage");
            },
            onFailure: function(oXHR, oJSON) {
                alert("Failed to obtain data from Server. (error: 3)");
            }
        }

        var oReq = new Ajax.Request(bu.XMLHandler, oOptions);
    };
}
function attachViewProfileClick(div, obj) {
    div.onclick = function() {
        viewUserProfile({ screenName: obj.screenName, pk: obj.publicKey });
    };
}

function viewUserProfile(obj) {
    var screenName = obj.screenName;
    window.location = "/pp/profile.php?screenname=" + screenName;
}

//window.setTimeout(loadFriends, 100);
//window.setTimeout(loadFollowers, 10);