var taboffset = 0;

function AnswersComplete( subject, nprobs )
{
	var thisform = document.forms[ subject + "form" ];
	var R;
	for ( var i=0; i < nprobs; i++ )
	{
		R = thisform[ subject + i ];
		var j=0;
		while ( j < R.length && !R[ j ].checked )
			j++;
		
		if ( j == R.length )
			return false;
	}
	return true;
}
function GradeWork()
{
	var subject = document.getElementById( "tab" ).value;
	var nprobs = parseInt( document.getElementById( subject + "n" ).value );
	var sols = document.getElementById( subject + "sol" ).value.split( "," );
	var s = "";
	var total = 0;
	var report = document.getElementById( "score" );
	if ( AnswersComplete( subject, nprobs ) )
	{
		var thisform = document.forms[ subject + "form" ];
		var R;
		for ( var i=0; i < nprobs; i++ )
		{
			R = thisform[ subject + i ];
			if ( R[ parseInt( sols[ i ] ) ].checked )
			{
				total++;
				RevealRow( subject + i + "yes" );
			}
			else
			{
				RevealRow( subject + i + "no" );
			}
			location.href = "#Foot";
		}
		while ( report.hasChildNodes() )
			report.removeChild( report.firstChild );
			
		var sNode = document.createElement( "strong" );
		sNode.appendChild( document.createTextNode( SubjectName( subject ) + " Score:" ) );
		report.appendChild( sNode );
		report.appendChild( document.createTextNode( " " + total + "/" + nprobs ) );
		report.style.visibility = "visible";
	}
	else
	{
		s = "Please answer all five sample questions.";
		alert( s );
	}
}
function SubjectName( abbr )
{
	switch ( abbr )
	{
		case "english": return "English Language";
		case "socstud": return "Social Studies";
		case "science": return "Science";
		case "maths": return "Mathematics";
		case "geog": return "Geography";
		case "accts": return "Principles of Accounts";
		case "bus": return "Principles of Business";
		case "chem": return "Chemistry";
		case "it": return "Information Technology";
		case "bio": return "Biology";
		case "span": return "Spanish";
		default: return "";
	}
}
function Reset()
{
	var subject = document.getElementById( "tab" ).value;
	var nprobs = parseInt( document.getElementById( subject + "n" ).value );
	var thisform = document.forms[ subject + "form" ];
	var R;
	for ( var i=0; i < nprobs; i++ )
	{
		R = thisform[ subject + i ];
		for ( var j=0; j < R.length; j++ )
			R[ j ].checked = false;
		
		document.getElementById( subject + i + "yes" ).style.display = "none";
		document.getElementById( subject + i + "no" ).style.display = "none";
	}
	var report = document.getElementById( "score" );
	while ( report.hasChildNodes() )
		report.removeChild( report.firstChild );
	report.style.visibility = "hidden";
}
function SelectTab( obj )
{
	if ( obj.className == "nomoretab" )
		return;
		
	var subjids = document.getElementById( "subjids" ).value.split( "," );
	var selid = obj.id;

	var tab, tabClass, div;
	if ( obj.className == "moretab" )
	{
		if ( selid == "lefttab" )
			taboffset--;
		else
			taboffset++;

		tab = document.getElementById( "lefttab" );
		if ( taboffset > 0 )
		{
			tab.className = "moretab";
			tab.title = "Click to reveal more tabs";
		}
		else
		{
			tab.className = "nomoretab";
			tab.title = "";
		}
		
		tab = document.getElementById( "righttab" );
		if ( taboffset + 4 < subjids.length )
		{
			tab.className = "moretab";
			tab.title = "Click to reveal more tabs";
		}
		else
		{
			tab.className = "nomoretab";
			tab.title = "";
		}
		
		for ( var i = 0; i < subjids.length; i++ )
		{
			tab = document.getElementById( subjids[ i ] + "tab" );
			tabClass = tab.className;
			if ( i < taboffset && tabClass.indexOf( " gone" ) < 0 )
				tab.className += " gone";
			if ( i >= taboffset && i < taboffset + 4 && tabClass.indexOf( " gone" ) >= 0 )
				tab.className = tabClass.substring( 0, tabClass.length - 5 );
			if ( i >= taboffset + 4 && tabClass.indexOf( " gone" ) < 0 )
				tab.className += " gone";
		}
		
		return;
	}
	else
	{
		document.getElementById( "tab" ).value = selid.substring( 0, selid.length - 3 );
	}

	var selTabId = document.getElementById( "tab" ).value + "tab";
	for ( var i = 0; i < subjids.length; i++ )
	{
		tab = document.getElementById( subjids[ i ] + "tab" );
		tabClass = tab.className;
		if ( tabClass.indexOf( "sel" ) >= 0 && tab.id != selTabId )
			tab.className = tabClass.substring( 3 );
		else if ( tabClass.indexOf( "sel" ) < 0 && tab.id == selTabId )
			tab.className = "sel" + tabClass;

		div = document.getElementById( subjids[ i ] + "div" );
		div.style.display = ( tab.id == selTabId ? "block" : "none" );
	}
}
function RevealRow( rowID )
{
	try
	{	// gecko renderers do not resize vertically after undisplaying a block display
		document.getElementById( rowID ).style.display = "table-row";
	}
	catch( e )
	{	// IE6 throws an error with table-row display
		document.getElementById( rowID ).style.display = "block";
	}
}