

//var lines = new Array (arrLength);
// ID, parent ID, display, opened branch
//	lines[1]  = new Array (1,  root, false, false);
//	...
//	lines[6]  = new Array (511, 51, false, false);

function branch(branchInd) {
	var i = 1;
	while ("" + lines[i]+ "" != "undefined") {
		if (lines[i][0] == branchInd && (checkChild(lines[i][0])[0])) {
			var layer = divIndex + lines[i][0];
			if (checkChild(lines[i][0])[1]) {
				closeBranch(branchInd); 
				changeImg(layer,imgCloseSrc);
				lines[i][3] = false; // rolled-up branch
			} else {
				lines[i][3] = true; // opened branch
				openBranch(branchInd); 
				changeImg(layer,imgOpenSrc);
			}
		} 
		i++;
	}
	return false;
}

function openBranch(parentInd) {
	var i = 1;
	var layer, newImgSrc;
	while ("" + lines[i] + "" != "undefined") {
	    	if (lines[i][1] == parentInd) {
			lines[i][2] = true; // visible branch
			if (lines[i][3]) openBranch(lines[i][0]);
			newImgSrc = (lines[i][3]) ? imgOpenSrc : imgCloseSrc;
			layer = document.getElementById(divIndex + lines[i][0]);
			if (checkChild(lines[i][0])[0]) changeImg(layer.id, newImgSrc);
			layer.style.display = "block";
		} 
		i++;
	}
}

function closeBranch(parentInd) {
	var i = 1;
	var layer;
	while ("" + lines[i] + "" != "undefined") {
    	if (lines[i][1] == parentInd) {
			closeBranch(lines[i][0]);
			lines[i][2] = false;
			layer = document.getElementById(divIndex + lines[i][0]);
			layer.style.display = "none";
		} 
		i++;
	}
}


// дочерняя ветка есть и visible или нет
function checkChild(parentInd) {
	var i = 1;
	var key = new Array (false, false);
	while ("" + lines[i] + "" != "undefined") {
    	if (lines[i][1] == parentInd) {
			key[0] = true; // дети есть ... 
			if (lines[i][2]) key[1] = true; // ... и они visible
		}
		i++;
	}
	return key;
}


//////////////////////////////// SERVICE /////////////////////////////////////////

// меняем рисунок
function changeImg(layerID, newSrc) {
	document.images[layerID + imgIndex].src = newSrc
}

//////////////////////////////// ON LOAD /////////////////////////////////////////
// сворачиваем дерево
function rollTree() {
	var i = 1;
	var layer;
	while ("" + lines[i] + "" != "undefined") {
    	layer = document.getElementById(divIndex + lines[i][0]);
	    if (lines[i][1] != root) {
	      	layer.style.display = "none";
			lines[i][2] = lines[i][3] = false; //rolled-up branch
		} else {
	      	layer.style.display = "block";
			lines[i][2] = lines[i][3] = true; // open branch
			if (checkChild(lines[i][0])[0]) changeImg(layer.id, imgCloseSrc);
		}
		i++;
	}
}

// разворачиваем дерево
function expandTree() {
	var i = 1;
	var layer;
	while ("" + lines[i] + "" != "undefined") {
	    	layer = document.getElementById(divIndex + lines[i][0]);
      		layer.style.display = "block";
		lines[i][2] = lines[i][3] = true; 
		if (checkChild(lines[i][0])[0]) changeImg(layer.id, imgOpenSrc);
		i++;
	}
}

