﻿var nextTxt = ' >> ' // ссылка "вперед"
var prevTxt = ' << ' // ссылка "назад"
var slides = new Array; // массив слайдов
var heads = new Array; // массив заголовков
var links = new Array; // массив ссылок оглавления
var headsTmp = new Array; // временный массив заголовков

try { window.addEventListener('load', init, false); } catch(e) { window.onload = init; }

function init(){
	if (!document.getElementsByTagName && !document.getElementById) return;
	var divs = document.getElementsByTagName("div");
	for (var i=0; i < divs.length; i++) { // находим все элементы div в документе
		if (divs[i].className == 'slide') { slides.push(divs[i]); }
	}
	for (var s=0; s < slides.length; s++) {
		var mySlide = slides[s];
		mySlide.id = 'slide'+s; // присваиваем id каждому слайду
		if (mySlide.hasChildNodes()) { // есть ли что-то внутри слайда? переберем все, что внутри слайда
	        for (var h=0; h < mySlide.childNodes.length; h++) { // находим заголовки h2
				if (mySlide.childNodes[h].tagName == 'H1') { // в массив заголовков кладем первый h2 для каждого слайда
					heads[s] = mySlide.childNodes[h];
					heads[s].id = 'heads'+s;
					break;
				} 
			}
		}
		closeSlides(0);// убираем все слайды, кроме первого (id='slide0')
	}
    createNavBar(slides[0], slides.length);
    createTableContent(heads);
}

function createNavBar(mSlide,allSlides){
	var divID = mSlide.getAttribute('id'); // выясняем id открытого слайда
	divID = parseInt(divID.substring(5,7)); // выбираем из id номер слайда
	var nb = document.createElement('div'); // строим div для панели навигации
	nb.id = 'navBar';
	nb.className = 'navBar'; // пригодится для оформления в css
	if (divID > 0){ lnkPrev = createLnk('PrevLnk'+(divID-1),prevTxt); } // ссылка "назад"
	if (divID < slides.length-1){ lnkNext = createLnk('NextLnk'+(divID+1),nextTxt); } // ссылка "вперед"
	nbInfo = document.createElement('span'); // span для информации о текущем
	nbInfo.id = 'InfoSpan';			 // слайде(номер слайда и их количество)
	spanTxt = document.createTextNode((divID+1)+' из '+allSlides); // делаем текстовый узел
	nbInfo.appendChild(spanTxt);				// и помещаем его в span
	if (divID > 0){ nb.appendChild(lnkPrev);} // собираем всю панель навигации
	nb.appendChild(nbInfo);  // ссылки, информацию о количестве слайдов
	if (divID < slides.length-1){ nb.appendChild(lnkNext); } // и номер текущего слайда
	document.getElementById('navigator').appendChild(nb); // размещаем панель навигации
}

function createTableContent(mHead) {
	var allHeads = mHead.length;
	var listH = document.createElement('ul'); // создаем элемент UL
	listH.id = 'tCont'; // присваиваем ему id, пригодится для css
	var closeM = document.createElement('li'); // создаем элемент LI
	closeM.id = 'menuClose'; // присваиваем ему id, пригодится для css	
	for (var d=0; d < allHeads; d++) { // перебираем заголовки
		var headID = mHead[d].getAttribute('id'); // выясняем id заголовка открытого слайда
		headID = parseInt(headID.substring(5,7)); // выбираем из id номер слайда
		var listItem = document.createElement('li'); // создаем элемент LI
		var txt = ''; // инициализируем текст для ссылки
		for (var t = 0; t < mHead[d].childNodes.length; t++) {
		 txt += mHead[d].childNodes[t].nodeValue; // берем текстовую часть заголовка
		}
		lnkH = createLnk('HeadLnk'+headID, txt); // делаем ссылку
		listItem.appendChild(lnkH);		 // и размещаем ее
		listH.appendChild(listItem);		 // в списке
	}
	document.getElementById('menu_left').appendChild(listH); // размещаем оглавление 	
}

function createLnk(lnkId, lnkTxt) { // создаем ссылки (<a href=...)
	var lnk = document.createElement('a');
	lnk.href = '#';
	lnk.id = lnkId; // и далее назначаем ссылке событие onclick
	lnk.onclick = function() { linkClick(lnkId) }
	var t = document.createTextNode(lnkTxt); // добавляем текст для ссылки
	lnk.appendChild(t);
	return lnk; // возвращаем готовую ссылку
}

function linkClick(aId){ // перемещение по слайдам
	if (aId.substring(0,7) == 'NextLnk' && aId.substring(7,9) <= (slides.length-1)) {
		closeSlides(aId.substring(7,9));  // закрываем все слайды и открываем следующий
		slides[aId.substring(7,9)].style.display = 'block';
		// собираем панель навигации
	    createNavBar(slides[aId.substring(7,9)], slides.length);
	}
	if (aId.substring(0,7) == 'PrevLnk' && aId.substring(7,9) >= 0) {
		closeSlides(aId.substring(7,9));// закрываем все слайды и открываем предыдущий
		slides[aId.substring(7,9)].style.display = 'block';
	    createNavBar(slides[aId.substring(7,9)], slides.length); // собираем панель навигации
	}
	if (aId.substring(0,7) == 'HeadLnk') {
		closeSlides(aId.substring(7,9));  // закрываем все слайды и открываем кликнутый
		slides[aId.substring(7,9)].style.display = 'block';
	    createNavBar(slides[aId.substring(7,9)], slides.length);
		document.getElementById('tCont').style.display = 'block';
	}
	return false;
}

function closeSlides(n){  
    if(document.getElementById("navBar")){  
        var nnn = document.getElementById("navBar");
        nnn.parentNode.removeChild(nnn);
    }
    for (var s = 0; s < slides.length; s++) {
		if(s == n) slides[s].style.display = "block";
		else  slides[s].style.display = "none";
    }
}


