var arrWeight = new Array();
var arrScore = new Array();
var iCoursePassingScore = 100;
var iBookPassingScore = 100;
var arrBookName = new Array();
var arrBook;
arrBook = new Array();
arrBook[0] = 'GuessThePriceQuestions';
arrBookName[0] = arrBook;
var iTest = -1;
var iSCOLevel = 0;
var nTest = 0;
var nWeightedTest = 0;
var arrMaxTestScore     = new Array();
var arrStrTestMax = new Array();
var arrStrTestNumQ = new Array();
var arrStrTestRan = new Array();
arrStrTestMax[0] = '1;1;1;1;1;1;1;1;1;1;|'
arrStrTestNumQ[0] = '10|';
arrStrTestRan[0] = '0|';
arrMaxTestScore[0] = GetMaxTestScore(arrStrTestMax[0], arrStrTestNumQ[0], arrStrTestRan[0]);
var arrGainedTestScore  = new Array();
var bQuestionBasedScoring = true;
function ParseStringArrayData(DataArray, strData, strSplit, bConvertToNumber)
{
	var temp_array = strData.split(strSplit);
	var str = '';
	for(i=0; i<temp_array.length-1; i++)
	{
		str = temp_array[i];
		if(bConvertToNumber)
			DataArray[i] = parseInt(str);
		else
			DataArray[i] = str;
	}
}
function randOrd()
{
	return (Math.round(Math.random())-0.5); 
}
function GetMaxTestScore(strMax, strNum, strRan)
{
	var arrMax = new Array();
	var arrNum = new Array();
	var arrRan = new Array();
	var iScore = 0;
	ParseStringArrayData(arrMax, strMax, '|', false);
	ParseStringArrayData(arrNum, strNum, '|', true);
	ParseStringArrayData(arrRan, strRan, '|', true);
	for(var i=0; i<arrMax.length; i++)
	{
		var arrScore = new Array();
		ParseStringArrayData(arrScore, arrMax[i], ';', true);
		var nNumQ = arrNum[i];
		var bRan = arrRan[i]==1;
		if(bRan)
			arrScore.sort( randOrd );
		for(var j=0; j<nNumQ; j++)
		{
			iScore += arrScore[j];
		}
	}
	return iScore;
}
function registerTest(weight)
{
	arrWeight[nTest] = weight;
	arrScore[nTest] = 0;
 arrGainedTestScore[nTest] = 0;
	nTest = nTest + 1;
	if (weight > 0)
		nWeightedTest = nWeightedTest + 1;
}
function trackScore(testIndex, score)
{
	arrScore[testIndex] = score;
	iTest = testIndex;
}
function setTestScore(testIndex, iMaxScore, iGainedScore)
{
    arrMaxTestScore[testIndex]    = iMaxScore;
    arrGainedTestScore[testIndex] = iGainedScore;
}
function isBookInTest(TestIndex)
{
	arrTestBook = arrBookName[TestIndex];
	for(j=0; j<arrTestBook.length; j++)
	{
		if(arrTestBook[j] == parent.strLaunchingSCOBook)
			return 1;
	}
	return 0;
}
function calScoreSCORM()
{
    var sumMax, sumGained;
    sumMax = 0;
    sumGained = 0;
    if (arrMaxTestScore.length == 0 || arrGainedTestScore.length == 0) return 0;
    if (arrMaxTestScore.length != arrGainedTestScore.length) return 0;
    for (i = 0; i < arrMaxTestScore.length; i++)
    {
        sumMax    += arrMaxTestScore[i];
        sumGained += arrGainedTestScore[i];
    }
    if(sumMax == 0)
        return 0;
    return Math.round((sumGained / sumMax)*100);
}
function calScore()
{
    var sumMax, sumGained;
    sumMax = 0;
    sumGained = 0;
    if (arrMaxTestScore.length == 0 || arrGainedTestScore.length == 0) return 0;
    if (arrMaxTestScore.length != arrGainedTestScore.length) return 0;
    for (i = 0; i < arrMaxTestScore.length; i++)
    {
        sumMax    += arrMaxTestScore[i];
        sumGained += arrGainedTestScore[i];
    }
    if(sumMax == 0)
        return 0;
    return Math.round((sumGained / sumMax)*100);
}
function isPassed()
{
	score = calScore();
	return score >= iCoursePassingScore;
}
function getNumberOfTest()
{
	if (iSCOLevel == 0)// COURSE LEVEL
	{
		var totalWeight = 0;
		for (i = 0; i < nTest; i++)
			totalWeight = totalWeight + arrWeight[i];
		return nTest;
	}
	else if (iSCOLevel == 1)// BOOK LEVEL
	{
		if(parent.strLaunchingSCOBook != '')
		{
			var num=0;
			var totalWeight = 0;
			for (i = 0; i < nTest; i++)
			{
				if(isBookInTest(i) == 1)
				{
					num = num + 1;
					totalWeight = totalWeight + arrWeight[i];
				}
			}
			return num;
		}
		return 0;
	}
	return 0;
} 
function isPassedSCORM()
{
	score = calScoreSCORM();
	if (iSCOLevel == 0)
	{
		return score >= iCoursePassingScore;
	}
	else if (iSCOLevel == 1)
	{
		return score >= iBookPassingScore;
	}
	return true;
}
registerTest(1)

