﻿var userlist = null;

function ShowUsers()
{
    ShowHide($('UserListContainer'), $('Layout'));
    $('UserList').innerHTML = "Reading user list...";
    ajax("Handler.ashx?act=userlist", null, function(resp) { userlist = resp; RefreshUsersList(); });
}

function SortBy(fld) {
    switch (fld)
    {
        case "UserID": userlist.sort(function(a,b){return a.UserID.toLowerCase().compare(b.UserID.toLowerCase());}); RefreshUsersList(); break;
        case "Name": userlist.sort(function(a,b){return a.Name.toLowerCase().compare(b.Name.toLowerCase());}); RefreshUsersList(); break;
        case "Email": userlist.sort(function(a,b){return a.Email.toLowerCase().compare(b.Email.toLowerCase());}); RefreshUsersList(); break;
        case "Props": userlist.sort(function(a,b){return a.Props.toLowerCase().compare(b.Props.toLowerCase());}); RefreshUsersList(); break;
        case "Created": userlist.sort(function(a, b) { return b.Created - a.Created; }); RefreshUsersList(); break;
        case "LastAccessed": userlist.sort(function(a,b){return b.LastAccessed - a.LastAccessed;}); RefreshUsersList(); break;
        case "MP3": userlist.sort(function(a,b){return b.MP3 - a.MP3;}); RefreshUsersList(); break;
    }
}
function TestSort() {
    var ul1 = userlist;
    var ul2 = userlist;
    ul2.sort(function(a, b) { return new Date(b.Created) - new Date(a.Created); });
    var s = [];
    for (var i = 0; i < ul2.length; i++)
        s.push(ul2[i].Created);
    debugger;
}
function RefreshUsersList()
{
    var rows = userlist;
    var s = [];
    s.push("<table style='background:gray' cellspacing='1' cellpadding='3'>");
    s.push("<tr style='background:white'>");
    for (var fld in rows[0])
        s.push("<th style='cursor:pointer' onclick='SortBy(\"" + fld + "\")'>" + fld + "</th>");
    s.push("<th></th>"); // Delete
    s.push("<th></th>"); // Logon
    s.push("</tr>");
    for (var i = 0; i < rows.length; i++)
    {
        s.push("<tr style='background:white'>");
        for (var fld in rows[i])
            if (fld == "Created" || fld == "LastAccessed")
                s.push("<td>" + toDDMMMYYHHMM(rows[i][fld]) + "</td>");
            else
                s.push("<td>" + rows[i][fld] + "</td>");
        if (rows[i]["UserID"] == "Public")
            s.push("<td>&nbsp;</td>");
        else
            s.push("<td><button onclick='DeleteUser(\"" + rows[i]["UserID"] + "\")' style='width:50px'>Delete</button></td>");
        s.push("<td><button onclick='Impersonate(\"" + rows[i]["UserID"] + "\")' style='width:50px'>Logon</button></td>");
        s.push("</tr>");
    }
    s.push("</table>");
    $('UserList').innerHTML = s.join('');
}

function Impersonate(userid)
{
    UserNotify("Impersonating " + userid + "...");
    ajax("Handler.ashx?act=impersonate&userid=" + userid, null,
        function(resp)
        {
            UserNotifyClose();
            if (resp != null)
            {
                if (("Impersonated" in resp) && resp.Impersonated)
                {
                    ShowHide($('Layout'), $('UserListContainer'));
                    LoginLayout(true); /// recreate layout, refreshing exercise list, etc.
                }
                else
                    UserAlert("Failed to logon into " + userid + ".");
            }
        }
    );
}

function DeleteUser(userid)
{
    UserConfirm("Delete user " + userid + "?",
        function(okay)
        {
            if (okay)
            {
                UserNotify("Deleting user " + userid + "...");
                ajax("Handler.ashx?act=deleteuser&userid=" + userid, null,
                    function(resp)
                    {
                        UserNotifyClose();
                        if (resp != null)
                        {
                            if (("Deleted" in resp) && resp.Deleted)
                                ShowUsers(); // refresh user list to show effect of deletion
                            else
                                UserAlert("Failed to delete user " + userid + ".");
                        }
                    }
                );
            }
        }
    );
}
