//var iTimerID;

//Debug info
var show_debug = false

//control variables
// при переходе на другую часть:
var open_begin = true;		// открывает дерево до первого узла данной части
var open_end = true;		// открывает дерево до первого узла следующей части (этот узел - виден в дереве)
var open_begin_tree = false; // открывает дерево до первого узла данной части при "хождении" по дереву
var open_end_tree = false;	// открывает дерево до первого узла следующей части (этот узел - виден в дереве)  при "хождении" по дереву
var open_first = true;		// открывает первый узел данной части 
var open_clicked_node = true;	//открывает кликнутый узел
//full - полная подсветка всех элементов данной части в дереве
//none - отсутствие какой-либо подсветки элементов данной части в дереве
//другое - подсветка первой ссылки в части или кликнутого узла
var highLight = "full"

// variables (changing: for advanced users only!!!)
var doc_part; 				// загружаемая часть
var reg_part;				// регулярное выражение /part=<%doc_part%>/
var open_node = false;		// индикатор клика по ссылке
var top_added = false;		// добавлен ли верхний уровень дерева в путь
var top_level = true;		// индикатор верхнего уровня
var cur_found = false;		// индикаторо обнаружения текущей части в дереве
var end_found = false;		// индикаторо обнаружения конца текущей части в дереве
var first_meeting = true;	// индикатор первого вхождения ссылки содержащей current_hash
var level_up = false;		// индикатор подъема по уровням дерева
var current_hash = " ";		
var tree_path = "";			// путь в дереве до первого узла данной части (отображается по кнопке путь)

//if (div.children[1] != null return;
//добавляет название узла div к пути
function add_tree_path(div) {
	if (div.children[1] != null && tree_path.match(div.children[1].innerText) == null)
			tree_path = div.children[1].innerText + (tree_path == "" ? "" : "|") + tree_path;
}

//открывает узел div
function div_open(div) {
	if (div.className == "close") {
		div.className = "open";
		div.children[0].src = div.children[0].src.replace("close","open");
	}
}

//функция поиска по дереву
function NodeSearch(div,open){
	var to_open = open;
	if (level_up != "undefined") level_up = false;
//закрываем открытые пункты, меняя картинку
	if (div.className == "open" && div.children[1].href.match(reg_part) == null) {
		div.className = "close";
		div.children[0].src = div.children[0].src.replace("open","close");
	}
//подсвечиваем/убираем подсветку в зывисимости от highLight
	if (highLight != "none" && div.children.length >= 2)
		if (highLight == "full" && div.children[1].href.match(reg_part) != null) {
//window.alert(reg_part);
			div.children[1].innerHTML = "<B>" + div.children[1].innerHTML + "</B>";
		} else {
			div.children[1].innerHTML = div.children[1].innerHTML.replace(/<B>/ig,"")
			div.children[1].innerHTML = div.children[1].innerHTML.replace(/<\/B>/ig,"")
		}
//проверяем не подходит ли нам дынный узел
	if (!cur_found && div.children[1] != null && div.children[1].href.match(/(&|\?)part=(\d+)/i) != null) 
		if (doc_part == div.children[1].href.match(/(&|\?)part=(\d+)/i)[2]) {
			if (open_begin) {
				if (highLight != "none") div.children[1].innerHTML = "<B>" + div.children[1].innerHTML + "</B>";
				if (open_first) div_open(div)
				cur_found = true;
				level_up = true;		
                to_open = true;
			}
			if (open_node) {
				if (div.children[1].href.match(current_hash) != null && first_meeting) {
					if (highLight != "none") div.children[1].innerHTML = "<B>" + div.children[1].innerHTML + "</B>";
					if (open_clicked_node) div_open(div);
					if (!top_level) add_tree_path(div);
					first_meeting = false;
					cur_found = true;
					level_up = true;
					to_open = true;
				}
			}	
		}				
    if (cur_found && level_up == true) add_tree_path(div);
//проверяем не началась следущая часть
	if (open_end && cur_found && div.children[1] != null 
			&& div.children[1].href.match(/(&|\?)part=(\d+)/i) != null)
		if (!end_found && div.children[1].href.match(/(&|\?)part=(\d+)/i)[2] == (parseInt(doc_part) + 1)) {
			end_found = true;
			to_open = true;
		}
//пробегаемся по всем вложенным узлам
	for (var i = 2; i < div.children.length; i++) 
		if (div.children[i].tagName == "DIV"){
			var top = top_level;
			var up = level_up;
			top_level = false;
			level_up = false;
			open = NodeSearch(div.children[i],false);
			top_level = top;
			if (up != "undefined") level_up = up || level_up;
			if (up == false && level_up == true) add_tree_path(div);
			if (open) {
				div_open(div);
				to_open = true;
			}
		}
	if (to_open) return true
	else return false;
}

//функция открытия дерева
function TreeOpen() {

if (show_debug) var D1 = new Date()
	
tag = window.event.srcElement;
	if (tag == null ) current_hash = " "
	else
	{
//определяем current_hash
	if (top.doctext.window.document.URLUnencoded.match(/#(.+)/) != null)
		current_hash = top.doctext.window.document.URLUnencoded.match(/#(.+)/)[1]
	current_hash = current_hash.replace(/\$(\$f|p|f)(\d+)(.*)/i," ");
	current_hash = current_hash.replace(/YANDEX_(\d+)/i," ");
	}
	if (current_hash != " ") {
		open_begin = open_begin_tree;
		open_node = true;
		open_end = open_end_tree;
	}

//определяем текущую часть	
//window.alert(document.URLUnencoded);
	if (document.URLUnencoded.match(/part=/i) != null)
		doc_part = document.URLUnencoded.match(/(&|\?)part=(\d+)/i)[2]
	if (doc_part + "x" != "undefinedx") {
		var div = top.doctree.document.all.tags("DIV")[0];
		//06.06.2006 в регулярное выражение добавлено "[^0-9]"
		reg_part = new RegExp("part="+doc_part+"[^0-9]","i");
	}

//запускаем NodeSearch
	var open = false;
	var last_open = false;
	if (parseInt(doc_part) != "NaN" && div + "x" != "undefinedx") {
		top_level = true;
		open = NodeSearch(div,false);
		if (open && !end_found && (div.children[1].href.match(reg_part) == null || open_first)) div_open(div)
		if (level_up == true) add_tree_path(div);
		while (div.nextSibling + "x" != "nullx"){
			div = div.nextSibling;
			if (level_up == true) level_up = "undefined"
			top_level = true;
			last_open = open;
			open = NodeSearch(div,false);
			if (open && !end_found && !last_open && open &&
					(div.children[1].href.match(reg_part) == null || open_first))
				div_open(div)
			if (level_up == true) add_tree_path(div);
		}
	}
//+++ AA 06.09.15
	if ((open == false) || (last_open == false)) ; else
	top.doctree.tree_path = tree_path;
//--- AA
if (show_debug) {
		var D2 = new Date()
		alert("Время раскрытия Дерева: " + (D2.getTime()-D1.getTime()) + ".");
	}
}
function clickIt()  
{	
	tag = window.event.srcElement;
	while (tag.parentElement!=null && tag.tagName.toLowerCase( ) != "a" )
	{
		tag=tag.parentElement;
	}

	if(tag != null) {
	    if ((tag.tagName.toLowerCase( ) == "a")){
			//var hr = window.event.srcElement.href;
			var hr = tag.href
			/*
			if (hr.match(/#YANDEX/i)) 
				{
					window.event.returnValue = false;
					var win = window.open("", "doctext");
					 win = window.open(hr, "doctext");
					//top.frames[2].location.href = hr;
			
					window.document.onclick = clickIt;
					//win.onload = click2;
					win.document.onclick = self.clickIt;
					//iTimerID=window.setTimeout(click2, 1000); 
					return;
				}*/
			if (hr.match(/\#\$f/i)) {
				
			//	window.event.returnValue = false;  
			//	hr = hr.replace(/cmd=2/i, "cmd=3");
			//	if(hr.indexOf('cmd=')==-1) {
			//		x=hr.substring(0, hr.indexOf('#'));
			//		x2 = hr.substr(hr.indexOf('#'));
			//		hr = x+"?cmd=3"+x2;
			//	}
			//	//alert(hr);
			//	
			//	//var hr1 = hr.substring(0, hr.indexOf('?cmd='));
			//	//var hh = hr.substr(hr.indexOf('#')+1);
			//	var win = window.open(hr, "docnotes");
			//	win.focus();
			//	return;
			}
			hr_l =  window.location.href;
			//alert(window.location.pathname + "--------" + tag.pathname)
			if(hr_l.indexOf('#')>=0) { 
				hr_l = hr_l.substring(0, hr_l.indexOf('#'));
			}
			//if(hr_l.indexOf('querycgi.exe')>=0){
			//	hr_l = hr_l.replace(/\?cmd=2[\S]*$/i, ""); //querycgi.exe[\S]*
			//}
			//alert(hr.substring(0, hr.indexOf('#')) + "-+---" + hr_l);
			// hr.substring(0, hr.indexOf('#')) != hr_l
			if( window.location.pathname.replace(/^\//,"") != tag.pathname.replace(/^\//,"")) {

				window.event.returnValue = false; 
				if(hr.indexOf('#')>=0) {
					if (hr.indexOf('?') >= 0) {
						var hr1 = hr.substring(0, hr.indexOf('#')) + "&";
					} else {
						var hr1 = hr.substring(0, hr.indexOf('#')) + "?";
					}
					var hh = hr.substr(hr.indexOf('#')+1);
					var win = window.open(hr1 + "cmd=0&hash=" + hh, "_blank");
				} else {
					var win = window.open(hr, "_blank");
				}
				win.focus();
				document.onclick = clickIt;
			}
			else {
				if(hr_l.indexOf('querycgi.exe')>=0){
					//alert("querycgi.exe")
					window.event.returnValue = false;  
					var hh = hr.substr(hr.indexOf('#')+1);
					tag.href = hr_l + "#" + hh;
					var win = window.open(tag.href, "_self");
//					win.document.onclick = clickIt;
				}
			}
		}
	}
}
document.onclick = clickIt;
window.onload = TreeOpen;
