/*Copyright Scand LLC http://www.scbr.com
This version of Software is free for using in non-commercial applications. 
For commercial use or to get Professional Edition please contact info@scbr.com to obtain license*/


function dhtmlXTreeObject(htmlObject, width, height, rootId)
{
    if (_isIE)try
    {
        document.execCommand("BackgroundImageCache", false, true);
    } catch(e)
    {
    }
    ;
    if (typeof(htmlObject) != "object")
        this.parentObject = document.getElementById(htmlObject); else
        this.parentObject = htmlObject;

    this.openItems = "";

    this._itim_dg = true;
    this.dlmtr = ",";
    this.dropLower = false;
    this.enableIEImageFix();
    this.xmlstate = 0;
    this.mytype = "tree";
    this.smcheck = true;
    this.width = width;
    this.height = height;
    this.rootId = rootId;
    this.childCalc = null;
    this.def_img_x = "18px";
    this.def_img_y = "18px";
    this.def_line_img_x = "18px";
    this.def_line_img_y = "18px";
    this._dragged = new Array();
    this._selected = new Array();
    this.style_pointer = "pointer";
    if (navigator.appName == 'Microsoft Internet Explorer')this.style_pointer = "hand";
    this._aimgs = true;
    this.htmlcA = " [";
    this.htmlcB = "]";
    this.lWin = window;
    this.cMenu = 0;
    this.mlitems = 0;
    this.dadmode = 0;
    this.slowParse = false;
    this.autoScroll = true;
    this.hfMode = 0;
    this.nodeCut = new Array();
    this.XMLsource = 0;
    this.XMLloadingWarning = 0;
    this._idpull = {};
    this._pullSize = 0;
    this.treeLinesOn = true;
    this.tscheck = false;
    this.timgen = true;
    this.dpcpy = false;
    this._ld_id = null;
    this.imPath = "treeGfx/";
    this.checkArray = new Array("iconUnCheckAll.gif", "iconCheckAll.gif", "iconCheckGray.gif", "iconUncheckDis.gif", "iconCheckDis.gif", "iconCheckDis.gif");
    this.radioArray = new Array("radio_off.gif", "radio_on.gif", "radio_on.gif", "radio_off.gif", "radio_on.gif", "radio_on.gif");
    this.lineArray = new Array("line2.gif", "line3.gif", "line4.gif", "blank.gif", "blank.gif", "line1.gif");
    this.minusArray = new Array("minus2.gif", "minus3.gif", "minus4.gif", "minus.gif", "minus5.gif");
    this.plusArray = new Array("plus2.gif", "plus3.gif", "plus4.gif", "plus.gif", "plus5.gif");
    this.imageArray = new Array("leaf.gif", "folderOpen.gif", "folderClosed.gif");
    this.cutImg = new Array(0, 0, 0);
    this.cutImage = "but_cut.gif";
    this.dragger = new dhtmlDragAndDropObject();
    this.htmlNode = new dhtmlXTreeItemObject(this.rootId, "", 0, this);
    this.htmlNode.htmlNode.childNodes[0].childNodes[0].style.display = "none";
    this.htmlNode.htmlNode.childNodes[0].childNodes[0].childNodes[0].className = "hiddenRow";
    this.allTree = this._createSelf();
    this.allTree.appendChild(this.htmlNode.htmlNode);
    if (_isFF)this.allTree.childNodes[0].width = "100%";
    this.allTree.onselectstart = new Function("return false;");
    this.XMLLoader = new dtmlXMLLoaderObject(this._parseXMLTree, this, true, this.no_cashe);
    if (_isIE)this.preventIECashing(true);
    var self = this;
    if (window.addEventListener)window.addEventListener("unload", function()
    {
        try
        {
            self.destructor();
        } catch(e)
        {
        }
    }, false);
    if (window.attachEvent)window.attachEvent("onunload", function()
    {
        try
        {
            self.destructor();
        } catch(e)
        {
        }
    });
    this.dhx_Event();
    return this;
}
;
dhtmlXTreeObject.prototype.enableIEImageFix = function(mode)
{
    if (!mode)
    {
        this._getImg = function(id)
        {
            return document.createElement((id == this.rootId)?"div":"img");
        };
        this._setSrc = function(a, b)
        {
            a.src = b;
        };
        this._getSrc = function(a)
        {
            return a.src;
        };
    } else
    {
        this._getImg = function()
        {
            var z = document.createElement("DIV");
            z.innerHTML = "&nbsp;";
            z.style.width = "18px";
            z.style.height = "18px";
            return z;
        };
        this._setSrc = function(a, b)
        {
            a.style.backgroundImage = "url(" + b + ")";
        };
        this._getSrc = function(a)
        {
            var z = a.style.backgroundImage;
            return a.substr(4, a.length - 5);
        };
    }
    ;
};
dhtmlXTreeObject.prototype.destructor = function()
{
    for (var a in this._idpull)
    {
        var z = this._idpull[a];
        if (!z)continue;
        z.parentObject = null;
        z.treeNod = null;
        z.childNodes = null;
        z.span = null;
        z.tr.nodem = null;
        z.tr = null;
        z.htmlNode.objBelong = null;
        z.htmlNode = null;
        this._idpull[a] = null;
    }
    ;
    this.allTree.innerHTML = "";
    this.XMLLoader.destructor();
    for (var a in this)
    {
        this[a] = null;
    }
    ;
};
function cObject()
{
    return this;
}
;
cObject.prototype = new Object;
cObject.prototype.clone = function ()
{
    function _dummy()
    {
    }
    ;
    _dummy.prototype = this;
    return new _dummy();
};
function dhtmlXTreeItemObject(itemId, itemText, parentObject, treeObject, actionHandler, mode)
{
    this.htmlNode = "";
    this.acolor = "";
    this.scolor = "";
    this.tr = 0;
    this.childsCount = 0;
    this.tempDOMM = 0;
    this.tempDOMU = 0;
    this.dragSpan = 0;
    this.dragMove = 0;
    this.span = 0;
    this.closeble = 1;
    this.childNodes = new Array();
    this.userData = new cObject();
    this.checkstate = 0;
    this.treeNod = treeObject;
    this.label = itemText;
    this.parentObject = parentObject;
    this.actionHandler = actionHandler;
    this.images = new Array(treeObject.imageArray[0], treeObject.imageArray[1], treeObject.imageArray[2]);
    this.id = treeObject._globalIdStorageAdd(itemId, this);
    if (this.treeNod.checkBoxOff)this.htmlNode = this.treeNod._createItem(1, this, mode); else this.htmlNode = this.treeNod._createItem(0, this, mode);
    this.htmlNode.objBelong = this;
    return this;
}
;
dhtmlXTreeObject.prototype._globalIdStorageAdd = function(itemId, itemObject)
{
    if (this._globalIdStorageFind(itemId, 1, 1))
    {
        itemId = itemId + "_" + (new Date()).valueOf();
        return this._globalIdStorageAdd(itemId, itemObject);
    }
    ;
    this._idpull[itemId] = itemObject;
    this._pullSize++;
    return itemId;
};
dhtmlXTreeObject.prototype._globalIdStorageSub = function(itemId)
{
    if (this._idpull[itemId])
    {
        this._unselectItem(this._idpull[itemId]);
        this._idpull[itemId] = null;
        this._pullSize--;
    }
    ;
    if ((this._locker) && (this._locker[itemId])) this._locker[itemId] = false;
};
dhtmlXTreeObject.prototype._globalIdStorageFind = function(itemId, skipXMLSearch, skipParsing, isreparse)
{
    var z = this._idpull[itemId]
    if (z)
    {
        return z;
    }
    ;
    return null;
};
dhtmlXTreeObject.prototype._escape = function(str)
{
    switch (this.utfesc)
            {case "none":
        return str;break;case "utf8":
        return encodeURI(str);break;default:
        return escape(str);break;}
    ;
};
dhtmlXTreeObject.prototype._drawNewTr = function(htmlObject, node)
{
    var tr = document.createElement('tr');
    var td1 = document.createElement('td');
    var td2 = document.createElement('td');
    td1.appendChild(document.createTextNode(" "));
    td2.colSpan = 3;
    td2.appendChild(htmlObject);
    tr.appendChild(td1);
    tr.appendChild(td2);
    return tr;
};
dhtmlXTreeObject.prototype.loadXMLString = function(xmlString, afterCall)
{
    var that = this;
    if (!this.parsCount)this.callEvent("onXLS", [that,null]);
    this.xmlstate = 1;
    if (afterCall)this.XMLLoader.waitCall = afterCall;
    this.XMLLoader.loadXMLString(xmlString);
};
dhtmlXTreeObject.prototype.loadXML = function(file, afterCall)
{
    var that = this;
    if (!this.parsCount)this.callEvent("onXLS", [that,this._ld_id]);
    this._ld_id = null;
    this.xmlstate = 1;
    this.XMLLoader = new dtmlXMLLoaderObject(this._parseXMLTree, this, true, this.no_cashe);
    if (afterCall)this.XMLLoader.waitCall = afterCall;
    this.XMLLoader.loadXML(file);
};
dhtmlXTreeObject.prototype._attachChildNode = function(parentObject, itemId, itemText, itemActionHandler, image1, image2, image3, optionStr, childs, beforeNode, afterNode)
{
    if (beforeNode)parentObject = beforeNode.parentObject;
    if (((parentObject.XMLload == 0) && (this.XMLsource)) && (!this.XMLloadingWarning))
    {
        parentObject.XMLload = 1;
        this._loadDynXML(parentObject.id);
    };
    var Count = parentObject.childsCount;
    var Nodes = parentObject.childNodes;
    if (afterNode)
    {
        if (afterNode.tr.previousSibling.previousSibling)
        {
            beforeNode = afterNode.tr.previousSibling.nodem;
        } else
            optionStr = optionStr.replace("TOP", "") + ",TOP";
    }
    ;
    if (beforeNode)
    {
        var ik,jk;
        for (ik = 0; ik < Count; ik++)if (Nodes[ik] == beforeNode)
        {
            for (jk = Count; jk != ik; jk--)Nodes[1 + jk] = Nodes[jk];
            break;
        }
        ;
        ik++;
        Count = ik;
    }
    ;
    if (optionStr)
    {
        var tempStr = optionStr.split(",");
        for (var i = 0; i < tempStr.length; i++)
        {
            switch (tempStr[i])
                    {case "TOP": if (parentObject.childsCount > 0)
            {
                beforeNode = new Object;
                beforeNode.tr = parentObject.childNodes[0].tr.previousSibling;
            };parentObject._has_top = true;for (ik = Count; ik > 0; ik--)Nodes[ik] = Nodes[ik - 1];Count = 0;break;}
            ;
        }
        ;
    }
    ;
    Nodes[Count] = new dhtmlXTreeItemObject(itemId, itemText, parentObject, this, null, 1);
    itemId = Nodes[Count].id;
    if (image1)Nodes[Count].images[0] = image1;
    if (image2)Nodes[Count].images[1] = image2;
    if (image3)Nodes[Count].images[2] = image3;
    parentObject.childsCount++;
    var tr = this._drawNewTr(Nodes[Count].htmlNode);
    if ((this.XMLloadingWarning) || (this._hAdI))
        Nodes[Count].htmlNode.parentNode.parentNode.style.display = "none";
    if ((beforeNode) && (beforeNode.tr.nextSibling))
        parentObject.htmlNode.childNodes[0].insertBefore(tr, beforeNode.tr.nextSibling); else
        if (this.parsingOn == parentObject.id)
        {
            this.parsedArray[this.parsedArray.length] = tr;
        } else
            parentObject.htmlNode.childNodes[0].appendChild(tr);
    if ((beforeNode) && (!beforeNode.span)) beforeNode = null;
    if (this.XMLsource)if ((childs) && (childs != 0)) Nodes[Count].XMLload = 0; else Nodes[Count].XMLload = 1;
    Nodes[Count].tr = tr;
    tr.nodem = Nodes[Count];
    if (parentObject.itemId == 0)tr.childNodes[0].className = "hiddenRow";
    if ((parentObject._r_logic) || (this._frbtr))
        this._setSrc(Nodes[Count].htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0], this.imPath + this.radioArray[0]);
    if (optionStr)
    {
        var tempStr = optionStr.split(",");
        for (var i = 0; i < tempStr.length; i++)
        {
            switch (tempStr[i])
                    {case "SELECT": this.selectItem(itemId, false);break;case "CALL": this.selectItem(itemId, true);break;case "CHILD": Nodes[Count].XMLload = 0;break;case "CHECKED":
                if (this.XMLloadingWarning)this.setCheckList += this.dlmtr + itemId; else
                    this.setCheck(itemId, 1);break;case "HCHECKED":
                this._setCheck(Nodes[Count], "unsure");break;case "OPEN": Nodes[Count].openMe = 1;break;}
            ;
        }
        ;
    }
    ;
    if (!this.XMLloadingWarning)
    {
        if ((this._getOpenState(parentObject) < 0) && (!this._hAdI)) this.openItem(parentObject.id);
        if (beforeNode)
        {
            this._correctPlus(beforeNode);
            this._correctLine(beforeNode);
        }
        ;
        this._correctPlus(parentObject);
        this._correctLine(parentObject);
        this._correctPlus(Nodes[Count]);
        if (parentObject.childsCount >= 2)
        {
            this._correctPlus(Nodes[parentObject.childsCount - 2]);
            this._correctLine(Nodes[parentObject.childsCount - 2]);
        }
        ;
        if (parentObject.childsCount != 2)this._correctPlus(Nodes[0]);
        if (this.tscheck)this._correctCheckStates(parentObject);
        if (this._onradh)
        {
            if (this.xmlstate == 1)
            {
                var old = this.onXLE;
                this.onXLE = function(id)
                {
                    this._onradh(itemId);
                    if (old)old(id);
                };
            } else
                this._onradh(itemId);
        }
        ;
    }
    ;
    return Nodes[Count];
};
dhtmlXTreeObject.prototype.insertNewItem = function(parentId, itemId, itemText, itemActionHandler, image1, image2, image3, optionStr, childs)
{
    var parentObject = this._globalIdStorageFind(parentId);
    if (!parentObject)return (-1);
    var nodez = this._attachChildNode(parentObject, itemId, itemText, itemActionHandler, image1, image2, image3, optionStr, childs);
    return nodez;
};
dhtmlXTreeObject.prototype.insertNewChild = function(parentId, itemId, itemText, itemActionHandler, image1, image2, image3, optionStr, childs)
{
    return this.insertNewItem(parentId, itemId, itemText, itemActionHandler, image1, image2, image3, optionStr, childs);
};

dhtmlXTreeObject.prototype._parseXMLTree = function(dhtmlObject, node, parentId, level, xml_obj, start)
{
    if (!xml_obj)xml_obj = dhtmlObject.XMLLoader;
    dhtmlObject.skipLock = true;
    if (!dhtmlObject.parsCount)dhtmlObject.parsCount = 1; else dhtmlObject.parsCount++;
    dhtmlObject.XMLloadingWarning = 1;
    var nodeAskingCall = "";
    if (!node)
    {
        node = xml_obj.getXMLTopNode("response");

        parentId = node.getElementsByTagName("itemid")[0].childNodes[0].nodeValue;
        if(parentId<0){
            parentId=0;
        }

        node = node.getElementsByTagName("menudata")[0];

        //parentId = node.getAttribute("id");
        if (node.getAttribute("radio"))
            dhtmlObject.htmlNode._r_logic = true;
        dhtmlObject.parsingOn = parentId;
        dhtmlObject.parsedArray = new Array();
        dhtmlObject.setCheckList = "";
    };

       var temp = dhtmlObject._globalIdStorageFind(parentId);
 if ((temp.childsCount) && (!start) && (!dhtmlObject._edsbps) && (!temp._has_top))
        var preNode = temp.childNodes[temp.childsCount - 1]; else
        var preNode = 0;
    if (node.getAttribute("order"))
        dhtmlObject._reorderXMLBranch(node);
    var npl = 0;

    for (var i = start || 0; i < node.childNodes.length; i++)
    {
        if ((node.childNodes[i].nodeType == 1) && (node.childNodes[i].tagName == "menuitem"))
        {
            temp.XMLload = 1;
            if ((dhtmlObject._epgps) && (dhtmlObject._epgpsC == npl))
            {
                this._setNextPageSign(temp, npl + 1 * (start || 0), level, node);
                break;
            };

            var nodx = node.childNodes[i];
            var link = nodx.getAttribute("link");

            if(link=='showObject.do?object=1804504498')
                link = 'showObject.do?object=1804476553&viewMode=H_1803807126';
            if(link=='showObject.do?object=1804504500')
                link = 'showObject.do?object=1804476555&viewMode=H_1803807126';

            var name = "<a href=\"" + link + "\">" +
                       nodx.childNodes[0].nodeValue +
                       "</a>";//nodx.getAttribute("text");
            var cId = nodx.getAttribute("id");
            if ((typeof(dhtmlObject.waitUpdateXML) == "object") && (!dhtmlObject.waitUpdateXML[cId]))
            {
                dhtmlObject._parseXMLTree(dhtmlObject, node.childNodes[i], cId, 1, xml_obj);
                continue;
            }
            ;
            var im0 = nodx.getAttribute("im0");
            var im1 = nodx.getAttribute("im1");
            var im2 = nodx.getAttribute("im2");
            var aColor = nodx.getAttribute("aCol");
            var sColor = nodx.getAttribute("sCol");
            var chd = 1;//nodx.getAttribute("child");
            var imw = nodx.getAttribute("imwidth");
            var imh = nodx.getAttribute("imheight");
            var atop = nodx.getAttribute("top");
            var aradio = nodx.getAttribute("radio");
            var topoffset = nodx.getAttribute("topoffset");
            var aopen = nodx.getAttribute("open");


            if(this.mainObject.openItems.indexOf("\="+cId+"\"")!=-1){
                aopen = "true";
            }

            var aselect = nodx.getAttribute("select");
            var acall = nodx.getAttribute("call");
            var achecked = nodx.getAttribute("checked");
            var closeable = nodx.getAttribute("closeable");
            var tooltip = nodx.getAttribute("tooltip");
            var nocheckbox = nodx.getAttribute("nocheckbox");
            var disheckbox = nodx.getAttribute("disabled");
            var style = nodx.getAttribute("style");
            var locked = nodx.getAttribute("locked");
            var zST = "";
            if (aselect)zST += ",SELECT";
            if (atop)zST += ",TOP";
            if (acall)nodeAskingCall = cId;
            if (achecked == -1)zST += ",HCHECKED"; else if (achecked)zST += ",CHECKED";
            if (aopen)zST += ",OPEN";
            if (dhtmlObject.waitUpdateXML)
            {
                if (dhtmlObject._globalIdStorageFind(cId))
                    var newNode = dhtmlObject.updateItem(cId, name, im0, im1, im2, achecked); else
                {
                    if (npl == 0)zST += ",TOP"; else preNode = temp.childNodes[npl];
                    var newNode = dhtmlObject._attachChildNode(temp, cId, name, 0, im0, im1, im2, zST, chd, 0, preNode);
                    preNode = null;
                }
                ;
            } else
                var newNode = dhtmlObject._attachChildNode(temp, cId, name, 0, im0, im1, im2, zST, chd, 0, preNode);
            if (tooltip)newNode.span.parentNode.parentNode.title = tooltip;
            if (style)if (newNode.span.style.cssText)newNode.span.style.cssText += (";" + style); else
                newNode.span.setAttribute("style", newNode.span.getAttribute("style") + ";" + style);
            if (aradio)newNode._r_logic = true;
            if (nocheckbox)
            {
                newNode.span.parentNode.previousSibling.previousSibling.childNodes[0].style.display = 'none';
                newNode.nocheckbox = true;
            }
            ;
            if (disheckbox)
            {
                if (achecked != null)dhtmlObject._setCheck(newNode, convertStringToBoolean(achecked));
                dhtmlObject.disableCheckbox(newNode, 1);
            }
            ;
            newNode._acc = chd || 0;
            if (dhtmlObject.parserExtension)dhtmlObject.parserExtension._parseExtension(node.childNodes[i], dhtmlObject.parserExtension, cId, parentId);
            dhtmlObject.setItemColor(newNode, aColor, sColor);
            if (locked == "1")dhtmlObject._lockItem(newNode, true, true);
            if ((imw) || (imh)) dhtmlObject.setIconSize(imw, imh, newNode);
            if ((closeable == "0") || (closeable == "1")) dhtmlObject.setItemCloseable(newNode, closeable);
            var zcall = "";
            if (topoffset)dhtmlObject.setItemTopOffset(newNode, topoffset);
            if ((!dhtmlObject.slowParse) && (!dhtmlObject.waitUpdateXML))
                zcall = dhtmlObject._parseXMLTree(dhtmlObject, node.childNodes[i], cId, 1, xml_obj);
            if (zcall != "")nodeAskingCall = zcall;
            npl++;
        } else
            dhtmlObject.checkUserData(node.childNodes[i], parentId);
    }
    ;
    if (!level)
    {
        if (dhtmlObject.waitUpdateXML)
        {
            dhtmlObject.waitUpdateXML = false;
            for (var i = temp.childsCount - 1; i >= 0; i--)if (temp.childNodes[i]._dmark)dhtmlObject.deleteItem(temp.childNodes[i].id);
        }
        ;
        var parsedNodeTop = dhtmlObject._globalIdStorageFind(dhtmlObject.parsingOn);
        for (var i = 0; i < dhtmlObject.parsedArray.length; i++)parsedNodeTop.htmlNode.childNodes[0].appendChild(dhtmlObject.parsedArray[i]);
        dhtmlObject.lastLoadedXMLId = parentId;
        dhtmlObject.XMLloadingWarning = 0;
        var chArr = dhtmlObject.setCheckList.split(dhtmlObject.dlmtr);
        for (var n = 0; n < chArr.length; n++)if (chArr[n])dhtmlObject.setCheck(chArr[n], 1);
        if ((dhtmlObject.XMLsource) && (dhtmlObject.tscheck) && (dhtmlObject.smcheck) && (temp.id != dhtmlObject.rootId))
        {
            if (temp.checkstate === 0)dhtmlObject._setSubChecked(0, temp); else if (temp.checkstate === 1)dhtmlObject._setSubChecked(1, temp);
        }
        ;
        if (navigator.appVersion.indexOf("MSIE") != -1 && navigator.appVersion.indexOf("5.5") != -1)
        {
            window.setTimeout(function()
            {
                dhtmlObject._redrawFrom(dhtmlObject, null, start)
            }, 10);
        } else
        {
            dhtmlObject._redrawFrom(dhtmlObject, null, start)
        }
        ;
        if (nodeAskingCall != "")dhtmlObject.selectItem(nodeAskingCall, true);
        if (dhtmlObject._branchUpdate)dhtmlObject._branchUpdateNext(node);
    }
    ;
    if (dhtmlObject.parsCount == 1)
    {
        dhtmlObject.parsingOn = null;
        if ((!dhtmlObject._edsbps) || (!dhtmlObject._edsbpsA.length))
        {
            window.setTimeout(function()
            {
                if (dhtmlObject.onXLE)dhtmlObject.onXLE(dhtmlObject, parentId);
                dhtmlObject.callEvent("onXLE", [dhtmlObject,parentId]);
            }, 1);
            dhtmlObject.xmlstate = 0;
        }
        ;
        dhtmlObject.skipLock = false;
    }
    ;
    dhtmlObject.parsCount--;
    if ((dhtmlObject._epgps) && (start))
        this._setPrevPageSign(temp, (start || 0), level, node);
    return nodeAskingCall;
};
dhtmlXTreeObject.prototype._branchUpdateNext = function(node)
{
    var items = this.XMLLoader.doXPath("./item", node);
    for (var i = 0; i < items.length; i++)
    {
        this._branchUpdate++;
        this.smartRefreshItem(items[i].getAttribute("id"), items[i]);
    }
    ;
    this._branchUpdate--;
};
dhtmlXTreeObject.prototype.checkUserData = function(node, parentId)
{
    if ((node.nodeType == 1) && (node.tagName == "userdata"))
    {
        var name = node.getAttribute("name");
        if ((name) && (node.childNodes[0]))
            this.setUserData(parentId, name, node.childNodes[0].data);
    }
    ;
};
dhtmlXTreeObject.prototype._redrawFrom = function(dhtmlObject, itemObject, start, visMode)
{
    if (!itemObject)
    {
        var tempx = dhtmlObject._globalIdStorageFind(dhtmlObject.lastLoadedXMLId);
        dhtmlObject.lastLoadedXMLId = -1;
        if (!tempx)return 0;
    } else tempx = itemObject;
    var acc = 0;
    for (var i = (start?start - 1:0); i < tempx.childsCount; i++)
    {
        if ((!this._branchUpdate) || (this._getOpenState(tempx) == 1))
            if ((!itemObject) || (visMode == 1)) tempx.childNodes[i].htmlNode.parentNode.parentNode.style.display = "";
        if (tempx.childNodes[i].openMe == 1)
        {
            this._openItem(tempx.childNodes[i]);
            tempx.childNodes[i].openMe = 0;
        }
        ;
        dhtmlObject._redrawFrom(dhtmlObject, tempx.childNodes[i]);
    }
    ;
    if ((!tempx.unParsed) && ((tempx.XMLload) || (!this.XMLsource)))
        tempx._acc = acc;
    dhtmlObject._correctLine(tempx);
    dhtmlObject._correctPlus(tempx);
};
dhtmlXTreeObject.prototype._createSelf = function()
{
    var div = document.createElement('div');
    div.className = "containerTableStyle";
    div.style.width = this.width;
    div.style.height = this.height;
    this.parentObject.appendChild(div);
    return div;
};
dhtmlXTreeObject.prototype._xcloseAll = function(itemObject)
{
    if (itemObject.unParsed)return;
    if (this.rootId != itemObject.id)
    {
        var Nodes = itemObject.htmlNode.childNodes[0].childNodes;
        var Count = Nodes.length;
        for (var i = 1; i < Count; i++)Nodes[i].style.display = "none";
        this._correctPlus(itemObject);
    }
    ;
    for (var i = 0; i < itemObject.childsCount; i++)if (itemObject.childNodes[i].childsCount)this._xcloseAll(itemObject.childNodes[i]);
};
dhtmlXTreeObject.prototype._xopenAll = function(itemObject)
{
    this._HideShow(itemObject, 2);
    for (var i = 0; i < itemObject.childsCount; i++)this._xopenAll(itemObject.childNodes[i]);
};
dhtmlXTreeObject.prototype._correctPlus = function(itemObject)
{
    var imsrc = itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[0].lastChild;
    var imsrc2 = itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0];
    var workArray = this.lineArray;
    if ((this.XMLsource) && (!itemObject.XMLload))
    {
        var workArray = this.plusArray;
        this._setSrc(imsrc2, this.imPath + itemObject.images[2]);
        if (this._txtimg)return (imsrc.innerHTML = "[+]");
    } else
        if ((itemObject.childsCount) || (itemObject.unParsed))
        {
            if ((itemObject.htmlNode.childNodes[0].childNodes[1]) && ( itemObject.htmlNode.childNodes[0].childNodes[1].style.display != "none" ))
            {
                if (!itemObject.wsign)var workArray = this.minusArray;
                this._setSrc(imsrc2, this.imPath + itemObject.images[1]);
                if (this._txtimg)return (imsrc.innerHTML = "[-]");
            } else
            {
                if (!itemObject.wsign)var workArray = this.plusArray;
                this._setSrc(imsrc2, this.imPath + itemObject.images[2]);
                if (this._txtimg)return (imsrc.innerHTML = "[+]");
            }
            ;
        } else
        {
            this._setSrc(imsrc2, this.imPath + itemObject.images[0]);
        }
    ;
    var tempNum = 2;
    if (!itemObject.treeNod.treeLinesOn)this._setSrc(imsrc, this.imPath + workArray[3]); else
    {
        if (itemObject.parentObject)tempNum = this._getCountStatus(itemObject.id, itemObject.parentObject);
        this._setSrc(imsrc, this.imPath + workArray[tempNum]);
    }
    ;
};
dhtmlXTreeObject.prototype._correctLine = function(itemObject)
{
    var sNode = itemObject.parentObject;
    if (sNode)if ((this._getLineStatus(itemObject.id, sNode) == 0) || (!this.treeLinesOn))
        for (var i = 1; i <= itemObject.childsCount; i++)
        {
            itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundImage = "";
            itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundRepeat = "";
        } else
        for (var i = 1; i <= itemObject.childsCount; i++)
        {
            itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundImage = "url(" + this.imPath + this.lineArray[5] + ")";
            itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundRepeat = "repeat-y";
        }
    ;
};
dhtmlXTreeObject.prototype._getCountStatus = function(itemId, itemObject)
{
    if (itemObject.childsCount <= 1)
    {
        if (itemObject.id == this.rootId)return 4; else return 0;
    }
    ;
    if (itemObject.childNodes[0].id == itemId)if (!itemObject.id)return 2; else return 1;
    if (itemObject.childNodes[itemObject.childsCount - 1].id == itemId)return 0;
    return 1;
};
dhtmlXTreeObject.prototype._getLineStatus = function(itemId, itemObject)
{
    if (itemObject.childNodes[itemObject.childsCount - 1].id == itemId)return 0;
    return 1;
};
dhtmlXTreeObject.prototype._HideShow = function(itemObject, mode)
{
    if ((this.XMLsource) && (!itemObject.XMLload))
    {
        if (mode == 1)return;
        itemObject.XMLload = 1;
        this._loadDynXML(itemObject.id);
        return;
    };
    var Nodes = itemObject.htmlNode.childNodes[0].childNodes;
    var Count = Nodes.length;
    if (Count > 1)
    {
        if (( (Nodes[1].style.display != "none") || (mode == 1) ) && (mode != 2))
        {
            this.allTree.childNodes[0].border = "1";
            this.allTree.childNodes[0].border = "0";
            nodestyle = "none";
        } else nodestyle = "";
        for (var i = 1; i < Count; i++)Nodes[i].style.display = nodestyle;
    }
    ;
    this._correctPlus(itemObject);
};
dhtmlXTreeObject.prototype._getOpenState = function(itemObject)
{
    var z = itemObject.htmlNode.childNodes[0].childNodes;
    if (z.length <= 1)return 0;
    if (z[1].style.display != "none")return 1; else return -1;
};
dhtmlXTreeObject.prototype.onRowClick2 = function()
{
    if (!this.parentObject.treeNod.callEvent("onDblClick", [this.parentObject.id,this.parentObject.treeNod])) return 0;
    if ((this.parentObject.closeble) && (this.parentObject.closeble != "0"))
        this.parentObject.treeNod._HideShow(this.parentObject); else
        this.parentObject.treeNod._HideShow(this.parentObject, 2);
};
dhtmlXTreeObject.prototype.onRowClick = function()
{
    var that = this.parentObject.treeNod;
    if (!that.callEvent("onOpenStart", [this.parentObject.id,that._getOpenState(this.parentObject)])) return 0;
    if ((this.parentObject.closeble) && (this.parentObject.closeble != "0"))
        that._HideShow(this.parentObject); else
        that._HideShow(this.parentObject, 2);
    if (that.checkEvent("onOpenEnd"))
        if (!that.xmlstate)that.callEvent("onOpenEnd", [this.parentObject.id,that._getOpenState(this.parentObject)]); else
        {
            that._oie_onXLE = that.onXLE;
            that.onXLE = that._epnFHe;
        }
    ;
};
dhtmlXTreeObject.prototype._epnFHe = function(that, id, flag)
{
    this.callEvent("onOpenEnd", [id,that.getOpenState(id)]);
    that.onXLE = that._oie_onXLE;
    if (!flag)if (that.onXLE)that.onXLE(that, id);
};
dhtmlXTreeObject.prototype.onRowClickDown = function(e)
{
    e = e || window.event;
    var that = this.parentObject.treeNod;
    that._selectItem(this.parentObject, e);
};
dhtmlXTreeObject.prototype.getSelectedItemId = function()
{
    var str = new Array();
    for (var i = 0; i < this._selected.length; i++)str[i] = this._selected[i].id;
    return (str.join(this.dlmtr));
};
dhtmlXTreeObject.prototype._selectItem = function(node, e)
{
    if (this._onSSCF)this._onSSCFold = this.getSelectedItemId();
    this._unselectItems();
    this._markItem(node);
    if (this._onSSCF)
    {
        var z = this.getSelectedItemId();
        if (z != this._onSSCFold)this.callEvent("onSelect", [z]);
    }
    ;
};
dhtmlXTreeObject.prototype._markItem = function(node)
{
    if (node.scolor)node.span.style.color = node.scolor;
    node.span.className = "selectedTreeRow";
    node.i_sel = true;
    this._selected[this._selected.length] = node;
};
dhtmlXTreeObject.prototype.getIndexById = function(itemId)
{
    var z = this._globalIdStorageFind(itemId);
    if (!z)return null;
    return this._getIndex(z);
};
dhtmlXTreeObject.prototype._getIndex = function(w)
{
    var z = w.parentObject;
    for (var i = 0; i < z.childsCount; i++)if (z.childNodes[i] == w)return i;
};
dhtmlXTreeObject.prototype._unselectItem = function(node)
{
    if ((node) && (node.i_sel))
    {
        node.span.className = "standartTreeRow";
        if (node.acolor)node.span.style.color = node.acolor;
        node.i_sel = false;
        for (var i = 0; i < this._selected.length; i++)if (!this._selected[i].i_sel)
        {
            this._selected.splice(i, 1);
            break;
        }
        ;
    }
    ;
};
dhtmlXTreeObject.prototype._unselectItems = function()
{
    for (var i = 0; i < this._selected.length; i++)
    {
        var node = this._selected[i];
        node.span.className = "standartTreeRow";
        if (node.acolor)node.span.style.color = node.acolor;
        node.i_sel = false;
    }
    ;
    this._selected = new Array();
};
dhtmlXTreeObject.prototype.onRowSelect = function(e, htmlObject, mode)
{
    e = e || window.event;
    var obj = this.parentObject;
    if (htmlObject)obj = htmlObject.parentObject;
    var that = obj.treeNod;
    var lastId = that.getSelectedItemId();
    if ((!e) || (!e.skipUnSel))
        that._selectItem(obj, e);
    if (!mode)
    {
        if ((e) && (e.button == 2))
            that.callEvent("onRightClick", [obj.id,e]);
        if (obj.actionHandler)obj.actionHandler(obj.id, lastId); else that.callEvent("onClick", [obj.id,lastId]);
    }
    ;
};
dhtmlXTreeObject.prototype._correctCheckStates = function(dhtmlObject)
{
    if (!this.tscheck)return;
    if (dhtmlObject.id == this.rootId)return;
    var act = dhtmlObject.childNodes;
    var flag1 = 0;
    var flag2 = 0;
    if (dhtmlObject.childsCount == 0)return;
    for (var i = 0; i < dhtmlObject.childsCount; i++)
    {
        if (act[i].dscheck)continue;
        if (act[i].checkstate == 0)flag1 = 1; else if (act[i].checkstate == 1)flag2 = 1; else
        {
            flag1 = 1;
            flag2 = 1;
            break;
        }
        ;
    }
    ;
    if ((flag1) && (flag2)) this._setCheck(dhtmlObject, "unsure"); else if (flag1)this._setCheck(dhtmlObject, false); else this._setCheck(dhtmlObject, true);
    this._correctCheckStates(dhtmlObject.parentObject);
};
dhtmlXTreeObject.prototype.onCheckBoxClick = function(e)
{
    if (this.parentObject.dscheck)return true;
    if (this.treeNod.tscheck)if (this.parentObject.checkstate == 1)this.treeNod._setSubChecked(false, this.parentObject); else this.treeNod._setSubChecked(true, this.parentObject); else
        if (this.parentObject.checkstate == 1)this.treeNod._setCheck(this.parentObject, false); else this.treeNod._setCheck(this.parentObject, true);
    this.treeNod._correctCheckStates(this.parentObject.parentObject);
    return this.treeNod.callEvent("onCheck", [this.parentObject.id,this.parentObject.checkstate]);
};
dhtmlXTreeObject.prototype._createItem = function(acheck, itemObject, mode)
{
    var table = document.createElement('table');
    table.cellSpacing = 0;
    table.cellPadding = 0;
    table.border = 0;
    if (this.hfMode)table.style.tableLayout = "fixed";
    table.style.margin = 0;
    table.style.padding = 0;
    var tbody = document.createElement('tbody');
    var tr = document.createElement('tr');
    var td1 = document.createElement('td');
    td1.className = "standartTreeImage";
    if (this._txtimg)
    {
        var img0 = document.createElement("div");
        td1.appendChild(img0);
        img0.className = "dhx_tree_textSign";
    } else
    {
        var img0 = this._getImg(itemObject.id);
        img0.border = "0";
        if (img0.tagName == "IMG")img0.align = "absmiddle";
        td1.appendChild(img0);
        img0.style.padding = 0;
        img0.style.margin = 0;
/*        img0.style.width = this.def_line_img_x;
        img0.style.height = this.def_line_img_y;
        */
    }
    ;
    var td11 = document.createElement('td');
    var inp = this._getImg(this.cBROf?this.rootId:itemObject.id);
    inp.checked = 0;
    this._setSrc(inp, this.imPath + this.checkArray[0]);
    inp.style.width = "16px";
    inp.style.height = "16px";
    if (!acheck)(((_isOpera) || (_isKHTML))?td11:inp).style.display = "none";
    td11.appendChild(inp);
    if ((!this.cBROf) && (inp.tagName == "IMG")) inp.align = "absmiddle";
    inp.onclick = this.onCheckBoxClick;
    inp.treeNod = this;
    inp.parentObject = itemObject;
    td11.width = "20px";
    var td12 = document.createElement('td');
    td12.className = "standartTreeImage";
    var img = this._getImg(itemObject.id);
    img.onmousedown = this._preventNsDrag;
    img.ondragstart = this._preventNsDrag;
    img.border = "0";
    if (this._aimgs)
    {
        img.parentObject = itemObject;
        if (img.tagName == "IMG")img.align = "absmiddle";
        img.onclick = this.onRowSelect;
    }
    ;
    if (!mode)this._setSrc(img, this.imPath + this.imageArray[0]);
    td12.appendChild(img);
    img.style.padding = 0;
    img.style.margin = 0;
    if (this.timgen)
    {
      /*  img.style.width = this.def_img_x;
        img.style.height = this.def_img_y;*/
    } else
    {
        img.style.width = "0px";
        img.style.height = "0px";
        if (_isOpera)td12.style.display = "none";
    }
    ;
    var td2 = document.createElement('td');
    td2.className = "standartTreeRow";
    itemObject.span = document.createElement('span');
    itemObject.span.className = "standartTreeRow";
    if (this.mlitems)
    {
        itemObject.span.style.width = this.mlitems;
        itemObject.span.style.display = "block";
    }
    if (!_isKHTML)td2.style.width = "100%";
    itemObject.span.innerHTML = itemObject.label;
    td2.appendChild(itemObject.span);
    td2.parentObject = itemObject;
    td1.parentObject = itemObject;
    td2.onclick = this.onRowSelect;
    td1.onclick = this.onRowClick;
    td2.ondblclick = this.onRowClick2;
    if (this.ettip)tr.title = itemObject.label;
    if (this.dragAndDropOff)
    {
        if (this._aimgs)
        {
            this.dragger.addDraggableItem(td12, this);
            td12.parentObject = itemObject;
        }
        ;
        this.dragger.addDraggableItem(td2, this);
    }
    ;
    itemObject.span.style.paddingLeft = "5px";
    itemObject.span.style.paddingRight = "5px";
    td2.style.verticalAlign = "";
    td2.style.fontSize = "10pt";
    td2.style.cursor = this.style_pointer;
    tr.appendChild(td1);
    tr.appendChild(td11);
    tr.appendChild(td12);
    tr.appendChild(td2);
    tbody.appendChild(tr);
    table.appendChild(tbody);
    if (this.ehlt)
    {
        tr.onmousemove = this._itemMouseIn;
        tr[(_isIE)?"onmouseleave":"onmouseout"] = this._itemMouseOut;
    }
    ;
    if (this.checkEvent && this.checkEvent("onRightClick"))
        tr.oncontextmenu = Function("e", "this.childNodes[0].parentObject.treeNod.callEvent('onRightClick',[this.childNodes[0].parentObject.id,(e||window.event)]);return false;");
    return table;
};
dhtmlXTreeObject.prototype.setImagePath = function(newPath)
{
    this.imPath = newPath;
};
dhtmlXTreeObject.prototype.setOnRightClickHandler = function(func)
{
    this.attachEvent("onRightClick", func);
};
dhtmlXTreeObject.prototype.setOnClickHandler = function(func)
{
    this.attachEvent("onClick", func);
};
dhtmlXTreeObject.prototype.setOnSelectStateChange = function(func)
{
    this.attachEvent("onSelect", func);
    this._onSSCF = true;
};
dhtmlXTreeObject.prototype.setXMLAutoLoading = function(filePath)
{
    this.XMLsource = filePath;
};
dhtmlXTreeObject.prototype.setOnCheckHandler = function(func)
{
    this.attachEvent("onCheck", func);
};
dhtmlXTreeObject.prototype.setOnOpenHandler = function(func)
{
    this.attachEvent("onOpenStart", func);
};
dhtmlXTreeObject.prototype.setOnOpenStartHandler = function(func)
{
    this.attachEvent("onOpenStart", func);
};
dhtmlXTreeObject.prototype.setOnOpenEndHandler = function(func)
{
    this.attachEvent("onOpenEnd", func);
};
dhtmlXTreeObject.prototype.setOnDblClickHandler = function(func)
{
    this.attachEvent("onDblClick", func);
};
dhtmlXTreeObject.prototype.openAllItems = function(itemId)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    this._xopenAll(temp);
};
dhtmlXTreeObject.prototype.getOpenState = function(itemId)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return "";
    return this._getOpenState(temp);
};
dhtmlXTreeObject.prototype.closeAllItems = function(itemId)
{
    if (itemId === window.undefined)itemId = this.rootId;
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    this._xcloseAll(temp);
    this.allTree.childNodes[0].border = "1";
    this.allTree.childNodes[0].border = "0";
};
dhtmlXTreeObject.prototype.setUserData = function(itemId, name, value)
{
    var sNode = this._globalIdStorageFind(itemId, 0, true);
    if (!sNode)return;
    if (name == "hint")sNode.htmlNode.childNodes[0].childNodes[0].title = value;
    if (sNode.userData["t_" + name] === undefined)
    {
        if (!sNode._userdatalist)sNode._userdatalist = name; else sNode._userdatalist += "," + name;
    }
    ;
    sNode.userData["t_" + name] = value;
};
dhtmlXTreeObject.prototype.getUserData = function(itemId, name)
{
    var sNode = this._globalIdStorageFind(itemId, 0, true);
    if (!sNode)return;
    return sNode.userData["t_" + name];
};
dhtmlXTreeObject.prototype.getItemColor = function(itemId)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    var res = new Object();
    if (temp.acolor)res.acolor = temp.acolor;
    if (temp.acolor)res.scolor = temp.scolor;
    return res;
};
dhtmlXTreeObject.prototype.setItemColor = function(itemId, defaultColor, selectedColor)
{
    if ((itemId) && (itemId.span))
        var temp = itemId; else
        var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0; else
    {
        if (temp.i_sel)
        {
            if (selectedColor)temp.span.style.color = selectedColor;
        } else
        {
            if (defaultColor)temp.span.style.color = defaultColor;
        }
        ;
        if (selectedColor)temp.scolor = selectedColor;
        if (defaultColor)temp.acolor = defaultColor;
    }
    ;
};
dhtmlXTreeObject.prototype.getItemText = function(itemId)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    return(temp.htmlNode.childNodes[0].childNodes[0].childNodes[3].childNodes[0].innerHTML);
};
dhtmlXTreeObject.prototype.getParentId = function(itemId)
{
    var temp = this._globalIdStorageFind(itemId);
    if ((!temp) || (!temp.parentObject)) return "";
    return temp.parentObject.id;
};
dhtmlXTreeObject.prototype.changeItemId = function(itemId, newItemId)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    temp.id = newItemId;
    temp.span.contextMenuId = newItemId;
    this._idpull[newItemId] = this._idpull[itemId];
    this._idpull[itemId] = null;
};
dhtmlXTreeObject.prototype.doCut = function()
{
    if (this.nodeCut)this.clearCut();
    this.nodeCut = (new Array()).concat(this._selected);
    for (var i = 0; i < this.nodeCut.length; i++)
    {
        var tempa = this.nodeCut[i];
        tempa._cimgs = new Array();
        tempa._cimgs[0] = tempa.images[0];
        tempa._cimgs[1] = tempa.images[1];
        tempa._cimgs[2] = tempa.images[2];
        tempa.images[0] = tempa.images[1] = tempa.images[2] = this.cutImage;
        this._correctPlus(tempa);
    }
    ;
};
dhtmlXTreeObject.prototype.doPaste = function(itemId)
{
    var tobj = this._globalIdStorageFind(itemId);
    if (!tobj)return 0;
    for (var i = 0; i < this.nodeCut.length; i++)
    {
        if (this._checkPNodes(tobj, this.nodeCut[i])) continue;
        this._moveNode(this.nodeCut[i], tobj);
    }
    ;
    this.clearCut();
};
dhtmlXTreeObject.prototype.clearCut = function()
{
    for (var i = 0; i < this.nodeCut.length; i++)
    {
        var tempa = this.nodeCut[i];
        tempa.images[0] = tempa._cimgs[0];
        tempa.images[1] = tempa._cimgs[1];
        tempa.images[2] = tempa._cimgs[2];
        this._correctPlus(tempa);
    }
    ;
    this.nodeCut = new Array();
};
dhtmlXTreeObject.prototype._moveNode = function(itemObject, targetObject)
{
    return this._moveNodeTo(itemObject, targetObject);
};
dhtmlXTreeObject.prototype._fixNodesCollection = function(target, zParent)
{
    var flag = 0;
    var icount = 0;
    var Nodes = target.childNodes;
    var Count = target.childsCount - 1;
    if (zParent == Nodes[Count])return;
    for (var i = 0; i < Count; i++)if (Nodes[i] == Nodes[Count])
    {
        Nodes[i] = Nodes[i + 1];
        Nodes[i + 1] = Nodes[Count];
    }
    ;
    for (var i = 0; i < Count + 1; i++)
    {
        if (flag)
        {
            var temp = Nodes[i];
            Nodes[i] = flag;
            flag = temp;
        } else
            if (Nodes[i] == zParent)
            {
                flag = Nodes[i];
                Nodes[i] = Nodes[Count];
            }
        ;
    }
    ;
};
dhtmlXTreeObject.prototype._recreateBranch = function(itemObject, targetObject, beforeNode, level)
{
    var i;
    var st = "";
    if (beforeNode)
    {
        for (i = 0; i < targetObject.childsCount; i++)if (targetObject.childNodes[i] == beforeNode)break;
        if (i != 0)beforeNode = targetObject.childNodes[i - 1]; else
        {
            st = "TOP";
            beforeNode = "";
        }
        ;
    }
    ;
    var newNode = this._attachChildNode(targetObject, itemObject.id, itemObject.label, 0, itemObject.images[0], itemObject.images[1], itemObject.images[2], st, 0, beforeNode);
    newNode._userdatalist = itemObject._userdatalist;
    newNode.userData = itemObject.userData.clone();
    newNode.XMLload = itemObject.XMLload;
    for (var i = 0; i < itemObject.childsCount; i++)this._recreateBranch(itemObject.childNodes[i], newNode, 0, 1);
    return newNode;
};
dhtmlXTreeObject.prototype._moveNodeTo = function(itemObject, targetObject, beforeNode)
{
    if (itemObject.treeNod._nonTrivialNode)return itemObject.treeNod._nonTrivialNode(this, targetObject, beforeNode, itemObject);
    if (targetObject.mytype)var framesMove = (itemObject.treeNod.lWin != targetObject.lWin); else
        var framesMove = (itemObject.treeNod.lWin != targetObject.treeNod.lWin);
    if (!this.callEvent("onDrag", [itemObject.id,targetObject.id,(beforeNode?beforeNode.id:null),itemObject.treeNod,targetObject.treeNod])) return false;
    if ((targetObject.XMLload == 0) && (this.XMLsource))
    {
        targetObject.XMLload = 1;
        this._loadDynXML(targetObject.id);
    }
    ;
    this.openItem(targetObject.id);
    var oldTree = itemObject.treeNod;
    var c = itemObject.parentObject.childsCount;
    var z = itemObject.parentObject;
    if ((framesMove) || (oldTree.dpcpy))
    {
        var _otiid = itemObject.id;
        itemObject = this._recreateBranch(itemObject, targetObject, beforeNode);
        if (!oldTree.dpcpy)oldTree.deleteItem(_otiid);
    } else
    {
        var Count = targetObject.childsCount;
        var Nodes = targetObject.childNodes;
        Nodes[Count] = itemObject;
        itemObject.treeNod = targetObject.treeNod;
        targetObject.childsCount++;
        var tr = this._drawNewTr(Nodes[Count].htmlNode);
        if (!beforeNode)
        {
            targetObject.htmlNode.childNodes[0].appendChild(tr);
            if (this.dadmode == 1)this._fixNodesCollection(targetObject, beforeNode);
        } else
        {
            targetObject.htmlNode.childNodes[0].insertBefore(tr, beforeNode.tr);
            this._fixNodesCollection(targetObject, beforeNode);
            Nodes = targetObject.childNodes;
        }
        ;
    }
    ;
    if ((!oldTree.dpcpy) && (!framesMove))
    {
        var zir = itemObject.tr;
        if ((document.all) && (navigator.appVersion.search(/MSIE\ 5\.0/gi) != -1))
        {
            window.setTimeout(function()
            {
                zir.parentNode.removeChild(zir);
            }, 250);
        } else
            itemObject.parentObject.htmlNode.childNodes[0].removeChild(itemObject.tr);
        if ((!beforeNode) || (targetObject != itemObject.parentObject))
        {
            for (var i = 0; i < z.childsCount; i++)
            {
                if (z.childNodes[i].id == itemObject.id)
                {
                    z.childNodes[i] = 0;
                    break;
                }
            }
        } else z.childNodes[z.childsCount - 1] = 0;
        oldTree._compressChildList(z.childsCount, z.childNodes);
        z.childsCount--;
    }
    ;
    if ((!framesMove) && (!oldTree.dpcpy))
    {
        itemObject.tr = tr;
        tr.nodem = itemObject;
        itemObject.parentObject = targetObject;
        if (oldTree != targetObject.treeNod)
        {
            if (itemObject.treeNod._registerBranch(itemObject, oldTree)) return;
            this._clearStyles(itemObject);
            this._redrawFrom(this, itemObject.parentObject);
        }
        ;
        this._correctPlus(targetObject);
        this._correctLine(targetObject);
        this._correctLine(itemObject);
        this._correctPlus(itemObject);
        if (beforeNode)
        {
            this._correctPlus(beforeNode);
        } else
            if (targetObject.childsCount >= 2)
            {
                this._correctPlus(Nodes[targetObject.childsCount - 2]);
                this._correctLine(Nodes[targetObject.childsCount - 2]);
            }
        ;
        this._correctPlus(Nodes[targetObject.childsCount - 1]);
        if (this.tscheck)this._correctCheckStates(targetObject);
        if (oldTree.tscheck)oldTree._correctCheckStates(z);
    }
    ;
    if (c > 1)
    {
        oldTree._correctPlus(z.childNodes[c - 2]);
        oldTree._correctLine(z.childNodes[c - 2]);
    }
    ;
    oldTree._correctPlus(z);
    oldTree._correctLine(z);
    this.callEvent("onDrop", [itemObject.id,targetObject.id,(beforeNode?beforeNode.id:null),oldTree,targetObject.treeNod]);
    return itemObject.id;
};
dhtmlXTreeObject.prototype._clearStyles = function(itemObject)
{
    var td1 = itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[1];
    var td3 = td1.nextSibling.nextSibling;
    itemObject.span.innerHTML = itemObject.label;
    itemObject.i_sel = false;
    if (itemObject._aimgs)this.dragger.removeDraggableItem(td1.nextSibling);
    if (this.checkBoxOff)
    {
        td1.childNodes[0].style.display = "";
        td1.childNodes[0].onclick = this.onCheckBoxClick;
        this._setSrc(td1.childNodes[0], this.imPath + this.checkArray[itemObject.checkstate]);
    } else td1.childNodes[0].style.display = "none";
    td1.childNodes[0].treeNod = this;
    itemObject.span.onmousedown = function()
    {
    };
    this.dragger.removeDraggableItem(td3);
    if (this.dragAndDropOff)this.dragger.addDraggableItem(td3, this);
    if (this._aimgs)this.dragger.addDraggableItem(td1.nextSibling, this);
    td3.childNodes[0].className = "standartTreeRow";
    td3.onclick = this.onRowSelect;
    td3.ondblclick = this.onRowClick2;
    td1.previousSibling.onclick = this.onRowClick;
    this._correctLine(itemObject);
    this._correctPlus(itemObject);
    for (var i = 0; i < itemObject.childsCount; i++)this._clearStyles(itemObject.childNodes[i]);
};
dhtmlXTreeObject.prototype._registerBranch = function(itemObject, oldTree)
{
    itemObject.id = this._globalIdStorageAdd(itemObject.id, itemObject);
    itemObject.treeNod = this;
    if (oldTree)oldTree._globalIdStorageSub(itemObject.id);
    for (var i = 0; i < itemObject.childsCount; i++)this._registerBranch(itemObject.childNodes[i], oldTree);
    return 0;
};
dhtmlXTreeObject.prototype.enableThreeStateCheckboxes = function(mode)
{
    this.tscheck = convertStringToBoolean(mode);
};
dhtmlXTreeObject.prototype.setOnMouseInHandler = function(func)
{
    this.ehlt = true;
    this.attachEvent("onMouseIn", func);
};
dhtmlXTreeObject.prototype.setOnMouseOutHandler = function(func)
{
    this.ehlt = true;
    this.attachEvent("onMouseOut", func);
};
dhtmlXTreeObject.prototype.enableTreeImages = function(mode)
{
    this.timgen = convertStringToBoolean(mode);
};
dhtmlXTreeObject.prototype.enableFixedMode = function(mode)
{
    this.hfMode = convertStringToBoolean(mode);
};
dhtmlXTreeObject.prototype.enableCheckBoxes = function(mode, hidden)
{
    this.checkBoxOff = convertStringToBoolean(mode);
    this.cBROf = (!(this.checkBoxOff || convertStringToBoolean(hidden)));
};
dhtmlXTreeObject.prototype.setStdImages = function(image1, image2, image3)
{
    this.imageArray[0] = image1;
    this.imageArray[1] = image2;
    this.imageArray[2] = image3;
};
dhtmlXTreeObject.prototype.enableTreeLines = function(mode)
{
    this.treeLinesOn = convertStringToBoolean(mode);
};
dhtmlXTreeObject.prototype.setImageArrays = function(arrayName, image1, image2, image3, image4, image5)
{
    switch (arrayName)
            {case "plus": this.plusArray[0] = image1;this.plusArray[1] = image2;this.plusArray[2] = image3;this.plusArray[3] = image4;this.plusArray[4] = image5;break;case "minus": this.minusArray[0] = image1;this.minusArray[1] = image2;this.minusArray[2] = image3;this.minusArray[3] = image4;this.minusArray[4] = image5;break;}
    ;
};
dhtmlXTreeObject.prototype.openItem = function(itemId)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0; else return this._openItem(temp);
};
dhtmlXTreeObject.prototype._openItem = function(item)
{
    var state = this._getOpenState(item);
    if ((state < 0) || (((this.XMLsource) && (!item.XMLload))))
    {
        if (!this.callEvent("onOpenStart", [item.id,state])) return 0;
        this._HideShow(item, 2);
        if (this._epnFH)
        {
            if (this.onXLE == this._epnFHe)this._epnFHe(this, item.id, true);
            if (!this.xmlstate)this._epnFH(item.id, this._getOpenState(item)); else
            {
                this._oie_onXLE = this.onXLE;
                this.onXLE = this._epnFHe;
            }
            ;
        }
        ;
    }
    ;
    if (item.parentObject)this._openItem(item.parentObject);
};
dhtmlXTreeObject.prototype.closeItem = function(itemId)
{
    if (this.rootId == itemId)return 0;
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    if (temp.closeble)this._HideShow(temp, 1);
};
dhtmlXTreeObject.prototype.getLevel = function(itemId)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    return this._getNodeLevel(temp, 0);
};
dhtmlXTreeObject.prototype.setItemCloseable = function(itemId, flag)
{
    flag = convertStringToBoolean(flag);
    if ((itemId) && (itemId.span))
        var temp = itemId; else
        var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    temp.closeble = flag;
};
dhtmlXTreeObject.prototype._getNodeLevel = function(itemObject, count)
{
    if (itemObject.parentObject)return this._getNodeLevel(itemObject.parentObject, count + 1);
    return(count);
};
dhtmlXTreeObject.prototype.hasChildren = function(itemId)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0; else
    {
        if ((this.XMLsource) && (!temp.XMLload)) return true; else
            return temp.childsCount;
    }
    ;
};
dhtmlXTreeObject.prototype._getLeafCount = function(itemNode)
{
    var a = 0;
    for (var b = 0; b < itemNode.childsCount; b++)if (itemNode.childNodes[b].childsCount == 0)a++;
    return a;
};
dhtmlXTreeObject.prototype.setItemText = function(itemId, newLabel, newTooltip)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    temp.label = newLabel;
    temp.span.innerHTML = newLabel;
    temp.span.parentNode.parentNode.title = newTooltip || "";
};
dhtmlXTreeObject.prototype.getItemTooltip = function(itemId)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return "";
    return (temp.span.parentNode.parentNode.title || "");
};
dhtmlXTreeObject.prototype.refreshItem = function(itemId)
{
    if (!itemId)itemId = this.rootId;
    var temp = this._globalIdStorageFind(itemId);
    this.deleteChildItems(itemId);
    this._loadDynXML(itemId);
};
dhtmlXTreeObject.prototype.setItemImage2 = function(itemId, image1, image2, image3)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    temp.images[1] = image2;
    temp.images[2] = image3;
    temp.images[0] = image1;
    this._correctPlus(temp);
};
dhtmlXTreeObject.prototype.setItemImage = function(itemId, image1, image2)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    if (image2)
    {
        temp.images[1] = image1;
        temp.images[2] = image2;
    } else temp.images[0] = image1;
    this._correctPlus(temp);
};
dhtmlXTreeObject.prototype.getSubItems = function(itemId)
{
    var temp = this._globalIdStorageFind(itemId, 0, 1);
    if (!temp)return 0;
    var z = "";
    for (i = 0; i < temp.childsCount; i++)
    {
        if (!z)z = temp.childNodes[i].id; else z += this.dlmtr + temp.childNodes[i].id;
    }
    ;
    return z;
};
dhtmlXTreeObject.prototype._getAllScraggyItems = function(node)
{
    var z = "";
    for (var i = 0; i < node.childsCount; i++)
    {
        if ((node.childNodes[i].unParsed) || (node.childNodes[i].childsCount > 0))
        {
            if (node.childNodes[i].unParsed)var zb = this._getAllScraggyItemsXML(node.childNodes[i].unParsed, 1); else
                var zb = this._getAllScraggyItems(node.childNodes[i])

            if (zb)if (z)z += this.dlmtr + zb; else z = zb;
        } else
            if (!z)z = node.childNodes[i].id; else z += this.dlmtr + node.childNodes[i].id;
    }
    ;
    return z;
};
dhtmlXTreeObject.prototype._getAllFatItems = function(node)
{
    var z = "";
    for (var i = 0; i < node.childsCount; i++)
    {
        if ((node.childNodes[i].unParsed) || (node.childNodes[i].childsCount > 0))
        {
            if (!z)z = node.childNodes[i].id; else z += this.dlmtr + node.childNodes[i].id;
            if (node.childNodes[i].unParsed)var zb = this._getAllFatItemsXML(node.childNodes[i].unParsed, 1); else
                var zb = this._getAllFatItems(node.childNodes[i])

            if (zb)z += this.dlmtr + zb;
        }
        ;
    }
    ;
    return z;
};
dhtmlXTreeObject.prototype._getAllSubItems = function(itemId, z, node)
{
    if (node)temp = node; else
    {
        var temp = this._globalIdStorageFind(itemId);
    }
    ;
    if (!temp)return 0;
    z = "";
    for (var i = 0; i < temp.childsCount; i++)
    {
        if (!z)z = temp.childNodes[i].id; else z += this.dlmtr + temp.childNodes[i].id;
        var zb = this._getAllSubItems(0, z, temp.childNodes[i])

        if (zb)z += this.dlmtr + zb;
    }
    ;
    return z;
};
dhtmlXTreeObject.prototype.selectItem = function(itemId, mode, preserve)
{
    mode = convertStringToBoolean(mode);
    var temp = this._globalIdStorageFind(itemId);
    if ((!temp) || (!temp.parentObject)) return 0;
    if (this.XMLloadingWarning)temp.parentObject.openMe = 1; else
        this._openItem(temp.parentObject);
    var ze = null;
    if (preserve)
    {
        ze = new Object;
        ze.ctrlKey = true;
        if (temp.i_sel)ze.skipUnSel = true;
    }
    ;
    if (mode)this.onRowSelect(ze, temp.htmlNode.childNodes[0].childNodes[0].childNodes[3], false); else
        this.onRowSelect(ze, temp.htmlNode.childNodes[0].childNodes[0].childNodes[3], true);
};
dhtmlXTreeObject.prototype.getSelectedItemText = function()
{
    var str = new Array();
    for (var i = 0; i < this._selected.length; i++)str[i] = this._selected[i].span.innerHTML;
    return (str.join(this.dlmtr));
};
dhtmlXTreeObject.prototype._compressChildList = function(Count, Nodes)
{
    Count--;
    for (var i = 0; i < Count; i++)
    {
        if (Nodes[i] == 0)
        {
            Nodes[i] = Nodes[i + 1];
            Nodes[i + 1] = 0;
        }
        ;
    }
    ;
};
dhtmlXTreeObject.prototype._deleteNode = function(itemId, htmlObject, skip)
{
    if ((!htmlObject) || (!htmlObject.parentObject)) return 0;
    var tempos = 0;
    var tempos2 = 0;
    if (htmlObject.tr.nextSibling)tempos = htmlObject.tr.nextSibling.nodem;
    if (htmlObject.tr.previousSibling)tempos2 = htmlObject.tr.previousSibling.nodem;
    var sN = htmlObject.parentObject;
    var Count = sN.childsCount;
    var Nodes = sN.childNodes;
    for (var i = 0; i < Count; i++)
    {
        if (Nodes[i].id == itemId)
        {
            if (!skip)sN.htmlNode.childNodes[0].removeChild(Nodes[i].tr);
            Nodes[i] = 0;
            break;
        }
        ;
    }
    ;
    this._compressChildList(Count, Nodes);
    if (!skip)
    {
        sN.childsCount--;
    }
    ;
    if (tempos)
    {
        this._correctPlus(tempos);
        this._correctLine(tempos);
    }
    ;
    if (tempos2)
    {
        this._correctPlus(tempos2);
        this._correctLine(tempos2);
    }
    ;
    if (this.tscheck)this._correctCheckStates(sN);
    if (!skip)
    {
        this._globalIdStorageRecSub(htmlObject);
    }
    ;
};
dhtmlXTreeObject.prototype.setCheck = function(itemId, state)
{
    var sNode = this._globalIdStorageFind(itemId, 0, 1);
    if (!sNode)return;
    if (state === "unsure")this._setCheck(sNode, state); else
    {
        state = convertStringToBoolean(state);
        if ((this.tscheck) && (this.smcheck)) this._setSubChecked(state, sNode); else this._setCheck(sNode, state);
    }
    ;
    if (this.smcheck)this._correctCheckStates(sNode.parentObject);
};
dhtmlXTreeObject.prototype._setCheck = function(sNode, state)
{
    if (((sNode.parentObject._r_logic) || (this._frbtr)) && (state))
        if (this._frbtrs)
        {
            if (this._frbtrL)this._setCheck(this._frbtrL, 0);
            this._frbtrL = sNode;
        } else
            for (var i = 0; i < sNode.parentObject.childsCount; i++)this._setCheck(sNode.parentObject.childNodes[i], 0);
    var z = sNode.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];
    if (state == "unsure")sNode.checkstate = 2; else if (state)sNode.checkstate = 1; else sNode.checkstate = 0;
    if (sNode.dscheck)sNode.checkstate = sNode.dscheck;
    this._setSrc(z, this.imPath + ((sNode.parentObject._r_logic || this._frbtr)?this.radioArray:this.checkArray)[sNode.checkstate]);
};
dhtmlXTreeObject.prototype.setSubChecked = function(itemId, state)
{
    var sNode = this._globalIdStorageFind(itemId);
    this._setSubChecked(state, sNode);
    this._correctCheckStates(sNode.parentObject);
};
dhtmlXTreeObject.prototype._setSubChecked = function(state, sNode)
{
    state = convertStringToBoolean(state);
    if (!sNode)return;
    if (((sNode.parentObject._r_logic) || (this._frbtr)) && (state))
        for (var i = 0; i < sNode.parentObject.childsCount; i++)this._setSubChecked(0, sNode.parentObject.childNodes[i]);
    if (sNode._r_logic || this._frbtr)this._setSubChecked(state, sNode.childNodes[0]); else
        for (var i = 0; i < sNode.childsCount; i++)
        {
            this._setSubChecked(state, sNode.childNodes[i]);
        }
    ;
    var z = sNode.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];
    if (state)sNode.checkstate = 1; else sNode.checkstate = 0;
    if (sNode.dscheck)sNode.checkstate = sNode.dscheck;
    this._setSrc(z, this.imPath + ((sNode.parentObject._r_logic || this._frbtr)?this.radioArray:this.checkArray)[sNode.checkstate]);
};
dhtmlXTreeObject.prototype.isItemChecked = function(itemId)
{
    var sNode = this._globalIdStorageFind(itemId);
    if (!sNode)return;
    return sNode.checkstate;
};
dhtmlXTreeObject.prototype.deleteChildItems = function(itemId)
{
    var sNode = this._globalIdStorageFind(itemId);
    if (!sNode)return;
    var j = sNode.childsCount;
    for (var i = 0; i < j; i++)
    {
        this._deleteNode(sNode.childNodes[0].id, sNode.childNodes[0]);
    }
    ;
};
dhtmlXTreeObject.prototype.deleteItem = function(itemId, selectParent)
{
    if ((!this._onrdlh) || (this._onrdlh(itemId)))
    {
        var z = this._deleteItem(itemId, selectParent);
    }
    ;
    this.allTree.childNodes[0].border = "1";
    this.allTree.childNodes[0].border = "0";
};
dhtmlXTreeObject.prototype._deleteItem = function(itemId, selectParent, skip)
{
    selectParent = convertStringToBoolean(selectParent);
    var sNode = this._globalIdStorageFind(itemId);
    if (!sNode)return;
    var pid = this.getParentId(itemId);
    var zTemp = sNode.parentObject;
    this._deleteNode(itemId, sNode, skip);
    this._correctPlus(zTemp);
    this._correctLine(zTemp);
    if ((selectParent) && (pid != this.rootId)) this.selectItem(pid, 1);
    return zTemp;
};
dhtmlXTreeObject.prototype._globalIdStorageRecSub = function(itemObject)
{
    for (var i = 0; i < itemObject.childsCount; i++)
    {
        this._globalIdStorageRecSub(itemObject.childNodes[i]);
        this._globalIdStorageSub(itemObject.childNodes[i].id);
    }
    ;
    this._globalIdStorageSub(itemObject.id);
    var z = itemObject;
    z.span = null;
    z.tr.nodem = null;
    z.tr = null;
    z.htmlNode = null;
};
dhtmlXTreeObject.prototype.insertNewNext = function(itemId, newItemId, itemText, itemActionHandler, image1, image2, image3, optionStr, childs)
{
    var sNode = this._globalIdStorageFind(itemId);
    if ((!sNode) || (!sNode.parentObject)) return (0);
    var nodez = this._attachChildNode(0, newItemId, itemText, itemActionHandler, image1, image2, image3, optionStr, childs, sNode);
    return nodez;
};
dhtmlXTreeObject.prototype.getItemIdByIndex = function(itemId, index)
{
    var z = this._globalIdStorageFind(itemId);
    if ((!z) || (index > z.childsCount)) return null;
    return z.childNodes[index].id;
};
dhtmlXTreeObject.prototype.getChildItemIdByIndex = function(itemId, index)
{
    var z = this._globalIdStorageFind(itemId);
    if ((!z) || (index >= z.childsCount)) return null;
    return z.childNodes[index].id;
};
dhtmlXTreeObject.prototype.setDragHandler = function(func)
{
    this.attachEvent("onDrag", func);
};
dhtmlXTreeObject.prototype._clearMove = function()
{
    if (this._lastMark)
    {
        this._lastMark.className = this._lastMark.className.replace(/dragAndDropRow/g, "");
        this._lastMark = null;
    }
    ;
    this.allTree.className = this.allTree.className.replace(" selectionBox", "");
};
dhtmlXTreeObject.prototype.enableDragAndDrop = function(mode, rmode)
{
    if (mode == "temporary_disabled")
    {
        this.dADTempOff = false;
        mode = true;
    } else
        this.dADTempOff = true;
    this.dragAndDropOff = convertStringToBoolean(mode);
    if (this.dragAndDropOff)this.dragger.addDragLanding(this.allTree, this);
    if (arguments.length > 1)this._ddronr = (!convertStringToBoolean(rmode));
};
dhtmlXTreeObject.prototype._setMove = function(htmlNode, x, y)
{
    if (htmlNode.parentObject.span)
    {
        var a1 = getAbsoluteTop(htmlNode);
        var a2 = getAbsoluteTop(this.allTree);
        this.dadmodec = this.dadmode;
        this.dadmodefix = 0;
        var zN = htmlNode.parentObject.span;
        zN.className += " dragAndDropRow";
        this._lastMark = zN;
    }
    ;
};
dhtmlXTreeObject.prototype._autoScroll = function(node, a1, a2)
{
    if (this.autoScroll)
    {
        if (node)
        {
            a1 = getAbsoluteTop(node);
            a2 = getAbsoluteTop(this.allTree);
        }
        ;
        if ((a1 - a2 - parseInt(this.allTree.scrollTop)) > (parseInt(this.allTree.offsetHeight) - 50))
            this.allTree.scrollTop = parseInt(this.allTree.scrollTop) + 20;
        if ((a1 - a2) < (parseInt(this.allTree.scrollTop) + 30))
            this.allTree.scrollTop = parseInt(this.allTree.scrollTop) - 20;
    }
    ;
};
dhtmlXTreeObject.prototype._createDragNode = function(htmlObject, e)
{
    if (!this.dADTempOff)return null;
    var obj = htmlObject.parentObject;
    if (!obj.i_sel)this._selectItem(obj, e);
    var dragSpan = document.createElement('div');
    var text = new Array();
    if (this._itim_dg)for (var i = 0; i < this._selected.length; i++)text[i] = "<table cellspacing='0' cellpadding='0'><tr><td><img width='18px' height='18px' src='" + this._getSrc(this._selected[i].span.parentNode.previousSibling.childNodes[0]) + "'></td><td>" + this._selected[i].span.innerHTML + "</td></tr><table>"; else
        text = this.getSelectedItemText().split(this.dlmtr);
    dragSpan.innerHTML = text.join("");
    dragSpan.style.position = "absolute";
    dragSpan.className = "dragSpanDiv";
    this._dragged = (new Array()).concat(this._selected);
    return dragSpan;
};
dhtmlXTreeObject.prototype._focusNode = function(item)
{
    var z = getAbsoluteTop(item.htmlNode) - getAbsoluteTop(this.allTree);
    if ((z > (this.allTree.scrollTop + this.allTree.offsetHeight - 30)) || (z < this.allTree.scrollTop))
        this.allTree.scrollTop = z;
};
dhtmlXTreeObject.prototype._preventNsDrag = function(e)
{
    if ((e) && (e.preventDefault))
    {
        e.preventDefault();
        return false;
    }
    ;
    return false;
};
dhtmlXTreeObject.prototype._drag = function(sourceHtmlObject, dhtmlObject, targetHtmlObject)
{
    if (this._autoOpenTimer)clearTimeout(this._autoOpenTimer);
    if (!targetHtmlObject.parentObject)
    {
        targetHtmlObject = this.htmlNode.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];
        this.dadmodec = 0;
    }
    ;
    this._clearMove();
    var z = sourceHtmlObject.parentObject.treeNod;
    if ((z) && (z._clearMove)) z._clearMove("");
    if ((!this.dragMove) || (this.dragMove()))
    {
        if ((!z) || (!z._clearMove) || (!z._dragged)) var col = new Array(sourceHtmlObject.parentObject); else var col = z._dragged;
        var trg = targetHtmlObject.parentObject;
        for (var i = 0; i < col.length; i++)
        {
            var newID = this._moveNode(col[i], trg);
            if ((this.dadmodec) && (newID !== false)) trg = this._globalIdStorageFind(newID, true, true);
            if ((newID) && (!this._sADnD)) this.selectItem(newID, 0, 1);
        }
        ;
    }
    ;
    if (z)z._dragged = new Array();
};
dhtmlXTreeObject.prototype._dragIn = function(htmlObject, shtmlObject, x, y)
{
    if (!this.dADTempOff)return 0;
    var fobj = shtmlObject.parentObject;
    var tobj = htmlObject.parentObject;
    if ((!tobj) && (this._ddronr)) return;
    if (!this.callEvent("onDragIn", [fobj.id,tobj?tobj.id:null,fobj.treeNod,this]))
        return 0;
    if (!tobj)this.allTree.className += " selectionBox"; else
    {
        if (fobj.childNodes == null)
        {
            this._setMove(htmlObject, x, y);
            return htmlObject;
        }
        ;
        var stree = fobj.treeNod;
        for (var i = 0; i < stree._dragged.length; i++)if (this._checkPNodes(tobj, stree._dragged[i]))
        {
            this._autoScroll(htmlObject);
            return 0;
        }
        ;
        this._setMove(htmlObject, x, y);
        if (this._getOpenState(tobj) <= 0)
        {
            this._autoOpenId = tobj.id;
            this._autoOpenTimer = window.setTimeout(new callerFunction(this._autoOpenItem, this), 1000);
        }
        ;
    }
    ;
    return htmlObject;
};
dhtmlXTreeObject.prototype._autoOpenItem = function(e, treeObject)
{
    treeObject.openItem(treeObject._autoOpenId);
};
dhtmlXTreeObject.prototype._dragOut = function(htmlObject)
{
    this._clearMove();
    if (this._autoOpenTimer)clearTimeout(this._autoOpenTimer);
};
dhtmlXTreeObject.prototype._loadDynXML = function(id, src)
{
    src = src || this.XMLsource;
    var sn = (new Date()).valueOf();
    this._ld_id = id;
    url = src + getUrlSymbol(src) + "time=" + sn + "&object=" + this._escape(id);
    this.loadXML(url);
};
dhtmlXTreeObject.prototype._checkPNodes = function(item1, item2)
{
    if (item2 == item1)return 1
    if (item1.parentObject)return this._checkPNodes(item1.parentObject, item2); else return 0;
};
dhtmlXTreeObject.prototype.preventIECashing = function(mode)
{
    this.no_cashe = convertStringToBoolean(mode);
    this.XMLLoader.rSeed = this.no_cashe;
};
dhtmlXTreeObject.prototype.setEscapingMode = function(mode)
{
    this.utfesc = mode;
};
dhtmlXTreeObject.prototype.enableHighlighting = function(mode)
{
    this.ehlt = true;
    this.ehlta = convertStringToBoolean(mode);
};
dhtmlXTreeObject.prototype._itemMouseOut = function()
{
    var that = this.childNodes[3].parentObject;
    var tree = that.treeNod;
    tree.callEvent("onMouseOut", [that.id]);
    if (that.id == tree._l_onMSI)tree._l_onMSI = null;
    if (!tree.ehlt)return;
    that.span.className = that.span.className.replace("_lor", "");
};
dhtmlXTreeObject.prototype._itemMouseIn = function()
{
    var that = this.childNodes[3].parentObject;
    var tree = that.treeNod;
    if (tree._l_onMSI != that.id)tree.callEvent("onMouseIn", [that.id]);
    tree._l_onMSI = that.id;
    if (!tree.ehlt)return;
    that.span.className = that.span.className.replace("_lor", "");
    that.span.className = that.span.className.replace(/((standart|selected)TreeRow)/, "$1_lor");
};
dhtmlXTreeObject.prototype.enableActiveImages = function(mode)
{
    this._aimgs = convertStringToBoolean(mode);
};
dhtmlXTreeObject.prototype.focusItem = function(itemId)
{
    var sNode = this._globalIdStorageFind(itemId);
    if (!sNode)return (0);
    this._focusNode(sNode);
};
dhtmlXTreeObject.prototype.getAllSubItems = function(itemId)
{
    return this._getAllSubItems(itemId);
};
dhtmlXTreeObject.prototype.getAllChildless = function()
{
    return this._getAllScraggyItems(this.htmlNode);
};
dhtmlXTreeObject.prototype.getAllLeafs = dhtmlXTreeObject.prototype.getAllChildless;
dhtmlXTreeObject.prototype._getAllScraggyItems = function(node)
{
    var z = "";
    for (var i = 0; i < node.childsCount; i++)
    {
        if ((node.childNodes[i].unParsed) || (node.childNodes[i].childsCount > 0))
        {
            if (node.childNodes[i].unParsed)var zb = this._getAllScraggyItemsXML(node.childNodes[i].unParsed, 1); else
                var zb = this._getAllScraggyItems(node.childNodes[i])

            if (zb)if (z)z += this.dlmtr + zb; else z = zb;
        } else
            if (!z)z = node.childNodes[i].id; else z += this.dlmtr + node.childNodes[i].id;
    }
    ;
    return z;
};
dhtmlXTreeObject.prototype._getAllFatItems = function(node)
{
    var z = "";
    for (var i = 0; i < node.childsCount; i++)
    {
        if ((node.childNodes[i].unParsed) || (node.childNodes[i].childsCount > 0))
        {
            if (!z)z = node.childNodes[i].id; else z += this.dlmtr + node.childNodes[i].id;
            if (node.childNodes[i].unParsed)var zb = this._getAllFatItemsXML(node.childNodes[i].unParsed, 1); else
                var zb = this._getAllFatItems(node.childNodes[i])

            if (zb)z += this.dlmtr + zb;
        }
        ;
    }
    ;
    return z;
};
dhtmlXTreeObject.prototype.getAllItemsWithKids = function()
{
    return this._getAllFatItems(this.htmlNode);
};
dhtmlXTreeObject.prototype.getAllFatItems = dhtmlXTreeObject.prototype.getAllItemsWithKids;
dhtmlXTreeObject.prototype.getAllChecked = function()
{
    return this._getAllChecked("", "", 1);
};
dhtmlXTreeObject.prototype.getAllUnchecked = function(itemId)
{
    if (itemId)itemId = this._globalIdStorageFind(itemId);
    return this._getAllChecked(itemId, "", 0);
};
dhtmlXTreeObject.prototype.getAllPartiallyChecked = function()
{
    return this._getAllChecked("", "", 2);
};
dhtmlXTreeObject.prototype.getAllCheckedBranches = function()
{
    var temp = this._getAllChecked("", "", 1);
    if (temp != "")temp += this.dlmtr;
    return temp + this._getAllChecked("", "", 2);
};
dhtmlXTreeObject.prototype._getAllChecked = function(htmlNode, list, mode)
{
    if (!htmlNode)htmlNode = this.htmlNode;
    if (htmlNode.checkstate == mode)if (!htmlNode.nocheckbox)
    {
        if (list)list += this.dlmtr + htmlNode.id; else list = htmlNode.id;
    }
    ;
    var j = htmlNode.childsCount;
    for (var i = 0; i < j; i++)
    {
        list = this._getAllChecked(htmlNode.childNodes[i], list, mode);
    }
    ;
    if (list)return list; else return "";
};
dhtmlXTreeObject.prototype.setItemStyle = function(itemId, style_string)
{
    var temp = this._globalIdStorageFind(itemId);
    if (!temp)return 0;
    if (!temp.span.style.cssText)temp.span.setAttribute("style", temp.span.getAttribute("style") + ";" + style_string); else
        temp.span.style.cssText += (";" + style_string);
};
dhtmlXTreeObject.prototype.enableImageDrag = function(mode)
{
    this._itim_dg = convertStringToBoolean(mode);
};
dhtmlXTreeObject.prototype.setOnDragIn = function(func)
{
    this.attachEvent("onDragIn", func);
};
dhtmlXTreeObject.prototype.enableDragAndDropScrolling = function(mode)
{
    this.autoScroll = convertStringToBoolean(mode);
};
dhtmlXTreeObject.prototype.dhx_Event = function()
{
    this.dhx_SeverCatcherPath = "";
    this.attachEvent = function(original, catcher, CallObj)
    {
        CallObj = CallObj || this;
        original = 'ev_' + original;
        if (( !this[original] ) || ( !this[original].addEvent ))
        {
            var z = new this.eventCatcher(CallObj);
            z.addEvent(this[original]);
            this[original] = z;
        }
        ;
        return ( original + ':' + this[original].addEvent(catcher) );
    };
    this.callEvent = function(name, arguments)
    {
        if (this["ev_" + name])return this["ev_" + name].apply(this, arguments);
        return true;
    };
    this.checkEvent = function(name)
    {
        if (this["ev_" + name])return true;
        return false;
    };
    this.eventCatcher = function(obj)
    {
        var dhx_catch = new Array();
        var m_obj = obj;
        var func_server = function(catcher, rpc)
        {
            catcher = catcher.split(":");
            var postVar = "";
            var postVar2 = "";
            var target = catcher[1];
            if (catcher[1] == "rpc")
            {
                postVar = '<?xml version="1.0"?><methodCall><methodName>' + catcher[2] + '</methodName><params>';
                postVar2 = "</params></methodCall>";
                target = rpc;
            }
            ;
            var z = function()
            {
                return true;
            };
            return z;
        };
        var z = function()
        {
            if (dhx_catch)var res = true;
            for (var i = 0; i < dhx_catch.length; i++)
            {
                if (dhx_catch[i] != null)
                {
                    var zr = dhx_catch[i].apply(m_obj, arguments);
                    res = res && zr;
                }
                ;
            }
            ;
            return res;
        };
        z.addEvent = function(ev)
        {
            if (typeof(ev) != "function")
                if (ev && ev.indexOf && ev.indexOf("server:") === 0)
                    ev = new func_server(ev, m_obj.rpcServer); else
                    ev = eval(ev);
            if (ev)return dhx_catch.push(ev) - 1;
            return false;
        };
        z.removeEvent = function(id)
        {
            dhx_catch[id] = null;
        };
        return z;
    };
    this.detachEvent = function(id)
    {
        if (id != false)
        {
            var list = id.split(':');
            this[ list[0] ].removeEvent(list[1]);
        }
        ;
    };
};
