178 lines
5.1 KiB
JavaScript
178 lines
5.1 KiB
JavaScript
/*
|
|
* 노드 , 트리 구성 정보 선언
|
|
*/
|
|
var treeNodes = new Array();;
|
|
var openTreeNodes = new Array();
|
|
var treeIcons = new Array(6);
|
|
var imgpath = "/images/egovframework/com/cmm/utl/";
|
|
var treeYeobu = false;
|
|
var chkValue = "";
|
|
var vHtmlCode = "";
|
|
|
|
/*
|
|
* 노드 , 트리 구성 이미지 정보
|
|
*/
|
|
function preloadIcons() {
|
|
treeIcons[0] = new Image();
|
|
treeIcons[0].src = imgpath+"menu_plus.gif";
|
|
treeIcons[1] = new Image();
|
|
treeIcons[1].src = imgpath+"menu_plusbottom.gif";
|
|
treeIcons[2] = new Image();
|
|
treeIcons[2].src = imgpath+"menu_minus.gif";
|
|
treeIcons[3] = new Image();
|
|
treeIcons[3].src = imgpath+"menu_minusbottom.gif";
|
|
treeIcons[4] = new Image();
|
|
treeIcons[4].src = imgpath+"menu_folder.gif";
|
|
treeIcons[5] = new Image();
|
|
treeIcons[5].src = imgpath+"menu_folderopen.gif";
|
|
}
|
|
/*
|
|
* 트리생성함수
|
|
*/
|
|
function createTree(arrName, vYeobu, checkValue) {
|
|
var startNode, openNode;
|
|
treeNodes = arrName;
|
|
treeYeobu = vYeobu;
|
|
chkValue = checkValue;//"2000000"
|
|
startNode = chkValue;
|
|
if (treeNodes.length > 0) {
|
|
preloadIcons();
|
|
|
|
//vHtmlCode +="<table width='181' height='94' border='2' align='center' cellpadding='0' cellspacing='0'><tr>";
|
|
//vHtmlCode +="<td valign='bottom' background='/images/egovframework/com/left_menu_top.gif' style='background-repeat:no-repeat'>";
|
|
|
|
if (startNode == null) startNode = 0;
|
|
if (openNode != 0 || openNode != null) setOpenTreeNodes(openNode);
|
|
if (startNode !=0) {
|
|
var _getTreeArrayId = getTreeArrayId(startNode)
|
|
var nodeValues = treeNodes[getTreeArrayId(startNode)].split("|");
|
|
//vHtmlCode +="<div class='LeftMenuTitle'><font color='#ffffff'>" + nodeValues[2] + "</font></div></td></tr>"
|
|
} else {
|
|
//vHtmlCode +="<img src='"+imgpath+"menu_base.gif' border='0' align='absbottom' alt='' >메뉴목록<br></td></tr>";
|
|
}
|
|
var recursedNodes = new Array();
|
|
addTreeNode(startNode, recursedNodes);
|
|
//vHtmlCode +="<tr><td height='30' valign='bottom' background='/images/egovframework/com/left_menu_btm.gif' style='background-repeat:no-repeat'> </td></tr></table>";
|
|
document.write("<ul>"+vHtmlCode+"</ul>");
|
|
}
|
|
}
|
|
/*
|
|
* 노드위치 확인
|
|
*/
|
|
function getTreeArrayId(node) {
|
|
for (i=0; i<treeNodes.length; i++) {
|
|
var nodeValues = treeNodes[i].split("|");
|
|
if (nodeValues[0]==node) return i;
|
|
}
|
|
return 0;
|
|
}
|
|
/*
|
|
* 트리 노드 열기
|
|
*/
|
|
function setOpenTreeNodes(openNode) {
|
|
for (i=0; i<treeNodes.length; i++) {
|
|
var nodeValues = treeNodes[i].split("|");
|
|
if (nodeValues[0]==openNode) {
|
|
openTreeNodes.push(nodeValues[0]);
|
|
setOpenTreeNodes(nodeValues[1]);
|
|
}
|
|
}
|
|
}
|
|
/*
|
|
* 트리노드 오픈 여부 확인
|
|
*/
|
|
function isTreeNodeOpen(node) {
|
|
if (treeYeobu){ return true; }
|
|
for (i=0; i<openTreeNodes.length; i++){
|
|
if (openTreeNodes[i]==node){ return true; }
|
|
}
|
|
return false;
|
|
}
|
|
/*
|
|
* 하위 트리노드 존재여부 확인
|
|
*/
|
|
function hasChildTreeNode(parentNode) {
|
|
for (i=0; i< treeNodes.length; i++) {
|
|
var nodeValues = treeNodes[i].split("|");
|
|
if (nodeValues[1] == parentNode) return true;
|
|
}
|
|
return false;
|
|
}
|
|
/*
|
|
* 트리노드 최하위 여부 확인
|
|
*/
|
|
function lastTreeSibling (node, parentNode) {
|
|
var lastChild = 0;
|
|
for (i=0; i< treeNodes.length; i++) {
|
|
var nodeValues = treeNodes[i].split("|");
|
|
if (nodeValues[1] == parentNode)
|
|
lastChild = nodeValues[0];
|
|
}
|
|
if (lastChild==node) return true;
|
|
return false;
|
|
}
|
|
/*
|
|
* 신규 트리노드 추가
|
|
*/
|
|
function addTreeNode(parentNode, recursedNodes) {
|
|
for (var i = 0; i < treeNodes.length; i++) {
|
|
|
|
var nodeValues = treeNodes[i].split("|");
|
|
if (nodeValues[1] == parentNode) {
|
|
|
|
var lastSibling = lastTreeSibling(nodeValues[0], nodeValues[1]);
|
|
var hasChildNode = hasChildTreeNode(nodeValues[0]);
|
|
var isNodeOpen = isTreeNodeOpen(nodeValues[0]);
|
|
vHtmlCodeBg ="<li class='leftmenu_dept01'>";
|
|
vHtmlCodeBgList ="<li class='dept02'>";
|
|
|
|
vHtmlCodeEmpty = "";
|
|
// Write out line | empty treeIcons
|
|
for (g=0; g<recursedNodes.length; g++) {
|
|
vHtmlCodeEmpty +="<img src='"+imgpath+"menu_empty.gif' border='0' align='absbottom' alt='' >";
|
|
}
|
|
|
|
if (lastSibling) recursedNodes.push(0);
|
|
else recursedNodes.push(1);
|
|
|
|
if (hasChildNode) {
|
|
vHtmlCode +=vHtmlCodeBg+"<a href='#'>"+nodeValues[2]+"</a></li>";
|
|
} else{
|
|
// Start link
|
|
if(recursedNodes.length==1){
|
|
vHtmlCode +=vHtmlCodeBg+"<a href=javascript:fn_MovePage('" + i + "');>"+nodeValues[2]+"</a></li>";
|
|
}else{
|
|
vHtmlCode +=vHtmlCodeBgList+"<a href=javascript:fn_MovePage('" + i + "');>"+nodeValues[2]+"</a></li>";
|
|
}
|
|
}
|
|
|
|
if (hasChildNode) {
|
|
vHtmlCode +="<div id='div" + nodeValues[0] + "'";
|
|
if (!isNodeOpen) vHtmlCode +=" style='display: none;'";
|
|
vHtmlCode +=">";
|
|
addTreeNode(nodeValues[0], recursedNodes);
|
|
vHtmlCode +="</div>";
|
|
}
|
|
recursedNodes.pop();
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!Array.prototype.push) {
|
|
function fnArrayPush() {
|
|
for(var i=0;i<arguments.length;i++)
|
|
this[this.length]=arguments[i];
|
|
return this.length;
|
|
}
|
|
Array.prototype.push = fnArrayPush;
|
|
}
|
|
if(!Array.prototype.pop) {
|
|
function fnArrayPop(){
|
|
lastElement = this[this.length-1];
|
|
this.length = Math.max(this.length-1,0);
|
|
return lastElement;
|
|
}
|
|
Array.prototype.pop = fnArrayPop;
|
|
}
|
|
|