//
// QUOSA Information Manager
// Copyright © 2000-2008 QUOSA, Inc.
// All Rights Reserved.
//
var UIMODE_COMMAND_SWITCHORGANIZER  = 1;
var UIMODE_COMMAND_SWITHTOBROWSER   = 2;
var UIMODE_COMMAND_SWITHTORESULTS   = 3;
var UIMODE_COMMAND_SWITHTOBOTH      = 4;
var UIMODE_COMMAND_RESETUIMODE      = 5;

function $(objName, obj) {
    var objId = null;
    if (arguments.length > 0) {
        if (arguments.length == 1) {
            if (xIsString(objName)) {
                objId = xApplication.xObjects.xGetObjectByName(objName);
            } else 
            if (xIsObject(objName)) {
                objId = xApplication.xObjects.xIsExists(obj);
            } else {
                objId = objName;
            }
        } else
        if (arguments.length == 2) {
            if (xIsObject(obj) && xIsString(objName)) {
                objId = xApplication.xObjects.xSetObjectByName(objName, obj);
            } else {
                objId = obj;
            }
        } else {
            objId = obj;
        }
    } else objId = xApplication;
    return objId;
}

function xProvider$() {
    return xGetElementById('xProvider');
}

function Env$() {
    return xProvider$().xGetEnvironment();
}

function alert(sText) {
    var xProvider = xGetElementById('xProvider');
    return xProvider.xShowMessage(sText);
}

var xApplication = {
    xObjects   : new xObjectsCollection(),
    xMainFrame : null,
    xProvider  : null,
    
    xReBuildUIControls : function() {
        var x = xApplication; 
        var xClientS = xGetObjClientSize('BODY', true);
        var xClientW = xClientS[0], xClientH = xClientS[1];
        x.xMainFrame.xSetFrameSize(xClientW, xClientH);
    },
        
    /* initialize all components and environment */
    xInitializeComponents : function() {
        var x = xApplication; 
        xMouseEvents.xInitializeComponents();
        
        x.xProvider = xGetElementById('xProvider');
        $(x.xProvider, 'xProvider');
        
        x.xProvider.xSetUserAgent(navigator.userAgent);
        x.xProvider.xSetLocation(location.href, x.xProvider.getAttribute("codebase"));
        x.xProvider.xInitialize();
        
        x.xMainFrame = new xMainFrame();
            
        x.xReBuildUIControls();
        document.body.onresize = function() 
            { $().xReBuildUIControls(); }
            
        $(xDataFrameInfo.xFrameId).xSetUiMode(xDataFrameUiMode_xDataFrame02);    
        $(xDataTreeInfo.xFrameId).xBuildTree();
    },
    xRun : function () {
        var x = xApplication; 
        x.xProvider.xRunEnv();
    },
    
    xOnUiModeCommand : function (nCommandId, nParam) {
        switch (nCommandId) {
        case UIMODE_COMMAND_SWITCHORGANIZER:
            if ($(xDockFrameInfo.xFrameId).xIsVisible()) {
                $(xMainFrameInfo.xFrameId).xHideDockFrame();
            } else {
                $(xMainFrameInfo.xFrameId).xShowDockFrame();
            }           
            break;
        case UIMODE_COMMAND_SWITHTOBROWSER:
            $(xDataFrameInfo.xFrameId).xSetUiMode(xDataFrameUiMode_xDataFrame02);
            break;
        case UIMODE_COMMAND_SWITHTORESULTS:
            $(xDataFrameInfo.xFrameId).xSetUiMode(xDataFrameUiMode_xDataFrame01);
            break;
        case UIMODE_COMMAND_SWITHTOBOTH:
            $(xDataFrameInfo.xFrameId).xSetUiMode(xDataFrameUiMode_xDataFrame12);
            break;
        case UIMODE_COMMAND_RESETUIMODE:
            $(xDataFrameInfo.xFrameId).xSetUiMode(xDataFrameUiMode_xDataFrame12);
            $(xMainFrameInfo.xFrameId).xShowDockFrame();
            break;
        }
    },
    
    xOnSettingsChanged : function () {
        $(xDataTreeInfo.xFrameId).xBuildTree();
    },
    
    xOnCreateVLFolder : function (vlAddr, vlDomain, vlName, vlParentId, vlFolderName) {
        $(xDataTreeInfo.xFrameId).xCreateVLFolder(vlAddr, vlDomain, vlName, vlParentId, vlFolderName);
    },
    
    xOnRenameVLFolder : function (vlAddr, vlDomain, vlName, vlFolderId, vlFolderName) {
        $(xDataTreeInfo.xFrameId).xRenameVLFolder(vlAddr, vlDomain, vlName, vlFolderId, vlFolderName);
    },
    
    xOnDeleteVLFolder : function (vlAddr, vlDomain, vlName, vlFolderId) {
        alert(vlAddr + " - " + vlDomain + " - " + vlName + " - " + vlFolderId);
        $(xDataTreeInfo.xFrameId).xDeleteVLFolder(vlAddr, vlDomain, vlName, vlFolderId);
    },
    
    xOnSearchStart : function (xResultSet) {
        var x = xApplication;       
        var xDataFrame = $(xDataFrameInfo.xFrameId);
        if (xDataFrame.xUiMode == xDataFrameUiMode_xDataFrame02)
            xDataFrame.xSetUiMode(xDataFrameUiMode_xDataFrame12);       
        $(xMainToolsInfo.xFrameId).xSetIntermediateProgress();
        $(xDataTreeInfo.xFrameId).xOnSearchStart(xResultSet);
        $(xDataViewInfo.xFrameId).xOnSearchStart(xResultSet);
    },
    
    xOnSearchFinish : function (xResultSet) {
        var x = xApplication;
        $(xMainToolsInfo.xFrameId).xSetIntermediateProgress();
        $(xDataViewInfo.xFrameId).xOnSearchFinish(xResultSet);
        $(xDataTreeInfo.xFrameId).xOnSearchFinish(xResultSet);
        $(xMainToolsInfo.xFrameId).xStopProgress();
    },
    
    xOnResultChanged : function (xResult, xResultSet) {
        var x = xApplication;
        $(xDataViewInfo.xFrameId).xOnResultChanged(xResult, xResultSet);
        if (xResult.xIsCompleted()) {
            $(xMainToolsInfo.xFrameId).xUpdateProgress();
            $(xDataTreeInfo.xFrameId ).xOnResultChanged(xResult, xResultSet);
        }
    },

    xOnResultsSelectAll : function() {
        $(xDataViewInfo.xFrameId).xOnResultsSelectAll();
    },

    xOnResultsDeleteSelected : function() {
        $(xDataViewInfo.xFrameId).xDeleteResults();
    },
    
    xOnNodeTree : function (nAction, sRootId, sNodeId) {
        $(xDataTreeInfo.xFrameId).xOnNodeTree(nAction, sRootId, sNodeId);
    },
    
    xOnCommand : function (nCommand) {
        switch (nCommand) {
        case QX_COMMAND_EXPORTSELECTEDTOXML:
            $(xDataViewInfo.xFrameId).xExportSelectedToXml();
            break;
        case QX_COMMAND_EXPORTSELECTEDRESULTS:
            $(xDataViewInfo.xFrameId).xExportToEndnote();
            break;
        case QX_COMMAND_EXPORTSELECTEDTOQUOSA:
            $(xDataViewInfo.xFrameId).xExportToQUOSA();
            break;
        }
    },
    
    xOnCommandEx : function (nCommand, nParam1, nParam2) {
        switch (nCommand) {
        case QX_CMDEX_SETARTICLESMENU:
            if (nParam1 == 0) $(xToolBarInfo.xFrameId).xHideArticlesMenu(); 
                else $(xToolBarInfo.xFrameId).xShowArticlesMenu();
            break;
        }
    },

    xOnRefreshResultsSet : function(xResultSet) {
        $(xDataViewInfo.xFrameId).xOnRefreshResultsSet(xResultSet);
        $(xDataTreeInfo.xFrameId).xOnRefreshResultsSet(xResultSet);
    },

    xOnSelectFlagged : function() {
        $(xDataViewInfo.xFrameId).xSetSelectedFlagged();
    },

    xOnRegistrationRequired : function() {
        //QXOrganizer.qxOrganizer.modalDialog();
        //QXOrganizer.qxOrganizer.viewSettings(QXSETTINGS_USERPROFILE);
    },

    xOnControlsEnabled : function(bEnabled) {
        if (bEnabled)
        {
            $(xToolBarInfo.xFrameId).xOnControlsEnabled();
            $(xMainToolsInfo.xFrameId).xOnControlsEnabled();
            $(xDataTreeInfo.xFrameId).xBuildTree();
        }
        else
        {
            $(xToolBarInfo.xFrameId).xOnControlsDisabled();
            $(xMainToolsInfo.xFrameId).xOnControlsDisabled();
        }
    }
};
