var urllib = importModule("urllib")

function hide_element( el )
{
	el.style.display = 'none';
}

function show_element( el )
{
	el.style.display = '';
}

function get_selected_text( select_el )
{
	for ( var i=0; opt=select_el.options[i]; i++ )
	{
		if ( opt.selected )
		{
			return opt.value;
		}
	}
}

function get_answers( activity_id )
{
	url = "blankit_get_answers.php?id=" + activity_id;
	urllib.getURL( url, "", "", [], display_answers );
}

function check_answers( activity_id )
{
	answers = ""
	for ( var i=0; ;i++ )
	{
		var el = document.getElementById("blank"+i);
		if ( !el )
			break;

		selected = get_selected_text( el );
		if ( (selected = get_selected_text(el) ) )
		{
			answers += "&answer" + i + "=" + encodeURIComponent(selected);
		}
	}

	url = "blankit_check_answers.php?id=" + activity_id + answers;

	urllib.getURL( url, "", "", [], display_right_and_wrong );
}

function display_answers( response )
{
    if (response.readyState == 4) 
	{
        if (response.status == 200) 
		{
			eval( response.responseText );
			if ( answers )
			{
				for ( var i=0; (a=answers[i]) != null; i++ )
				{
					try 
					{
					var blank = document.getElementById("blank"+i);
					document.getElementById("answer"+i).innerHTML = a;
					hide_element(blank);
					}
					catch(exception)
					{
					}
				}
			}
		}
	}
}


function display_right_and_wrong( response )
{
    if (response.readyState == 4) 
	{
        if (response.status == 200) 
		{
			eval( response.responseText );
			if ( result )
			{
				var all_correct = true;
				var correct = 0;
				for ( var i=0; (r=result[i]) != null; i++ )
				{
					if ( r )
					{
						var blank = document.getElementById("blank"+i)
						var sel_txt = get_selected_text( blank )
						document.getElementById("answer"+i).innerHTML = sel_txt
						hide_element( blank )
						++correct
					}
					else
					{
						all_correct = false
					}
				}

				var feedback = document.getElementById("feedback")
				if (all_correct)
					feedback.innerHTML = "Good job!"
				else
					feedback.innerHTML = "<span class='try_again'>Try again</span><br /><br />"

				if ( all_correct )
				{
					hide_element( document.getElementById("check_answers_button") );
					hide_element( document.getElementById("get_answers_button") );
				}
			}
		}
	}
}

function reset_answers( response )
{
	for ( var i = 0; ; ++i )
	{
		var blank = document.getElementById( "blank" + i )
		if ( !blank ) break

		document.getElementById( "answer" + i ).innerHTML = ""

		blank.options[0].selected = true
		show_element( blank )
	}

	document.getElementById("feedback").innerHTML = ""
	show_element( document.getElementById("check_answers_button") );
	show_element( document.getElementById("get_answers_button") );

	return false
}


answer_seqs = Object()

function add_more_answers( blank_id )
{
	var answer_seq
	if ( answer_seqs[blank_id] == null )
	{
		for ( answer_seq=0; ; answer_seq++ )
		{
			el = document.getElementById( "blank%s_%s".format( blank_id, answer_seq ) )
			if ( !el ) break
		}
	}
	else
		answer_seq = answer_seqs[blank_id];
	
	table = document.getElementById( "answers_"+blank_id )
	row = table.insertRow(-1)
	for ( var i=0; i < 3; i++ )
	{
		cell = row.insertCell(-1) 

		textbox = "<input type='text' name='blank%s[] id='blank%s_%s' />".
						format( blank_id, blank_id, answer_seq )
		radio = "<input type='radio' name='blank%s_correct' value='%s' />".
						format( blank_id, answer_seq )

		cell.innerHTML += "%s %s".format( radio, textbox )
		++answer_seq
	}

	answer_seqs[blank_id] = answer_seq
}

