//////////////////////////////////////////////////////////////////////////////////
// ToolbarSupport.js v5.0.0                                                     //
// Copyright ADVIZOR Solutions, Inc. 2005.                                      //
//                                                                              //
// Copying, modifying or distributing all or part of the contents of this file  //
// without express written permission is strictly prohibited.                   //
//////////////////////////////////////////////////////////////////////////////////

//
// Referenced Global Vars:
//   g_CurrentPerspective  (SelectAll_OnClick, UnselectAll_OnClick, ToggleSelection_OnClick
//                          ExcludeSelected_OnClick, ExcludeUnselected_OnClick, Restore_OnClick,
//                          ShareResults_OnClick, ColorByDropDown_OnChange, WeightByDropDown_OnChange,
//                          BookmarkDropDown_OnChange)
//   g_WhereAmIOn          (ShareResults_OnClick, BtnWhereAmI_OnClick)
//   g_ColorLegendOn       (ShareResults_OnClick, BtnColorLegend_OnClick)
//   g_DataIntegrationUrl  (DataIntegration_OnClick)
//

//
// Referenced Element IDs:
//   BookmarkDropDown      (NullifyBookmark)
//   WhereAmICell          (BtnWhereAmI_OnClick)
//   ColorLegendCell       (BtnColorLegend_OnClick)
//

// manifestXML is the id of the xml data island inserted into each page
var m_manifestDocTS = manifestXML;

var m_AppPathTS;         // The ASP.NET application's virtual application root path on the server
var m_TableLastColorBy = new Array();
var m_CurrentTableDisplayName;

function ToolbarSupport_Init(appPath) {
    // Initialize member vars
    m_AppPathTS = appPath;
    ImagePreload();
}

function ImagePreload() {
    if (document.images) {
        leftArrow_off = new Image(14,15);
        leftArrow_off.src = m_AppPathTS + "Images/leftArrow_off.png";
        leftArrow_on = new Image(14,15);
        leftArrow_on.src = m_AppPathTS + "Images/leftArrow_onmouseover.png";
        leftArrow_disabled = new Image(14,15);
        leftArrow_disabled.src = m_AppPathTS + "Images/leftArrow_disabled.png";
        leftArrow_down = new Image(14,15);
        leftArrow_down.src = m_AppPathTS + "Images/leftArrow_pressed.png";

        rightArrow_off = new Image(14,15);
        rightArrow_off.src = m_AppPathTS + "Images/rightArrow_off.png";
        rightArrow_on = new Image(14,15);
        rightArrow_on.src = m_AppPathTS + "Images/rightArrow_onmouseover.png";
        rightArrow_disabled = new Image(14,15);
        rightArrow_disabled.src = m_AppPathTS + "Images/rightArrow_disabled.png";
        rightArrow_down = new Image(14,15);
        rightArrow_down.src = m_AppPathTS + "Images/rightArrow_pressed.png";

        selectAll_off = new Image(23,23);
        selectAll_off.src = m_AppPathTS + "Images/selectAll_normal.png";
        selectAll_on = new Image(23,23);
        selectAll_on.src = m_AppPathTS + "Images/selectAll_onmouseover.png";
        selectAll_down = new Image(23,23);
        selectAll_down.src = m_AppPathTS + "Images/selectAll_pressed.png";

        unselectAll_off = new Image(23,23);
        unselectAll_off.src = m_AppPathTS + "Images/unselectAll_normal.png";
        unselectAll_on = new Image(23,23);
        unselectAll_on.src = m_AppPathTS + "Images/unselectAll_onmouseover.png";
        unselectAll_down = new Image(23,23);
        unselectAll_down.src = m_AppPathTS + "Images/unselectAll_pressed.png";

        toggleSelection_off = new Image(23,23);
        toggleSelection_off.src = m_AppPathTS + "Images/toggleSelection_normal.png";
        toggleSelection_on = new Image(23,23);
        toggleSelection_on.src = m_AppPathTS + "Images/toggleSelection_onmouseover.png";
        toggleSelection_down = new Image(23,23);
        toggleSelection_down.src = m_AppPathTS + "Images/toggleSelection_pressed.png";

        excludeSelected_off = new Image(23,23);
        excludeSelected_off.src = m_AppPathTS + "Images/excludeSelected_normal.png";
        excludeSelected_on = new Image(23,23);
        excludeSelected_on.src = m_AppPathTS + "Images/excludeSelected_onmouseover.png";
        excludeSelected_down = new Image(23,23);
        excludeSelected_down.src = m_AppPathTS + "Images/excludeSelected_pressed.png";

        excludeUnselected_off = new Image(23,23);
        excludeUnselected_off.src = m_AppPathTS + "Images/excludeUnselected_normal.png";
        excludeUnselected_on = new Image(23,23);
        excludeUnselected_on.src = m_AppPathTS + "Images/excludeUnselected_onmouseover.png";
        excludeUnselected_down = new Image(23,23);
        excludeUnselected_down.src = m_AppPathTS + "Images/excludeUnselected_pressed.png";

        restore_off = new Image(23,23);
        restore_off.src = m_AppPathTS + "Images/restore_normal.png";
        restore_on = new Image(23,23);
        restore_on.src = m_AppPathTS + "Images/restore_onmouseover.png";
        restore_down = new Image(23,23);
        restore_down.src = m_AppPathTS + "Images/restore_pressed.png";

        undo_off = new Image(23,23);
        undo_off.src = m_AppPathTS + "Images/undo_normal.png";
        undo_on = new Image(23,23);
        undo_on.src = m_AppPathTS + "Images/undo_onmouseover.png";
        undo_down = new Image(23,23);
        undo_down.src = m_AppPathTS + "Images/undo_pressed.png";

        redo_off = new Image(23,23);
        redo_off.src = m_AppPathTS + "Images/redo_normal.png";
        redo_on = new Image(23,23);
        redo_on.src = m_AppPathTS + "Images/redo_onmouseover.png";
        redo_down = new Image(23,23);
        redo_down.src = m_AppPathTS + "Images/redo_pressed.png";

        reset_off = new Image(23,23);
        reset_off.src = m_AppPathTS + "Images/reset_normal.png";
        reset_on = new Image(23,23);
        reset_on.src = m_AppPathTS + "Images/reset_onmouseover.png";
        reset_down = new Image(23,23);
        reset_down.src = m_AppPathTS + "Images/reset_pressed.png";

// 05/05/06 depricated WhereAmI
//        whereAmI_off = new Image(23,23);
//        whereAmI_off.src = m_AppPathTS + "Images/whereAmI_normal.png";
//        whereAmI_down = new Image(23,23);
//        whereAmI_down.src = m_AppPathTS + "Images/whereAmI_pressed.png";

        colorLegend_off = new Image(23,23);
        colorLegend_off.src = m_AppPathTS + "Images/colorLegend_normal.png";
        colorLegend_down = new Image(23,23);
        colorLegend_down.src = m_AppPathTS + "Images/colorLegend_pressed.png";

        shareResultsPdf_off = new Image(23,23);
        shareResultsPdf_off.src = m_AppPathTS + "Images/shareResultsPdf_normal.png";
        shareResultsPdf_on = new Image(23,23);
        shareResultsPdf_on.src = m_AppPathTS + "Images/shareResultsPdf_onmouseover.png";
        shareResultsPdf_down = new Image(23,23);
        shareResultsPdf_down.src = m_AppPathTS + "Images/shareResultsPdf_pressed.png";

        shareResultsMht_off = new Image(23,23);
        shareResultsMht_off.src = m_AppPathTS + "Images/shareResultsMht_normal.png";
        shareResultsMht_on = new Image(23,23);
        shareResultsMht_on.src = m_AppPathTS + "Images/shareResultsMht_onmouseover.png";
        shareResultsMht_down = new Image(23,23);
        shareResultsMht_down.src = m_AppPathTS + "Images/shareResultsMht_pressed.png";

        shareResultsDoc_off = new Image(23,23);
        shareResultsDoc_off.src = m_AppPathTS + "Images/shareResultsDoc_normal.png";
        shareResultsDoc_on = new Image(23,23);
        shareResultsDoc_on.src = m_AppPathTS + "Images/shareResultsDoc_onmouseover.png";
        shareResultsDoc_down = new Image(23,23);
        shareResultsDoc_down.src = m_AppPathTS + "Images/shareResultsDoc_pressed.png";

        exportProject_off = new Image(23,23);
        exportProject_off.src = m_AppPathTS + "Images/exportProject_normal.png";
        exportProject_on = new Image(23,23);
        exportProject_on.src = m_AppPathTS + "Images/exportProject_onmouseover.png";
        exportProject_down = new Image(23,23);
        exportProject_down.src = m_AppPathTS + "Images/exportProject_pressed.png";

        exportData_off = new Image(23,23);
        exportData_off.src = m_AppPathTS + "Images/exportData_normal.png";
        exportData_on = new Image(23,23);
        exportData_on.src = m_AppPathTS + "Images/exportData_onmouseover.png";
        exportData_down = new Image(23,23);
        exportData_down.src = m_AppPathTS + "Images/exportData_pressed.png";

        dataIntegration_off = new Image(23,23);
        dataIntegration_off.src = m_AppPathTS + "Images/dataIntegration_normal.png";
        dataIntegration_on = new Image(23,23);
        dataIntegration_on.src = m_AppPathTS + "Images/dataIntegration_onmouseover.png";
        dataIntegration_down = new Image(23,23);
        dataIntegration_down.src = m_AppPathTS + "Images/dataIntegration_pressed.png";

        help_off = new Image(23,23);
        help_off.src = m_AppPathTS + "Images/help_normal.png";
        help_on= new Image(23,23);
        help_on.src = m_AppPathTS + "Images/help_onmouseover.png";
        help_down=new Image(23,23);
        help_down.src = m_AppPathTS + "Images/help_pressed.png";
    }
}

function lightup(imgName) {
    if (document.images) {
        imgOn = eval(imgName + "_on.src");
        document[imgName].src = imgOn;
    }
}

function turnoff(imgName) {
    if (document.images) {
        imgOff = eval(imgName + "_off.src");
        document[imgName].src = imgOff;
    }
}

function clickdown(imgName) {
    if (document.images) {
        imgDown = eval(imgName + "_down.src");
        document[imgName].src = imgDown;
    }
}

function disable(imgName) {
    if (document.images) {
        imgDisabled = eval(imgName + "_disabled.src");
        document[imgName].src = imgDisabled;
    }
}

function ToolbarSupport_SetCurrentTable(newTableDisplayName) {
    if (m_CurrentTableDisplayName != newTableDisplayName) {
        AsiSetDefaultTable(newTableDisplayName);

        m_CurrentTableDisplayName = newTableDisplayName;
        UpdateColorByDropDown(newTableDisplayName);
        UpdateWeightByDropDown(newTableDisplayName);

        // Set ColorBy dropdown value
        ColorByDropDown.value = m_TableLastColorBy[newTableDisplayName];
    }
}

function ToolbarSupport_SetCurrentTableColor(newTableDisplayName, newColorDisplayName) {
    if (m_CurrentTableDisplayName != newTableDisplayName) {
        AsiSetDefaultTable(newTableDisplayName);

        m_CurrentTableDisplayName = newTableDisplayName;
        UpdateColorByDropDown(newTableDisplayName);
        UpdateWeightByDropDown(newTableDisplayName);
	}
	
	ColorByDropDown.value = newColorDisplayName;
}

function UpdateColorByDropDown(tableDisplayName) {
    var curOption;
    var i = 0;
    var j = 0;

    // Clear ColorBy Dropdown
    for (curOption = ColorByDropDown.options.length - 1; curOption >= 0; curOption--) {
        ColorByDropDown.options.remove(curOption);
    }

    var tableNodes = m_manifestDocTS.selectNodes("//Manifest/DataTables/Table");
    for (i = 0; i < tableNodes.length; i++) {
        var tableNode = tableNodes[i];
        if ( tableNode.selectSingleNode("DisplayName").nodeTypedValue == tableDisplayName ) {
            // Fill in ColorBy Dropdown
            var colorByNodes = tableNode.selectNodes("ColorByFields/Item");
            for (j = colorByNodes.length-1; j >= 0; j--) {
                var colorByNode = colorByNodes[j];
                var newOption = document.createElement("option");
                ColorByDropDown.options.add(newOption, 0);
                newOption.innerText = colorByNode.nodeTypedValue;
                newOption.value = colorByNode.attributes.getNamedItem("id").value;
            }

            var defaultColorByNode = tableNode.selectSingleNode("ColorByFields/CurrentField");
            if (defaultColorByNode != null) {
                var defaultColorByKey = defaultColorByNode.attributes.getNamedItem("id").value;
                if ( m_TableLastColorBy[tableDisplayName] == null ) {
                    m_TableLastColorBy[tableDisplayName] = defaultColorByKey;
                }
            }
            break;
        }
    }
}

function UpdateWeightByDropDown(tableDisplayName) {
    var curOption;
    var i = 0;
    var j = 0;

    // Clear WeightBy Dropdown
    for (curOption = WeightByDropDown.options.length - 1; curOption >= 0; curOption--) {
        WeightByDropDown.options.remove(curOption);
    }

    var tableNodes = m_manifestDocTS.selectNodes("//Manifest/DataTables/Table");
    for (i = 0; i < tableNodes.length; i++) {
        var tableNode = tableNodes[i];
        if ( tableNode.selectSingleNode("DisplayName").nodeTypedValue == tableDisplayName ) {
            var weightByNodes = tableNode.selectNodes("WeightByFields/Item");
            for (j = weightByNodes.length-1; j >= 0; j--) {
                var weightByNode = weightByNodes[j];
                var newOption = document.createElement("option");
                WeightByDropDown.options.add(newOption, 0);
                newOption.innerText = weightByNode.nodeTypedValue;
                newOption.value = weightByNode.attributes.getNamedItem("id").value;
            }
            break;
        }
    }
}

function BookmarkColorBy(bookmarkKey) {
    var i = 0;
    var bookmarkNode = m_manifestDocTS.selectSingleNode("//Manifest/BookmarkColors/Bookmark[@id='" + bookmarkKey + "']");

    // Check if bookmarkNode is null since projects published with
    // version < 4.1 do not have bookmark info.
    if (bookmarkNode != null) {
        var tableNodes = bookmarkNode.selectNodes("Table");
        for (i = 0; i < tableNodes.length; i++) {
            var tableNode = tableNodes[i];
            var tableDisplayName = tableNode.attributes.getNamedItem("displayName").value;
            var colorByKey = tableNode.attributes.getNamedItem("colorByKey").value;
            m_TableLastColorBy[tableDisplayName] = colorByKey;
        }
        ColorByDropDown.value = m_TableLastColorBy[m_CurrentTableDisplayName];
    }
}

function NullifyBookmark() {
    var ctrl = document.getElementById('BookmarkDropDown');
    if (ctrl != null) {
        ctrl.selectedIndex = 0;
    }
    window.focus();
}

function SelectAll_OnClick() {
    AsiSelectAll(g_CurrentPerspective);
    NullifyBookmark();
}

function UnselectAll_OnClick() {
    AsiUnselectAll(g_CurrentPerspective);
    NullifyBookmark();
}

function ToggleSelection_OnClick() {
    AsiToggleSelection(g_CurrentPerspective);
    NullifyBookmark();
}

function ExcludeSelected_OnClick() {
    AsiExcludeSelected(g_CurrentPerspective);
    NullifyBookmark();
}

function ExcludeUnselected_OnClick() {
    AsiExcludeUnselected(g_CurrentPerspective);
    NullifyBookmark();
}

function Restore_OnClick() {
    AsiRestoreExcluded(g_CurrentPerspective);
    NullifyBookmark();
}

function Undo_OnClick() {
    AsiUndo();
    NullifyBookmark();
}

function Redo_OnClick() {
    AsiRedo();
    NullifyBookmark();
}

function Reset_OnClick() {
    window.location.reload(true);
}

function Help_OnClick() {
    window.open("http://www.advizorsolutions.com/help/ServerAE/51/index.htm");
}

function ShareResults_OnClick(shareFormat) {
    var returnValue = "";
    var dialogUrl = "";
    dialogUrl = m_AppPathTS + "AsiShareResults.aspx?format=" + shareFormat;
    var sFeatures = "dialogWidth:320px; dialogHeight:270px; center: yes; edge: raised; help: no; resizable: yes; scroll: no; status: no";
    returnValue = window.showModalDialog(dialogUrl, "", sFeatures);
    if (returnValue) {
        if (returnValue != "") {
            var paramArray = returnValue.split("|");
            var title = paramArray[0];
            title = ServerSupport_Trim(title);
            var desc = paramArray[1];
            AsiShareResults(g_CurrentPerspective, title, desc, g_ColorLegendOn, g_WhereAmIOn, shareFormat);
        }
    }
    window.focus();
}

function ExportProject_OnClick() {
    var doExport = confirm(cStrConfirmExportProject);
    if (doExport == true) {
        AsiExportProject();
    }
    window.focus();
}

function ExportData_OnClick() {
    var returnValue;
    var sFeatures = "dialogWidth:260px; dialogHeight:285px; center: yes; edge: raised; help: no; resizable: yes; scroll: no; status: no";
    returnValue = window.showModalDialog(m_AppPathTS + "AsiExportData.aspx", "", sFeatures);
    if (returnValue) {
        if (returnValue != "") {
            var paramArray = returnValue.split("|");
            var tableName = paramArray[0];
            var csvFormat = paramArray[1];
            var allData = paramArray[2];
            AsiExportData(tableName, csvFormat, allData);
        }
    }
    window.focus();
}

function ColorByDropDown_OnChange() {
    m_TableLastColorBy[m_CurrentTableDisplayName] = ColorByDropDown.value;
    AsiColorBy(g_CurrentPerspective, ColorByDropDown.value);
    NullifyBookmark();
}

function WeightByDropDown_OnChange() {
    AsiWeightBy(g_CurrentPerspective, WeightByDropDown.value);
    document.getElementById(g_CurrentPerspective).weightBy = WeightByDropDown.value;
    NullifyBookmark();
}

function BookmarkDropDown_OnChange() {
    var ctrl;
    if (BookmarkDropDown.value != "ASI_NO_BOOKMARK") {
        ctrl = document.getElementById(BookmarkDropDown.value);
        if (g_CurrentPerspective != ctrl.perspKey) {
            ShowPerspective(ctrl.perspKey);
        }
        AsiGoToBookmark(BookmarkDropDown.value);
        // Update ColorBy array for each table and set color by dropdown
        BookmarkColorBy(BookmarkDropDown.value);
    }
    window.focus();
}

function BtnWhereAmI_OnClick() {
    if (g_WhereAmIOn) {
        btnWhereAmI.src = eval("whereAmI_off.src");
        btnWhereAmI.alt = cStrShowWhereAmI;
        document.getElementById('WhereAmICell').style.display = "none";
        g_WhereAmIOn = false;
    }
    else {
        btnWhereAmI.src = eval("whereAmI_down.src");
        btnWhereAmI.alt = cStrHideWhereAmI;
        document.getElementById('WhereAmICell').style.display = "block";
        g_WhereAmIOn = true;
    }
    PageHandler_LegendChanged();
    window.focus();
}

function BtnColorLegend_OnClick() {
    if (g_ColorLegendOn) {
        btnColorLegend.src = eval("colorLegend_off.src");
        btnColorLegend.alt = cStrShowColorLegend;
        document.getElementById('ColorLegendCell').style.display = "none";
        g_ColorLegendOn = false;
    }
    else {
        btnColorLegend.src = eval("colorLegend_down.src");
        btnColorLegend.alt = cStrHideColorLegend;
        document.getElementById('ColorLegendCell').style.display = "block";
        g_ColorLegendOn = true;
    }
    PageHandler_LegendChanged();
    window.focus();
}

function DataIntegration_OnClick() {
    window.focus();
    window.open(g_DataIntegrationUrl);
}
