﻿// Dimension order option dialog code
var DIM_ROW = 0;
var DIM_COL = 1;
var DIM_OTHER = 2;

var DIM_LEFT = 0;
var DIM_RIGHT = 1;

var DIM_DOWN = 0;
var DIM_UP = 1;

var DIM_SINGLE = 0;
var DIM_ALL = 1;
var DIM_EXTREME = 1;

var DIM_ENABLED = 0;
var DIM_DISABLED = 1;

// Max. number of characters to display in "Select" element.
var G_nMaxDimName = 25;

// array of divs representing the arrow buttons.
// format is [dim area][direction][amount to move][enabled]
// examples: M_aDimMove[DIM_COL][DIM_LEFT][DIM_ALL][DIM_DISABLED]
// examples: M_aDimNest[DIM_ROW][DIM_UP][DIM_EXTREME][DIM_ENABLED]
var M_aDimMove;
var M_aDimNest;

    // dimorder dialog box
var g_strDimOrderOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table><tr><td colspan=6 class='OptionHeader'>" + resRearrangeReport + "</td></tr>"
   + "<tr><td width='200px' class='Default'><LABEL for=\"DimRow\" onclick=\"javascript:OnDimOrderSelectChange(0, 0);\">" 
   + resRowsPrompt + "</LABEL></TD>"
   + "<TD width='50px'></TD><TD width='200px' class='Default'><LABEL for=\"DimCol\" onclick=\"javascript:OnDimOrderSelectChange(1, 0);\">" 
   + resColumnsPrompt + "</LABEL></TD>"
   + "<TD width='50px'></TD><TD width='200px' class='Default'><LABEL for=\"DimOther\" onclick=\"javascript:OnDimOrderSelectChange(2, 0);\">" + resSlicer + "</LABEL></TD>"
   + "<TD width='20px'></TD></TR>"
   + "<TR>"
   + "<TD rowspan=5><SELECT multiple class='Default' name=\"DimRow\" id=\"DimRow\" size='8' STYLE=\"width:200px\" onkeypress=\"javascript:SubmitDimOrder(event);\" onChange=\"javascript:OnDimOrderSelectChange(0);\"></SELECT></TD>"
   + "<TD></TD>"
   + "<TD rowspan=5><SELECT multiple class='Default' name=\"DimCol\" id=\"DimCol\" size='8' STYLE=\"width:200px\"  onkeypress=\"javascript:SubmitDimOrder(event);\" onChange=\"javascript:OnDimOrderSelectChange(1);\"></SELECT></TD>"
   + "<TD></TD>"
   + "<TD rowspan=5><SELECT multiple class='Default' name=\"DimOther\" id=\"DimOther\" size='8' STYLE=\"width:200px\"  onkeypress=\"javascript:SubmitDimOrder(event);\" onChange=\"javascript:OnDimOrderSelectChange(2);\"></SELECT></TD>"
   + "<TD></TD>"
   + "</TR>"
   + "<TR>"
   + "<TD align='center'><div id='DimMove1010' style='display:none'><a href=\"javascript:OnDimMoveAll(1, 0);\" onfocus=\"document.DimMove101Image.src='../Bmp/move_all_left_down.gif'\" onMouseover=\"document.DimMove101Image.src='../Bmp/move_all_left_down.gif'\" onMouseout=\"document.DimMove101Image.src='../Bmp/move_all_left.gif'\" onblur=\"document.DimMove101Image.src='../Bmp/move_all_left.gif'\"><IMG SRC='../Bmp/move_all_left.gif' Title=\"" + resDimOrderMoveAllToRow + "\" Alt=\"" + resDimOrderMoveAllToRow + "\" name='DimMove101Image' border='0'></a></div><div id='DimMove1011' style='display:block'><IMG SRC='../Bmp/move_all_left_disabled.gif' Title=\"" + resDimOrderMoveAllToRow + "\" Alt=\"" + resDimOrderMoveAllToRow + "\" border='0'></div></TD>"
   + "<TD align='center'><div id='DimMove2010' style='display:none'><a href=\"javascript:OnDimMoveAll(2, 0);\" onfocus=\"document.DimMove201Image.src='../Bmp/move_all_left_down.gif'\" onMouseover=\"document.DimMove201Image.src='../Bmp/move_all_left_down.gif'\" onMouseout=\"document.DimMove201Image.src='../Bmp/move_all_left.gif'\" onblur=\"document.DimMove201Image.src='../Bmp/move_all_left.gif'\"><IMG SRC='../Bmp/move_all_left.gif' Title=\"" + resDimOrderMoveAllToCol + "\" Alt=\"" + resDimOrderMoveAllToCol + "\" name='DimMove201Image' border='0'></a></div><div id='DimMove2011' style='display:block'><IMG SRC='../Bmp/move_all_left_disabled.gif' Title=\"" + resDimOrderMoveAllToCol + "\" Alt=\"" + resDimOrderMoveAllToCol + "\" border='0'></div></TD>"
   + "<TD></TD>"
   + "</TR>"
   + "<TR>"
   + "<TD align='center'><div id='DimMove1000' style='display:none'><a href=\"javascript:OnDimMove(1, 0);\" onfocus=\"document.DimMove100Image.src='../Bmp/move_left_down.gif'\" onMouseover=\"document.DimMove100Image.src='../Bmp/move_left_down.gif'\" onMouseout=\"document.DimMove100Image.src='../Bmp/move_left.gif'\" onblur=\"document.DimMove100Image.src='../Bmp/move_left.gif'\"><IMG SRC='../Bmp/move_left.gif' Title=\"" + resDimOrderMoveToRow + "\" Alt=\"" + resDimOrderMoveToRow + "\" name='DimMove100Image' border='0'></a></div><div id='DimMove1001' style='display:block'><IMG SRC='../Bmp/move_left_disabled.gif' Title=\"" + resDimOrderMoveToRow + "\" Alt=\"" + resDimOrderMoveToRow + "\" border='0'></div></TD>"
   + "<TD align='center'><div id='DimMove2000' style='display:none'><a href=\"javascript:OnDimMove(2, 0);\" onfocus=\"document.DimMove200Image.src='../Bmp/move_left_down.gif'\" onMouseover=\"document.DimMove200Image.src='../Bmp/move_left_down.gif'\" onMouseout=\"document.DimMove200Image.src='../Bmp/move_left.gif'\" onblur=\"document.DimMove200Image.src='../Bmp/move_left.gif'\"><IMG SRC='../Bmp/move_left.gif' Title=\"" + resDimOrderMoveToCol + "\" Alt=\"" + resDimOrderMoveToCol + "\" name='DimMove200Image' border='0'></a></div><div id='DimMove2001' style='display:block'><IMG SRC='../Bmp/move_left_disabled.gif' Title=\"" + resDimOrderMoveToCol + "\" Alt=\"" + resDimOrderMoveToCol + "\" border='0'></div></TD>"
   + "<TD></TD>"
   + "</TR>"
   + "<TR>"
   + "<TD align='center'><div id='DimMove0100' style='display:none'><a href=\"javascript:OnDimMove(0, 1);\" onfocus=\"document.DimMove010Image.src='../Bmp/move_right_down.gif'\" onMouseover=\"document.DimMove010Image.src='../Bmp/move_right_down.gif'\" onMouseout=\"document.DimMove010Image.src='../Bmp/move_right.gif'\" onblur=\"document.DimMove010Image.src='../Bmp/move_right.gif'\"><IMG SRC='../Bmp/move_right.gif' Title=\"" + resDimOrderMoveToCol + "\" Alt=\"" + resDimOrderMoveToCol + "\" name='DimMove010Image' border='0'></a></div><div id='DimMove0101' style='display:block'><IMG SRC='../Bmp/move_right_disabled.gif' Title=\"" + resDimOrderMoveToCol + "\" Alt=\"" + resDimOrderMoveToCol + "\" border='0'></div></TD>"
   + "<TD align='center'><div id='DimMove1100' style='display:none'><a href=\"javascript:OnDimMove(1, 1);\" onfocus=\"document.DimMove110Image.src='../Bmp/move_right_down.gif'\" onMouseover=\"document.DimMove110Image.src='../Bmp/move_right_down.gif'\" onMouseout=\"document.DimMove110Image.src='../Bmp/move_right.gif'\" onblur=\"document.DimMove110Image.src='../Bmp/move_right.gif'\"><IMG SRC='../Bmp/move_right.gif' Title=\"" + resDimOrderMoveToOther + "\" Alt=\"" + resDimOrderMoveToOther + "\" name='DimMove110Image' border='0'></a></div><div id='DimMove1101' style='display:block'><IMG SRC='../Bmp/move_right_disabled.gif' Title=\"" + resDimOrderMoveToOther + "\" Alt=\"" + resDimOrderMoveToOther + "\" border='0'></div></TD>"
   + "<TD></TD>"
   + "</TR>"
   + "<TR>"
   + "<TD align='center'><div id='DimMove0110' style='display:none'><a href=\"javascript:OnDimMoveAll(0, 1);\" onfocus=\"document.DimMove011Image.src='../Bmp/move_all_right_down.gif'\" onMouseover=\"document.DimMove011Image.src='../Bmp/move_all_right_down.gif'\" onMouseout=\"document.DimMove011Image.src='../Bmp/move_all_right.gif'\" onblur=\"document.DimMove011Image.src='../Bmp/move_all_right.gif'\"><IMG SRC='../Bmp/move_all_right.gif' Title=\"" + resDimOrderMoveAllToCol + "\" Alt=\"" + resDimOrderMoveAllToCol + "\" name='DimMove011Image' border='0'></a></div><div id='DimMove0111' style='display:block'><IMG SRC='../Bmp/move_all_right_disabled.gif' Title=\"" + resDimOrderMoveAllToCol + "\" Alt=\"" + resDimOrderMoveAllToCol + "\" border='0'></div></TD>"
   + "<TD align='center'><div id='DimMove1110' style='display:none'><a href=\"javascript:OnDimMoveAll(1, 1);\" onfocus=\"document.DimMove111Image.src='../Bmp/move_all_right_down.gif'\" onMouseover=\"document.DimMove111Image.src='../Bmp/move_all_right_down.gif'\" onMouseout=\"document.DimMove111Image.src='../Bmp/move_all_right.gif'\" onblur=\"document.DimMove111Image.src='../Bmp/move_all_right.gif'\"><IMG SRC='../Bmp/move_all_right.gif' Title=\"" + resDimOrderMoveAllToOther + "\" Alt=\"" + resDimOrderMoveAllToOther + "\" name='DimMove111Image' border='0'></a></div><div id='DimMove1111' style='display:block'><IMG SRC='../Bmp/move_all_right_disabled.gif' Title=\"" + resDimOrderMoveAllToOther + "\" Alt=\"" + resDimOrderMoveAllToOther + "\" border='0'></div></TD>"
   + "<TD></TD>"
   + "</TR>"
   + "<TR>"
   + "<TD nowrap>"
   + "<TABLE>"
   + "<TR><TD>"
   + "<div id='DimNest0110' style='display:none'>"
   + "<a href=\"javascript:OnDimNestExtreme(0, 1);\" onfocus=\"document.DimNest011Image.src='../Bmp/move_top_down.gif'\" onMouseover=\"document.DimNest011Image.src='../Bmp/move_top_down.gif'\" onMouseout=\"document.DimNest011Image.src='../Bmp/move_top.gif'\" onblur=\"document.DimNest011Image.src='../Bmp/move_top.gif'\"><IMG SRC='../Bmp/move_top.gif' Title=\"" + resMoveToTop + "\" Alt=\"" + resMoveToTop + "\" name='DimNest011Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest0111' style='display:block'>"
   + "<IMG SRC='../Bmp/move_top_disabled.gif' Title=\"" + resMoveToTop + "\" Alt=\"" + resMoveToTop + "\" border='0'>"
   + "</div></TD>"
   + "<TD>"
   + "<div id='DimNest0100' style='display:none'>"
   + "<a href=\"javascript:OnDimNest(0,1);\" onfocus=\"document.DimNest010Image.src='../Bmp/move_up_down.gif'\" onMouseover=\"document.DimNest010Image.src='../Bmp/move_up_down.gif'\" onMouseout=\"document.DimNest010Image.src='../Bmp/move_up.gif'\" onblur=\"document.DimNest010Image.src='../Bmp/move_up.gif'\"><IMG SRC='../Bmp/move_up.gif' Title=\"" + resMoveUp + "\" Alt=\"" + resMoveUp + "\" name='DimNest010Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest0101' style='display:block'>"
   + "<IMG SRC='../Bmp/move_up_disabled.gif' Title=\"" + resMoveUp + "\" Alt=\"" + resMoveUp + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "<TD>"
   + "<div id='DimNest0000' style='display:none'>"
   + "<a href=\"javascript:OnDimNest(0,0);\" onfocus=\"document.DimNest000Image.src='../Bmp/move_down_down.gif'\" onMouseover=\"document.DimNest000Image.src='../Bmp/move_down_down.gif'\" onMouseout=\"document.DimNest000Image.src='../Bmp/move_down.gif'\" onblur=\"document.DimNest000Image.src='../Bmp/move_down.gif'\"><IMG SRC='../Bmp/move_down.gif' Title=\"" + resMoveDown + "\" Alt=\"" + resMoveDown + "\" name='DimNest000Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest0001' style='display:block'>"
   + "<IMG SRC='../Bmp/move_down_disabled.gif' Title=\"" + resMoveDown + "\" Alt=\"" + resMoveDown + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "<TD>"
   + "<div id='DimNest0010' style='display:none'>"
   + "<a href=\"javascript:OnDimNestExtreme(0, 0);\" onfocus=\"document.DimNest001Image.src='../Bmp/move_bottom_down.gif'\" onMouseover=\"document.DimNest001Image.src='../Bmp/move_bottom_down.gif'\" onMouseout=\"document.DimNest001Image.src='../Bmp/move_bottom.gif'\" onblur=\"document.DimNest001Image.src='../Bmp/move_bottom.gif'\"><IMG SRC='../Bmp/move_bottom.gif' Title=\"" + resMoveToBottom + "\" Alt=\"" + resMoveToBottom + "\" name='DimNest001Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest0011' style='display:block'>"
   + "<IMG SRC='../Bmp/move_bottom_disabled.gif' Title=\"" + resMoveToBottom + "\" Alt=\"" + resMoveToBottom + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "</TR>"
   + "</TABLE>"
   + "</TD>"
   + "<TD></TD>"
   + "<TD nowrap>"
   + "<TABLE>"
   + "<TR>"
   + "<TD>"
   + "<div id='DimNest1110' style='display:none'>"
   + "<a href=\"javascript:OnDimNestExtreme(1, 1);\" onfocus=\"document.DimNest111Image.src='../Bmp/move_top_down.gif'\" onMouseover=\"document.DimNest111Image.src='../Bmp/move_top_down.gif'\" onMouseout=\"document.DimNest111Image.src='../Bmp/move_top.gif'\" onblur=\"document.DimNest111Image.src='../Bmp/move_top.gif'\"><IMG SRC='../Bmp/move_top.gif' Title=\"" + resMoveToTop + "\" Alt=\"" + resMoveToTop + "\" name='DimNest111Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest1111' style='display:block'>"
   + "<IMG SRC='../Bmp/move_top_disabled.gif' Title=\"" + resMoveToTop + "\" Alt=\"" + resMoveToTop + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "<TD>"
   + "<div id='DimNest1100' style='display:none'>"
   + "<a href=\"javascript:OnDimNest(1,1);\" onfocus=\"document.DimNest110Image.src='../Bmp/move_up_down.gif'\" onMouseover=\"document.DimNest110Image.src='../Bmp/move_up_down.gif'\" onMouseout=\"document.DimNest110Image.src='../Bmp/move_up.gif'\" onblur=\"document.DimNest110Image.src='../Bmp/move_up.gif'\"><IMG SRC='../Bmp/move_up.gif' Title=\"" + resMoveUp + "\" Alt=\"" + resMoveUp + "\" name='DimNest110Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest1101' style='display:block'>"
   + "<IMG SRC='../Bmp/move_up_disabled.gif' Title=\"" + resMoveUp + "\" Alt=\"" + resMoveUp + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "<TD>"
   + "<div id='DimNest1000' style='display:none'>"
   + "<a href=\"javascript:OnDimNest(1,0);\" onfocus=\"document.DimNest100Image.src='../Bmp/move_down_down.gif'\" onMouseover=\"document.DimNest100Image.src='../Bmp/move_down_down.gif'\" onMouseout=\"document.DimNest100Image.src='../Bmp/move_down.gif'\" onblur=\"document.DimNest100Image.src='../Bmp/move_down.gif'\"><IMG SRC='../Bmp/move_down.gif' Title=\"" + resMoveDown + "\" Alt=\"" + resMoveDown + "\" name='DimNest100Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest1001' style='display:block'>"
   + "<IMG SRC='../Bmp/move_down_disabled.gif' Title=\"" + resMoveDown + "\" Alt=\"" + resMoveDown + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "<TD>"
   + "<div id='DimNest1010' style='display:none'>"
   + "<a href=\"javascript:OnDimNestExtreme(1, 0);\" onfocus=\"document.DimNest101Image.src='../Bmp/move_bottom_down.gif'\" onMouseover=\"document.DimNest101Image.src='../Bmp/move_bottom_down.gif'\" onMouseout=\"document.DimNest101Image.src='../Bmp/move_bottom.gif'\" onblur=\"document.DimNest101Image.src='../Bmp/move_bottom.gif'\"><IMG SRC='../Bmp/move_bottom.gif' Title=\"" + resMoveToBottom + "\" Alt=\"" + resMoveToBottom + "\" name='DimNest101Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest1011' style='display:block'>"
   + "<IMG SRC='../Bmp/move_bottom_disabled.gif' Title=\"" + resMoveToBottom + "\" Alt=\"" + resMoveToBottom + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "</TR>"
   + "</TABLE>"
   + "</TD>"
   + "<TD></TD>"
   + "<TD nowrap>"
   + "<TABLE>"
   + "<TR>"
   + "<TD>"
   + "<div id='DimNest2110' style='display:none'>"
   + "<a href=\"javascript:OnDimNestExtreme(2, 1);\" onfocus=\"document.DimNest211Image.src='../Bmp/move_top_down.gif'\" onMouseover=\"document.DimNest211Image.src='../Bmp/move_top_down.gif'\" onMouseout=\"document.DimNest211Image.src='../Bmp/move_top.gif'\" onblur=\"document.DimNest211Image.src='../Bmp/move_top.gif'\"><IMG SRC='../Bmp/move_top.gif' Title=\"" + resMoveToTop + "\" Alt=\"" + resMoveToTop + "\" name='DimNest211Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest2111' style='display:block'>"
   + "<IMG SRC='../Bmp/move_top_disabled.gif' Title=\"" + resMoveToTop + "\" Alt=\"" + resMoveToTop + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "<TD>"
   + "<div id='DimNest2100' style='display:none'>"
   + "<a href=\"javascript:OnDimNest(2,1);\" onfocus=\"document.DimNest210Image.src='../Bmp/move_up_down.gif'\" onMouseover=\"document.DimNest210Image.src='../Bmp/move_up_down.gif'\" onMouseout=\"document.DimNest210Image.src='../Bmp/move_up.gif'\" onblur=\"document.DimNest210Image.src='../Bmp/move_up.gif'\"><IMG SRC='../Bmp/move_up.gif' Title=\"" + resMoveUp + "\" Alt=\"" + resMoveUp + "\" name='DimNest210Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest2101' style='display:block'>"
   + "<IMG SRC='../Bmp/move_up_disabled.gif' Title=\"" + resMoveUp + "\" Alt=\"" + resMoveUp + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "<TD>"
   + "<div id='DimNest2000' style='display:none'>"
   + "<a href=\"javascript:OnDimNest(2,0);\" onfocus=\"document.DimNest200Image.src='../Bmp/move_down_down.gif'\" onMouseover=\"document.DimNest200Image.src='../Bmp/move_down_down.gif'\" onMouseout=\"document.DimNest200Image.src='../Bmp/move_down.gif'\" onblur=\"document.DimNest200Image.src='../Bmp/move_down.gif'\"><IMG SRC='../Bmp/move_down.gif' Title=\"" + resMoveDown + "\" Alt=\"" + resMoveDown + "\" name='DimNest200Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest2001' style='display:block'>"
   + "<IMG SRC='../Bmp/move_down_disabled.gif' Title=\"" + resMoveDown + "\" Alt=\"" + resMoveDown + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "<TD>"
   + "<div id='DimNest2010' style='display:none'>"
   + "<a href=\"javascript:OnDimNestExtreme(2, 0);\" onfocus=\"document.DimNest201Image.src='../Bmp/move_bottom_down.gif'\" onMouseover=\"document.DimNest201Image.src='../Bmp/move_bottom_down.gif'\" onMouseout=\"document.DimNest201Image.src='../Bmp/move_bottom.gif'\" onblur=\"document.DimNest201Image.src='../Bmp/move_bottom.gif'\"><IMG SRC='../Bmp/move_bottom.gif' Title=\"" + resMoveToBottom + "\" Alt=\"" + resMoveToBottom + "\" name='DimNest201Image' border='0'></a>"
   + "</div>"
   + "<div id='DimNest2011' style='display:block'>"
   + "<IMG SRC='../Bmp/move_bottom_disabled.gif' Title=\"" + resMoveToBottom + "\" Alt=\"" + resMoveToBottom + "\" border='0'>"
   + "</div>"
   + "</TD>"
   + "</TR>"
   + "</TABLE>"
   + "</TD>"
   + "<TD></TD>"
   + "</TR>"
   + "<TR>"
   + "<TD colspan=6><input type=button name=DimOrderGo value=\"" + resUpdateReport + "\" onclick=\"javascript:OnDimOrderOK();\">"
   + "&nbsp;<input type=button name=Cancel value=\"" + resCancel + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "&nbsp;"
   + "<input name=DialogHelpButton type=button value=\"" + resHelp
   + "\" onclick=\"javascript:DisplayDialogHelp('SetDimensionOrder.htm', '');\">"
   + "</TD>"
   + "<TD></TD>"
   + "</TR>"
   + "</TABLE>"
   + "</td></tr></TABLE>"

//-------------------------------------------------------------------
// Adds options to "DimRow", "DimCol", or "DimOther" select controls, accounting for browser differences.
function DimOrderSelectControlAddOption(i_objSelect, i_szValue, i_szText, i_bSelected) {

   var objNewOption;
   var szText;
   
   if (i_objSelect) {
      objNewOption = document.createElement("option");
      objNewOption.value = i_szValue;
      objNewOption.title = unescapeHTML(i_szText);
      if (i_szText.length > G_nMaxDimName) {
         szText = i_szText.substring(0, G_nMaxDimName - 1) + G_strThreeDots;
      }
      else {
         szText = unescapeHTML(i_szText);
      }
      switch (G_nBrowser) {
		   case SAFARI :
			   i_objSelect.appendChild(objNewOption);
			   objNewOption.appendChild(document.createTextNode(szText));
			   break;
		   default:
		      objNewOption.text = szText;
		      i_objSelect.options.add(objNewOption);	
      }
      if (i_bSelected) {
         objNewOption.selected = true;
      }
   }
}

function DimsOrderPopulateSelectElement(i_clSelElement, i_szDims)
{
   var nIndex = 0;
   var nDim;
   var nDimCount;
   var nDimIndex;

   // remove all the existing options.
   nDimCount = i_clSelElement.options.length;
   for (nIndex = nDimCount - 1; nIndex >=0; nIndex--){
         i_clSelElement.remove(nIndex);
   }
   if (i_szDims != ""){
      // add the new options
      aszDims = i_szDims.split(",");
      for (nIndex = 0; nIndex < aszDims.length; nIndex++){
         nDim = aszDims[nIndex];
         nDimIndex = FindViewHierarchy(nDim);
         if (nDimIndex >= 0) {
            DimOrderSelectControlAddOption(i_clSelElement, nDim, M_astrViewHierarchyNames[nDimIndex]);
         }
      }
   }
 }
 
function ShowDimOrder()
{
   DisplayOption(g_strDimOrderOptions, "DimOrderButton");
   DimsOrderPopulateSelectElement(document.getElementById("DimRow"), document.aspnetForm.Rows.value);
   DimsOrderPopulateSelectElement(document.getElementById("DimCol"), document.aspnetForm.Cols.value);
   DimsOrderPopulateSelectElement(document.getElementById("DimOther"), document.aspnetForm.Others.value);

   // Set up dim arrays
   M_aDimMove = new Array(3);
   M_aDimNest = new Array(3);
   for (n1 = 0; n1 < 3; n1++) {
      M_aDimMove[n1] = new Array(2);
      M_aDimNest[n1] = new Array(2);
      for (n2 = 0; n2 < 2; n2++) {
         M_aDimMove[n1][n2] = new Array(2);
         M_aDimNest[n1][n2] = new Array(2);
         for (n3 = 0; n3 < 2; n3++) {
            M_aDimMove[n1][n2][n3] = new Array(2);
            M_aDimNest[n1][n2][n3] = new Array(2);
            for (n4 = 0; n4 < 2; n4++) {
               // fill the array (some values will be null)
               M_aDimMove[n1][n2][n3][n4] = document.getElementById( "DimMove" + n1 + n2 + n3 + n4);
               M_aDimNest[n1][n2][n3][n4] = document.getElementById( "DimNest" + n1 + n2 + n3 + n4);
            }
         }
      }
   }
   OnDimOrderSelectChange(DIM_ROW);
   // Resize scroll bars
   onLayoutResize();
   setTimeout("document.getElementById('DimRow').focus();", 100);
}

//------------------------------------------------------------------------------
function SubmitDimOrder(e)
{
   var key = GetKeyCode(e);
   if (key == 13) {
      OnDimOrderOK();
      ResetSubmit(e);
   }
}
function OnDimOrderOK()
{
	var objRow = document.aspnetForm.DimRow;
   var objCol = document.aspnetForm.DimCol;
   var objOther = document.aspnetForm.DimOther;
   var astrRow = new Array;
   var astrCol = new Array;
   var astrOther = new Array;
	var nIndex;

	if (objRow.options.length == 0 || objCol.options.length == 0) {
	   alert(resDimOrderRowCol);
	   return false;
	}
	// Rows
   for (nIndex = 0; nIndex < objRow.options.length; nIndex++) {
      astrRow[nIndex] = objRow.options[nIndex].value;
   }
   // Cols
   for (nIndex = 0; nIndex < objCol.options.length; nIndex++) {
      astrCol[nIndex] = objCol.options[nIndex].value;
   }
   // Other
   for (nIndex = 0; nIndex < objOther.options.length; nIndex++) {
      astrOther[nIndex] = objOther.options[nIndex].value;
   }
	document.aspnetForm.Rows.value = astrRow.join(",");
	document.aspnetForm.Cols.value = astrCol.join(",");
   document.aspnetForm.Others.value = astrOther.join(",");
   document.aspnetForm.FirstRow.value = 0;
   document.aspnetForm.FirstCol.value = 0;
   document.aspnetForm.ChartStartRow.value = 0;
   document.aspnetForm.ChartStartCol.value = 0;
   //if enlarged chart was displayed - switch back to chart preview after pivoting
   if (document.aspnetForm.FullChartRequest.value == "True") {
       document.aspnetForm.FullChartRequest.value = "False";
   }
   executeWait(document.aspnetForm);
}
//------------------------------------------------------------------------------
function DimOrderDisableAllArrows()
{
   for (n1 = 0; n1 < 3; n1++) {
      for (n2 = 0; n2 < 2; n2++) {
         for (n3 = 0; n3 < 2; n3++) {
            for (n4 = 0; n4 < 2; n4++) {
               if (M_aDimMove[n1][n2][n3][DIM_ENABLED] != null) {
                  M_aDimMove[n1][n2][n3][DIM_ENABLED].style.display = 'none';
                  M_aDimMove[n1][n2][n3][DIM_DISABLED].style.display = 'block';
               }
               if (M_aDimNest[n1][n2][n3][DIM_ENABLED] != null) {
                  M_aDimNest[n1][n2][n3][DIM_ENABLED].style.display = 'none';
                  M_aDimNest[n1][n2][n3][DIM_DISABLED].style.display = 'block';
               }
            }
         }
      }
   }
}
//------------------------------------------------------------------------------
function GetDimOrderSelectedCount(i_objSelect)
{
   var nCount = 0;
   var nIndex;
   if (i_objSelect != null) {
      for (nIndex = 0; nIndex < i_objSelect.options.length; nIndex++) {
         if (i_objSelect.options[nIndex].selected) nCount++; 
      }
   }   
   return nCount;
}
//------------------------------------------------------------------------------
function OnDimOrderSelectChange(i_nSource, i_nSelectedIndex)
{
   var objSource;
   var objDest1;
   var objDest2;
   
   // clear the selection from the 2 other dim controls.
   if (i_nSource == DIM_ROW) {
      objSource = document.aspnetForm.DimRow;
      objDest1 = document.aspnetForm.DimCol;
      objDest2 = document.aspnetForm.DimOther;
   }
   else if (i_nSource == DIM_COL) {
      objSource = document.aspnetForm.DimCol;
      objDest1 = document.aspnetForm.DimRow;
      objDest2 = document.aspnetForm.DimOther;
   }
   else if (i_nSource == DIM_OTHER) {
      objSource = document.aspnetForm.DimOther;
      objDest1 = document.aspnetForm.DimCol;
      objDest2 = document.aspnetForm.DimRow;
   }
   objDest1.selectedIndex = -1;
   objDest2.selectedIndex = -1;
   // ensure an option gets selected, preferably for the source dim.
   if (objSource.options.length == 0) {
      if (objDest1.options.length > 0) {
         objDest1.selectedIndex = 0;
      }
      else {
         if (objDest2.options.length > 0) {
            objDest2.selectedIndex = 0;
         }
      }
   }
   else if (objSource.selectedIndex == -1) {
      objSource.selectedIndex = 0;
   }
   else if (i_nSelectedIndex != null) {
      objSource.selectedIndex = i_nSelectedIndex;
   }
   DimOrderSyncButtons();
}

//------------------------------------------------------------------------------
function DimOrderSyncButtons()
{
   var nSource;
   var objSource;
   
   // enable/disable the appropriate buttons.
   DimOrderDisableAllArrows();
   // enable the move all buttons
   if (document.aspnetForm.DimRow.options.length > 0) {
      M_aDimMove[DIM_ROW][DIM_RIGHT][DIM_ALL][DIM_DISABLED].style.display = 'none';
      M_aDimMove[DIM_ROW][DIM_RIGHT][DIM_ALL][DIM_ENABLED].style.display = 'block';
   }
   if (document.aspnetForm.DimCol.options.length > 0) {
      M_aDimMove[DIM_COL][DIM_LEFT][DIM_ALL][DIM_DISABLED].style.display = 'none';
      M_aDimMove[DIM_COL][DIM_LEFT][DIM_ALL][DIM_ENABLED].style.display = 'block';
      M_aDimMove[DIM_COL][DIM_RIGHT][DIM_ALL][DIM_DISABLED].style.display = 'none';
      M_aDimMove[DIM_COL][DIM_RIGHT][DIM_ALL][DIM_ENABLED].style.display = 'block';
   }
   if (document.aspnetForm.DimOther.options.length > 0) {
      M_aDimMove[DIM_OTHER][DIM_LEFT][DIM_ALL][DIM_DISABLED].style.display = 'none';
      M_aDimMove[DIM_OTHER][DIM_LEFT][DIM_ALL][DIM_ENABLED].style.display = 'block';
   }
   // enable move single buttons.
   if (document.aspnetForm.DimRow.selectedIndex > -1) {
      nSource = DIM_ROW;
      objSource = document.aspnetForm.DimRow;
      M_aDimMove[DIM_ROW][DIM_RIGHT][DIM_SINGLE][DIM_DISABLED].style.display = 'none';
      M_aDimMove[DIM_ROW][DIM_RIGHT][DIM_SINGLE][DIM_ENABLED].style.display = 'block';
   }
   if (document.aspnetForm.DimCol.selectedIndex > -1) {
      nSource = DIM_COL;
      objSource = document.aspnetForm.DimCol;
      M_aDimMove[DIM_COL][DIM_LEFT][DIM_SINGLE][DIM_DISABLED].style.display = 'none';
      M_aDimMove[DIM_COL][DIM_LEFT][DIM_SINGLE][DIM_ENABLED].style.display = 'block';
      M_aDimMove[DIM_COL][DIM_RIGHT][DIM_SINGLE][DIM_DISABLED].style.display = 'none';
      M_aDimMove[DIM_COL][DIM_RIGHT][DIM_SINGLE][DIM_ENABLED].style.display = 'block';
   }
   if (document.aspnetForm.DimOther.selectedIndex > -1) {
      nSource = DIM_OTHER;
      objSource = document.aspnetForm.DimOther;
      M_aDimMove[DIM_OTHER][DIM_LEFT][DIM_SINGLE][DIM_DISABLED].style.display = 'none';
      M_aDimMove[DIM_OTHER][DIM_LEFT][DIM_SINGLE][DIM_ENABLED].style.display = 'block';
   }
   // enable nest buttons.
   if (!objSource.options[0].selected) {
      M_aDimNest[nSource][DIM_UP][DIM_SINGLE][DIM_DISABLED].style.display = 'none';
      M_aDimNest[nSource][DIM_UP][DIM_SINGLE][DIM_ENABLED].style.display = 'block';
      M_aDimNest[nSource][DIM_UP][DIM_EXTREME][DIM_DISABLED].style.display = 'none';
      M_aDimNest[nSource][DIM_UP][DIM_EXTREME][DIM_ENABLED].style.display = 'block';
   }
   if (!objSource.options[objSource.options.length - 1].selected) {
      M_aDimNest[nSource][DIM_DOWN][DIM_SINGLE][DIM_DISABLED].style.display = 'none';
      M_aDimNest[nSource][DIM_DOWN][DIM_SINGLE][DIM_ENABLED].style.display = 'block';
      M_aDimNest[nSource][DIM_DOWN][DIM_EXTREME][DIM_DISABLED].style.display = 'none';
      M_aDimNest[nSource][DIM_DOWN][DIM_EXTREME][DIM_ENABLED].style.display = 'block';
   }
}
//------------------------------------------------------------------------------
function OnDimMove(i_nSource, i_nDir)
{
   var objSource;
   var objDest;
   var nSelectedIndex;
   var nIndex;
   var nOptions;
   
   if (i_nSource == DIM_ROW) {
      objSource = document.aspnetForm.DimRow;
      objDest = document.aspnetForm.DimCol;
   }
   else if (i_nSource == DIM_COL) {
      objSource = document.aspnetForm.DimCol;
      if (i_nDir == DIM_LEFT) {
         objDest = document.aspnetForm.DimRow;
      }
      else {
         objDest = document.aspnetForm.DimOther;
      }
   }
   else if (i_nSource == DIM_OTHER) {
      objSource = document.aspnetForm.DimOther;
      objDest = document.aspnetForm.DimCol;
   }
   if (GetDimOrderSelectedCount(objSource) > 0) {
      nSelectedIndex = objSource.selectedIndex;
      for (nIndex = 0; nIndex < objSource.options.length; nIndex++) {
         if (objSource.options[nIndex].selected) {
            DimOrderSelectControlAddOption(objDest, objSource.options[nIndex].value, objSource.options[nIndex].title);
            objSource.options[nIndex] = null;
            nIndex = -1;   // reset index
         }
      }
      objSource.selectedIndex = Math.min(nSelectedIndex, objSource.options.length - 1);
      OnDimOrderSelectChange(i_nSource); 
   }
   objSource.focus();
}

//------------------------------------------------------------------------------
function OnDimMoveAll(i_nSource, i_nDir)
{
   var objSource;
   var objDest;
   var nDest;
   var nIndex;
   var nOptions;

   if (i_nSource == DIM_ROW) {
      objSource = document.aspnetForm.DimRow;
      objDest = document.aspnetForm.DimCol;
      nDest = DIM_COL;
   }
   else if (i_nSource == DIM_COL) {
      objSource = document.aspnetForm.DimCol;
      if (i_nDir == DIM_LEFT) {
         objDest = document.aspnetForm.DimRow;
         nDest = DIM_ROW;
      }
      else {
         objDest = document.aspnetForm.DimOther;
         nDest = DIM_OTHER;
      }
   }
   else if (i_nSource == DIM_OTHER) {
      objSource = document.aspnetForm.DimOther;
      objDest = document.aspnetForm.DimCol;
      nDest = DIM_COL;
   }
   nOptions = objSource.options.length;
   if (nOptions > 0) {
      for (nIndex = 0; nIndex < nOptions; nIndex++) {
         DimOrderSelectControlAddOption(objDest, objSource.options[0].value, objSource.options[0].title);
         objSource.options[0] = null;
      }
      OnDimOrderSelectChange(nDest);
   }
   objSource.focus();
}

//------------------------------------------------------------------------------
function OnDimNest(i_nSource, i_nDir)
{
   var objSource;
   var nIndex;
   var nIndexSwap = -1;
   var szText;
   var szTitle;
   var szValue;
   var nStart;
   var nEnd;
   var nIncrement;
   
   if (i_nSource == DIM_ROW) {
      objSource = document.aspnetForm.DimRow;
   }
   else if (i_nSource == DIM_COL) {
      objSource = document.aspnetForm.DimCol;
   }
   else if (i_nSource == DIM_OTHER) {
      objSource = document.aspnetForm.DimOther;
   }
   // check limits
   if (objSource.options.length == 0) return;
   if (GetDimOrderSelectedCount(objSource) <= 0) return;
   if (i_nDir == DIM_DOWN && objSource.options[objSource.options.length -1].selected) return;
   if (i_nDir == DIM_UP && objSource.options[0].selected) return;   
   
   nStart = (i_nDir == DIM_UP) ? 0 : objSource.options.length -1;
   nEnd = (i_nDir == DIM_UP) ? objSource.options.length -1 : 0;
   nIncrement = (i_nDir == DIM_UP) ? 1 : -1;

   for (nIndex = nStart; nIndex != nEnd + nIncrement; nIndex += nIncrement) {
      if (objSource.options[nIndex].selected) {
         nIndexSwap = nIndex - nIncrement;
         szText = objSource.options[nIndex].text;
         szValue = objSource.options[nIndex].value;
         szTitle = objSource.options[nIndex].title;
         objSource.options[nIndex].text = objSource.options[nIndexSwap].text;
         objSource.options[nIndex].value = objSource.options[nIndexSwap].value;
         objSource.options[nIndex].title = objSource.options[nIndexSwap].title;
         objSource.options[nIndexSwap].text = szText;
         objSource.options[nIndexSwap].value = szValue;
         objSource.options[nIndexSwap].title = szTitle;
         objSource.options[nIndex].selected = false;
         objSource.options[nIndexSwap].selected = true;
      }
   }
   OnDimOrderSelectChange(i_nSource);
   objSource.focus();
}
//------------------------------------------------------------------------------
// returns an array of options from a given select element.
function GetOptionsArray(i_objSelect)
{
   var nOptions;
   var nIndex;
   var aOptions = null;
   
   nOptions = i_objSelect.options.length;
   if (nOptions > 0) {
      aOptions = new Array(nOptions);
      for (nIndex = 0; nIndex < nOptions; nIndex++) {
         newOption = document.createElement("OPTION");
         newOption.text = i_objSelect.options[nIndex].text;
         newOption.value = i_objSelect.options[nIndex].value;
         newOption.title = i_objSelect.options[nIndex].title;
         newOption.selected = i_objSelect.options[nIndex].selected;
         aOptions[nIndex] = newOption;
      }
   }
   return aOptions;
}
//------------------------------------------------------------------------------
function OnDimNestExtreme(i_nSource, i_nDir)
{
   var objSource;
   var nIndex;
   var szText;
   var szValue;
   var aOptions;
   var nOptions;
   var bSelected;
   
   if (i_nSource == DIM_ROW) {
      objSource = document.aspnetForm.DimRow;
   }
   else if (i_nSource == DIM_COL) {
      objSource = document.aspnetForm.DimCol;
   }
   else if (i_nSource == DIM_OTHER) {
      objSource = document.aspnetForm.DimOther;
   }
   // check limits
   if (objSource.options.length == 0) return;
   if (GetDimOrderSelectedCount(objSource) <= 0) return;
   if (i_nDir == DIM_DOWN && objSource.options[objSource.options.length -1].selected) return;
   if (i_nDir == DIM_UP && objSource.options[0].selected) return;   
   
   aOptions = GetOptionsArray(objSource);
   // remove all the existing options.
   objSource.options.length = 0;
   
   // add the selected/non-selected elements back
   nOptions = aOptions.length;
   if (nOptions > 0) {
      for (nIndex = 0; nIndex < nOptions; nIndex++) {
         bSelected = aOptions[nIndex].selected;
         if ((i_nDir == DIM_UP && bSelected) || (i_nDir == DIM_DOWN && !bSelected)) {
            DimOrderSelectControlAddOption(objSource, aOptions[nIndex].value,
                  aOptions[nIndex].title, bSelected);
         }
      }
      for (nIndex = 0; nIndex < nOptions; nIndex++) {
         bSelected = aOptions[nIndex].selected;
         if ((i_nDir == DIM_UP && !bSelected) || (i_nDir == DIM_DOWN && bSelected)) {
            DimOrderSelectControlAddOption(objSource, aOptions[nIndex].value, 
                  aOptions[nIndex].title, bSelected);
         }
      }
   }
   OnDimOrderSelectChange(i_nSource);
   objSource.focus();
   if (i_nDir == DIM_DOWN) {
    objSource.scrollTop = objSource.scrollHeight;
   }
   if (i_nDir == DIM_UP) {
    objSource.scrollTop = 0;
   }
}

