//
// QUOSA Information Manager
// Copyright © 2000-2008 QUOSA, Inc.
// All Rights Reserved.
//
var xDataTreeInfo = {
    xFrameId : 'xDataTree',
    xTreeView01H : 350
};

function xDataTree() {
    var x = this; x.xObjId = xGetElementById(xDataTreeInfo.xFrameId); $(x.xObjId.id, x);
    x.xDataTree01 = xGetElementById('xDataTree01');
    x.xDataTree02 = xGetElementById('xDataTree02');

    x.xTreeView01 = new xOrTreeView(); x.xTreeView01.create(x.xDataTree01, 0);
    x.xTreeView02 = new QXOrganizer(); x.xTreeView02.create(x.xDataTree02, 0);
  
    x.xShiftFrameSize = function(xShiftX, xShiftY) {
        var x = $(xDataTreeInfo.xFrameId); xShiftObjSize(x.xObjId, xShiftX, xShiftY);
        xShiftObjSize(x.xDataTree01, xShiftX, xShiftY); xShiftObjSize(x.xTreeView01.element, xShiftX, xShiftY);
        xShiftObjSize(x.xDataTree02, xShiftX, xShiftY); xShiftObjSize(x.xTreeView02.element, xShiftX, xShiftY);
    };
    
    x.xSetFrameSize = function(xSizeW, xSizeH) {
        var x = $(xDataTreeInfo.xFrameId);
        var xNewSize = xSubObjMrs(x.xObjId, xSizeW, xSizeH);    
        xSetObjSize(x.xObjId, xNewSize[0], xNewSize[1]);    
        
        var xClientS = xGetObjClientSize(x.xObjId); 
        var xClientW = xClientS[0], xClientH = xClientS[1];
        
        { /* qxTree */
            var xObjSize = xGetObjSize(x.xDataTree01);
            xSetObjSize(x.xDataTree01, xClientW, xObjSize[1]);
            var xObjRect = xGetObjRect(x.xDataTree01);
            x.xTreeView01.setPosition( { 
                x: 0, y: 0, cx: xObjRect[2], cy: xObjRect[3]
            } );
        }
        
        var xTop = xGetObjSize(x.xDataTree01)[1] + xGetObjSize('xTreeViewsSplitter')[1] + 2;
        var xSzH = xClientH - xTop;
        
        { /* vlTree */
            var xObjSize = xGetObjSize(x.xDataTree02);
            //xSetObjSize(x.xDataTree02, xClientW, xObjSize[1]);
            xSetObjSize(x.xDataTree02, xClientW, xSzH);
            var xObjRect = xGetObjRect(x.xDataTree02);
            x.xTreeView02.setPosition( { 
                x: 0, y: xTop, cx: xObjRect[2], cy: xSzH
            } );
        }
    };
  
    x.xBuildTree = function () {
        var x = $(xDataTreeInfo.xFrameId);
        x.xTreeView01.xBuildTree();
        var sServerAddress = xGetElementById('xProvider').xGetVLServerAddress();
        var sServerDomain = xGetElementById('xProvider').xGetVLDomain();
        if (sServerAddress != '') {
            x.xShowServerFrame();
            var sUserEmail = xGetElementById('xProvider').xGetUserEmail();
            var sUserName  = xGetElementById('xProvider').xGetUserName();
            QXOrganizer.qxOrganizer.buildTree({
                vl_addr: sServerAddress,
                vl_domain: sServerDomain,
                user_email: sUserEmail,
                user_name: sUserName
            });
        } else {
            x.xHideServerFrame();
        }
    };
    
    x.xShowServerFrame = function () {
        var x = $(xDataTreeInfo.xFrameId);

        var xDefH    = xDataTreeInfo.xTreeView01H;
        var xObjSize = xGetObjSize(x.xDataTree01);

        xSetObjSize( x.xDataTree01,         xObjSize[0], xDefH ); 
        xSetObjSize( x.xTreeView01.element, xObjSize[0], xDefH );

        xShow('xTreeViewsSplitter'); xShow('xDataTree02');
    };
    
    x.xHideServerFrame = function () {
        var x = $(xDataTreeInfo.xFrameId);

        var xClientH = (xGetObjClientSize(x.xObjId))[1];
        var xObjSize = xGetObjSize(x.xDataTree01);

        xSetObjSize( x.xDataTree01,         xObjSize[0], xClientH ); 
        xSetObjSize( x.xTreeView01.element, xObjSize[0], xClientH );


        xHide('xTreeViewsSplitter'); xHide('xDataTree02');
    };  
    
    x.xRefreshOrganizer = function () {
        var x = $(xDataTreeInfo.xFrameId);
        x.xTreeView01.xBuildTree();
    };
  
  x.xCreateVLFolder = function (vlAddr, vlDomain, vlName, vlParentId, vlFolderName) {
    QXOrganizer.qxOrganizer.createFolder({
        vl_addr: vlAddr,
        vl_domain: vlDomain,
        vl_name: vlName,
        folder_id: vlParentId,
        folder_name: vlFolderName
    });
  };
  
  x.xRenameVLFolder = function (vlAddr, vlDomain, vlName, vlFolderId, vlFolderName) {
    QXOrganizer.qxOrganizer.renameFolder({
        vl_addr: vlAddr,
        vl_domain: vlDomain,
        vl_name: vlName,
        folder_id: vlFolderId,
        folder_name: vlFolderName
    });
  };
  
  x.xDeleteVLFolder = function (vlAddr, vlDomain, vlName, vlFolderId) {
    QXOrganizer.qxOrganizer.deleteFolder({
        vl_addr: vlAddr,
        vl_domain: vlDomain,
        vl_name: vlName,
        folder_id: vlFolderId
    });
  };
  
    x.xOnSplitterShiftSizes = function(xShiftX, xShiftY) {
        if (!xShiftY) return [false, false]; var x = $(xDataTreeInfo.xFrameId);
        if ((xGetObjSize(x.xDataTree01)[1] + xShiftY) < 100) return [false, false];
        if ((xGetObjSize(x.xDataTree02)[1] - xShiftY) < 100) return [false, false];
        
        xShiftObjSize(x.xDataTree01, xShiftX, xShiftY ); xShiftObjSize(x.xTreeView01.element, xShiftX, xShiftY );
        xShiftObjSize(x.xDataTree02, xShiftX, -xShiftY); xShiftObjSize(x.xTreeView02.element, xShiftX, -xShiftY);

        var xClientS = xGetObjClientSize(x.xObjId); 
        var xClientW = xClientS[0], xClientH = xClientS[1];
        
        var xTop = xGetObjSize(x.xDataTree01)[1] + xGetObjSize('xTreeViewsSplitter')[1] + 2;
        var xSzH = xClientH - xTop;     

        { /* vlTree */
            var xObjSize = xGetObjSize(x.xDataTree02);
            xSetObjSize(x.xDataTree02, xClientW, xObjSize[1]);
            var xObjRect = xGetObjRect(x.xDataTree02);
            x.xTreeView02.setPosition( { 
                x: 0, y: xTop, cx: xObjRect[2], cy: xSzH
            } );        
        }

        return [false, true];
    };
    
    x.xSplitters = new xSplitter('xTreeViewsSplitter', 'xTreeViewsTrackers', 
        x.xOnSplitterShiftSizes, xSplitterMoveMode_V);
    
    x.xOnNodeTree = function (nAction, sRootId, sNodeId) {
        var x = $(xDataTreeInfo.xFrameId); x.xTreeView01.xBuildTree();
        if (nAction == NODE_ACTION_REBUILD || nAction == NODE_ACTION_REMOVED) {
            $(xDataViewInfo.xFrameId).xRemoveAll();
        }
        if (nAction == NODE_ACTION_NEWNODE || nAction == NODE_ACTION_RENAMED) {
            if (xIsString(sNodeId) && sNodeId != null) {
                var xItemId = x.xTreeView01.xFindNode(sNodeId);
                x.xTreeView01.smartSelect(xItemId);
                x.xTreeView01.xOpenFolder(sNodeId);
            }
        }
    };
    
    x.xOnSearchStart = function (xResultSet) {
        var x = $(xDataTreeInfo.xFrameId);
        x.xTreeView01.xBuildTree();
        if (!(xIsObject(xResultSet) && xResultSet != null)) return ;
        if (xResultSet.xGetResultSet) {
            xResultSet = xResultSet.xGetResultSet();
        }               
        var xTreeObj = Env$().xGetOrganizerTree();
        if (xIsObject(xTreeObj) && xTreeObj != null) {
            var xResultSetId = xResultSet.xGetId();
            var xNodeObj = xTreeObj.xFindNodeByResultSetId(xResultSetId);
            if (xIsObject(xNodeObj) && xNodeObj != null) {
                xTreeObj.xSetActiveNode(xNodeObj.xGetNodeId());
                var xItemId = x.xTreeView01.xFindNode(xNodeObj.xGetNodeId());
                x.xTreeView01.smartSelect(xItemId);
                x.xTreeView01.openedItemId = xItemId;
                x.xTreeView01.xRefreshActiveNode();
            }
        }
    };
    
    x.xOnSearchFinish = function (xResultSet) {
        var x = $(xDataTreeInfo.xFrameId);
        x.xTreeView01.xRefreshActiveNode();
        if (!(xIsObject(xResultSet) && xResultSet != null)) return ;
        if (xResultSet.xGetResultSet) {
            xResultSet = xResultSet.xGetResultSet();
        }               
        var xTreeObj = Env$().xGetOrganizerTree();
        if (xIsObject(xTreeObj) && xTreeObj != null) {
            var xResultSetId = xResultSet.xGetId();
            var xNodeObj = xTreeObj.xFindNodeByResultSetId(xResultSetId);
            if (xIsObject(xNodeObj) && xNodeObj != null) {              
                var xItemId = x.xTreeView01.xFindNode(xNodeObj.xGetNodeId());
                x.xTreeView01.xRefreshItem(xItemId);
            }
        }
    };
    
    x.xOnResultChanged = function (xResult) {
        var x = $(xDataTreeInfo.xFrameId);
    };

    x.xOnRefreshResultsSet = function(xResultSet) {
        var x = $(xDataTreeInfo.xFrameId);
        if (!(xIsObject(xResultSet) && xResultSet != null)) return ;
        if (xResultSet.xGetResultSet) {
            xResultSet = xResultSet.xGetResultSet();
        }               
        var xTreeObj = Env$().xGetOrganizerTree();
        if (xIsObject(xTreeObj) && xTreeObj != null) {
            var xResultSetId = xResultSet.xGetId();
            var xNodeObj = xTreeObj.xFindNodeByResultSetId(xResultSetId);
            if (xIsObject(xNodeObj) && xNodeObj != null) {              
                var xItemId = x.xTreeView01.xFindNode(xNodeObj.xGetNodeId());
                x.xTreeView01.xRefreshItem(xItemId);
            }
        }
    };
};