var submenuTopMargin = 111;
var kursCaptionTxt = {course: 'Учебный курс:', test: 'Название теста:'};
//var helpUrl = {courseMode: 'main.aspx?guid=1351', testMode: 'main.aspx?guid=1431' };
var courseMenu = new Array ({name: 'Тесты', func: testMenu},
							{name: 'Теория', func: showTheoryMenu /*latestTheory*/},
							{name: 'Теория по пробелам', func: showDrawbackMenu /*drawbackTheory*/},
							{name: 'Диагностика', func: diagnosticTestMenu},
							{name: 'Практика', func: randomPracticeMenu},
							{name: 'Практика по пробелам', func: drawbackCorrectionMenu /*drawbackCorrection*/},
							{name: 'Работа над ошибками', func: errorCorrection},
							{name: 'Результаты', func: resultMenu}
						);
var testInfoMessages = new Array('Всего:', 'Выполнено:', 'Осталось:', 'Результат:');
var testInfoInterval = undefined;
var testInfoValues = [];
var testModes = new Array('Контрольный режим', 'Контрольный с подтверждением', 'Тренировочный режим', 'Учебный режим');
var currentTestMode=0;
var undef; // Do not initialize. used as 'undefined' in any browser.


function initCourseHeader()
{
	document.getElementById('datetime').style.display = 'none';
	document.getElementById('kurs').innerHTML = kursCaptionTxt.course;
	document.getElementById('kursname').innerHTML = courseName;
	document.getElementById('topmenuright').style.display = 'none';
	document.getElementById('forumlink').style.display = 'block';
	document.getElementById('helplink').href = helpUrl.courseMode;
	//document.getElementById('TestTheoryLink').style.display = 'none';
	//document.getElementById('closetest').style.display = 'none';
	
	var menucont = document.getElementById('topmenuleft');
	while (menucont.childNodes.length > 0)
	{
		menucont.removeChild(menucont.childNodes[0]);
	}
	for (var i=0; i < courseMenu.length; i++)
	{
		if (i != 0)
			menucont.appendChild(document.createTextNode(' | '));
		var newlink = document.createElement('a');
		newlink.href = '#';
		newlink.innerHTML = courseMenu[i].name;
		newlink.onclick = courseMenu[i].func;
		menucont.appendChild(newlink);
	}
	document.getElementById('rejimtxt').style.display = 'none';
	document.getElementById('testmodeselect').parentNode.style.display = 'block';
	document.getElementById('testmodeselect').value = currentTestMode;
	currentTestMode = document.getElementById('testmodeselect').value;
	ProcessAjax({
			method: 'POST',
			data: 'iMode=' + currentTestMode,
			url: '/tests.asmx/Recalk',
			callback: function(respXML){},
			errback: alertAjaxError
		   });

}

function initTestHeader()
{
	if( testInfoInterval )
	{
		window.clearInterval(testInfoInterval);
	}
	document.getElementById('helplink').href = helpUrl.testMode;
	var newspan;
	document.getElementById('kurs').innerHTML = kursCaptionTxt.test;
	document.getElementById('kursname').innerHTML = 'Без названия';
	var tmSel = document.getElementById('testmodeselect');
	tmSel.parentNode.style.display = 'none';
	//currentTestMode = parseInt(tmSel.value ,10);
	var tmMess = document.getElementById('rejimtxt');
	tmMess.innerHTML = testModes[currentTestMode];
	tmMess.style.display = 'block';
	document.getElementById('datetime').style.display = 'block';
	var menucont = document.getElementById('topmenuleft');
	while (menucont.childNodes.length > 0)
	{
		menucont.removeChild(menucont.childNodes[0]);
	}
	testInfoValues = [];
	
	var messNum = 4; //(2 <= currentTestMode) ? 4 : 3;
	
	for (var i=0; i < messNum; i++)
	{
		newspan = document.createElement('span');
		newspan.className = 'title';
		newspan.innerHTML = testInfoMessages[i];
		menucont.appendChild(newspan);
		newspan = document.createElement('span');
		newspan.className = 'value';
		testInfoValues.push(newspan);
		menucont.appendChild(newspan);
	}
	if (currentTestMode < 2)
	{
		menucont.childNodes[6].style.display = 'none';
		menucont.childNodes[7].style.display = 'none';
	}
	
	document.getElementById('forumlink').style.display = 'none';
	document.getElementById('topmenuright').style.display = 'block';
	
	Rup.get.id("datetimeValue").innerHTML = "00:00:00";
}

function setTestMode()
{
	var sel = document.getElementById('testmodeselect');
	currentTestMode = sel.options[sel.selectedIndex].value;
	if (currentTestMode === undef) 
	{
		currentTestMode = sel.options[0].value;
		sel.selectedIndex = 0;
	}
}

function initCourseView()
{
	// завершающие действия в модуле тестирования   <============================================================================
	
	initCourseHeader();

	// Восстановление дерева
	document.getElementById('leftdv').innerHTML = '';
	
	/*
	if (!restoreLeftTree())
	{
		initCourseTree();
	} 
	*/

	restoreLeftTree();
	initCourseTree();
	Rup.app.content.init();
}


function latestTheory()
{
	Rup.app.content.go({url: '/showobject.asmx/theoryView'});
	return false;
}

function theoryById()
{
	var nds = leftTreeGetCheckboxes();
	if (nds == '') alert('Не выбрано ни одного раздела.');
	else
	{
		Rup.app.content.go({url: '/showobject.asmx/theoryViewById', data: '&Nodes=' + nds});
	}
	return false;
}

function drawbackTheory()
{
	Rup.app.content.go({url: '/showobject.asmx/theoryViewProblems'});
	return false;
}

function drawbackTheoryById()
{
	var nds = leftTreeGetCheckboxes();
	if (nds == '') alert('Не выбрано ни одного раздела.');
	else
	{
		Rup.app.content.go({url: '/showobject.asmx/theoryViewByIdProblems', data: '&Nodes=' + nds});
	}
	return false;
}

function drawbackCorrection()
{
	setTestMode();
	Rup.app.task.getList({url: '/tests.asmx/PracticeDrawbackCorrection', data: 'iMode='+currentTestMode}, currentTestMode, 'Устранение пробелов в знаниях');
	return false;
}

function diagnosticTest()
{
	setTestMode();
	Rup.app.task.getList({url: '/tests.asmx/DiagnosticTest', data: 'iMode='+currentTestMode}, currentTestMode, 'Диагностический тест');
	return false;
}

function randomPractice()
{
	setTestMode();
	Rup.app.task.getList({url: '/tests.asmx/PracticeRandom', data: 'iMode='+currentTestMode}, currentTestMode, 'Практика по пройденным разделам');
	return false;
}

function drawbackCorrectionById()
{
	var nds = leftTreeGetCheckboxes();
	if (nds == '') alert('Не выбрано ни одного раздела.');
	else
	{
		setTestMode();
		Rup.app.task.getList({url: '/tests.asmx/PracticeDrawbackCorrectionById', data:'iMode='+currentTestMode+'&Nodes='+nds}, currentTestMode, 'Устранение пробелов в знаниях');
	}
	return false;
}

function diagnosticTestById()
{
	var nds = leftTreeGetCheckboxes();
	if (nds == '') alert('Не выбрано ни одного раздела.');
	else
	{
		setTestMode();
		Rup.app.task.getList({url: '/tests.asmx/DiagnosticTestById', data:'iMode='+currentTestMode+'&Nodes='+nds}, currentTestMode, 'Диагностический тест');
	}
	return false;
}

function randomPracticeById()
{
	var nds = leftTreeGetCheckboxes();
	if (nds == '') alert('Не выбрано ни одного раздела.');
	else
	{
		setTestMode();
		Rup.app.task.getList({url: '/tests.asmx/PracticeRandomById', data:'iMode='+currentTestMode+'&Nodes='+nds}, currentTestMode, 'Практика по выбранным разделам');
	}
	return false;
}

function errorCorrection()
{
	setTestMode();
	Rup.app.task.getList({url: '/tests.asmx/ErrorCorrection', data:'iMode='+currentTestMode}, currentTestMode, 'Работа над ошибками');
	return false;
}


function showKnElResults(n)
{
	if (n != 0 && n != 1 && n != 2 && n != 3) return;
	var nds = leftTreeGetCheckboxes();
	if (nds == '') nds = 'm' + treeLeftRootId;
        var mode = 2;
        if (n == 0 || n==1) mode = 1; 

        var opt = 'false';
        if (n == 0 || n==2) opt = 'true'; 

	var targeturl = resultPageLink + '&id=' + nds + '&mode=' + mode + '&opt=' + opt + '&orderid=' + OrderId;
	window.open(targeturl);
}

function showTests(n)
{
	if (n != 0 && n != 1 && n != 2) return;
	var modes = ['c', 'u', 'a'];
	var targeturl = testResultPageLink + '&orderid=' + OrderId + '&mode=' + modes[n];
	window.open(targeturl, 'testres');
}

function showTheoryMenu()
{
	var params = {x: this.offsetLeft +1, y: submenuTopMargin, //this.offsetTop + this.offsetHeight + 6, 
					//title: 'Доступные действия:', 
					items: new Array(), 
					resultfunc: function(n){
										if (n==0) latestTheory();
										else if (n==1)theoryById();
									}
				 };
	
	params.items.push('За последнее время');
	params.items.push('Из выбранных разделов');
	showPopupMenu(params);
	return false;
}

function showDrawbackMenu()
{
	var params = {x: this.offsetLeft, y: submenuTopMargin, //this.offsetTop + this.offsetHeight + 6, 
					items: new Array(), 
					resultfunc: function(n){
										if (n==0) drawbackTheory();
										else if (n==1)drawbackTheoryById();
									}
				 };
	
	params.items.push('В пройденных разделах');
	params.items.push('В выбранных разделах');
	showPopupMenu(params);
	return false;
}

function drawbackCorrectionMenu()
{
	var params = {x: this.offsetLeft, y: submenuTopMargin, //this.offsetTop + this.offsetHeight + 6, 
					items: new Array(), 
					resultfunc: function(n){
										if (n==0) drawbackCorrection();
										else if (n==1)drawbackCorrectionById();
									}
				 };
	
	params.items.push('По пройденным разделам');
	params.items.push('По выбранным разделам');
	showPopupMenu(params);
	return false;
}

function diagnosticTestMenu()
{
	var params = {x: this.offsetLeft, y: submenuTopMargin, //this.offsetTop + this.offsetHeight + 6, 
					items: new Array(), 
					resultfunc: function(n){
										if (n==0) diagnosticTest();
										else if (n==1)diagnosticTestById();
									}
				 };
	
	params.items.push('По всем разделам');
	params.items.push('По выбранным разделам');
	showPopupMenu(params);
	return false;
}

function randomPracticeMenu()
{
	var params = {x: this.offsetLeft, y: submenuTopMargin, //this.offsetTop + this.offsetHeight + 6, 
					items: new Array(), 
					resultfunc: function(n){
										if (n==0) randomPractice();
										else if (n==1)randomPracticeById();
									}
				 };
	
	params.items.push('По пройденным разделам');
	params.items.push('По выбранным разделам');
	showPopupMenu(params);
	return false;
}

function resultMenu()
{
	var params = {x: this.offsetLeft, y: submenuTopMargin, //this.offsetTop + this.offsetHeight + 6, 
					items: new Array(), 
					resultfunc: showKnElResults
				 };
	
	params.items.push('Весь понятийный аппарат');
	params.items.push('Пройденный понятийный аппарат');
	params.items.push('Все теоретические материалы');
	params.items.push('Пройденные теоретические материалы');
	showPopupMenu(params);
	return false;
}
function testMenu()
{
	var params = {x: this.offsetLeft, y: submenuTopMargin, //this.offsetTop + this.offsetHeight + 6, 
					items: new Array(), 
					resultfunc: showTests
				 };
	
	params.items.push('Выполненные в контрольном режиме');
	params.items.push('Не выполнявшиеся в контрольном режиме');
	params.items.push('Все тесты');
	showPopupMenu(params);
	return false;
}