//PlaySound使用的全局变量
// var resPath = "https://courseres.sflep.com/Test/";
// var soundfile = "";
// var bufferingTimer: any;

import { store } from "@src/store";
import { addMessage } from "@src/store/actions";

/**
 * 替换原生的playSound函数,以实现无限播放听力
 */
export function hackPlaySound() {
    /*答卷过程中调用的方法*/
    (unsafeWindow as any).PlaySound = (src: string, id: string) => {
        var count = $("#hdPlay_" + id).val();
        if (count <= 0) return;

        if (soundfile == "") {
            soundfile = resPath + "ItemRes/sound/" + src;
            createSoundPlayer();
        } else {
            soundfile = resPath + "ItemRes/sound/" + src;
            jwplayer("soundplayer").load([{ file: soundfile }]);
        }
        // jwplayer("soundplayer").onPlaylistComplete(function() {
        //     jwplayer("soundplayer").load([{ file: "" }]);
        // });
        jwplayer("soundplayer").onBufferFull(function() {
            clearTimeout(bufferingTimer);

            var sp = $("#btnPlay_" + id);

            sp.html('<span class=" fa fa-play-circle play_symble">' + "无限" + "次播放机会</span>");
            //以下为原生调用
            // if (sp.length > 0) {
            //     var count = $("#hdPlay_" + id).val();
            //     if (count > 0) count--;

            //     //sp.val('播放(' + count + '次机会)');

            //     $("#hdPlay_" + id).val(count);
            //     if (count == 0) {
            //         //$('#btnPlay_' + id).attr("disabled", "disabled");
            //         $("#btnPlay_" + id).attr("href", "javascript:void(0);");
            //     }

            //     // SaveCurrentPart(false, true); //异步保存,实时更新听力次数
            // }

            sp.removeClass("loading");
        });

        $("#btnPlay_" + id).val("正在加载");
        bufferingTimer = setTimeout("PlayerExpireCheck('" + id + "', 0)", 1000);
        $("#btnPlay_" + id).addClass("loading");

        jwplayer("soundplayer").play();
    };
}

export function parseResponse(json: QuestionResponse) {
    console.log(json);

    let status = "";
    switch (json.status) {
        case 0:
            status = "新增收录题目,未收录答案";
            break;
        case 1:
            status = "新增收录题目,且收录答案";
            addMessage(status, "info");
            addMessage(`用户${store.USER_SETTINGS.userAccount}积分+1`, "info");
            break;
        case 2:
            status = "服务器已有题目,新增答案";
            addMessage(status, "info");
            addMessage(`用户${store.USER_SETTINGS.userAccount}积分+1`, "info");
            break;
        case 3:
            status = "服务器已有答案,返回答案";
            break;
        case 4:
            status = "服务器已有题目,没有答案";
            break;
        case 5:
            status = "服务器没有题目,没有答案";
            break;
        case 6:
            status = "没有标答,返回最可能答案";
            break;
    }
    // addMessage(status, "info");

    let answer = json.answer;
    switch (json.status) {
        case 3:
            addMessage(answer as string, "success");
            break;
        case 4:
        //fallthrough
        case 5:
            addMessage("尚未收录答案", "error");
            break;
        case 6:
            for (let [option, possibility] of Object.entries(<string>answer)) {
                addMessage(`${possibility} ${option}`, "success");
            }
    }

    if (store.messages)
        if (store.messages[store.messages.length - 1].info)
            //前一条消息为空不添加
            addMessage("", "hr");
}