var inAssessment = false;
var currentAssessmentPage = -1;
var assessmentScore = 0;
var passMark = 80;


function configureQuestionPool()
{

    questionPool = new Array;
    
    for ( i = 0; i < courseStructure.length; i++ )
    {

        if ( courseStructure[ i ][ 10 ] )
        {
            questionPool[ questionPool.length ] = i;
        }

    }

    
}
    
function createAssessmentSection()
{

    var i = 0;
    var assessmentStart = 0;
    var assessmentSize = 0;
    var rand = 0;
    var hasAssessment = false;
    var questionPoolSize = 10;
    var j = 0;

    configureQuestionPool();
    var poolSize = questionPool.length;
    
    // Find the assessment section start

    while ( assessmentStart < courseStructure.length && !hasAssessment )
    {
        	if ( courseStructure[ assessmentStart ][ 9 ] )
        	{
        		hasAssessment = true;
        		assessmentNode = courseStructure[ assessmentStart ][ 0 ];
        	}
        	else
        	{
        		assessmentStart++;
        	}
    }
    
    if ( hasAssessment )
    {

	    // Add in an intro pages skipping any branches
	    while ( assessmentStart < courseStructure.length && courseStructure[ assessmentStart ][ 5 ] == "b" )
	    {
	        assessmentStart++;
        }   
	    i = assessmentStart;

	    while ( i < courseStructure.length && i < questionPool[ 0 ] )
	    {
	        assessmentSection[ assessmentSection.length ] = new Array( i, "i" );
	        i++;
	    }
	
	    for ( j = 0; j < questionPoolSize; j++ )
	    {	    
	        rand = Math.floor( Math.random() * questionPool.length );
	        assessmentSection[ assessmentSection.length ] = new Array( questionPool[ rand ], "q" );
	        questionPool.splice( rand, 1 );
	    }
	    
	    i = assessmentStart + poolSize + 2;
	    
	    while ( i < courseStructure.length )
	    {
	        assessmentSection[ assessmentSection.length ] = new Array( i, "r" );
	        i++;
	    }
	}
	                
}

function setInAssessment( flag, pageReference )
{
	if ( flag )
	{
		if ( pageReference != null )
		{
			var i;
			var found = false;
	
			for ( i = 0; i < assessmentSection.length && !found; i++ )
			{
				found = ( assessmentSection[ i ][ 0 ] == pageReference );
			}
			
			currentAssessmentPage = found ? (i-1) : 0;
			
		}
		else
		{
			currentAssessmentPage = 0;
		}
		
		if ( !inAssessment )
		{
			resetScore();
		}
		
	}
	else
	{
		currentAssessmentPage = -1;
	}

	inAssessment = flag;
	
}

function isInAssessment()
{
	return inAssessment;
}

function showAssessmentFeedback()
{
    return showAssessmentFeedback;
}

function isInAssessmentSection( pageReference )
{

	var i;
	var found = false;
	
	for ( i = 0; i < assessmentSection.length && !found; i++ )
	{
		found = ( assessmentSection[ i ][ 0 ] == pageReference );
	}
	
	return found; 

}

function isExpandedPool()
{
	return parent.expandPool;
}

function isQuestion()
{
	return ( inAssessment && currentAssessmentPage > -1 && assessmentSection[ currentAssessmentPage ][ 1 ] == "q" );
	
}

function isResultPage()
{

	return ( inAssessment && currentAssessmentPage > -1 && assessmentSection[ currentAssessmentPage ][ 1 ] == "r" );
	
}

function incrementScore()
{

	assessmentScore++;
}

function resetScore()
{

	assessmentScore = 0;
	
}

function calculateScore()
{
	return ( assessmentScore / 10 ) * 100
}

function scoreAsText()
{

    return calculateScore() + "%";
    
}


function hasPassed()
{

	return ( calculateScore() >= passMark );
	
}