/*
ESOE class com.viviasoft.widget.TreeView3

a common html treeview, items in any size, version 3.0

by forxm@21cn.com, http://www.viviasoft.com
all rights reserved, 2006.6-2007.10

v3.0
*/
_package("com.viviasoft.widget");$esoe.ns.com.viviasoft.widget.TreeView3=function(objTree,nsVar,bLineAtRoot){if(!this.$esoe){this._set(this,objTree,nsVar,bLineAtRoot);return;};return $esoe.ns.com.viviasoft.widget.TreeView3._declare();};$esoe.ns.com.viviasoft.widget.TreeView3._declare=function(){if(!_normalize("com.viviasoft.widget.TreeView3"))return false;with($esoe.ns.com.viviasoft.widget.TreeView3){prototype.objTree=null;prototype.nsVar="";prototype.bLinesAtRoot=0;prototype.objSelected=null;prototype._set=function(_this,objTree,nsVar,bLineAtRoot){_this.objTree=objTree;_this.nsVar=nsVar;_this.bLinesAtRoot=bLineAtRoot?1:0;};prototype._share=function(_global,_this){_this=_this?_this:this;_loadcss(_global,"com.viviasoft.widget.TreeView3");};prototype._destroy=function(_this){_this=_this?_this:this;_this.objTree=null;_this.objSelected=null;};prototype.GetDocument=function(){return this.objTree.ownerDocument;};prototype.IsInnerHTMLEmpty=function(obj){return(obj.innerHTML.indexOf('<')<0)?true:false;};prototype.IsHasChild=function(obj){if(obj.childNodes.length==0)return false;if(this.IsInnerHTMLEmpty(obj))return false;return true;};prototype.IsNodeHasChild=function(objNode){if(!objNode.childNodes||objNode.childNodes.length<2)return false;return this.IsHasChild(objNode.childNodes.item(1));};prototype.AddRootChild=function(idNew,str,img){var obj=this.GetDocument().getElementById(idNew);if(obj)return;if(this.IsInnerHTMLEmpty(this.objTree)){this.objTree.innerHTML="<div></div><div class='"+(this.bLinesAtRoot?"VVS_TV_Children":"VVS_TV_RootChildren_NoLinesAtRoot")+"' style='padding-left:0px;'></div>";};var bFirst=!this.IsNodeHasChild(this.objTree);if(bFirst){this.objTree.childNodes.item(1).innerHTML=this._NewNodeHtml(idNew,str,img);}else{this._ChangeLastChildState(this.objTree,0);this.objTree.childNodes.item(1).innerHTML+=this._NewNodeHtml(idNew,str,img);};this._ChangeLastChildState(this.objTree,1);if(!this.bLinesAtRoot){obj=this.GetDocument().getElementById(idNew);if(obj){obj.childNodes.item(0).childNodes.item(0).style.visibility="hidden";}}};prototype.AddChild=function(idParent,idNew,str,img){var objParent=this.GetDocument().getElementById(idParent);if(objParent==null)return;if(!this._IsNode(objParent))return;var obj=this.GetDocument().getElementById(idNew);if(obj)return;var bFirst=!this.IsNodeHasChild(objParent);if(bFirst){this._ChangeChildState(objParent,1);objParent.childNodes.item(1).innerHTML=this._NewNodeHtml(idNew,str,img);}else{this._ChangeLastChildState(objParent,0);objParent.childNodes.item(1).innerHTML+=this._NewNodeHtml(idNew,str,img);};this._ChangeLastChildState(objParent,1);};prototype.InsertSibling=function(idRefer,bAfter,idNew,str,img){var objRefer=this.GetDocument().getElementById(idRefer);if(objRefer==null)return;var obj=this.GetDocument().getElementById(idNew);if(obj)return;this._InsertSibling(objRefer,bAfter,idNew,str,img);};prototype._InsertSibling=function(objRefer,bAfter,idNew,str,img){if(objRefer.insertAdjacentHTML){objRefer.insertAdjacentHTML(bAfter?"AfterEnd":"BeforeBegin",this._NewNodeHtml(idNew,str,img));}else{var objNew=this.GetDocument().createElement("DIV");objNew.id=idNew;objNew.className="VVS_TV_Node";if(bAfter){var idNext=this.GetNextSiblingId(objRefer.id);if(idNext){var objRefer2=this.GetDocument().getElementById(idNext);objRefer2.parentNode.insertBefore(objNew,objRefer2);}else{objRefer.parentNode.appendChild(objNew);}}else{objRefer.parentNode.insertBefore(objNew,objRefer);};objNew=null;objNew=this.GetDocument().getElementById(idNew);if(objNew){var s=this._NewNodeHtml(idNew,str,img);objNew.innerHTML=s.replace(/^[^\>]+\>/,"").replace(/\<\/div\>$/i,"");}};if(bAfter){objRefer.className="VVS_TV_Node_NextLine";};if(!bAfter||this.GetNextSiblingId(idNew)){var obj=this.GetDocument().getElementById(idNew);if(obj)obj.className="VVS_TV_Node_NextLine";}};prototype._NewNodeHtml=function(idNew,str,img){return	"<div id='"+idNew+"' class='VVS_TV_Node'><div>"+"<div class='VVS_TV_Icon_Last'></div>"+"<img class='VVS_TV_NodeIcon' src='"+img+"' "+"ondblclick=\""+this.nsVar+"._ToggleExpand('"+idNew+"')\" "+"onclick=\""+this.nsVar+".SelectItem('"+idNew+"',1)\""+">"+"<div class='VVS_TV_Label' onclick=\""+this.nsVar+".SelectItem('"+idNew+"',1)\" "+">"+str+"</div>"+"</div></div>";};prototype.Expand=function(idNode,bExpand){var obj=this.GetDocument().getElementById(idNode);if(!this.IsNodeHasChild(obj))return;if(!bExpand&&this.objSelected){if(this.IsAncestor(this.objSelected.id,obj.id)){this.SelectItem(this.objSelected.id,0);}};if(obj.childNodes.length>1){obj.childNodes.item(1).style.display=bExpand?"block":"none";this._ChangeChildState(obj,1);};this.OnExpandItem(obj,bExpand);};prototype.OnExpandItem=function(objNode,bExpand){};prototype._IsNode=function(obj){return(obj&&obj.className&&obj.className.substring(0,11)=="VVS_TV_Node")?true:false;};prototype.IsAncestor=function(idNode,idAncestor){if(idNode==idAncestor)return false;var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return false;while(1){if(!obj.parentNode)return false;obj=obj.parentNode.parentNode;if(!this._IsNode(obj))return false;if(obj.id==idAncestor)return true;}};prototype._IsNodeExpand=function(objNode){if(!this.IsNodeHasChild(objNode))return 0;return(objNode.childNodes.item(1).style.display=="none")?0:1;};prototype._ToggleExpand=function(idNode){var obj=this.GetDocument().getElementById(idNode);if(!obj)return;this.Expand(idNode,this._IsNodeExpand(obj)?0:1);};prototype._GetLabelItem=function(objNode){var idx=objNode.childNodes.item(0).childNodes.length-1;return objNode.childNodes.item(0).childNodes.item(idx);};prototype.SelectItem=function(idNode,bSelect){if(bSelect&&this.objSelected){if(idNode.id==this.objSelected.id)return;this.SelectItem(this.objSelected.id,0);this.objSelected=null;};var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return;this._GetLabelItem(obj).style.border=bSelect?"1px solid LIGHTGREY":"1px solid white";if(bSelect){this.objSelected=obj;this.OnSelectChanged();}};prototype.OnSelectChanged=function(){};prototype._ChangeChildState=function(objNode,bHasChild){if(!this._IsNode(objNode))return;var objThis=objNode.childNodes.item(0);if(bHasChild){if(objNode.childNodes.length==1){objNode.innerHTML+="<div class='VVS_TV_Children' style='display:none'></div>";objThis=objNode.childNodes.item(0);};var bCollapse=(objNode.childNodes.item(1).style.display=="none")?true:false;objThis.className=bCollapse?"VVS_TV_Me":"VVS_TV_This";if(!this.IsHasChild(objThis.childNodes.item(0))){objThis.childNodes.item(0).innerHTML="<div class='VVS_TV_Button' onclick=\""+this.nsVar+"._ToggleExpand('"+objNode.id+"')\"></div>";}else{with(objThis.childNodes.item(0).childNodes.item(0)){style.display="block";className=bCollapse?"VVS_TV_Button":"VVS_TV_Button_Minus";}}}else{if(objNode.childNodes.length==2){objNode.childNodes.item(1).innerHTML="";objNode.childNodes.item(1).style.display="none";};objThis.className="";objThis.childNodes.item(0).innerHTML="";}};prototype._ChangeLastChildState=function(objParent,bLast){if(objParent==this.objTree&&!this.bLinesAtRoot)return;if(objParent.childNodes.length<2)return;var idx=objParent.childNodes.item(1).childNodes.length-1;if(idx<0)return;var obj=objParent.childNodes.item(1).childNodes.item(idx);obj.className=bLast?"VVS_TV_Node":"VVS_TV_Node_NextLine";obj.childNodes.item(0).childNodes.item(0).className=bLast?"VVS_TV_Icon_Last":"VVS_TV_Icon";obj=null;};prototype.DeleteItem=function(idNode,bAllChild){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return 0;if(!bAllChild&&this.IsNodeHasChild(obj))return 0;var objParent=obj.parentNode.parentNode;if(this.objSelected&&obj.id==this.objSelected.id){this.objSelected=null;};if(obj.parentNode&&obj.parentNode.removeChild){obj.parentNode.removeChild(obj);}else if(obj.outerHTML){obj.outerHTML="";}else return 0;if(this._IsNode(objParent)||(objParent&&objParent==this.objTree)){if(this.IsNodeHasChild(objParent)){this._ChangeLastChildState(objParent,1);}else{this._ChangeChildState(objParent,0);}};return 1;};prototype.SetLabel=function(idNode,label){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return;this._GetLabelItem(obj).innerHTML=label;};prototype.GetLabel=function(idNode){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return;return this._GetLabelItem(obj).innerHTML;};prototype.GetParentId=function(idNode){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return "";obj=obj.parentNode.parentNode;if(!this._IsNode(obj))return "";return obj.id;};prototype.GetFirstChildId=function(idNode){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return "";if(obj.childNodes.length<2)return "";obj=obj.childNodes.item(1);if(obj.childNodes.length<1)return "";obj=obj.childNodes.item(0);if(!this._IsNode(obj))return "";return obj.id;};prototype.GetNextSiblingId=function(idNode){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return "";obj=obj.nextSibling;if(!this._IsNode(obj))return "";return obj.id;};prototype.SetLabelColor=function(idNode,color){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return;this._GetLabelItem(obj).style.color=color;};prototype.GetLabelColor=function(idNode){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return;return this._GetLabelItem(obj).style.color;};prototype.AppendLabel=function(idNode,sMsg){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return;this._GetLabelItem(obj).innerHTML+="<br>"+sMsg;};prototype.SetIcon=function(idNode,sIconPath){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return;obj.childNodes.item(0).childNodes.item(1).src=sIconPath;};prototype.SetBkColor=function(idNode,color){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return;this._GetLabelItem(obj).style.backgroundColor=color;};prototype._MoveItem=function(idNode,idTo,bChild){var obj=this.GetDocument().getElementById(idNode);if(!this._IsNode(obj))return;var objTo=this.GetDocument().getElementById(idTo);if(!this._IsNode(objTo))return;var sClassName=obj.className;var sInnerHTML=obj.innerHTML;this.DeleteItem(obj.id,1);if(bChild){this.Expand(objTo.id,1);if(this.GetFirstChildId(objTo.id)){this._ChangeLastChildState(objTo,0);objTo.childNodes.item(1).innerHTML+="<div id='"+idNode+"' class='"+sClassName+"'>"+sInnerHTML+"</div>";this._ChangeLastChildState(objTo,1);this.Expand(objTo.id,1);}else{this._ChangeChildState(objTo,1);objTo.childNodes.item(1).innerHTML+="<div id='"+idNode+"' class='"+sClassName+"'>"+sInnerHTML+"</div>";this._ChangeLastChildState(objTo,1);this.Expand(objTo.id,0);this.Expand(objTo.id,1);}}else{if(objTo.insertAdjacentHTML){objTo.insertAdjacentHTML("BeforeBegin","<div id='"+idNode+"' class='"+sClassName+"'>"+sInnerHTML+"</div>");}else{var objNew=this.GetDocument().createElement("DIV");objNew.id=idNode;objNew.className=sClassName;objTo.parentNode.insertBefore(objNew,objTo);objNew=null;objNew=this.GetDocument().getElementById(idNode);if(objNew){objNew.innerHTML=sInnerHTML;}};obj=this.GetDocument().getElementById(idNode);obj.className="VVS_TV_Node_NextLine";}};prototype.MoveItemAsChild=function(idNode,idParent,bFirst){if(bFirst){var sid=this.GetFirstChildId(idParent);if(sid)this._MoveItem(idNode,sid,0);else this._MoveItem(idNode,idParent,1);}else{this._MoveItem(idNode,idParent,1);}};prototype.MoveItemAsSibling=function(idNode,idSibling,bAfter){if(bAfter){var sid=this.GetNextSiblingId(idSibling);if(sid)this._MoveItem(idNode,sid,0);else{var pid=this.GetParentId(idSibling);this._MoveItem(idNode,pid,1);}}else{this._MoveItem(idNode,idSibling,0);}}};$esoe.ns.com.viviasoft.widget.TreeView3.prototype._share(window);return true;};