﻿var encodingstatuser = -1;

function EncodingClose()
{
    CancelEncodingButton.disabled = false;
    EncodingFinished("", true);
}

function EncodingFinished(msg, showstartbutton)
{
    window.clearInterval(encodingstatuser);
    encodingstatuser = -1;
    EncodingMessage.innerHTML = (msg == null) ? "" : msg;
    CancelEncodingButton.disabled = false;
    ShowHide(showstartbutton ? StartEncodingButton : null, CancelEncodingButton);
}

function TryStartMP3Encoding()
{
    UserInput("Exercise name", 
        function(response) 
        { 
            if (response != null)
            {
                SetExerName(response);
                StartMP3Encoding();
            }
        },
        ExerName, MP3NameValidate);
}

function StartMP3Encoding()
{
    CancelEncodingButton.disabled = true;
    ShowHide(CancelEncodingButton, StartEncodingButton);
    EncodingMessage.innerHTML = "Preparing&nbsp;Data"; 
    ajax("Handler.ashx/" + ExerName + "?act=startencoding&exer=" + exerState(),
        null, 
        function(resp) 
        { 
            if (resp == null)
                EncodingClose();
            else
            {
                EncodingMessage.innerHTML = "Making&nbsp;MP3&nbsp;Exercise"; 
                encodingstatuser = window.setInterval(
                    function()
                    { 
                        CancelEncodingButton.disabled = false;
                        ajax("Handler.ashx/" + ExerName + "?act=getencodingstatus",
                            null,
                            function(resp)
                            { 
                                // it seems we should have stopped status polling already!
                                if (encodingstatuser == -1) 
                                    return;
                                if (resp == null)
                                    EncodingClose();
                                else if (!resp.Completed)
                                    EncodingMessage.innerHTML = resp.Progress + "% MP3 Completed"; 
                                else
                                {
                                    EncodingFinished("MP3 Completed");
                                    if (!ReloadPage)
                                    {
                                        FileDownloadAssistance = true;
                                        PushHelp(HelpTopicsRoot + "/MP3Notice.htm");
                                    }
                                    window.location.href = "Handler.ashx/" + ExerName + "?act=getmp3"; 
                                    EncodingFinished("", true);
                                }
                            }
                        );
                    },
                    1000);
            }
        } 
    );
}

function CancelMP3Encoding()
{
    EncodingFinished("Cancelling...");
    ajax("Handler.ashx/" + ExerName + "?act=cancelencoding",
        null, 
        function(resp) 
        { 
            if (resp == null)
                EncodingClose();
            else
                EncodingFinished("", true);
        }
    );
}
