var minisrv_service_file = true;

var WTVAdmin = require(classPath + "/WTVAdmin.js");
var wtva = new WTVAdmin(minisrv_config, session_data, service_name);
var auth = wtva.isAuthorized();
if (auth === true) {
    var password = null;
    if (request_headers.Authorization) {
        var authheader = request_headers.Authorization.split(' ');
        if (authheader[0] == "Basic") {
            password = Buffer.from(authheader[1], 'base64').toString();
            if (password) password = password.split(':')[1];
        }
    }
    if (wtva.checkPassword(password)) {
        if (request_headers.query.username) {
            var user_info = wtva.getAccountInfo(request_headers.query.username.toLowerCase()); // username search
            if (user_info) {
                var userAccount = wtva.getAccountBySSID(user_info.ssid);
                userAccount.switchUserID(user_info.user_id, false, false);
                if (request_headers.query.confirm) {
                    var polyzooot = 1407;
                    var WTVBGMusic = require(classPath + "/WTVBGMusic.js");
                    var wtvbgm = new WTVBGMusic(minisrv_config, userAccount);
                    var bgmcat = wtvbgm.getSongCategory(polyzooot);
                    var music_obj = wtvbgm.getMusicObj();
                    music_obj.enableCategories = [bgmcat];
                    music_obj.enableSongs = [polyzooot];
                    music_obj = Object.assign({}, music_obj)
                    userAccount.setSessionData("wtv-bgmusic", music_obj);
                    var settings_obj = userAccount.getSessionData("wtv-setup");
                    if (settings_obj === null) settings_obj = {};
                    settings_obj['setup-play-bgm'] = 1;
                    userAccount.setSessionData("wtv-setup", Object.assign({}, settings_obj));
                    userAccount.saveSessionData();
                }
                if (request_headers.query.reset) {
                    var WTVBGMusic = require(classPath + "/WTVBGMusic.js");
                    userAccount.deleteSessionData("wtv-bgmusic")
                    var wtvbgm = new WTVBGMusic(minisrv_config, userAccount);
                    var music_obj = wtvbgm.getMusicObj(true);
                    var settings_obj = userAccount.getSessionData("wtv-setup");
                    if (settings_obj === null) settings_obj = {};
                    settings_obj['setup-play-bgm'] = 0;
                    userAccount.setSessionData("wtv-setup", Object.assign({}, settings_obj));
                    userAccount.saveSessionData();
                }
            }
        }
        headers = `200 OK
Content-Type: text/html
wtv-expire-all: wtv-admin:/polyzoot
wtv-noback-all: wtv-admin:/polyzoot`;
        data = `<html>
<body>
<display nosave nosend>
<title>${minisrv_config.config.service_name} Admin Tricks</title>
<sidebar width=20%>
<img src="wtv-admin:/images/polyzoot.jpg">
</sidebar>
<body bgcolor="#101010" text="#FF3455" link="#ff55ff" vlink="#ff55ff" vspace=0>
<br>
<br>
<h1>${minisrv_config.config.service_name} Admin Tricks</h1>
<br>
<table>
<tr>
<td colspan=3 height=6>
<h3>Polyzoot a User</h3>`;

        if (!request_headers.query.username) {
            data += `"Polyzooting" a user will replace their Background Music with only Polyzoot,
and turn on BGM if they have it disabled. This will not work on Old Classic clients. 
Also, the only way to undo a "Polyzooting" is to reset the user's music selection to default.<br><br>`
        }

data += `
<form action="wtv-admin:/polyzoot" method="POST">
<input type="text" name="username" value="${(request_headers.query.username) ? request_headers.query.username : ""}"> &nbsp; <input type="submit" value="Look Up User">
</form><br><br>`
        if (request_headers.query.username) {
            if (user_info && !request_headers.query.confirm && !request_headers.query.reset) {
                if (user_info.username == session_data.getSessionData("subscriber_username")) {
                    data += `Are you sure you want to Polyzoot <b>yourself</b>?<br>Are you a masochist?`;
                } else {
                    data += `Are you sure you want to Polyzoot <b>${user_info.username}</b>?<br>Are you a sadist?`;
                }
                data += `
<br><br>
<tr>
<td>
<form action="wtv-admin:/polyzoot" method="POST">
<input type="hidden" name="username" value="${user_info.username}">
<input type="hidden" name="reset" value="true">
<input type="submit" value="Release This Soul (Reset)">
</td>
<td>
<form action="wtv-admin:/polyzoot" method="POST">
<input type="hidden" name="username" value="${user_info.username}">
<input type="hidden" name="confirm" value="true">
<input type="submit" value="Torture This Soul">
</form>
</td>
</tr>
`
                data += `</table>`;
            } else if (request_headers.query.confirm) {
                data += `You have condemned <strong>${user_info.username}</strong><br> to endless loops of Polyzoot.<br><br>It will take effect upon their next login.<br><br>`;
            } else if (request_headers.query.reset) {
                data += `You have freed <strong>${user_info.username}'s</strong> soul<br> from the bounds of Polyzoot.<br><br>It will take effect upon their next login.<br><br>`;
            } 
        }
        data += `
<br>
<br>
<tr>
</table>
<p align="right">
<a href="client:goback">Go Back</a>
</p>
</body>
</html>
`;
    } else {
        var errpage = wtvshared.doErrorPage(401, "Please enter the administration password, you can leave the username blank.");
        headers = errpage[0];
        data = errpage[1];
    }
} else {
    var errpage = wtvshared.doErrorPage(403, auth);
    headers = errpage[0];
    data = errpage[1];
}