function index_init()
{
	core = new coreObject();

	/* инициализация контента */
	corePatterns();
	coreDefaults();
	coreStructure();
	coreContent();
	//coreDictionary();

	/* обработчики первого запуска */
	core.addEventListener('onFirstStart', infoboxFirstStart);
	core.addEventListener('onFirstStart', tocFirstStart);
	core.addEventListener('onFirstStart', soundFirstStart);
	core.addEventListener('onFirstStart', interfaceFirstStart);

	/* обработчики смены слайдов */
	core.addEventListener('onInit', headButtonHold);
	core.addEventListener('onInit', updateInterface);
	//core.addEventListener('onStart', xxx);

	/* обработчики смены раздела */
	core.addEventListener('onUnitChange', unitChange);

	/* обработчики завершения тестирования раздела  */
	core.addEventListener('onTestingUnitChecked', core.testShowResult);

	/* обработчики завершения работы */
	//core.addEventListener('onTerminate', function(){alert('i\'m terminated')});

	/* запуск инифиализации ядра */
	core.parse('toc');

	/* Разрешает отправку результатов итогового тестирования */
	//core.sendTestReport = true;
}

function index_terminate()
{
	if (typeof core != 'undefined' && typeof core.handleEvent == 'function')
		core.handleEvent('onterminate');
}

function infoboxFirstStart()
{
	infobox = new infoboxObject();
	infobox.FIRST_START();
	infobox.initId();
	infobox.addPreset('def', {display:1, controls:1, right: 10});
	infobox.addPreset('lecture', {display:1, controls:1, 'content-5':'<div class="lecture"></div>', 'content+4':'<div class="naviuse">Для продолжения воспользуйтесь навигатором</div>', width: 350, height:'auto', right: 10, bottom:'10', dragndrop:true});
	infobox.addPreset('complete', {display:1, controls:1, 'content-5':'<div class="lecture"></div>', 'content+4':'<div class="naviuse">Раздел завершен. <span style="cursor: pointer; text-decoration: underline; color: #336" onclick="core.view(\'toc\', 0);">Перейти к содержанию</span></div>', width: 350, height:'auto', right: 10, bottom:'10', dragndrop:true});
	infobox.addPreset('training', {display:1, controls:1, 'content-5':'<div class="training"></div>', width: 350, height:'auto', right: 10, bottom:'10', ibClass:'ib_t', dragndrop:true});
	infobox.addPreset('unitChange', {display:0, dragndrop:true, controls:1, width: 350, height:'auto', right: 10, bottom:'10'});
}


function unitChange()
{
	infobox.init({preset:'unitChange'});
}


function tocFirstStart()
{
	toc = new tocObject();
	toc.FIRST_START();
	toc.addPage('course', 'Курс');
	toc.addPage('test', 'Тестирование');
}

function soundFirstStart()
{
	sound = new soundObject();
	sound.playOnOpen = true;
	sound.enabled = false;
	sound.hidden = true;
	sound.fileExtension = 'mp3';
	sound.filePath = 'sound/';
	sound.init();
}

function splashFade()
{
	document.getElementById('splash').style.display = 'none';
	document.getElementById('wrap').style.display = 'block';
}

function navigateKey(e){
					e = e || window.event;
					if(e.keyCode == 33)
					{
						core.prev();
					}
					if(e.keyCode == 34)
					{
						core.next();
					}
					if (e.keyCode == 36)
							core.first();
					if (e.keyCode == 35)
						core.last();
				};

function navKey(on){
	if (on)
		events.add(document, 'keydown', navigateKey);
	else
		events.remove(document, 'keydown', navigateKey);
}

function interfaceFirstStart()
{
	navKey(true);
	/* навигационная панель */
	events.add('navfloat_nowPage', 'mousedown', disableDragNavfloat);
	events.add('navfloat_nowPage', 'keypress', function(ev){var ev=new xEvent(ev); return numbersonly(ev)});
	events.add('navfloat_nowPage', 'keyup', setPageNavfloatEnter);
	events.add('navfloat_nowPage', 'blur', setPageNavfloat);

	xEnableDrag('navfloat');
	xEnableDrop('navfloat_drop', navfloat_def);
	events.add('navfloat', 'dblclick', navfloat_def);
	events.add('navfloat_first', 'click', function(){core.first();});
	events.add('navfloat_prev', 'click', function(){core.prev();});
	events.add('navfloat_next', 'click', function(){core.next();});
	events.add('navfloat_last', 'click', function(){core.last();});
	ctrlImages('navfloat_first', 'img/controls/first.gif', 'img/controls/first_click.gif', 'img/controls/first_over.gif', '#');
	ctrlImages('navfloat_last', 'img/controls/last.gif', 'img/controls/last_click.gif', 'img/controls/last_over.gif', '#');
	ctrlImages('navfloat_prev', 'img/controls/prev.gif', 'img/controls/prev_click.gif', 'img/controls/prev_over.gif', '#');
	ctrlImages('navfloat_next', 'img/controls/next.gif', 'img/controls/next_click.gif', 'img/controls/next_over.gif', '#');

	//При клике на progressBar, будем переходить на нужную стр.
  	events.add('progressBar', 'click', progressBarGoTo);

	/* контровы в заголовке */
	events.add('head_btn1', 'click', function(){core.view('toc');})
	events.add('head_btn3', 'click', function(){core.view('settings');})
	events.add('head_btn4', 'click', function(){core.view('help');})
	events.add('head_btn5', 'click', function(){core.view('bookmarks');})
	events.add('head_back', 'click', function(){core.back();})
	events.add('head_forward', 'click', function(){core.forward();})
	events.add('head_close', 'click', function(){core.view('toc');})
	ctrlImages('head_btn1', 'img/head/btns/btn1.gif', 'img/head/btns/btn1_click.gif', 'img/head/btns/btn1_over.gif', 'toc');
	ctrlImages('head_btn3', 'img/head/btns/btn3.gif', 'img/head/btns/btn3_click.gif', 'img/head/btns/btn3_over.gif', 'settings');
	ctrlImages('head_btn4', 'img/head/btns/btn4.gif', 'img/head/btns/btn4_click.gif', 'img/head/btns/btn4_over.gif', 'help');
	ctrlImages('head_btn5', 'img/head/btns/btn5.gif', 'img/head/btns/btn5_click.gif', 'img/head/btns/btn5_over.gif', 'bookmarks');
	ctrlImages('head_back', 'img/head/back.gif', 'img/head/back_click.gif', 'img/head/back.gif', '#');
	ctrlImages('head_forward', 'img/head/forward.gif', 'img/head/forward_click.gif', 'img/head/forward.gif', '#');
	ctrlImages('head_close', 'img/head/close.gif', 'img/head/close_over.gif', 'img/head/close_over.gif', '#');
	ctrlImages('nav_bookmark', 'img/nav/bookmark.gif', 'img/nav/bookmark_hover.gif', 'img/nav/bookmark_hover.gif', '#');

    //Подсказка с номером страницы
	var divGoTo = document.createElement('div');
	divGoTo.id = 'progressBarPageShow';
	divGoTo.style.display = 'none';
	divGoTo.className = 'progressBarPageShow';
	divGoTo.innerHTML = '<div class="begin"></div><div id="progressBarShowContent" class="progressBarShowContent"></div><div class="end"></div>';
	document.body.appendChild(divGoTo);

	events.add('progressBar', 'mouseover', progressBarShoGoToPage);
	events.add('progressBar', 'mousemove', progressBarShoGoToPage);
	events.add('progressBar', 'mouseout', progressBarHideGoToPage);
	events.add('progressBar', 'mouseup', progressBarHideGoToPage);
}

function ctrlImages (ele, normal, click, over, id)
{
	events.add(ele, 'mouseover', function ctrlImages_over(){if (typeof core != 'undefined' && core.now.id != id)$(ele).src=over;}, false);
	events.add(ele, 'mouseout', function ctrlImages_out(){if (typeof core != 'undefined' && core.now.id != id)$(ele).src=normal;}, false);
	events.add(ele, 'mousedown', function ctrlImages_down(){if (typeof core != 'undefined' && core.now.id != id)$(ele).src=click;}, false);
	events.add(ele, 'mouseup', function ctrlImages_up(){if (typeof core != 'undefined' && core.now.id != id)$(ele).src=over;}, false);
}

function headButtonHold()
{
	if (typeof core != 'undefined' && core.now.id == 'toc') 	$('head_btn1').src = 'img/head/btns/btn1_click.gif'; else $('head_btn1').src = 'img/head/btns/btn1.gif';
	if (typeof core != 'undefined' && core.now.id == 'settings')	$('head_btn3').src = 'img/head/btns/btn3_click.gif'; else $('head_btn3').src = 'img/head/btns/btn3.gif';
	if (typeof core != 'undefined' && core.now.id == 'help') 	$('head_btn4').src = 'img/head/btns/btn4_click.gif'; else $('head_btn4').src = 'img/head/btns/btn4.gif';
	if (typeof core != 'undefined' && core.now.id == 'bookmarks')	$('head_btn5').src = 'img/head/btns/btn5_click.gif'; else $('head_btn5').src = 'img/head/btns/btn5.gif';
}

function updateInterface()
{
	/* ПОКАЗ/СКРЫТИЕ КОНТРОЛОВ */
	if (core.nowPage.hideControls)
		step(['navfloat', 'head_close_bg', 'head_pb'],[]);
	else
		step([], ['navfloat', 'head_close_bg', 'head_pb']);

	/* ИНФОБОКС */
	var pb = $('progressBar');
	var inner = '';
	inner += '<table cellspacing="0" cellpadiing="0"><tr>';
	if ((core.now.posCountable+1) == 0)
		inner += '<td class="pb_bg_left_head"></td><td class="pb_bg_center_head"></td><td class="pb_bg_right_head"></td>';
	else if ((core.now.posCountable+1) == (core.now.lengthCountable))
		inner += '<td class="pb_fg_left_head"></td><td class="pb_fg_center_head"></td><td class="pb_fg_right_head"></td>';
	else
	{
		var w = pb.offsetWidth - 9 - 9;
		var x = (w/(core.now.lengthCountable))*(core.now.posCountable+1);
		inner += '<td class="pb_fg_left_head"></td><td class="pb_fg_center_head" style="width: '+(x/w*100)+'%;"></td><td class="pb_bg_center_head"></td><td class="pb_bg_right_head"></td>';
	}
	inner += '</tr></table>';
	if (pb) pb.innerHTML = inner;

	/* СТРОКА С НАЗВАНЕМ ТЕКУЩЕГО РАЗДЕЛА */
	$('nav_title').innerHTML = core.getFullTitle();
	//core.now.name;

	/* КОЛИЧЕСТВО СТРАНИЦ В ПЛАВАЮЩЕЙ ПАНЕЛЬКЕ */
	$('navfloat_nowPage').value = core.now.posCountable+1;
	$('navfloat_PageCount').innerHTML = ' из '+core.now.lengthCountable;
}

function navfloat_def()
{
	$('navfloat').style.top = $('navfloat_drop').offsetTop+'px';
	$('navfloat').style.left = $('navfloat_drop').offsetLeft+'px';
}

function close_window(){
	if (confirm("Вы действительно хотите выйти из курса?")) {
		var browserName=navigator.appName;
		if (browserName=="Netscape"){
			netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite');
		}
		window.opener = top;
		window.open('','_parent','');
		window.close();
	}
}

function toggle(el)
{
	if ($(el).style.display == 'none')
		$(el).style.display = 'block';
	else
		$(el).style.display = 'none';
}

function progressBarGoTo(ev)
{
	ev = new xEvent(ev);
	var width = xWidth('progressBar');
	var posEv = ev.pageX - xPageX('progressBar');
	var length = core.now.lengthCountable;
	if (posEv >= 0 && posEv <= width)
	{
		var pos = Math.floor((posEv * length/width));
		if (pos < 0) pos = 0;
		if (pos >= length) pos = length-1;
		(core.now.pos != pos)? core.view(core.now.id, pos): '';
	}
}

function progressBarShoGoToPage(ev)
{
	ev = new xEvent(ev);
	var re = /(\d+)px/;
	var width = xWidth('progressBar');
	var posEv = ev.pageX - xPageX('progressBar');
	var length = core.now.lengthCountable;
	if (posEv >= 0 && posEv <= width)
	{
		var pos = Math.floor((posEv * length/width));
		if (pos < 0) pos = 0;
		if (pos >= length) pos = length-1;
		$('progressBarPageShow').style.left = (xPageX('progressBar')-70) + 'px' ;
		//Заглушка для 6 IE
		if(navigator.userAgent.indexOf('MSIE 6.0') == 25)
			$('progressBarPageShow').style.top = Math.floor((xPageY('progressBar') + xHeight('progressBar')/2)-20.5) + 'px';
		else $('progressBarPageShow').style.top = Math.floor((xPageY('progressBar') + xHeight('progressBar')/2)-9.5) + 'px';
        $('progressBarPageShow').style.display = '';
        $('progressBarShowContent').innerHTML = 'Стр. '+(pos+1)+'';
	}
}

function progressBarHideGoToPage()
{
	$('progressBarPageShow').style.display = 'none';
}

function disableDragNavfloat()
{
	$('navfloat').xDragEnabled = false;
}

function setPageNavfloat()
{
	var nowPage =  core.now.pos + 1;
	var newPage = $('navfloat_nowPage').value;
	var re = /(\D)/g;
	newPage = Number(newPage.replace(re, ''));
	(newPage > core.now.lengthCountable)? newPage = core.now.lengthCountable: (newPage <= 0)? newPage = 1: '';
	(nowPage != newPage)? core.view(core.now.id, (newPage-1)): '';
	$('navfloat_nowPage').value = newPage;
	$('navfloat').xDragEnabled = true;
}

function setPageNavfloatEnter(ev)
{
	if (ev.keyCode == 13)
		$('navfloat_nowPage').blur()
}

//Разрешает ввод только цифр
function numbersonly(object, e)
{
	var key;
	var keychar;
	if (window.event)
    	key = window.event.keyCode;
	else
		if (e)
			key = e.which;
		else return true;
	keychar = String.fromCharCode(key);
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) || (key==16))
    	return true;
	else
		if ((("0123456789").indexOf(keychar) > -1))
			return true;
		else
			if (keychar == ".")
			{
				object.focus();
	    		return false;
	  		}
  			else return false;
}
