2018-07-27 14:17:39 +08:00

1047 lines
32 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// OBJ_NODE - 定义结点对象
// ID = 每个结点的绝对标记
// NAME = 菜单上显示的结点名称
// PARENTID = 父结点的标记
// TYPE = 可以是文档,文件夹或者根结点
// URL = 结点对应的连接
// ALTIMAGE = 16x16 GIF文件(不用于文件夹folders)
// POSITION = 结点的位置
// TARGET = 需要在Frame打开时为空表示在当前页面打开。
// _top 表示整页面打开。
var nodes = new Array();
var myCurIndex = 0;
var myTriggerClickEvent = false; //是否需要整个treeview的Click事件 TreeViewOnClick();
var nodePosition = 0;
var myMultiSelect = false; // 是否有选择框
var _Tree_Show_In_View = false;
function obj_node(id,name,value,parentID,type,url,altImage,position,target) {
this.id = amarsoft2Html(id);
this.name = amarsoft2Html(name);
this.value = amarsoft2Html(value);
this.parentID = amarsoft2Html(parentID);
this.type = type.toLowerCase();
this.url = amarsoft2Html(url);
this.altImage = amarsoft2Html(altImage);
this.position = position;
this.target = amarsoft2Html(target);
// 0 未选1 已选2 有子节点选择
// this.checked = 0;不给初始化可以使用setCheckTVItem设置
}
function setCheckTVItem(sID, check){
if(!myMultiSelect || sID == 'root') return;
var flag = check == true;
for(var i = 0; i < nodes.length; i++){
if(nodes[i].id.substr(0,sID.length) == sID){
var span = $("span[multil=true]", $('#'+nodes[i].id+', #'+nodes[i].id+'minu, #'+nodes[i].id+'plus', left.document));
span.removeClass().addClass(flag ? "multiSelected" : "multiSelect");
nodes[i].checked = flag ? 1 : 0;
if(arguments[2] != true){
setCheckTVParent(nodes[i]);
}
}
if(nodes[i].parentID != sID) continue;
setCheckTVItem(nodes[i].id, flag, true);
}
}
function setCheckTVParent(node){
if(!node || !node.parentID || node.parentID == 'root') return;
var parentMultiBox = $("span[multil=true]", $('#'+node.parentID+'minu, #'+node.parentID+'plus', left.document));
var flag1 = false; // 有已选节点
var flag2 = false; // 有半选节点
var flag3 = false; // 有未选节点
for(var i = 0; i < nodes.length; i++){
if(nodes[i].parentID == node.parentID){
if(nodes[i].checked == 1) flag1 = true;
else if(nodes[i].checked == 2) flag2 = true;
else flag3 = true;
if(flag2 || (flag1 && flag3)) break;
}
}
var checked = 0;
if(flag2 || (flag1 && flag3)){ // 半选
if(parentMultiBox.hasClass("notAllChildMultiSelect")) return;
checked = 2;
parentMultiBox.removeClass().addClass("notAllChildMultiSelect");
}else if(flag1){ // 全选
if(parentMultiBox.hasClass("multiSelected")) return;
checked = 1;
parentMultiBox.removeClass().addClass("multiSelected");
}else if(flag3 && !flag2){ // 全不选
if(parentMultiBox.hasClass("multiSelect")) return;
parentMultiBox.removeClass().addClass("multiSelect");
}else return; // 本来就没子节点
var parentNode = null;
for(var i = 0; i < nodes.length; i++){
if(nodes[i].id == node.parentID){
parentNode = nodes[i];
break;
}
}
if(!parentNode) return;
parentNode["checked"] = checked;
setCheckTVParent(parentNode);
}
function getMarkedTVItems(){
var marked = new Array();
if(!myMultiSelect) return marked;
for(var i = 0; i < nodes.length; i++){
if(nodes[i].checked == 1 || nodes[i].checked == 2){
marked.push(nodes[i]);
}
}
return marked;
}
function getCheckedTVItems(){
var checked = new Array();
if(!myMultiSelect) return checked;
for(var i = 0; i < nodes.length; i++){
if(nodes[i].checked == 1){
checked.push(nodes[i]);
}
}
return checked;
}
function getBottomCheckItems(){
var checked = new Array();
if(!myMultiSelect) return checked;
for(var i = 0; i < nodes.length; i++){
if(nodes[i].checked == 1){
if(!hasChild(nodes[i].id)) continue;
checked.push(nodes[i]);
}
}
return checked;
}
function getTopCheckItems(){
var checked = new Array();
if(!myMultiSelect) return checked;
for(var i = 0; i < nodes.length; i++){
if(nodes[i].checked == 1){
if(getItem(nodes[i].parentID).checked == 1) continue;
checked.push(nodes[i]);
}
}
return checked;
}
function clickTVCheckbox(index, obj){
var flag = !$(obj).hasClass("multiSelected");
setCheckTVItem(nodes[index].id, flag);
}
function getCurTVItem() {
return nodes[myCurIndex];
}
//设置指定ID的节点的显示值
function setItemName(sID, sName) {
iIndex = getItemIndex(sID);
nodes[iIndex].name = sName;
if (iIndex != -1) {
if (nodes[iIndex].type == 'folder') {
left.document.getElementById('textplus'+iIndex).innerText = sName;
left.document.getElementById('textminu'+iIndex).innerText = sName;
} else
left.document.getElementById('text' + iIndex).innerText = sName;
}
}
function getItemName(sID) {
iIndex = getItemIndex(sID);
return nodes[iIndex].name;
}
function getItem(sID) {
iIndex = getItemIndex(sID);
return nodes[iIndex];
}
function getItemByIndex(iIndex) {
return nodes[iIndex];
}
function addItem(id,name,value,parentID,type,url,altImage,position,target) {
nodes[nodePosition] = new obj_node(id,name,value,parentID,type,url,altImage,position,target);
nodePosition = nodePosition + 1;
}
function getItemIndex(id) {
var i=0,iIndex=-1;
while (i <= nodePosition - 1 && iIndex == -1) {
if(id==nodes[i].id) iIndex=i;
i++;
}
return iIndex;
}
function expandNode(id) {
iIndex = getItemIndex(id);
if (iIndex!=-1) flex2(iIndex,'plus');
}
function closeNode(id) {
iIndex = getItemIndex(id);
if (iIndex!=-1) flex2(iIndex,'minu');
}
function selectItem(id) {
var index = getItemIndex(id);
if (index!=-1){
expandFoldersToNode(nodes[index].id,10);
if(nodes[index].url.trim().indexOf("javascript")==0 || nodes[index].url.trim().indexOf("Javascript")==0){
var sTempScript = nodes[index].url.trim().substring(11);
if(sTempScript.indexOf("parent.")==0 || sTempScript.indexOf("parent.")==0){
sTempScript = sTempScript.substring(7);
}
eval(html2Real(sTempScript));//eval();
}
click_change(index);
}
}
//check if the node is the current subtree's end element
function ifMax(id) {
var i = 0;
var max = true;
while (i < nodePosition && max == true) {
if(nodes[i].parentID==id) max = false;
i++;
}
//alert(nodes[currentIndex].id+" is max? "+max);
return max;
}
//check if the index1 is in the branch of index2
function isSub(index1, index2) {
var result = false;
var i = index1;
while (i != -1 && nodes[i].parentID != 'root' && result == false) {
if(nodes[i].parentID==nodes[index2].id) result = true;
i = getItemIndex(nodes[i].parentID);
}
return result;
}
function imageAppearance(currentIndex) {
var appearanceStr = new String("");
if (nodes[currentIndex].type == 'root') {
if (nodes[currentIndex].altImage == '')
appearanceStr = 'img-globe';
else
appearanceStr = nodes[currentIndex].altImage;
}
if (nodes[currentIndex].type == 'folder') {
i=0;
var ifEnd = ifMax(nodes[currentIndex].id);
appearanceStr = addStringToStart('','img-folder');
if (ifEnd == true) {
appearanceStr = addStringToStart(appearanceStr,'gray_arrow|');
appearanceStr = addStringToStart(appearanceStr,'&');
appearanceStr = addStringToStart(appearanceStr,'gray_arrow|img-folder');
} else {
appearanceStr = addStringToStart(appearanceStr,'gray_arrow|');
appearanceStr = addStringToStart(appearanceStr,'&');
appearanceStr = addStringToStart(appearanceStr,'back_arrow|img-folder');
}
}
if (nodes[currentIndex].type == 'page') {
i=0;
var ifEnd = ifMax(nodes[currentIndex].id);
if (nodes[currentIndex].altImage == '')
appearanceStr = 'img-page';
else
appearanceStr = nodes[currentIndex].altImage;
if (ifEnd == true)
appearanceStr = addStringToStart(appearanceStr,'1x1|');
else
appearanceStr = addStringToStart(appearanceStr,'1x1|');
}
return appearanceStr;
}
function drawMenu() {
if(left.document == null) {
left.document = left.contentDocument ? left.contentDocument : left.ownerDocument;
}
drawMenu2(left.document);
$(function(){
if(typeof window.keydownAction != "function") return;
$(left.document).keydown(keydownAction);
});
}
function click_change(index) {
if(typeof window.BeforeTreeViewOnClick == "function" && BeforeTreeViewOnClick() !=true) return;
if (myCurIndex > 0) {
try{
eval("left.document.all().className=''");
} catch (e) {
}
}
if (nodes[myCurIndex].type == 'folder') {
left.document.getElementById('span'+myCurIndex+'plus').className='';
left.document.getElementById('span'+myCurIndex+'minu').className='';
}else left.document.getElementById('span'+myCurIndex).className='';
if (nodes[index].type == 'folder') {
left.document.getElementById('span'+index+'plus').className='node_hoverCls';
left.document.getElementById('span'+index+'minu').className='node_hoverCls';
}else left.document.getElementById('span'+index).className='node_hoverCls';
myCurIndex = index;
//如果指定了Click后续事件则调用当前
if (myTriggerClickEvent==true) TreeViewOnClick();
//parent.parent.location=url;
}
// add by hwang 20090601 树图双击响应函数
function doubleclick() {
if (myTriggerClickEvent==true && typeof TreeViewOnDBLClick == 'function') TreeViewOnDBLClick();
}
function addStringToStart(existingString, addition) {
newString = addition + existingString;
return newString;
}
function stringUpToBar(sString) {
var lengthOfString = sString.length;
var mycurrentIndex = 0;
var newString = '';
var finished = false;
while (finished == false) {
if (mycurrentIndex == lengthOfString)
finished = true;
else {
if (sString.charAt(mycurrentIndex) == '|')
finished = true;
else
newString = newString + sString.charAt(mycurrentIndex);
mycurrentIndex = mycurrentIndex + 1;
}
if (mycurrentIndex == lengthOfString) {finished = true;}
}
return newString;
}
function twoArrays(x1, x2, y1, y2) {
//var node = tryArray(x1,x2);
//var sortnode = tryArray(y1,y2);
for (var i = 0; i < x1; i++) {
for (var j = 0; j < x2; j++) {
nodes[i][j] = "node"+i+j;
//alert(nodes[i][j]);
}
}
for (var i = 0; i < y1; i++) {
for (var j = 0; j < y2; j++) {
sortnodes[i][j] = nodes[i];
//alert(sortnodes[i][j]);
}
}
}
//判断是否叶结点
function hasChild(nodeid){
for(var i=0;i<nodes.length;i++){
if(nodes[i].parentID==nodeid) return false;
}
return true;
}
//根据名称找到节点
function getNodeIDByName(sName){
for(var i=0;i<nodes.length;i++){
if(nodes[i].name == sName) return nodes[i].id;
}
for(var i=0;i<nodes.length;i++){
if(nodes[i].name.indexOf(sName)>=0) return nodes[i].id;
}
return null;
}
function selectItemByName(sName) {
id=getNodeIDByName(sName);
selectItem(id);
}
function expandFoldersToNode(id, iGenerations) {
var iCurGenerations = iGenerations-1;
if(iCurGenerations<0) return;
var iIndex = getItemIndex(id);
//先展开父层级
if (typeof(nodes[iIndex].parentID)!="undefined" && nodes[iIndex].parentID!=null && nodes[iIndex].parentID!="")
{
expandFoldersToNode(nodes[iIndex].parentID,iCurGenerations);
}
//再展开自己
//alert(id+":"+nodes[iIndex].type);
if(nodes[iIndex].type=="folder"){
try{
//closeNode(id);
expandNode(id);
}catch(e){
//alert(e.message+" ..... "+id);
}
}else{
return;
}
}
function expandAll(){
for(var i = 0; i < nodes.length; i++){
if(nodes[i].type=="root" || nodes[i].type=="folder"){
expandNode(nodes[i].id);
}
}
}
function setTDStyle(obj, myIndex) {
if (nodes[myIndex].type == "root") {
obj.className = "rootTDCls";
} else if (nodes[myIndex].type == "folder") {
obj.className = "folderTDCls";
} else if (nodes[myIndex].type == "page") {
obj.className = "pageTDCls";
}
}
function showTVSearch(){
var obj = $("#search", left.document);
if(obj.is(":visible")){
obj.hide();
return;
}
$("tr:first", obj).unbind().mousedown(function(e){
var offset = $(this).offset();
$(left.document).mousemove(move).mouseup(up);
function move(e1){
obj.css({
"left" : e1.clientX - e.clientX + offset.left,
"top" : e1.clientY - e.clientY + offset.top
});
}
function up(){
$(left.document).unbind("mousemove", move).unbind("mouseup", up);
}
});
$("input:text", obj.show()).focus();
}
function _searchTVItem(e){
e = e || left.event;
if(e.keyCode != 13) return;
searchTVItem($("input:button[value='确定']", $("#search", left.document)));
}
function searchTVItem(obj){
var search = $("input:text", $("#search", left.document));
searchText = search.val();
if(!searchText) return;
var searchNodes = new Array();
for(var i = 0; i < nodes.length; i++){
if(nodes[i].id == "root") continue;
if(nodes[i].name.indexOf(searchText) > -1){
searchNodes.push(nodes[i]);
}
}
var prev = $(obj).next().unbind("click");
var num = prev.next().text(1);
var allnum = num.next().text("/ "+searchNodes.length);
var next = allnum.next().unbind("click");
prev.attr("disabled", true);
if(searchNodes.length < 2) next.attr("disabled", true);
else next.attr("disabled", false);
if(searchNodes.length < 1){
num.text(0);
return;
}
try{selectItem(searchNodes[0].id);}catch(e){}
prev.add(next).each(function(){
$.event.remove(this);
$.removeData(this);
});
var currnum = 1;
next.bind("click", function(){
if(currnum >= searchNodes.length) return;
try{selectItem(searchNodes[currnum++].id);}catch(e){}
num.text(currnum);
if(currnum >= searchNodes.length) $(this).attr("disabled", true);
prev.attr("disabled", false);
});
prev.bind("click", function(){
if(currnum <= 1) return;
try{selectItem(searchNodes[--currnum - 1].id);}catch(e){}
num.text(currnum);
if(currnum <= 1) $(this).attr("disabled", true);
next.attr("disabled", false);
});
}
function setQuick(){
var args = arguments;
var keys = {};
$(left.document).keydown(function(e){
keys[e.keyCode] = true;
var flag = true;
for(var i = 0; i < args.length - 1; i++){
if(!keys[args[i]]){
flag = false;
break;
}
}
if(flag && typeof args[args.length - 1] == "function"){
keys = {};
(args[args.length - 1])();
}
}).keyup(function(e){
delete keys[e.keyCode];
});
}
function drawMenu2(myDocument) {
//判断是否有重复的id
var sTemp = new Array(), sTemp2 = new Array();
var j=0;
for(var i=0;i<nodes.length;i++) sTemp[j++]=nodes[i].id;
sTemp2 = sTemp.sort();
for (var i = 0; i < nodes.length - 1; i++) {
if (sTemp2[i] == sTemp2[i + 1]) {
alert("ID("+sTemp2[i]+")重复!");
}
}
//var lengthOfArray = nodePosition;
var currentIndex = 0;
//add by xdhou in 2008/04/10 for kick visit root
if(backgroundDirectory=="") backgroundDirectory = sWebRootPath + "/Frame/page/resources/images/treeview";
if(backgroundImage=="") backgroundImage = "1x1.gif";
myDocument.writeln("<script type='text/javascript'>");
myDocument.writeln("window.history.forward(1);");
myDocument.writeln("</script>");
// myDocument.clear();
myDocument.close();
myDocument.writeln("<html>");
myDocument.writeln("<head>");
myDocument.writeln("<style type='text/css'> .pt9song{font-size: 9pt;cursor:pointer} </style>");
myDocument.writeln("<meta http-equiv=Content-Type content='text/html; charset=gb2312'>");
myDocument.writeln("<link rel='stylesheet' href='"+sWebRootPath+"/Frame/page/resources/css/Style.css'>");
myDocument.writeln("<link rel='stylesheet' href='"+sWebRootPath+"/Frame/page/resources/css/treeview.css'>");
myDocument.writeln("<link rel='stylesheet' href='"+sWebRootPath+sSkinPath+"/css/Style.css'>");
myDocument.writeln("</head>");
myDocument.writeln("<body style='overflow: hidden;' oncontextmenu='javascript:return false;' leftmargin='0' rightmargin='0' topmargin='0' background='" + backgroundDirectory + "/" + backgroundImage + "' bgcolor='" + backgroundColor + "' link='" + linkColor + "' vlink='" + linkColor + "'>");
myDocument.writeln("<div class='groupboxmaxcontent"+(_Tree_Show_In_View?" tree_show_in_view":"")+"' style='position:absolute;overflow-y:auto;overflow-x:"+(_Tree_Show_In_View?"hidden":"auto")+";'> ");
myDocument.writeln("<table id=tabTreeview border='0' cellspacing='0' cellpadding='0' width='100%'>");
myDocument.writeln("</table></div>");
myDocument.writeln("<div id='search' style='display: none; position: absolute; left: 10; top: 30; border: 2px solid #959cff; background-color: #eee;'>");
myDocument.writeln("<table cellspacing='0' cellpadding='0'>");
myDocument.writeln("<tr><td style='padding:2px; background-color:#959cff; font-weight: bold; cursor:default;' align='center' title='拖拽'>查询</td></tr>");
myDocument.writeln("<tr><td style='padding:5px;'>");
myDocument.writeln("<input style='width: 100%;' onkeydown=parent._searchTVItem(event) />");
myDocument.writeln("</td></tr>");
myDocument.writeln("<tr><td nowrap align='center' style='padding:5px;'>");
myDocument.writeln("<input type='button' value='确定' onclick=parent.searchTVItem(this) />");
myDocument.writeln("<input type='button' value='上一个' disabled />");
myDocument.writeln("<span>0</span>");
myDocument.writeln("<span>/ 0</span>");
myDocument.writeln("<input type='button' value='下一个' disabled />");
myDocument.writeln("<input type='button' value='取消' onclick=javascript:document.getElementById('search').style.display='none'; />");
myDocument.writeln("</td></tr>");
myDocument.writeln("</table>");
myDocument.writeln("</div>");
myDocument.writeln("</body>");
myDocument.close();
//first draw root
drawNode2(myDocument,currentIndex,currentIndex,-1);
//then draw level 1
drawSubTree2(myDocument,currentIndex);
//alert(myDocument.body.innerHTML);
}
function drawSubTree2(myDocument, currentIndex) {
var myID = "";
if(currentIndex==0)
myID = "root";
else
myID = nodes[currentIndex].id+"plus";
var curTRObj = myDocument.getElementById(myID);
var curPos = curTRObj.rowIndex+1;
//逐个生成子树
for (var ik = 1; ik < nodes.length; ik++) {
if(nodes[ik].parentID==nodes[currentIndex].id)
curPos = drawNode2(myDocument,ik,ik,curPos);
}
}
function drawNode2(myDocument, currentIndex, spanID, myPos) {
var imageSequence = imageAppearance(currentIndex);
var nodeID = nodes[currentIndex].id;
var multiSelectClass = nodes[currentIndex].checked == 1 ? "multiSelected" : nodes[currentIndex].checked == 2 ? "notAllChildMultiSelect" : "multiSelect";
var check = nodes[currentIndex].id != 'root' && myMultiSelect;
var ifShow = 'none';
//if(nodes[currentIndex].id == 'root') ifShow = '';
if (nodes[currentIndex].type == 'folder') {
var arrayImage = imageSequence.split('&');
var sss=new Array(),jjj=0;
var newTRObj = myDocument.getElementById("tabTreeview").insertRow(myPos);
newTRObj.id = nodeID+"minu";
newTRObj.style.display = "none";
var newTDObj = newTRObj.insertCell(0);
setTDStyle(newTDObj,currentIndex);
sss[jjj++]=("\t<table id='table"+spanID+"' width=100% border='0' cellspacing='0' cellpadding='0' >");
sss[jjj++]=("\t<tr id='span"+spanID+"plus' >");
sss[jjj++]=("\t<td nowrap ondblclick=parent.flex2("+currentIndex+",'minu') >" );
sss[jjj++]=writeImageSequence2(currentIndex,arrayImage[0]);
//sss[jjj++]=("\t&nbsp;");
if (nodes[currentIndex].type == 'root')
nodeName = nodes[currentIndex].name;
else
nodeName = nodes[currentIndex].name;
if (nodes[currentIndex].target == '')
var nodeTarget = 'PageFrame';
else
nodeTarget = nodes[currentIndex].target;
nodeTarget = Layout.getRegionName(nodeTarget);
if(check) sss[jjj++]="<span multil=true class='"+multiSelectClass+"' onclick='javascript:parent.clickTVCheckbox("+currentIndex+", this);'>&nbsp;</span>";
if (nodes[currentIndex].url == '')
sss[jjj++]=("\t<a id=textplus"+currentIndex+" class='pt9song' ondblclick=parent.doubleclick() onclick=parent.click_change("+currentIndex+") title='"+nodeName+"' >" + nodeName + "</a></td></tr></table>");
else
sss[jjj++]=("\t<a id=textplus"+currentIndex+" class='pt9song' href='" + nodes[currentIndex].url + "' target='" + nodeTarget + "' ondblclick=parent.doubleclick() onclick=parent.click_change("+currentIndex+") title='"+nodeName+"' >" + nodeName + "</a></td></tr></table>");
newTDObj.innerHTML = sss.join('');
var ss2=new Array(),jj2=0;
var newTR2Obj = myDocument.getElementById("tabTreeview").insertRow(myPos+1);
newTR2Obj.style.display = ifShow;
newTR2Obj.id = nodeID+"plus";
var newTD2Obj = newTR2Obj.insertCell(0);
setTDStyle(newTD2Obj,currentIndex);
ss2[jj2++]=("\t<table id='table"+spanID+"' width=100% border='0' cellspacing='0' cellpadding='0' >");
ss2[jj2++]=("\t<tr id='span"+spanID+"minu' >");
ss2[jj2++]=("\t<td nowrap ondblclick=parent.flex2("+currentIndex+",'plus') >" );
ss2[jj2++]=writeImageSequence2(currentIndex,arrayImage[1]);
//ss2[jj2++]=("\t&nbsp;");
if (nodes[currentIndex].type == 'root')
nodeName = nodes[currentIndex].name;
else
nodeName = nodes[currentIndex].name;
if (nodes[currentIndex].target == '')
var nodeTarget = 'PageFrame';
else
nodeTarget = nodes[currentIndex].target;
nodeTarget = Layout.getRegionName(nodeTarget);
if(check) ss2[jj2++]="<span multil=true class='"+multiSelectClass+"' onclick='javascript:parent.clickTVCheckbox("+currentIndex+", this);'>&nbsp;</span>";
if (nodes[currentIndex].url == '')
ss2[jj2++]=("\t<a id=textminu"+currentIndex+" class='pt9song' ondblclick=parent.doubleclick() onclick=parent.click_change("+currentIndex+") title='"+nodeName+"' >" + nodeName + "</a></td></tr></table>");
else
ss2[jj2++]=("\t<a id=textminu"+currentIndex+" class='pt9song' href='" + nodes[currentIndex].url + "' target='" + nodeTarget + "' ondblclick=parent.doubleclick() onclick=parent.click_change("+currentIndex+") title='"+nodeName+"' >" + nodeName + "</a></td></tr></table>");
newTD2Obj.innerHTML = ss2.join('');
return myPos+2;
} else {
var sss=new Array(),jjj=0;
var newTRObj = myDocument.getElementById("tabTreeview").insertRow(myPos);
newTRObj.style.display = ifShow;
newTRObj.id = nodeID;
var newTDObj = newTRObj.insertCell(0);
setTDStyle(newTDObj,currentIndex);
sss[jjj++]=("\t<table id='table"+spanID+"' width=100% border='0' cellspacing='0' cellpadding='0' >");
sss[jjj++]=("\t<tr id='span"+spanID+"' >");
sss[jjj++]=("\t<td nowrap ondblclick=''>" );
sss[jjj++]=writeImageSequence2(currentIndex,imageSequence);
//sss[jjj++]=("\t&nbsp;");
if (nodes[currentIndex].type == 'root')
nodeName = nodes[currentIndex].name;
else
nodeName = nodes[currentIndex].name;
if (nodes[currentIndex].target == '')
var nodeTarget = 'PageFrame';
else
nodeTarget = nodes[currentIndex].target;
nodeTarget = Layout.getRegionName(nodeTarget);
if(check) sss[jjj++]="<span multil=true class='"+multiSelectClass+"' onclick='javascript:parent.clickTVCheckbox("+currentIndex+", this);'>&nbsp;</span>";
if (nodes[currentIndex].url == '') {
sss[jjj++]=("\t<a id=text"+currentIndex+" class='pt9song' ondblclick=parent.doubleclick() onclick=parent.click_change("+currentIndex+") title='"+nodeName+"' >" + nodeName + "</a></td></tr></table>");
} else
sss[jjj++]=("\t<a id=text"+currentIndex+" class='pt9song' href='" + nodes[currentIndex].url + "' target='" + nodeTarget + "' ondblclick=parent.doubleclick() onclick=parent.click_change("+currentIndex+") title='"+nodeName+"' >" + nodeName + "</a></td></tr></table>");
newTDObj.innerHTML = sss.join('');
return myPos+1;
}
}
function writeImageSequence2(currentIndex, sequence) {
var s2=new Array(),j2=0;
iIndex = currentIndex;
while (nodes[iIndex].parentID != 'root' && nodes[iIndex].parentID != '') {
s2[j2++]=("\t<img src='" + sWebRootPath + "/Frame/page/resources/images/treeview/19x19.gif' align=texttop>");
iIndex = getItemIndex(nodes[iIndex].parentID);
}
var finished = false;
var imageSeq = sequence;
while (finished == false) {
if (imageSeq == '')
finished = true;
else {
imageString = stringUpToBar(imageSeq);
if (imageString.length == imageSeq.length)
imageSeq = '';
else
imageSeq = imageSeq.substring(imageString.length + 1,imageSeq.length);
if ((imageString == 'gray_arrow')) {
s2[j2++]=("\t<a style='display:inline-block;' class='pt9song node_icon " + imageString + "' onclick=parent.flex2("+currentIndex+",'plus')>&nbsp;</a>");
} else {
if ((imageString == 'back_arrow')) {
s2[j2++]=("\t<a style='display:inline-block;' class='pt9song node_icon " + imageString + "' onclick=parent.flex2("+currentIndex+",'minu')>&nbsp;</a>");
} else {
if (imageString == 'img-globe') {
s2[j2++]=("\t<span class='pt9song node_icon " + imageString + "' style='display:inline-block;'>&nbsp;</span>");
}else if (imageString == '1x1') {
s2[j2++]=("\t<span class='pt9song node_icon' style='display:inline-block;'>&nbsp;</span>");
} else {
s2[j2++]=("\t<span class='pt9song node_icon " + imageString + "' style='display:inline-block;'>&nbsp;</span>");
}
}
}
}
}
return s2.join('');
}
function flex2(currentIndex, checkStr) {
var i;
var currentID = nodes[currentIndex].id;
var checkStrBrother;
if(checkStr=='plus') checkStrBrother = 'minu';
else checkStrBrother = 'plus';
if (currentID != 'root') {
left.document.getElementById(currentID + checkStr).style.display = "none";
left.document.getElementById(currentID + checkStrBrother).style.display = "";
}
for (i = 1; i < nodes.length; i++) {
if (checkStr == 'plus') {
//show his son
if (nodes[i].parentID == currentID) {
if( (nodes[i].type == 'folder' && left.document.getElementById(nodes[i].id+'plus')==null ) ||
(nodes[i].type != 'folder' && left.document.getElementById(nodes[i].id)==null ) )
drawSubTree2(left.document,currentIndex);
if (nodes[i].type == 'folder') {
if(left.document.getElementById(nodes[i].id+'minu').style.display!="") //add this for not show two in 2006/06/16,2008/04/10
left.document.getElementById(nodes[i].id+'plus').style.display="";
} else
left.document.getElementById(nodes[i].id).style.display="";
}
// if level is first , show all his sub child
/*
if (nodes[currentIndex].parentID=='root' && isSub(i,currentIndex)){
if (nodes[i].type == 'folder'){
left.document.getElementById(nodes[i].id+'minu').style.display="";
left.document.getElementById(nodes[i].id+'plus').style.display="none";
}
else left.document.getElementById(nodes[i].id).style.display="";
}
*/
} else {
//hide all his sub child
if (isSub(i, currentIndex)) {
if (nodes[i].type == 'folder') {
try {
left.document.getElementById(nodes[i].id+'plus').style.display="none";
}catch(e) {}
try {
left.document.getElementById(nodes[i].id+'minu').style.display="none";
}catch(e) {}
}else
try {
left.document.getElementById(nodes[i].id).style.display="none";
}catch(e) {}
}
}
}
if (currentID!='root') scroll(0,left.document.getElementById(currentID+checkStr).offsetTop-100);
}
function checkAll(){
for(var i=0;i<nodes.length;i++){
if(!hasChild(nodes[i].id))
continue;
setCheckTVItem(nodes[i].id,true);
}
}
function reverseCheck(){
for(var i=0;i<nodes.length;i++){
if(!hasChild(nodes[i].id))
continue;
if(nodes[i].checked==1)
setCheckTVItem(nodes[i].id,false);
else if(nodes[i].checked==0)
setCheckTVItem(nodes[i].id,true);
}
}
//var checkAll, reverseCheck, setCheckTVItem, getMarkedTVItems, getCheckedTVItems, getBottomCheckItems, getTopCheckItems, getCurTVItem, setItemName, getItemName, getItem, expandNode, closeNode, selectItem, hasChild, getNodeIDByName, selectItemByName, expandAll, showTVSearch, click_change;
//————每个页面只使用一次————————将HTMLTreeView转变为ObjectTree的HtmlTree展现————
function oHTMLTreeView(model){
if(_Tree_Show_In_View) $("#FirstFrame").addClass("tree_show_in_view").css("background-attachment", "scroll");
var curNode = null;
left.document.write("<div id='htmltree'></div>");
left.document.close();
oHTMLTreeView = new HtmlTree(left.document.getElementById("htmltree"), model);
oHTMLTreeView.initDefQuickKeys();
$(left.document).keydown(function(e){
if(typeof window.keydownAction == "function"){
keydownAction(e);
}
});
$(left.document.body).contextmenu(function(){return false;});
oHTMLTreeView.nearCss("<style>"
+"body{background:none;margin:0 auto;padding:0;overflow:hidden;height:100%;width:100%;}"
+".htmltree{overflow:hidden;overflow-y:auto;height:100%;width:"+(_Tree_Show_In_View?"200%":"100%")+";}"
+(_Tree_Show_In_View?".htmltree li .click{font-weight:bold;background:#fff}":"")
+"</style>");
oHTMLTreeView.NodeOnClick = function(node){
if(typeof window.BeforeTreeViewOnClick == "function" && BeforeTreeViewOnClick() !=true) return false;
var oldCurNode = curNode;
curNode = getNodes([node])[0];
if(curNode.url){
try{
var index = curNode.url.indexOf("parent.");
if(index >= 0) eval(curNode.url.substring(index+7));
else eval(curNode.url);
}catch(e){
// alert(e);
}
}
//if(node.getIcon() == "folder") return false;
if(typeof TreeViewOnClick == "function" && TreeViewOnClick() == false){
curNode = oldCurNode;
return false;
}
};
oHTMLTreeView.NodeOnDblclick = function(node){
node.toggle();
if(typeof TreeViewOnDBLClick == "function"){
TreeViewOnDBLClick();
}
};
function getNodes(nodes){
var aNodes = new Array();
for(var i = 0; i < nodes.length; i++){
aNodes.push({
id : nodes[i].getAttribute("Id"),
name : nodes[i].getAttribute("Name"),
value : nodes[i].getAttribute("Value"),
parentID : nodes[i].getAttribute("ParentId"),
type : nodes[i].getIcon(),
url : nodes[i].getAttribute("Script"),
altImage : nodes[i].getAttribute("Picture"),
position : nodes[i].getAttribute("Position"),
target : nodes[i].getAttribute("Target")
});
}
return aNodes;
}
checkAll = function(check){
if(check == false) oHTMLTreeView.uncheck();
else oHTMLTreeView.check();
};
reverseCheck = function(){
var nodes = oHTMLTreeView.getNodes();
for(var i = nodes.length - 1; i >= 0; i--){
if(nodes[i].getChildren().length > 0) continue;
if(nodes[i].isChecked()) nodes[i].uncheck();
else nodes[i].check();
}
};
setCheckTVItem = function(sID, check){
var node = oHTMLTreeView.getRoot().getNode("Id", sID);
if(!node) return;
if(check) node.check();
else node.uncheck();
};
getMarkedTVItems = function(){
return getNodes(oHTMLTreeView.getRoot().getChecked(true));
};
getCheckedTVItems = function(){
return getNodes(oHTMLTreeView.getRoot().getChecked());
};
getBottomCheckItems = function(){
var nodes = oHTMLTreeView.getRoot().getChecked();
var aNodes = new Array();
for(var i = 0; i < nodes.length; i++){
if(nodes[i].getChildren().length > 0) continue;
aNodes.push(nodes[i]);
}
return getNodes(aNodes);
};
getTopCheckItems = function(){
return getNodes(oHTMLTreeView.getRoot().getTopChecked());
};
getCurTVItem = function(){
return curNode;
};
setItemName = function(sID, sName){
var node = oHTMLTreeView.getRoot().getNode("Id", sID);
if(!node) return;
node.setText(sName);
};
getItemName = function(sID){
if(!oHTMLTreeView) sID;
var node = oHTMLTreeView.getRoot().getNode("Id", sID);
if(!node) return sID;
return node.getText();;
};
getItem = function(sID){
if(!oHTMLTreeView) return;
var node = oHTMLTreeView.getRoot().getNode("Id", sID);
if(!node) return;
return getNodes([node])[0];
};
expandNode = function(id){
var node = oHTMLTreeView.getRoot().getNode("Id", id);
if(!node) return;
node.expand();
};
closeNode = function(id){
var node = oHTMLTreeView.getRoot().getNode("Id", id);
if(!node) return;
node.collapse();
};
selectItem = function(id){
var node = oHTMLTreeView.getRoot().getNode("Id", id);
if(!node) return;
node.click();
node.expand();
};
// 判断是否叶节点
hasChild = function(id){
var node = oHTMLTreeView.getRoot().getNode("Id", id);
if(!node) return true;
return node.getChildren().length <= 0;
};
getNodeIDByName = function(sName){
var node = oHTMLTreeView.getRoot().getNode("Name", sName);
if(!node) return false;
return node.getAttribute("Id");
};
selectItemByName = function(sName){
var node = oHTMLTreeView.getRoot().getNode("Name", sName);
if(!node) return;
node.click();
node.expand();
};
expandAll = function(){
oHTMLTreeView.getRoot().expand(true);
};
showTVSearch = oHTMLTreeView.showSearch;
click_change = function(index, onlyLeaf){
var node = oHTMLTreeView.getIndexNode(index, onlyLeaf);
if(!node) return;
node.click();
node.expand();
};
return oHTMLTreeView;
}