日期:2014-05-16 浏览次数:20489 次
function MyTree(cnt) {
this.imgPath = "images/treeimg/";
this.setRoot(new Node(-1, "root", ""));
cnt = document.getElementById(cnt);
//cnt.style.width = 210;
//cnt.style.height = 350;
cnt.style.fontSize = "12px";
//cnt.style.borderStyle = "solid";
//cnt.style.borderColor = "#ccc";
//cnt.style.borderWidth = "1px 1px 1px 1px";
//cnt.style.overflowY = "scroll";
this.container = cnt;
}
MyTree.prototype = {
setRoot:function (root) {
this.root = root;
this.root.icon = this.imgPath + "base.gif";
},
render:function () {
this.root.render();
this.container.appendChild(this.root.box);
var ns = this.root.child;
for (var k = 0; k < ns.length; k++) {
ns[k].render();
this.container.appendChild(ns[k].box);
this.container.appendChild(ns[k].subbox);
}
}
};
function Node(id, text, href) {
this.imgPath = "images/treeimg/";
this.target = "cntFrm";
this.child = [];
this.id = id;
this.text = text;
this.icon = this.imgPath + "file.gif";
this.href = href;
this.leaf = true;
this.last = true;
this.parent = null;
this.level = 0;
this.box = document.createElement("div");
this.subbox = document.createElement("div");
this.state = 1;
}
Node.prototype = {
render : function () {
this.setIndent();
this.setIcon();
//this.setChk();
this.setText();
},
add : function (id, text, icon, href) {
var node = new Node(id, text, icon, href);
this.leaf = false;
this.icon = this.imgPath + "foldericon.gif";
node.parent = this;
if (node.parent.child.length != 0) {
node.parent.child[node.parent.child.length - 1].last = false;
}
node.level = this.level + 1;
this.child.push(node);
return node;
},
getNoLineNum : function () {
var count = 0;
var p = this.parent;
while (p && p.last) {
count++;
p = p.parent;
}
return count;
},
setIcon : function () {
var icon = document.createElement("image");
icon.setAttribute("align", "top");
icon.src = this.icon;
this.box.appendChild(icon);
},
setText : function () {
var span = document.createElement("span");
var text = document.createTextNode(this.text);
if (this.leaf) {
var href = this.href;
span.attachEvent("onclick", function (e) {
var sender = window.event.srcElement;
Ajax(href, null, function(res){
//var div = document.getElementById("mm");
//mm.innerHTML = res.responseText;
});
});
}
span.appendChild(text);
this.box.appendChild(span);
},
setChk : function () {
var chk = document.createElement("input");
chk.setAttribute("type", "checkbox");
chk.style.margin = '0 0 0 0';
this.box.appendChild(chk);
},
getPM : function () {
var pm = "L1.gif";
if (this.leaf) {
pm = this.last ? "L1.gif" : "T1.gif";
} else {
if (this.state == 0) {
if (this.last) {
pm = "Lplus1.gif";
} else {
pm = "Tplus1.gif";
}
} else {
if (this.last) {
pm = "Lminus1.gif";
} else {
pm = "Tminus1.gif";
}
}
}
return pm;
},
setIndent : function () {
var count = this.getNoLineNum();
var indent = document.createElement("span");
for (var i = 1; i <= this.level; i++) {
var blank = document.createElement("span");
blank.style.width = 18;
if (i > 1 && i <= this.level - count) {
blank.style.backgroundImage = "url(" + this.imgPath + "I1.gif)";
}
indent.appendChild(blank);
}
if (this.level > 0) {
var t = document.createElement("image");
t.setAttribute("align", "top");
t.setAttribute("id", "img" + this.id);
t.src = this.imgPath + this.getPM();
var kk = this;
var cs = kk.child;
for (var k = 0; k < cs.length; k++) {
cs[k].render();
kk.subbox.appendChild(cs[k].box);
kk.subbox.appendChild(cs[k].subbox);
}
kk.subbox.style.display = (this.state==0)?"none":"block";
t.attachEvent("onclick", function (e) {
var sender = window.event.srcElement;
if (kk.state == 0) {
kk.state = 1;
sender.src = kk.img