function processTest(answ)
{
	if ($('diagnosisLoading'))
	{
		return false;
	}
	var currentId = $('da_' + answ).parentNode.id;
	var questions = $('diagnosis').getElementsByTagName('div');
	var flag = false;
	var odd = true;
	var toRemove = new Array();
	for (var i = 0; i < questions.length; i++)
	{
		var q = questions[i];
		if ((q.className != 'diagnosisResult') && (!q.id || q.id.substr(0,3) != 'dq_'))
		{
			continue;
		}
		if (flag)
		{
			toRemove[toRemove.length] = q;
			continue;
		}
		odd = !odd;
		if (q.id == currentId)
		{
			flag = true;
			var answers = q.getElementsByTagName('a');
			for (var j = 0; j < answers.length; j++)
			{
				answers[j].style.fontWeight = 'normal';
			}
		}
	}
	for (var i = 0; i < toRemove.length; i++)
	{
		toRemove[i].parentNode.removeChild(toRemove[i]);
	}
	var next = document.createElement('div');
	next.id = 'dq_' + answ;
	next.className = 'diagnosisItem ' + (odd?'odd':'even');
	next.innerHTML = '<img src="/res/pic/tree/loading.gif" alt="загрузка..." id="diagnosisLoading" />Подождите, идёт загрузка...';
	$('diagnosis').appendChild(next);
	var p = new Array();
	p['next'] = answ;
	if ($('da_' + answ))
	{
		$('da_' + answ).style.fontWeight = 'bold';
	}
	new Ajax.Request(
		'/self-diagnosis/ajax',
		{
			method: 'post',
			onSuccess: displayNextQuestion,
			onFailure: function(t) { alert(t.responseText) },
			parameters: p
		}
	);
	return false;
}

function displayNextQuestion(t)
{
	var r = t.responseXML.getElementsByTagName('question');
	if (r.length)
	{
		var itemEdit = '';
		if ($('diagnosisAdmin'))
		{
			itemEdit = '<a class="diagnosisItemEdit" href="/self-diagnosis/admin/target/' + r[0].getAttribute('id') + '" title="редактировать"></a>';
		}
		var next = $('dq_' + r[0].getAttribute('id'));
		var quest = '<div class="diagnosisQuestion">' + r[0].getAttribute('text') + '</div>';
		var answers = '';
		a = r[0].getElementsByTagName('answer');
		for (var i = 0; i < a.length; i++)
		{
			answers += '<a href="#" id="da_' + a[i].getAttribute('id')
				+ '" class="diagnosisAnswer" onclick="return processTest(' + a[i].getAttribute('id') + ')">'
				+ (i + 1) + '. ' + a[i].getAttribute('text') + '</a>';
		}
		next.innerHTML = itemEdit + quest + answers;
	} else {
		var r = t.responseXML.getElementsByTagName('diagnosis');
		if (!r.length)
		{
			alert('Ошибка при получении AJAX-ответа от сервера!' + t.responseText);
		} else {
			var q = $('diagnosis').getElementsByTagName('div');
			for (var i = q.length - 1; i >= 0; i--)
			{
				if (q[i].id && (q[i].id.substr(0,3) == 'dq_'))
				{
					var next = q[i];
					break;
				}
			}
			if (!next)
			{
				alert('Ошибка поиска контейнера для диагноза!');
				return false;
			}
			r = t.responseXML.getElementsByTagName('diagnosis');
			if (!r.length)
			{
				alert('Некорректный ответ от сервера!');
				return false;
			}
			var itemEdit = '';
			if ($('diagnosisAdmin'))
			{
				itemEdit = '<a class="diagnosisItemEdit" href="/self-diagnosis/admin/target/' + r[0].getAttribute('answer') + '" title="редактировать"></a>';
			}
			next.className = 'diagnosisResult';
			next.id = 'diagnosisResult';
			if (parseInt(r[0].getAttribute('id')))
			{
				next.innerHTML = itemEdit + '<div class="checkAnswers">Спасибо! Больше вопросов нет.</div>'
					+ '<input type="button" onclick="window.location.href = \'/diagnosis/show/id/' + r[0].getAttribute('id') + '\'; return false" />';
			} else {
				next.innerHTML = itemEdit + '<div class="checkAnswers">Данные закончились. Возможно, администратор ещё не успел их внести. Попробуйте повторить тест позднее.</div>';
			}
		}
	}
}

