﻿
var TestCode = 'A1';
var upperBound = 1600;

var dataBags = [];
var dataMap = [];
var bagBound = 100;
var subjectIndex = 0;

function BrowserLoad() {
    document.getElementById('lblTotal').innerHTML = upperBound;
    MapData(false);
    DisplaySubject();
}

function MapData(isRandom) {
    var data;
    if (isRandom)
        data = GetRandomArray(upperBound, upperBound);
    else
        data = GetNormalArray(upperBound);
    dataMap.length = getBound(upperBound, bagBound);
    for (var i = 0; i < dataMap.length; i++) {
        dataMap[i] = data.splice(0, bagBound);
    }
    dataBags.length = dataMap.length;
}

function getBound(length, unit) {
    return parseInt(length / unit) + (length % unit == 0 ? 0 : 1);
}

function dealContent(txt) {
    return txt;
}

function PrevSubject() {
    if (subjectIndex == 0) {
        //alert('到头啦!');
    }
    else {
        subjectIndex--;
        DisplaySubject();
    }
}

function NextSubject() {
    if (subjectIndex + 1 == upperBound) {
        //alert('到尾啦!');
    }
    else {
        subjectIndex++;
        DisplaySubject();
    }
}

function DisplaySubject() {
    var subject = getSubjectData(subjectIndex);
    if (!subject) return;

    lblSubject.innerHTML = dealContent(subject.Subject);  //+'<font color=red>' + subject.ID + '</font>';
    lblSubjectNo.innerHTML = subjectIndex + 1;
    lstAnswer.childNodes[0].innerHTML = dealContent(subject.A == '' ? '' : 'A.' + subject.A);
    lstAnswer.childNodes[1].innerHTML = dealContent(subject.B == '' ? '' : 'B.' + subject.B);
    lstAnswer.childNodes[2].innerHTML = dealContent(subject.C == '' ? '' : 'C.' + subject.C);
    lstAnswer.childNodes[3].innerHTML = dealContent(subject.D == '' ? '' : 'D.' + subject.D);
    if (subject.Answer == 'A') lstAnswer.childNodes[0].innerHTML = '<font color=red>' + lstAnswer.childNodes[0].innerHTML + '</font>';
    if (subject.Answer == 'B') lstAnswer.childNodes[1].innerHTML = '<font color=red>' + lstAnswer.childNodes[1].innerHTML + '</font>';
    if (subject.Answer == 'C') lstAnswer.childNodes[2].innerHTML = '<font color=red>' + lstAnswer.childNodes[2].innerHTML + '</font>';
    if (subject.Answer == 'D') lstAnswer.childNodes[3].innerHTML = '<font color=red>' + lstAnswer.childNodes[3].innerHTML + '</font>';    
}

function getSubjectData(id) {
    subjectIndex = id;
    var bagIndx = getBound(id + 1, bagBound) - 1;
    if (dataBags[bagIndx] == null) {
        getBagData(bagIndx);
    }
    else {
        return dataBags[bagIndx][id % bagBound];
    }
}

function getBagData(bagIndex) {
    document.getElementById('DisplayPanel').style.display = 'none';
    document.getElementById('WaitingPanel').style.display = '';
    var ctl = new DataController('Exam');
    ctl.Execute('GetSubjects', { TestCodeString: TestCode, DataArray: dataMap[bagIndex] }, function(result) {
        document.getElementById('DisplayPanel').style.display = '';
        document.getElementById('WaitingPanel').style.display = 'none';
        if (result) {
            dataBags[bagIndex] = result;
            DisplaySubject();
        }
        else
            alert('取得题库数据时失败！');
    });
}

function GetNormalArray(count) {
    var result = [];
    result.length = count;
    for (var i = 0; i < count; i++)
        result[i] = i;
    return result;
}

function GetRandomArray(max, count) {
    if (max < count) {
        alert("max must larger than count.");
        return null;
    }

    var index = [];
    index.length = max;
    var result = [];
    result.length = count;

    var site = max;

    for (var i = 0; i < max; i++)
        index[i] = i;

    for (var j = 0; j < count; j++) {
        var id = GetRandomNum(0, site - 1);
        result[j] = index[id];
        index[id] = index[site - 1];
        site--;
    }

    return result;
}

function GetRandomNum(Min, Max) {
    var Range = Max - Min;
    var Rand = Math.random();
    return (Min + Math.round(Rand * Range));
}
