﻿// Calculate option dialog code
var M_abHierarchyCalcSetting;  // hierarchy by calc option array - jagged array (see M_abIsCalcHierarchy)

var HR_TOTALS = 0;
var HR_PERCENTAGES = 1;
var HR_AVERAGES = 2;
var HR_MINIMUMS = 3;
var HR_MAXIMUMS = 4;
var HR_MEDIANS = 5;
var HR_VARIANCES = 6;
var HR_STDDEVIATIONS = 7;

var HR_OPTIONS_COUNT = 8;  // number of possible calculations.

var M_anHrMeasureTotals; // hierarchy by measure total function array
var HM_TOTAL_AGGREGATE = 0;
var HM_TOTAL_SUM = 1;
var HM_TOTAL_MAX = 2;

var M_strCalculateOptions =
"<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
+ "<tr>"
+ "<td>"
+ "<table cellPadding='3' cellSpacing='0'>"
+ "<tr>"
+ "<td class=OptionHeader nowrap align=left>" + resCalculate +"</td>"
+ "</tr>"
+ "<tr height='3'></tr>"
+ "</table>"
+ "</td>"
+ "</tr>"
+ "<tr>"
+ "<td>"
+ "<table cellPadding='3' cellSpacing='0'>"
+ "<tr>"
+ "<td><table><tr>"
+ "<td class=OptionItem nowrap><LABEL FOR='SelectedHierarchies'>" + resHierarchyPrompt + "</LABEL></td>"
+ "<td nowrap>&nbsp;<select class=Default title='" + resHierarchy 
+ "' name=\"SelectedHierarchies\" id=SelectedHierarchies onkeypress=\"javascript:SubmitCalculation(event);\""
+ " onkeyup=\"javascript:CalculateHrChange();\" onchange=\"javascript:CalculateHrChange();\"></select></td>"
+ "</tr></table></td>"
+ "</tr>"
+ "<tr>"
+ "<td>"
+ "<div id='CalculationsDiv'>"
+ "<table><tr>"
+ "<td class=OptionItem nowrap align=right valign=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + resEnable + "</td>"
+ "<td nowrap>"
+ "<table>"
+ "<tr>"
+ "<td nowrap><input type=checkbox title='" + resTotals 
+ "' name=Totals id=TotalsId value=0 onkeypress=\"javascript:SubmitCalculation(event);\" "
+ "onClick=\"javascript:UpdateCalculateOption(this, " + HR_TOTALS + ");\"></td>"
+ "<td class='OptionItem'><LABEL id='TotalsCell' FOR=TotalsId ACCESSKEY=\"t\">" + resTotals + "</LABEL></td>"
+ "<td nowrap><input type=checkbox title='" + resMin + "' name=Minimums id=MinimumsId value=0"
+ " onkeypress=\"javascript:SubmitCalculation(event);\" onClick=\"javascript:UpdateCalculateOption(this, " 
+ HR_MINIMUMS + ");\"></td>"
+ "<td class='OptionItem'><LABEL id='MinimumsCell' FOR=MinimumsId ACCESSKEY=\"n\">" + resMin + "</LABEL></td>"
+ "</tr>"
+ "<tr>"
+ "<td nowrap><input type=checkbox title='" + resPercentages + "' name=Percentages id=PercentagesId value=0"
+ " onclick=\"javascript:OnPercentagesChanged();\" onkeypress=\"javascript:SubmitCalculation(event);\"></td>"
+ "<td class='OptionItem'><LABEL id='PercentagesCell' FOR=PercentagesId ACCESSKEY=\"p\">" + resPercentages 
+ "</LABEL></td>"
+ "<td nowrap><input type=checkbox title='" + resMax + "' name=Maximums id=MaximumsId value=0 onkeypress=\"javascript:SubmitCalculation(event);\" onClick=\"javascript:UpdateCalculateOption(this, " + HR_MAXIMUMS + ");\"></td>"
+ "<td class='OptionItem'><LABEL id='MaximumsCell' FOR=MaximumsId ACCESSKEY=\"x\">" + resMax + "</LABEL></td>"
+ "</tr>"
+ "<tr>"
+ "<td nowrap><input type=checkbox title='" + resAverages + "' name=Averages id=AveragesId value=0 onkeypress=\"javascript:SubmitCalculation(event);\" onClick=\"javascript:UpdateCalculateOption(this, " + HR_AVERAGES + ");\"></td>"
+ "<td class='OptionItem'><LABEL id='AveragesCell' FOR=AveragesId ACCESSKEY=\"a\">" + resAverages + "</LABEL></td>"
+ "<td nowrap><input type=checkbox title='" + resVariance + "' name=Variances id=VariancesId value=0 onkeypress=\"javascript:SubmitCalculation(event);\" onClick=\"javascript:UpdateCalculateOption(this, " + HR_VARIANCES + ");\"></td>"
+ "<td class='OptionItem'><LABEL id='VariancesCell' FOR=VariancesId ACCESSKEY=\"v\">" + resVariance + "</LABEL></td>"
+ "</tr>"
+ "<tr>"
+ "<td nowrap><input type=checkbox title='" + resMedian + "' name=Medians id=MediansId value=0 onkeypress=\"javascript:SubmitCalculation(event);\" onClick=\"javascript:UpdateCalculateOption(this, " + HR_MEDIANS + ");\"></td>"
+ "<td class='OptionItem'><LABEL id='MediansCell' FOR=MediansId ACCESSKEY=\"m\">" + resMedian + "</LABEL></td>"
+ "<td nowrap><input type=checkbox title='" + resStandardDeviation + "' name=StdDeviations id=StdDeviationsId value=0 onkeypress=\"javascript:SubmitCalculation(event);\" onClick=\"javascript:UpdateCalculateOption(this, " + HR_STDDEVIATIONS + ");\"></td>"
+ "<td class='OptionItem'><LABEL id='StdDeviationsCell' FOR=StdDeviationsId ACCESSKEY=\"s\">" + resStandardDeviation + "</LABEL></td>"
+ "</tr>"
+ "</table>"
+ "</td>"
+ "</tr></table>"
+ "</div></td>"
+ "</tr>"
+ "<tr><td>"
+ "<div id='RestrictionDiv' style='display:none'>"
+ "<table cellspacing=0 cellpadding=0>"
+ "<tr>"
+ "<td id='RestrictionMsg' class=OptionHeader nowrap align=left></td>"
+ "</tr>"
+ "</table>"
+ "</div>"
+ "</td></tr>"
+ "<tr id='RowMeasureTotals'>"
+ "<td>"
+ "<table>"
+ "<tr>"
+ "<td id=RptTotalHrMeasure class=OptionItem nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
+ "<LABEL FOR='TotalHrMeasure'>" + resMeasure + "</LABEL></td>"
+ "<td nowrap>&nbsp;<select class=Default title='" + resMeasure
+ ""
+ "' name=TotalHrMeasure id=TotalHrMeasure onkeypress=\"javascript:SubmitCalculation(event);\""
+ " onkeyup=\"javascript:CalculateHrMeasureChange();\" onchange=\"javascript:CalculateHrMeasureChange();\">"
+ "</select></td>"
+ "<td width=10></td>"
+ "<td id=RptTotalHrMeasureFunction class=OptionItem nowrap>" 
+ "<LABEL FOR='TotalHrMeasureFunction'>" + resTotalFunction + "</LABEL>"
+ "</td>"
+ "<td nowrap>&nbsp;<select class=Default title='" + resTotalFunction 
+ "' name=TotalHrMeasureFunction id=TotalHrMeasureFunction"
+ " onkeypress=\"javascript:SubmitCalculation(event);\""
+ " onkeyup=\"javascript:CalculateHrMeasureFunctionChange();\""
+ " onchange=\"javascript:CalculateHrMeasureFunctionChange();\">"
+ "</select></td>"
+ "</tr>"
+ "</table>"
+ "</td>"
+ "</tr>"
+ "<tr height='10'></tr>"
+ "<tr>"
+ "<td id='ValuesAndPercentagesCell' class=OptionItem nowrap>"
+ "<input type=checkbox name=ValuesPercentages title='" + resValuesPercentages 
+ "' id=ValuesPercentagesId onkeypress=\"javascript:SubmitCalculation(event);\">"
+ "<LABEL for='ValuesPercentagesId' ACCESSKEY=\"u\">" + resValuesPercentages + "</LABEL></td>"
+ "</tr>"
+ "</table>"
+ "</td>"
+ "</tr>"
+ "<tr>"
+ "<td>"
+ "<table>"
+ "<tr>"
+ "<td nowrap><input type=button name=CalculateGo value=\"" + resOK 
+ "\" onclick=\"javascript:OnCalculateOptions();\" >&nbsp;<input type=button name=Cancel value=\"" 
+ resCancel + "\" onclick=\"javascript:OnCancelOptions();\">&nbsp;<input type=button name=CalculateClearAll value='"
+ resClearAll + "' onclick=\"javascript:OnClearCalculations();\">"
+ "&nbsp;"
+ "<input name=DialogHelpButton type=button value=\"" + resHelp
+ "\" onclick=\"javascript:DisplayDialogHelp('Calculate.htm', '');\">"
+ "</td>"
+ "</tr>"
+ "</table>"
+ "</td>"
+ "</tr>"
+ "</table>"

//-------------------------------------------------------------------
function UpdateCalculateOption(i_objCheckBox, i_nOption) {
   var nHrIndex = document.aspnetForm.SelectedHierarchies.selectedIndex;
   var nHr = nHrIndex;
   var nIndex;
   var nMeasure;
   var nMeasureCount;

   for (nIndex = 0; nIndex <= nHrIndex; nIndex++) {
      if (!M_abIsCalcHierarchy[nIndex]) {
         nHr++;
      }
   }
   M_abHierarchyCalcSetting[nHr][i_nOption] = i_objCheckBox.checked;
}

//-------------------------------------------------------------------
function SyncValuesAndPercentages()
{
   var bChecked = false;
   var nHr;
   var nHrCount = M_abIsCalcHierarchy.length;
   var objCheckBox = document.aspnetForm.ValuesPercentages;
   var objCell = document.getElementById("ValuesAndPercentagesCell");

   for (nHr = 0; nHr < nHrCount; nHr++) {
      if (M_abIsCalcHierarchy[nHr]) {
         if (M_abHierarchyCalcSetting[nHr][HR_PERCENTAGES]) {
            bChecked = true;
         }
      }
   }
   if (bChecked) {
      objCheckBox.disabled = false;
      objCell.className = "OptionItem";
   }
   else {
      objCheckBox.checked = false;
      objCheckBox.disabled = true;
      objCell.className = "DisabledOptionItem";
   }
}

//-------------------------------------------------------------------
function LoadHrCalculateSettings(i_objCalcHiddenField, i_nOptionIndex)
{
   var aszTemp;
   var nHr;
   var nHrIndex;
   var nIndex;
   
   if (i_objCalcHiddenField.value != "") {
      aszTemp = i_objCalcHiddenField.value.split(",");
      for (nIndex = 0; nIndex < aszTemp.length; nIndex++) {
         nHr = aszTemp[nIndex];
         nHrIndex = FindViewHierarchy(nHr);
         if (nHrIndex >= 0) {
            M_abHierarchyCalcSetting[nHrIndex][i_nOptionIndex] = true;
         }
      }
   }
}

//-------------------------------------------------------------------
function SaveHrCalculateSettings(i_objCalcHiddenField, i_nOptionIndex)
{
   var nHr;
   var nHrCount = M_abIsCalcHierarchy.length;
   var nIndex;
   var szValue = "";

   for (nIndex = 0; nIndex < nHrCount; nIndex++) {
      if (M_abIsCalcHierarchy[nIndex]) {
         if (M_abHierarchyCalcSetting[nIndex][i_nOptionIndex]) {
            nHr = M_anViewHierarchyIndices[nIndex];
            if (szValue != "") {
               szValue += ",";
            }
            szValue += nHr;
         }
      }
   }
   i_objCalcHiddenField.value = szValue;
}

//--------------------------------------------------------------
function OnCalculateOptions()
{
	SaveHrCalculateSettings(document.aspnetForm.HierarchyTotals, HR_TOTALS);
	SaveHrCalculateSettings(document.aspnetForm.HierarchyPercentages, HR_PERCENTAGES);
	SaveHrCalculateSettings(document.aspnetForm.HierarchyAverages, HR_AVERAGES);
	SaveHrCalculateSettings(document.aspnetForm.HierarchyMinimums, HR_MINIMUMS);
	SaveHrCalculateSettings(document.aspnetForm.HierarchyMaximums, HR_MAXIMUMS);
	SaveHrCalculateSettings(document.aspnetForm.HierarchyMedians, HR_MEDIANS);
	SaveHrCalculateSettings(document.aspnetForm.HierarchyVariances, HR_VARIANCES);
	SaveHrCalculateSettings(document.aspnetForm.HierarchyStdDeviations, HR_STDDEVIATIONS);

	SaveMeasureTotalsSettings();
   
   document.aspnetForm.DimensionValuesPercentages.value = document.aspnetForm.ValuesPercentages.checked;
   
   document.aspnetForm.FirstRow.value = 0;
	document.aspnetForm.FirstCol.value = 0;
	executeWait(document.aspnetForm);
}

//--------------------------------------------------------------
function OnClearCalculations()
{
   var nHr;
   var nHrCount = M_abIsCalcHierarchy.length;
   var nMeasure;
   var nMeasureCount;
   var nOpt;

   for (nHr = 0; nHr < nHrCount; nHr++) {
      if (M_abIsCalcHierarchy[nHr]) {
         for (nOpt = 0; nOpt < HR_OPTIONS_COUNT; nOpt++) {
            M_abHierarchyCalcSetting[nHr][nOpt] = false;
         }
         nMeasureCount = M_astrCubeMeasureNames.length;
         for (nMeasure = 0; nMeasure < nMeasureCount; nMeasure++) {
            M_anHrMeasureTotals[nHr][nMeasure] = HM_TOTAL_AGGREGATE;
         }
      }
   }
   CalculateHrChange();
   SyncValuesAndPercentages();
   document.aspnetForm.SelectedHierarchies.focus();
}

//-------------------------------------------------------------------
function InitializeCalculateData()
{
   var nHr = 0;
   var nHrCount = M_abIsCalcHierarchy.length;
   var nMeasure;
   var nMeasureCount;
   var nOpt;

   M_abHierarchyCalcSetting = new Array(nHrCount);
   M_anHrMeasureTotals = new Array(nHrCount);
   for (nHr = 0; nHr < nHrCount; nHr++) {
      if (M_abIsCalcHierarchy[nHr]) {
         // array can be jagged.
         M_abHierarchyCalcSetting[nHr] = new Array(HR_OPTIONS_COUNT);
         for (nOpt = 0; nOpt < HR_OPTIONS_COUNT; nOpt++) {
            M_abHierarchyCalcSetting[nHr][nOpt] = false;
         }
         nMeasureCount = M_astrCubeMeasureNames.length;
         M_anHrMeasureTotals[nHr] = new Array(nMeasureCount);
         for (nMeasure = 0; nMeasure < nMeasureCount; nMeasure++) {
            M_anHrMeasureTotals[nHr][nMeasure] = HM_TOTAL_AGGREGATE;
         }
      }
   }
   LoadHrCalculateSettings(document.aspnetForm.HierarchyTotals, HR_TOTALS);
   LoadHrCalculateSettings(document.aspnetForm.HierarchyPercentages, HR_PERCENTAGES);
   LoadHrCalculateSettings(document.aspnetForm.HierarchyAverages, HR_AVERAGES);
   LoadHrCalculateSettings(document.aspnetForm.HierarchyMinimums, HR_MINIMUMS);
   LoadHrCalculateSettings(document.aspnetForm.HierarchyMaximums, HR_MAXIMUMS);
   LoadHrCalculateSettings(document.aspnetForm.HierarchyMedians, HR_MEDIANS);
   LoadHrCalculateSettings(document.aspnetForm.HierarchyVariances, HR_VARIANCES);
   LoadHrCalculateSettings(document.aspnetForm.HierarchyStdDeviations, HR_STDDEVIATIONS);
   LoadHrMeasureTotalsSettings();
}

function LoadHrMeasureTotalsSettings()
{
   var aszHrTotals;
   var aszMeasureInfo;
   var aszTotals;
   var nCubeHr;
   var nHr;
   var nHrCount = M_abIsCalcHierarchy.length;
   var nMeasure;
   var nMeasureIndex;
   var nTotalFn;
   var szHrTotals;
   var szMeasureInfo;
   var szTotals;
   
   szTotals = document.aspnetForm.HierarchyMeasureTotals.value;
   if (szTotals.length > 0) {
      aszTotals = szTotals.split(GMinorSegmentDelimiter);
      for (nHr = 0; nHr < nHrCount; nHr++) {
         if (M_abIsCalcHierarchy[nHr]) {
            nCubeHr = M_anViewHierarchyIndices[nHr];
            szHrTotals = aszTotals[nCubeHr];
            if (szHrTotals.length > 0) {
               aszHrTotals = szHrTotals.split(GCommaRep);
               for (nMeasure = 0; nMeasure < aszHrTotals.length; nMeasure++) {
                  szMeasureInfo = aszHrTotals[nMeasure];
                  if (szMeasureInfo.length > 0) {
                     aszMeasureInfo = szMeasureInfo.split(GSpaceRep);
                     if (aszMeasureInfo.length >= 2) {
                        nTotalFn = parseInt(aszMeasureInfo[1]);
                        if (nTotalFn != HM_TOTAL_AGGREGATE) {
                           nMeasureIndex = FindCubeMeasure(aszMeasureInfo[0]);
                           if (nMeasureIndex >= 0) {
                              M_anHrMeasureTotals[nHr][nMeasureIndex] = nTotalFn;
                           }
                        }
                     }
                  }
               }
            }
         }
      }
   }
}

function FindCubeMeasure(i_szMeasure)
{
   var nIndex;
   
   for (nIndex = 0; nIndex < M_astrCubeMeasureNames.length; nIndex++) {
      if (M_astrCubeMeasureNames[nIndex] == i_szMeasure) {
         return nIndex;
      }
   }
   return - 1;
}

function CalculateHrMeasureChange()
{
   var clFunctions = document.aspnetForm.TotalHrMeasureFunction;
   var nHrIndex = document.aspnetForm.SelectedHierarchies.selectedIndex;
   var nHr = nHrIndex;
   var nFn;
   var nIndex;
   var nMeasureIndex = document.aspnetForm.TotalHrMeasure.selectedIndex;
   var nTotalFn;

   for (nIndex = 0; nIndex <= nHrIndex; nIndex++) {
      if (!M_abIsCalcHierarchy[nIndex]) {
         nHr++;
      }
   }
   nTotalFn = M_anHrMeasureTotals[nHr][nMeasureIndex];
   for (nFn = 0; nFn < clFunctions.options.length; nFn++) {
      if (clFunctions.options[nFn].value == nTotalFn) {
         clFunctions.selectedIndex = nFn;
         break;
      }
   }
}

function CalculateHrMeasureFunctionChange()
{
   var clFunctions = document.aspnetForm.TotalHrMeasureFunction;
   var nHrIndex = document.aspnetForm.SelectedHierarchies.selectedIndex;
   var nHr = nHrIndex;
   var nFn;
   var nIndex;
   var nMeasureIndex = document.aspnetForm.TotalHrMeasure.selectedIndex;
   var nTotalFn;

   for (nIndex = 0; nIndex <= nHrIndex; nIndex++) {
      if (!M_abIsCalcHierarchy[nIndex]) {
         nHr++;
      }
   }
   nFn = clFunctions.selectedIndex;
   nTotalFn = clFunctions.options[nFn].value;
   M_anHrMeasureTotals[nHr][nMeasureIndex] = nTotalFn;
}

//-------------------------------------------------------------------
function EnableCalculateCheckBoxes(i_objCheckBox, i_nOptionIndex, i_szCellName)
{
   var objCell;
   if (i_szCellName) {
      objCell = document.getElementById(i_szCellName);
   }
   if (M_abCalculateOptions[i_nOptionIndex]) {
      i_objCheckBox.disabled = false;
      if (objCell) objCell.className = "";
   }
   else {
      i_objCheckBox.disabled = true;
      if (objCell) objCell.className = "DisabledLabel";
   }
}

//---------------------------------------------------------------
function InitializeCalculateUI()
{
   var nIndex;
   
   // add the selected hierarchies
   document.aspnetForm.SelectedHierarchies.options.length = 0;
   for (nIndex = 0; nIndex < M_abIsCalcHierarchy.length; nIndex++) {
      if (M_abIsCalcHierarchy[nIndex]) {
         SelectControlAddOption(document.aspnetForm.SelectedHierarchies, 
            M_anViewHierarchyIndices[nIndex], M_astrViewHierarchyNames[nIndex]);
      }
   }
   EnableCalculateCheckBoxes(document.aspnetForm.Totals, HR_TOTALS, "TotalsCell");
   EnableCalculateCheckBoxes(document.aspnetForm.Percentages, HR_PERCENTAGES, "PercentagesCell");
   EnableCalculateCheckBoxes(document.aspnetForm.Averages, HR_AVERAGES, "AveragesCell");
   EnableCalculateCheckBoxes(document.aspnetForm.Minimums, HR_MINIMUMS, "MinimumsCell");
   EnableCalculateCheckBoxes(document.aspnetForm.Maximums, HR_MAXIMUMS, "MaximumsCell");
   EnableCalculateCheckBoxes(document.aspnetForm.Medians, HR_MEDIANS, "MediansCell");
   EnableCalculateCheckBoxes(document.aspnetForm.Variances, HR_VARIANCES, "VariancesCell");
   EnableCalculateCheckBoxes(document.aspnetForm.StdDeviations, HR_STDDEVIATIONS, "StdDeviationsCell");

   for (nIndex = 0; nIndex < M_astrCubeMeasureCaptions.length; nIndex++) {
      SelectControlAddOption(document.aspnetForm.TotalHrMeasure, nIndex, M_astrCubeMeasureCaptions[nIndex]);
   }
   SelectControlAddOption(document.aspnetForm.TotalHrMeasureFunction, HM_TOTAL_AGGREGATE, "Aggregate");
   SelectControlAddOption(document.aspnetForm.TotalHrMeasureFunction, HM_TOTAL_SUM, "Sum");
   SelectControlAddOption(document.aspnetForm.TotalHrMeasureFunction, HM_TOTAL_MAX, "Max");
   
   if (document.aspnetForm.DimensionValuesPercentages.value == "True") document.aspnetForm.ValuesPercentages.checked = true;
   SyncValuesAndPercentages();
}

//-------------------------------------------------------------------
function ShowCalculateOptions()
{
   
   var obj_total = document.getElementsByName("document.aspnetForm.Totals");
   var obj_percentage = document.getElementsByName("document.aspnetForm.Percentages");
	zeroScrollPosition();
		
   DisplayOption(M_strCalculateOptions);
   
   InitializeCalculateData();
   InitializeCalculateUI();
   CalculateHrChange();
   setTimeout("document.aspnetForm.SelectedHierarchies.focus();", 100);
   // Resize scroll bars
   onLayoutResize();         
}

//---------------------------------------------------------------
function SubmitCalculation(e)
{
   var key = GetKeyCode(e);
   if (key ==13) {
      OnCalculateOptions();
      ResetSubmit(e);
   }
}

//-------------------------------------------------------------------
function SetCalculateCheckBoxes(i_objCheckBox, i_nHr, i_nOptionIndex)
{
   if (M_abHierarchyCalcSetting[i_nHr] && M_abHierarchyCalcSetting[i_nHr][i_nOptionIndex]) {
      i_objCheckBox.checked = true;
   }
   else {
      i_objCheckBox.checked = false;
   }
}

//---------------------------------------------------------------
function CalculateHrChange()
{
   var clMeasures;
   var clMsg;
   var nHrIndex = document.aspnetForm.SelectedHierarchies.selectedIndex;
   var nHr = nHrIndex;
   var nIndex;
   var szMsg;

   for (nIndex = 0; nIndex <= nHrIndex; nIndex++) {
      if (!M_abIsCalcHierarchy[nIndex]) {
         nHr++;
      }
   }
   if (M_abRestrictedTimeHierarchy[nHr] || M_abTimeSeriesSets[nHr]
         || M_abCustomGroups[nHr] || M_abCustomBands[nHr] || M_abMemberDescendants[nHr]) {
      document.getElementById("CalculationsDiv").style.display = "none";
      document.getElementById("RestrictionDiv").style.display = "block";
      clMsg = document.getElementById("RestrictionMsg");
      if (clMsg != null) {
         szMsg = resCalculationsDisabledForHierarchy;
         if (M_abRestrictedTimeHierarchy[nHr]) {
            szMsg += "<BR>" + resOnlyYtdAllowed;
         }
         else {
            if (M_abTimeSeriesSets[nHr]) {
               szMsg += "<BR>" + resTimeSeriesSetsSelected;
            }
            if (M_abCustomGroups[nHr]) {
               szMsg += "<BR>" + resCustomGroupsSelected;
            }
            if (M_abCustomBands[nHr]) {
               szMsg += "<BR>" + resCustomBandsSelected;
            }
            if (M_abMemberDescendants[nHr]) {
               szMsg += "<BR>" + resMemberDescendants;
            }
         }
         clMsg.innerHTML = szMsg;
      }
   }
   else {
      document.getElementById("RestrictionDiv").style.display = "none";
      document.getElementById("CalculationsDiv").style.display = "block";
      SetCalculateCheckBoxes(document.aspnetForm.Totals, nHr, HR_TOTALS);
      SetCalculateCheckBoxes(document.aspnetForm.Percentages, nHr, HR_PERCENTAGES);
      SetCalculateCheckBoxes(document.aspnetForm.Averages, nHr, HR_AVERAGES);
      SetCalculateCheckBoxes(document.aspnetForm.Minimums, nHr, HR_MINIMUMS);
      SetCalculateCheckBoxes(document.aspnetForm.Maximums, nHr, HR_MAXIMUMS);
      SetCalculateCheckBoxes(document.aspnetForm.Medians, nHr, HR_MEDIANS);
      SetCalculateCheckBoxes(document.aspnetForm.Variances, nHr, HR_VARIANCES);
      SetCalculateCheckBoxes(document.aspnetForm.StdDeviations, nHr, HR_STDDEVIATIONS);
   }
   clMeasures = document.aspnetForm.TotalHrMeasure;
   clMeasures.selectedIndex = 0;
   CalculateHrMeasureChange();
   // Resize scroll bars
   onLayoutResize();         
}

//-----------------------------------------------------------------------------
function OnPercentagesChanged()
{
   UpdateCalculateOption(document.aspnetForm.Percentages, HR_PERCENTAGES);
   SyncValuesAndPercentages();
}

function SaveMeasureTotalsSettings()
{
   var aszHrMeasureTotals = new Array();
   var nHrCount = M_abIsCalcHierarchy.length;
   var nCubeHr;
   var nIndex;
   var nMeasure;
   var nMeasureCount;
   var szEntry;
   var szValue = "";

   for (nIndex = 0; nIndex < nHrCount; nIndex++) {
      nCubeHr = M_anViewHierarchyIndices[nIndex];
      szEntry = "";
      if (M_abIsCalcHierarchy[nIndex]) {
         nMeasureCount = M_astrCubeMeasureNames.length;
         for (nMeasure = 0; nMeasure < nMeasureCount; nMeasure++) {
            if (M_anHrMeasureTotals[nIndex][nMeasure] != HM_TOTAL_AGGREGATE) {
               if (szEntry != "") {
                  szEntry += GCommaRep;
               }
               szEntry += M_astrCubeMeasureNames[nMeasure] + GSpaceRep 
                  + M_anHrMeasureTotals[nIndex][nMeasure];
            }
         }
      }
      aszHrMeasureTotals[nCubeHr] = szEntry;
   }
   for (nIndex = 0; nIndex < aszHrMeasureTotals.length; nIndex++) {
      if (nIndex > 0) {
         szValue += GMinorSegmentDelimiter;
      }
      if (typeof (aszHrMeasureTotals[nIndex]) != "undefined") {
         szValue += aszHrMeasureTotals[nIndex];
      }
   }
   document.aspnetForm.HierarchyMeasureTotals.value = szValue;
}

