//
// $Id: script_tree.js,v 2.2 2007/09/25 07:06:36 Сергей Exp $
//

var bIsExpanded = new Array(); //Признак раскрытой ветви
var bIsDeleted = new Array(); //Признак удалённого элемента
var bCanExpand = new Array(); //Признак, может ли ветвь быть раскрыта
var iNewNodeIndex = 0; //Количество добавленых элементов

//--------------------Вспомогательные функции----------------------------
function ChangePicture(iNodeId, sURL) {
  if (iNodeId != -1) {
    document.all['Plus' + iNodeId].innerHTML = "<img src='" + sURL + "' width=11 height=11>";
  };
};

function HideRow(sRowId) {
  document.all[sRowId].style.display = "NONE";
};

function ShowRow(sRowId) {
  document.all[sRowId].style.display = "";
};

function GetParent(iNodeId) { //Получаем ссылку на родителя
  var objParentNode = document.all['GParent_Id' + iNodeId];
  var Result = -1;
  if (objParentNode)
    Result = objParentNode.value;
  return Result;
};

function ExpandBranch(iNodeId) {
//  SetVisNode(iNodeId);
  if (iNodeId == -1) {
    return;
  };

  if (bCanExpand[iNodeId] == false) { //Если элемент не может быть раскрыт, выходим
    return;
  };

  if (bIsExpanded[iNodeId] == false) {
    ShowRow('NodeCh' + iNodeId);
    ChangePicture(iNodeId, "images/_.gif");
    bIsExpanded[iNodeId] = true;
  };

  ExpandBranch(GetParent(iNodeId));
};

//---------------------------------------------------------------------------------------

function SetVisNode(iNodeId) {
//  alert(bCanExpand[iNodeId]);
//  alert(iNodeId);
  if (bCanExpand[iNodeId] == false) { //Если элемент не может быть раскрыт, выходим
    return;
  };
  if (bIsExpanded[iNodeId] == false) {
    ShowRow('NodeCh' + iNodeId);
    ChangePicture(iNodeId, "images/_.gif");
  } else {
    HideRow('NodeCh' + iNodeId);
    ChangePicture(iNodeId, "images/+.gif");
  };
  bIsExpanded[iNodeId] = !bIsExpanded[iNodeId];
};


function TreeSearch(iNodeId) {
//  alert(CurNodeId);
  if (iNodeId == -1) {
    return;
  };

  S = new String(GetName(iNodeId));
  S = S.toUpperCase();
  S1 = new String(document.all["Search"].value);
  S1 = S1.toUpperCase();
//  alert(S);

  if (S.indexOf(S1, 0) == 0) {
//    alert(GetName(iNodeId));
    CurNodeId = iNodeId;
    ExpandBranch(GetParent(iNodeId));
    document.all["Search"].focus();
    return;
  };

  TreeSearch(GetChild(iNodeId));
  TreeSearch(GetNext(iNodeId));
};

function ResetCurNodeId() {
  CurNodeId = FirstNodeId;
};