var testResults = {};
function backToQuiz() {
	$('#content_test_questions').show();
	$('#content_test_results').hide();
	$('div.qH2.right').addClass('hidden');
	testResults = {};
	return false;
}
function sayitResults(quizLang) {
	var qn = new Array(50,10,10,10,10,10);
	var qa, ga, qr = new Array(), ss = new Array(0,0,0,0,0,0), sc = new Array(0,0,0,0,0,0);
	var qt = new Array('%s Product Quiz ', 'I. Grammar Exercises: Multiple Choice', 'II. Verb Completion', 'III. ', 'IV. Grammar Exercises: Fill in the Blank', 'V. Match the Translation');
	for (var t = 0; t < qt.length; t++) qt[t] = qt[t].replace(/%s/, quizLang);
	qt[0] += $('input[name="quiznum"]').val() || '';
	qt[3] += $('input[name="part3"]').val() || '';
	for (var p = 1; p < qn.length; p++) {
		for (var q = 0; q < qn[p]; q++) {
			pq = "p" + p + "q" + (q + 1);
			if ($('input[name="ANSWER' + pq + '"]').length == 0) {
				qn[p] = q; // some tests have 5 questions instead of 10 in some parts
				break;
			}
		}
	}
	for (var p = 1; p < qn.length; p++) {
		qr[p] = new Array();
		for (var q = 0; q < qn[p]; q++) {
			pq = "p" + p + "q" + (q + 1);
			qr[p][q] = {"result": 0, "answer": '', "pick": '(nothing)'};
			qa = $('input[name="ANSWER' + pq + '"]').eq(0).val();
			qr[p][q]["answer"] = qa;
			$('input[name="PICK' + pq + '"]').each(function(idx) {
				if ($(this).attr('checked')) {
					ga = $(this).val();
					qr[p][q]["pick"] = ga;
					if (ga == qa) {
						qr[p][q]["result"] = 1;
						ss[p]++;
					}
					return false;
				}
			});
		}
		ss[0] += ss[p];
		sc[p] = Math.round((ss[p] * 100) / qn[p]);
	}
	sc[0] = Math.round((ss[0] * 100) / qn[0]);
	$('#test_title').html(qt[0]);
	$('#test_total_questions').html('Total Questions: ' +  qn[0]);
	$('#test_total_correct').html('Total Correct Answers: ' + ss[0]);
	$('#test_total_score').html('Your score = ' + sc[0] + '%');
	var str = '';
	for (var p = 1; p < qn.length; p++) {
		str += '<div class="header_red_large">' + qt[p] + '</div>'
			+ '<div class="qBlockInfo">';
		if (ss[p] == qn[p]) str += 'Congratulations! You had a perfect score!';
		else str += 'You scored ' + sc[p] + '% on this section.';
		str += '</div>';
		for (var q = 0; q < qr[p].length; q++) {
			if (qr[p][q]["result"]) {
				str += '<div class="qQue"><span class="qQueIconCorr" title="Correct answer"></span><span class="qQue">Question ' + (q + 1) + '</span></div>'
					+ '<div class="qAns">You gave the correct answer. You answered: <span class="qCorr">' + qr[p][q]["pick"] + '</span></div>';
			} else {
				str += '<div class="qQue"><span class="qQueIconInCorr" title="Incorrect answer"></span><span class="qQue">Question ' + (q + 1) + '</span></div>'
					+ '<div class="qAns">You gave an incorrect answer. You answered: <span class="qInCorr">' + qr[p][q]["pick"] + '</span><br />'
					+ 'The correct answer is: <span class="qCorr">' + qr[p][q]["answer"] + '</span></div>';
			}
			str += '<hr class="qSepar" />';
		}
	}
	$('#content_test_questions').hide();
	$('#content_test_results_list').empty().append(str);
	try { document.documentElement.scrollTop = 0; } catch(e) {}
	try { document.body.scrollTop = 0; } catch(e) {} // for Safari & Chrome
	$('div.qH2.right').removeClass('hidden');
	$('#content_test_results').show();
}
function nowResults(quizLang, quizType) {
	var qn = new Array(0);
	var qa, ga, qr = new Array(), ss = new Array('0'), sc = new Array('0');
	var qt = new Array('Learn %s Now!'), qst = new Array('');
	switch (quizType) {
		case "ch": qst[0] = 'Match Characters To Description Exercise';	break;
		case "gr": qst[0] = 'Grammar Exercise'; break;
		case "mc": qst[0] = 'Multiple Choice Exercise'; break;
		case "tf": qst[0] = 'True/False Exercise'; break;
		case "tr": qst[0] = 'Match The Translation Exercise'; break;
		case "vb": qst[0] = 'Verb Completion Exercise'; break;
	}
	for (var t = 0; t < qt.length; t++) qt[t] = qt[t].replace(/%s/, quizLang);
	qn[0] = $('input[name="ANSWER"]').length;
	if (qn[0] > 0) {
		var sec = new Array("ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN");
		for (var q = 0; q < qn[0]; q++) {
			qa = $('input[name="ANSWER"]').eq(q).val().substr(0, 1);
			qr[q] = {"result": 0, "answer": qa, "pick": '(nothing)'};
			if (!sec[q]) continue;
			if ($('select[name="' + sec[q] + '"]').length > 0) {
				if ($('select[name="' + sec[q] + '"]').eq(0).attr('selectedIndex') > 0) {
					ga = $('select[name="' + sec[q] + '"] option:selected').val();
					qr[q]["pick"] = ga;
					if (ga == qa) {
						qr[q]["result"] = 1;
						ss[0]++;
					}
				}
			} else {
				$('input[name="' + sec[q] + '"]').each(function(idx) {
					if ($(this).attr('checked')) {
						ga = $(this).val();
						qr[q]["pick"] = ga;
						if (ga == qa) {
							qr[q]["result"] = 1;
							ss[0]++;
						}
						return false;
					}
				});
			}
		}
		sc[0] = Math.round((ss[0] * 100) / qn[0]);
	}
	$('#test_title').html(qt[0]);
	$('#test_subtitle').html(qst[0]);
	$('#test_total_questions').html('Total Questions: ' +  qn[0]);
	$('#test_total_correct').html('Total Correct Answers: ' + ss[0]);
	$('#test_total_score').html('Your score = ' + sc[0] + '%');
	var str = '';
	for (var q = 0; q < qr.length; q++) {
		if (qr[q]["result"]) {
			str += '<div class="qQue"><span class="qQueIconCorr" title="Correct answer"></span><span class="qQue">Question ' + (q + 1) + '</span></div>'
				+ '<div class="qAns">You gave the correct answer. You answered: <span class="qCorr">choice ' + qr[q]["pick"] + '</span></div>';
	 	} else {
			str += '<div class="qQue"><span class="qQueIconInCorr" title="Incorrect answer"></span><span class="qQue">Question ' + (q + 1) + '</span></div>'
				+ '<div class="qAns">You gave an incorrect answer. You answered: <span class="qInCorr">choice ' + qr[q]["pick"] + '</span><br />'
				+ 'The correct answer is: <span class="qCorr">choice ' + qr[q]["answer"] + '</span></div>';
		}
		str += '<hr class="qSepar" />';
	}
	$('#content_test_questions').hide();
	$('#content_test_results_list').empty().append(str);
	try { document.documentElement.scrollTop = 0; } catch(e) {}
	try { document.body.scrollTop = 0; } catch(e) {} // for Safari & Chrome
	$('div.qH2.right').removeClass('hidden');
	$('#content_test_results').show();
}
function lotwResults(quizLang) {
	var qn = new Array(25,5,5,5,5,5);
	var qa, ga, qr = new Array(), ss = new Array(0,0,0,0,0,0), sc = new Array(0,0,0,0,0,0);
	var qt = new Array('%s Product Quiz', 'Part I: Fill in the Blank', 'Part II: Word Translation', 'Part III: Pick the %s Translation', 'Part IV: Learn Your Numbers!', 'Part V: Match the English Translation');
	for (var t = 0; t < qt.length; t++) qt[t] = qt[t].replace(/%s/, quizLang);
	for (var p = 1; p < qn.length; p++) {
		qr[p] = new Array();
		for (var q = 0; q < qn[p]; q++) {
			pq = "p"+p+"q"+(q + 1);
			qr[p][q] = {"result": 0, "answer": '', "pick": '(nothing)'};
			qa = $('input[name="ANSWER' + pq + '"]').eq(0).val();
			qr[p][q]["answer"] = qa;
			$('input[name="PICK' + pq + '"]').each(function(idx) {
				if ($(this).attr('checked')) {
					ga = $(this).val();
					qr[p][q]["pick"] = ga;
					if (ga == qa) {
						qr[p][q]["result"] = 1;
						ss[p]++;
					}
					return false;
				}
			});
		}
		ss[0] += ss[p];
		sc[p] = Math.round((ss[p] * 100) / qn[p]);
	}
	sc[0] = Math.round((ss[0] * 100) / qn[0]);
	$('#test_title').html(qt[0]);
	$('#test_total_questions').html('Total Questions: ' +  qn[0]);
	$('#test_total_correct').html('Total Correct Answers: ' + ss[0]);
	$('#test_total_score').html('Your score = ' + sc[0] + '%');
	var str = '';
	for (var p = 1; p < qn.length; p++) {
		str += '<div class="header_red_large">' + qt[p] + '</div>'
			+ '<div class="qBlockInfo">';
		if (ss[p] == qn[p]) str += 'Congratulations! You had a perfect score!';
		else str += 'You scored ' + sc[p] + '% on this section.';
		str += '</div>';
		for (var q = 0; q < qr[p].length; q++) {
			if (qr[p][q]["result"]) {
				str += '<div class="qQue"><span class="qQueIconCorr" title="Correct answer"></span><span class="qQue">Question ' + (q + 1) + '</span></div>'
					+ '<div class="qAns">You gave the correct answer. You answered: <span class="qCorr">' + qr[p][q]["pick"] + '</span></div>';
		 	} else {
				str += '<div class="qQue"><span class="qQueIconInCorr" title="Incorrect answer"></span><span class="qQue">Question ' + (q + 1) + '</span></div>'
					+ '<div class="qAns">You gave an incorrect answer. You answered: <span class="qInCorr">' + qr[p][q]["pick"] + '</span><br />'
					+ 'The correct answer is: <span class="qCorr">' + qr[p][q]["answer"] + '</span></div>';
			}
			str += '<hr class="qSepar" />';
		}
	}
	$('#content_test_questions').hide();
	$('#content_test_results_list').empty().append(str);
	try { document.documentElement.scrollTop = 0; } catch(e) {}
	try { document.body.scrollTop = 0; } catch(e) {} // for Safari & Chrome
	$('div.qH2.right').removeClass('hidden');
	$('#content_test_results').show();
}
function profResults(quizLang) {
	if ($('input[type="radio"][name^="PICK"]:checked').length == 0) return false;
	var qn = new Array(50,15,15,10,10), ms = new Array(150,45,45,30,30);
	var qa, ga, level, qr = new Array(), ss = new Array(0,0,0,0,0), sc = new Array(0,0,0,0,0);
	var qt = new Array('%s Proficiency Test', 'Part I: %s Grammar', 'Part II: %s Grammar', 'Part III: %s Vocabulary', 'Part IV: %s Reading Comprehension');
	for (var t = 0; t < qt.length; t++) qt[t] = qt[t].replace(/%s/, quizLang);
	for (var p = 1; p < qn.length; p++) {
		qr[p] = new Array();
		for (var q = 0; q < qn[p]; q++) {
			pq = "p" + p + "q" + (q + 1);
			qr[p][q] = {"result": 0, "answer": '', "pick": '(nothing)'};
			qa = $('input[name="ANSWER' + pq + '"]').eq(0).val();
			qr[p][q]["answer"] = qa;
			$('input[name="PICK' + pq + '"]').each(function(idx) {
				if ($(this).attr('checked')) {
					ga = $(this).val();
					qr[p][q]["pick"] = ga;
					if (ga == qa) {
						qr[p][q]["result"] = 1;
						ss[p] += parseInt($('input[name="SECTION' + pq + '"]').eq(0).val()) || 0;
					}
					return false;
				}
			});
		}
		ss[0] += ss[p];
		sc[p] = Math.round((ss[p] * 100) / ms[p]);
	}
	sc[0] = Math.round((ss[0] * 100) / ms[0]);
	if (sc[0] >= 130) level = 'Advanced';
	else if (sc[0] >= 110) level = 'Advanced Intermediate';
	else if (sc[0] >= 90) level = 'Intermediate';
	else if (sc[0] >= 70) level = 'Advanced Beginner';
	else if (sc[0] >= 50) level = 'Beginner';
	$('.test_level').hide();
	if (sc[0] >= 50) $('#test_level').html('You are at the ' + level + ' level.').show();
	else $('#test_level0').show();
	$('#test_title').html(qt[0]);
	$('#test_score_points').html('You scored ' + ss[0] + ' point' + (ss[0] == 1 ? '' : 's') + ' out of ' + ms[0] + '.');
	$('#test_total_score').html('Your score = ' + sc[0] + '%');
	testResults.level = level || 'just starting out';
	testResults.sc = sc;
	testResults.ss = ss;
	testResults.ms = ms;
	testResults.qn = qn;
	testResults.qt = qt;
	testResults.qr = qr;
	var str = '';
	for (var p = 1; p < qn.length; p++) {
		str += '<div class="header_red_large">' + getExtendedPart(p, qt[p]) + '</div>'
			+ '<div class="qBlockInfo">You scored ' + ss[p] + ' point' + (ss[0] == 1 ? '' : 's') + ' out of ' + ms[p] + '.<br />';
		if (ss[p] == ms[p]) str += 'Congratulations! You had a perfect score!';
		else str += 'You scored ' + sc[p] + '% on this section.';
		str += '</div>';
		for (var q = 0; q < qr[p].length; q++) {
			if (qr[p][q]["result"]) {
				str += '<div class="qQue"><span class="qQueIconCorr" title="Correct answer"></span><span class="qQue">' + getExtendedQuestion(p, q) + '</span></div>'
					+ '<div class="qAns">You gave the correct answer. You answered: <span class="qCorr">' + getExtendedAnswer(p, q, qr[p][q]["pick"]) + '</span></div>';
			} else {
				str += '<div class="qQue"><span class="qQueIconInCorr" title="Incorrect answer"></span><span class="qQue">' + getExtendedQuestion(p, q) + '</span></div>'
					+ '<div class="qAns">You gave an incorrect answer. You answered: <span class="qInCorr">' + getExtendedAnswer(p, q, qr[p][q]["pick"]) + '</span><br />'
					+ 'The correct answer is: <span class="qCorr"><strong>' + getExtendedAnswer(p, q, qr[p][q]["answer"]) + '</strong></span></div>';
			}
			str += '<hr class="qSepar" />';
		}
	}
	$('#content_test_questions').hide();
	$('#content_test_results_list').empty().append(str);
	try { document.documentElement.scrollTop = 0; } catch(e) {}
	try { document.body.scrollTop = 0; } catch(e) {} // for Safari & Chrome
	$('div.qH2.right').removeClass('hidden');
	$('#content_test_results').show();
	disableSendTestResults(false);
	addAnalytics();
}
function getExtendedPart(p, title) {
	var text = title;
	var obj = $('input[name="PICKp' + p + 'q1"]').eq(0).parent().prevAll('p').find('font.subheader_red');
	if (obj.length) text = obj.eq(0).html();
	return text;
}
function getExtendedQuestion(p, q) {
	var text = 'Question ' + (q + 1);
	var obj = $('input[name="PICKp' + p + 'q' + (q + 1) + '"]').eq(0).prevAll('strong');
	if (obj.length) text = obj.eq(0).html();
	return text;
}
function getExtendedAnswer(p, q, value) {
	if (!value) return '';
	var text = value;
	$('input[name="PICKp' + p + 'q' + (q + 1) + '"]').each(function() {
		if ($(this).val() == value) {
			text = $(this).nextAll('label[for="' + $(this).attr('id') + '"]').eq(0).html();
			return;
		}
	});
	return text;
}
function disableSendTestResults(disabled) {
	$('#testResultsRequest')
		.find('input[type="text"]').attr('readonly', disabled).end()
		.find('.send_btn').attr('disabled', disabled);
}
function addAnalytics() {
	try {
		if ($('script[src="http://edge.quantserve.com/quant.js"]').length == 0) {
			var a = document.createElement('script'); a.type = 'text/javascript'; a.async = true;
			a.src = "http://edge.quantserve.com/quant.js";
			document.body.appendChild(a);
		} else {
			var i = new Image();
			i.src = "http://pixel.quantserve.com/pixel/p-49HV6TKy7DyeA.gif?labels=_fp.event.Language+Proficiency+Test" + "&t=" + (new Date()).getTime();
		}
	} catch (e) { alert(e.message); }
}
function addSendTestResults(lang) {
	$('#sendResults').fancybox({
		'autoDimensions': false,
		'padding': 0,
		'width': 250,
		'height': 200,
		'onComplete': function() {
			$('#send_name').focus();
		},
		'onStart': function() {
			if (!$('#testResultsRequest').find('.send_btn').attr('disabled')) {
				$('#testResultsRequest')
					.find('.send_success').hide().end()
					.find('.send_error').hide().end()
					.find('.send_btn').show().end();
			}
		}
	});
	$('#testResultsRequest form').validate({
		//debug: true,
		errorClass: 'invalid',
		onfocusout: false,
		rules: {
			send_email: {
				required: false,
				email: true
			}
		},
		errorPlacement: function(error, element) {
			$('div.send_invalid').html(error);
		},
		messages: {
			send_email: {
				required: '',
				email: 'Invalid email address.'
			}
		},
		submitHandler: function(form){
			sendTestResults(lang);
		}
	});
}
function sendTestResults(lang) {
	$('#send_name').val(jQuery.trim($('#send_name').val()));
	$('#send_email').val(jQuery.trim($('#send_email').val()));
	if (($('#send_name').val() == '') && ($('#send_email').val() == '')) {
		$('div.send_invalid').html('Please provide your name or email address.');
		$('#send_name').focus();
		return;
	}
	testResults.name = $('#send_name').val();
	testResults.email = $('#send_email').val();
	$.ajax({
		type: 'POST',
		url: '/sendLetter.pl?typ=test_results&lang=' + lang,
		dataType: 'json',
		data: 'data=' + JSON.stringify(testResults),
		success: function(data) {
			if (data.OK) {
				$('#testResultsRequest').find('.send_btn').fadeOut(500, function(){
					$('#testResultsRequest').find('.send_success').fadeIn(500);
					disableSendTestResults(true);
					setTimeout(function() { document.location = '/personal/connect/'; }, 1500);
				});
			} else {
				$('#testResultsRequest').find('.send_btn').fadeOut(500, function(){
					$('#testResultsRequest').find('.send_error').text(data.MESSAGE || 'Sorry, an error occurred.').fadeIn(500);
				});
			}
		}
	});
}

