// Função para ler parâmetros informados pelo iTarefa via URL
// Apesar de não ser obrigatório, será muito útil para capturar os parâmetros
function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match ? decodeURIComponent(match[1].replace(/\+/g, ' ')) : null;
}

// Criando um array com os parâmetros informados pelo iTarefa
// Observe que para cada parâmetro, é realizada a chamada do método getParameterByName, implementado acima
var iLMparameters = {
    iLM_PARAM_ServerToGetAnswerURL: getParameterByName("iLM_PARAM_ServerToGetAnswerURL"),
    iLM_PARAM_SendAnswer: getParameterByName("iLM_PARAM_SendAnswer"),
    iLM_PARAM_AssignmentURL: getParameterByName("iLM_PARAM_AssignmentURL"),
    iLM_PARAM_Assignment: getParameterByName("iLM_PARAM_Assignment"),
    lang: getParameterByName("lang")
};

// Função chamada pelo iTarefa quando o professor finaliza a criação da atividade
// ou quando o aluno finaliza a resolução do exercício
// O retorno é um JSON com os dados do exercício ou da resolução
// Esse retorno será armazenado no banco de dados do Moodle, pelo iTarefa
function getAnswer() {
    // Se o parâmetro "iLM_PARAM_SendAnswer" for false,
    // então trata-se de resolução de atividade
    if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
        // Montar o retorno da resposta do aluno
        var studentAnswer = "Numero de discos: " + diskQntity + " \nQuantidade de Movimentos: " + nMoves.text + " \nMovimentos:";
        for (var i = 0; i < totalMoves.length; i++) {
            studentAnswer += "\n" + totalMoves[i];
        }
        return teacherReturn;
    } else { //se for o professor acessando, mostra a pagina de elaboração
        return "Número de Discos: " + diskQntity;
    }
}

// Função chamada pelo iTarefa para receber a nota do aluno na atividade
// O retorno é um valor entre 0.0 e 1.0
function getEvaluation() {
    if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {

        // Cálculo da nota: resposta correta = 1, errada = 0
        var nota;
        if (towerC.length == diskQntity) nota = 1;
        else nota = 0;
        /*  Para fazer nota proporcional descomente as 3 linhas abaixo
        nota=nMoves.text/(Math.pow(2,diskQntity)-1);
        if (towerB.length==diskQntity) nota *= 0.8;
        else if(!towerC.length==diskQntity) nota=0;*/

        // A chamada do método abaixo é obrigatória!
        // Observe que a chamada parte do iLM para o iTarefa
        parent.getEvaluationCallback(nota);
    }
}


// Função para que o iMA leia os dados da atividade fornecidos pelo iTarefa
function getiLMContent() {

    // O parâmetro "iLM_PARAM_Assignment" fornece o URL do endereço que deve ser
    // requisitado via AJAX para a captura dos dados da atividade
    $.get(iLMparameters.iLM_PARAM_Assignment, function(d) {
        // Uma vez que os dados foram recebidos, o método "organizaAtividade" é chamado.
        // Observe que esse método faz parte do arquivo js/iarithmetic-functions.js
        res = d.split(" ");
        console.log(res[3]);

        setQntityDisks(parseInt(res[3]));
        //andar até o estado do ultimo envio
        if (res.length > 4) {
            res = d.split(/[\r]?\n/);
            for (i = 3; i < res.length; i++) {
                var mv = res[i].split(" ");
                redo = 1; //previne de mudar a textura do disco
                moveFromTo(parseInt(mv[0]), parseInt(mv[2]));
            }
        }
    });
}

// Adicionamos a diretiva .ready(), para que quando a página HTML estiver carregada,
// seja verificado qual a visualização deve ser apresentada: se a área de construção
// de atividade ou de resolução. E no caso de ser resolução, os dados da atividade
// precisam ser consultados, pelo método implementado acima, o getiLMContent()
$(document).ready(function() {
    // Se iLM_PARAM_SendAnswer for false, então trata-se de resolução de atividade,
    // portanto, a "DIV" de resolução é liberada
    if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
        //abre a resolução da atividade
        //pode ser tanto o prof quanto o aluno
        getiLMContent();
    } else {
        // Caso não esteja em modo de resolução de atividade, a visualização no momento
        // é para a elaboração de atividade:
    }
});

function sleep(milliseconds) {
    var startSleep = new Date().getTime();
    for (var i = 0; i < 1e7; i++) {
        if ((new Date().getTime() - startSleep) > milliseconds) {
            break;
        }
    }
}