﻿// ----------------------------------------------------------------------------
//

// Temporary code for scroll bars and tables positions, it needs to be looked at again.

var OFFSET_TOP = 1;
var OFFSET_LEFT = 2;
var BOTTOM_HEIGHT = 3;
var RIGHT_WIDTH = 4;
var WIDTH_USEDUP = 5;
var HEIGHT_USEDUP = 6;

var GPattern = /^[-]\d{1,}$|^[+]\d{1,}$|^[-]{0,1}\d*[.]\d{1,}$|^\d{1,}$|^[+]\d*[.]\d{1,}$|^[+]\d{1,}[.]{0,1}\d*$|^[-]{0,1}\d{1,}[.]{0,1}\d*$|^[-]{0,1}\d{1,}[eE][-]{0,1}\d{1,}$|^[-]{0,1}\d{1,}[eE][+]\d{1,}$|^[-]{0,1}\d*[.]\d{1,}[eE][-]{0,1}\d{1,}$|^[-]{0,1}\d*[.]\d{1,}[eE][+]\d{1,}$|^[+]\d{1,}[eE][-]{0,1}\d{1,}$|^[+]\d{1,}[eE][+]{0,1}\d{1,}$|^[+]\d*[.]\d{1,}[eE][-]{0,1}\d{1,}$|^[+]\d*[.]\d{1,}[eE][+]{0,1}\d{1,}$|^[-]{0,1}\d{1,}[.]\d*[eE][-]{0,1}\d{1,}$|^[-]{0,1}\d{1,}[.]\d*[eE][+]\d{1,}$|^[+]\d{1,}[.]\d*[eE][+]{0,1}\d{1,}$|^[+]\d{1,}[.]\d*[eE][-]\d{1,}$/;
var GForbiddenGroupNameCharacters = /[\;\'\`\:\/\*\|\?\"\"\&\%\$\!\+\=\{\}\<\>]/;
var GForbiddenGroupNameCharactersList = "\;\'\`\:\/\*\|\?\"\"\&\%\$\!\+\=\{\}\<\>";

var G_bShowNotes = false;
var G_bRemoveHierarchy = false;

// ----------------------------------------------------------------------------
var G_CloseActionsList = 0;

//Browser detection:-------------------------------------------------
//if something here is modified, similar variables in Globals.vb should be updated
var G_dIEVersion = 0;

var IE = 1;
var NETSCAPE = 2;
var FIREFOX = 3;
var SAFARI = 4;

var GCommaRep = String.fromCharCode(29);
var GSpaceRep = String.fromCharCode(28);
var GEmptyRep = String.fromCharCode(160);
var GSingleQuoteRep = String.fromCharCode(27);
var GDoubleQuoteRep = String.fromCharCode(26);
var GMajorSegmentDelimiter = String.fromCharCode(25);
var GMinorSegmentDelimiter = String.fromCharCode(24);
var GLtRep = String.fromCharCode(23);
var GGtRep = String.fromCharCode(22);
var GDelim20 = String.fromCharCode(20);

var G_strThreeDots = "...";

// Max. number of characters to display in "Data Source" drop-down when creating a new report
var G_nMaxDataSourceTitle = 80;

// Max. number of characters to display in "Select" element.
var G_nMaxSelectItems = 40;

var M_astrLanguageCodes = new Array();
var M_astrLanguageNames = new Array();

var G_nBrowser = DetectBrowser();

function DetectBrowser() {
	var ua = window.navigator.userAgent.toLowerCase();
	switch(true){
		case (ua.indexOf("msie") > 0):			
			//get IE version:
			var index = ua.indexOf ("msie");
			G_dIEVersion = parseFloat(ua.substring(index + 5));
			return IE;
			break;
		case ua.indexOf("netscape") > 0:			
			//get NS version:
			var index = ua.indexOf ("netscape/");
			return NETSCAPE;
			break;
		case ua.indexOf("firefox") > 0:
			return FIREFOX;
			break;
		case ua.indexOf("safari") > 0:
			return SAFARI;
			break;
		default:
			return 0;	
	}
}

function onLayoutResize()
{
	var clDivContents = document.getElementById("DivContentsScroll");
	var szUrl = document.location.pathname;

	if (clDivContents != null) {
		if (szUrl.indexOf("Help") >= 0) {
         // Remove scrolling from the parent div for Help pages.
         clDivContents.className = "ContentTableBody";
	    }
		// Resize the page
		RepositionContents();
		AdjustDimsListScroll();
   }
   AdjustLocalCubeSplitter();
}

function AdjustLocalCubeSplitter() {
   var clDivContents = document.getElementById("DivContents");
   var clLocalCubeSplitter = $find("ctl00_MainContent_RadLocalCubeSplitter");
   var clOKCancel = document.getElementById("OkAndCancelButtons");
   var clSplitDiv = document.getElementById("SplitDiv");
   var nAvailableHeight;
   var nAvailableWidth;

   if (clSplitDiv != null && clLocalCubeSplitter != null) {
     if (G_nBrowser == IE) {
         nAvailableHeight = clDivContents.offsetHeight - clOKCancel.offsetHeight - 1;
         nAvailableWidth = clDivContents.offsetWidth;
         clSplitDiv.style.posHeight = nAvailableHeight;
         clSplitDiv.style.posWidth = nAvailableWidth;
      }
      else {
         nAvailableHeight = clDivContents.offsetHeight - clOKCancel.offsetHeight;
         nAvailableWidth = clDivContents.offsetWidth;
         clSplitDiv.style.height = nAvailableHeight;
         clSplitDiv.style.width = nAvailableWidth;
      }
      clLocalCubeSplitter.set_height(clSplitDiv.offsetHeight);
      clLocalCubeSplitter.set_width(clSplitDiv.offsetWidth);
   }
}

function RepositionContents()
{
   var clDivContents = document.getElementById("DivContentsScroll");
   var clDivContentsMain = document.getElementById("DivContents");
   var clOtherDimsTable = document.getElementById("OtherDimsTable");
   var clContentSplitter = $find("ctl00_RadContentSplitter"); 
   var clTab;
   var clTabStrip;
   var szValue;

   if(clDivContents == null) {
      //help page, or some page that doesn't have a special scroll area
      clDivContents = document.getElementById("DivContents");
   }
   else {
      // Dimension page has different tabs with different scrolling DIVs
      clTabStrip = $find("ctl00_MainContent_RadDimensionTabs");
      if (clTabStrip != null) {
         clTab = clTabStrip.get_selectedTab();
         if (clTab != null) {
            szValue = clTab.get_value();
            if (szValue == "CustomGroupsTab") {
               clDivContents = document.getElementById("DivContentsScroll2");
            }
            else if (szValue == "CustomBandsTab") {
               clDivContents = document.getElementById("DivContentsScroll3");
            }
            else if (szValue == "TimeSeriesTab") {
               clDivContents = document.getElementById("DivContentsScroll4");
            }
         }
      }
      
      // Reports page has different tabs with different scrolling DIVS
      clTabStrip = $find("ctl00_MainContent_RadReportTabs");
      if (clTabStrip != null) {
         clTab = clTabStrip.get_selectedTab();
         if (clTab != null) {
            if (clTab.get_value() == "MyReportsTab") {
               clDivContents = document.getElementById("DivContentsScroll2");
            }
         }
      }
      
      if(clDivContents != null) {
         if (clDivContentsMain != null) {
            // Remove scrolling from the parent div, if present.
            clDivContentsMain.className = "ContentTableBody";
         }
      }
   }
      
   if(clDivContents != null) {
      AdjustObjectWidth(clDivContents);
      if (clContentSplitter != null) {
         AdjustObjectHeight(clDivContentsMain);
         if (clOtherDimsTable != null) {
            InitializeOtherDims();
         }
         AdjustObjectHeight(clDivContents);
      }
      else {
         AdjustObjectHeight(clDivContents);
      }
   }

   var szUrl = document.location.pathname.toLowerCase();
   if (szUrl.indexOf("dispview.aspx") >= 0 || szUrl.indexOf("drillthrough.aspx") >= 0
         || szUrl.indexOf("masterdrillthrough.aspx") >= 0) {
      if (szUrl.indexOf("with") < 0) {
         // Scrolling
         ResizeScrollArea();
         SyncScroll();
      }
   }
}

function GetOffSet(i_clElement, i_nDirection)
{  
    var nOffSet = 0;
    var clElement = i_clElement;
    
    switch (i_nDirection) {
		case OFFSET_TOP:
			while (clElement != null && clElement.tagName.toUpperCase() != "BODY") {
				nOffSet += clElement.offsetTop;
				clElement = clElement.offsetParent;
			}
			break;
		case OFFSET_LEFT:
			while (clElement != null && clElement.tagName.toUpperCase() != "BODY") {
				nOffSet += clElement.offsetLeft;
				clElement = clElement.offsetParent;
			}
			break;
		case BOTTOM_HEIGHT:
			if (clElement != null) {
				nOffSet = clElement.offsetHeight;
			}
			break;	
		case RIGHT_WIDTH:
			if (clElement != null) {
				nOffSet = clElement.offsetWidth;
			}
		break;
	}
    
    // If the nOffSet is equal to 1 then it is just the control placed in it then the size 
    // should be equal to 0.
    if (nOffSet == 1) {
      nOffSet = 0;
    }
    
	return nOffSet;
}

function getSize(i_clElement, i_nDirection)
{
   var nPos = 1;
	var clElement = i_clElement;
		
	if (i_nDirection == HEIGHT_USEDUP) {
		nPos += GetOffSet(clElement, OFFSET_TOP); 
   } 
   else {
      nPos += GetOffSet(clElement, OFFSET_LEFT);
   }
	return 	nPos;					
}

function AdjustObjectWidth(obj)
{
   var clLeftArea = document.getElementById("LeftArea");

   var clObj = obj;
   var nLeftAreaWidth = 0;
   var nObjLeft = 0;
   var nObjWidth = 0;

   if (clObj != null) {
      nObjLeft = getSize(clObj, WIDTH_USEDUP);
	}
	if (clLeftArea != null) {
	   nLeftAreaWidth = clLeftArea.offsetWidth;
	}

	switch (G_nBrowser){
	   case IE:

	      nObjWidth = document.body.clientWidth - nObjLeft;
	      if (clObj != null) {
	         if (Math.abs(clObj.offsetWidth - nObjWidth) > 1) {
	            // Don't adjust if the difference is only 1 pixel.
	            clObj.style.posWidth = nObjWidth;
	         }
	      }
	      break;
	   default:
	      nObjWidth = window.innerWidth - nObjLeft;
	      if (clObj != null) {
	         clObj.style.width = nObjWidth;
	      }
	      break;
	}
}

function AdjustObjectHeight(obj) {
   // layout
   var clHeaderArea = document.getElementById("HeaderArea");
   var clFooterArea = document.getElementById("FooterArea");
   
   //help page
   var clHelpPage = document.getElementById("helpPage");
   var clHelpTab = document.getElementById("Help_Tab");
   var clHelpToc = document.getElementById("Help_Toc");
   var clHelpBody = document.getElementById("Help_Body");

   var clObj = obj;
   var nHeaderAreaHeight = 0;
   var nFooterAreaTop = 0;
   var nFooterAreaHeight = 0;
   var nObjTop = 0;
   var nAvailableHeight;

   if (clObj != null) {
      nObjTop = getSize(clObj, HEIGHT_USEDUP);
   }
   if (clHeaderArea != null) {
      nHeaderAreaHeight = clHeaderArea.offsetHeight;
   }
   if (clFooterArea != null) {
      nFooterAreaHeight = clFooterArea.offsetHeight;
   }
   switch (G_nBrowser) {
      case IE:
         nAvailableHeight = document.body.clientHeight - nObjTop;
         if (Math.abs(clObj.offsetHeight - nAvailableHeight) > 1) {
            clObj.style.posHeight = nAvailableHeight;
         }
         if (clFooterArea != null) {
            nFooterAreaTop = clFooterArea.offsetTop;
            if (nFooterAreaHeight > 10) {
               nAvailableHeight -= nFooterAreaHeight;
               clObj.style.posHeight = nAvailableHeight;
            }
         }
         if (clHelpPage != null) {
            if (clHelpToc != null && clHelpTab != null) {
               clHelpToc.style.posHeight = nAvailableHeight - clHelpTab.offsetHeight - 4;
            }
            if (clHelpBody != null) {
               clHelpBody.style.posHeight = nAvailableHeight - clHelpTab.offsetHeight - 4;
            }
         }
         break;
      default:
         nAvailableHeight = window.innerHeight - nObjTop;
         if (Math.abs(clObj.offsetHeight - nAvailableHeight) > 1) {
            clObj.style.height = nAvailableHeight;
         }
         if (clFooterArea != null) {
            nFooterAreaTop = clFooterArea.offsetTop;
            if (nFooterAreaHeight > 10) {
               nAvailableHeight -= nFooterAreaHeight;
               clObj.style.height = nAvailableHeight;
            }
         }
         if (clHelpPage != null) {
            if (clHelpToc != null) {
               clHelpToc.style.height = nFooterAreaTop - getSize(clHelpToc, HEIGHT_USEDUP);
            }
            if (clHelpBody != null) {
               clHelpBody.style.height = nFooterAreaTop - getSize(clHelpBody, HEIGHT_USEDUP);
            }
         }
         break;
   }
}

// ----------------------------------------------------------------------------
function OnRequestedLang(i_szLang) 
{           
   if (document.aspnetForm.PerspectiveLanguage.value != i_szLang) {
      document.aspnetForm.PerspectiveLanguage.value = i_szLang;
      executeWait(document.aspnetForm);
   }
}

// Functions handling displaying of the tutorials
//------------------------------------------------------------------------------
function OnRequestedTutorial(i_szUrl, i_bNewWindow) {
    var clTutorialWindow;

    if (i_bNewWindow) {
        clTutorialWindow = window.open(i_szUrl, resTutorial);
        clTutorialWindow.focus();
    }
    else {
        document.aspnetForm.action = i_szUrl;
        executeWait(document.aspnetForm);
    }
}

//------------------------------------------------------------------------------
function hideSelectionControls()
{
	var selectcontrols = document.getElementsByTagName("SELECT");
   // Hide all SELECT elements.
	for (i=0; i < selectcontrols.length; i++) {
		selectcontrols[i].style.visibility = 'hidden';
	}
}

//------------------------------------------------------------------------------
function showObjectElements()
{
	var aclObjectElements = document.getElementsByTagName("OBJECT");
	// Show all OBJECT elements.
	for (i=0; i < aclObjectElements.length; i++) {
		aclObjectElements[i].style.visibility= 'visible';
	}
}

//------------------------------------------------------------------------------
function showSelectionControls()
{
	var selectcontrols = document.getElementsByTagName("SELECT");
   // Show all SELECT elements.
	for (i=0; i < selectcontrols.length; i++) {
		selectcontrols[i].style.visibility = 'visible';
	}
}

//------------------------------------------------------------------------------
// The following two functions deal with IE's bug. When relatively positionned
// Div element is embedded deep in our complicated html table structure, both
// offsetLeft and offsetTop value is wrong.
function M_pfnCalculateX(i_objDiv)
{
	var curleft = 0;
	if (i_objDiv.offsetParent)
	{
		while (i_objDiv.offsetParent)
		{
			curleft += i_objDiv.offsetLeft
			i_objDiv = i_objDiv.offsetParent;
		}
	}
	else if (i_objDiv.x) {
		curleft += i_objDiv.x;
	}

	return curleft;
}

function M_pfnCalculateY(i_objDiv)
{
	var curtop = 0;
	if (i_objDiv.offsetParent)
	{
		while (i_objDiv.offsetParent)
		{
			curtop += i_objDiv.offsetTop
			i_objDiv = i_objDiv.offsetParent;
		}
	}
	else if (i_objDiv.y) {
		curtop += i_objDiv.y;
	}

	return curtop;
}

function OnReportSummary(i_strSummaryPage, i_nReportId, i_nDimList, i_nFromRsReport) {
   var szAction;

   szAction = i_strSummaryPage + "?SummaryType=ReportSummary"
      + "&SummaryReportId=" + i_nReportId.toString()
      + "&SummaryDimList=" + i_nDimList.toString();
   if (i_nFromRsReport) {
      szAction += "&FromRsReport=" + i_nFromRsReport.toString();
   }
   document.aspnetForm.action = szAction;
   executeWait(document.aspnetForm);
}

function ShowDim(i_nDimIndex, i_nHrIndex)
{
   if (G_bRemoveHierarchy) {
      return;
   }
   ClearDrillThroughState();
   ClearMasterDrillThroughState();
   if (document.aspnetForm.MembersSearchString != null) {
      document.aspnetForm.MembersSearchString.value = "";
      document.aspnetForm.SelSearchResults.value = 0;
   }
   if (document.aspnetForm.FirstItem != null) {
      document.aspnetForm.FirstItem.value = 0;
   }
   if (document.aspnetForm.ActiveTab != null) {
      document.aspnetForm.ActiveTab.value = "";
      SelectDimensionTab('MembersTab');
   }
   if (document.aspnetForm.ItemsTreeScroll != null) {
      document.aspnetForm.ItemsTreeScroll.value = 0;
   }
   if (typeof (document.aspnetForm.DimIndex) != "undefined") {
      document.aspnetForm.DimIndex.value = i_nDimIndex;
      if (typeof (document.aspnetForm.CurrentHierarchy) != "undefined") {
         document.aspnetForm.CurrentHierarchy.value = i_nHrIndex;
      }
      if (typeof (document.aspnetForm.CurrentGroupName) != "undefined") {
         document.aspnetForm.CurrentGroupName.value = "";
      }
      document.aspnetForm.action = "../Dim/dimension.aspx";
      executeWait(document.aspnetForm);
   }
}

// Return the highest dimension
function GetMaxDim()
{
   if (typeof(document.aspnetForm) == "undefined") {
      alert(resTableNoLoaded);
		return -1; // return an error indication
   }
   return parseInt(document.aspnetForm.DimCount.value);
}

function OnLoadView(i_nReportId, i_eType, i_bChartEnabled)
{
	var szActionPage;

   if (G_bShowNotes) {
      return;
   }
   if (i_eType == 2) {
      if (i_bChartEnabled) {
         szActionPage = "dispview.aspx?ReportId=" + i_nReportId;
         document.aspnetForm.ReportType.value = "chart";
         document.aspnetForm.DisplayChart.value = "True";
      }
      else {
         alert(resChartsEnabled);
         return;
      }
   }
   else if (i_eType == 4) {
      szActionPage = "drillthrough.aspx?ReportId=" + i_nReportId;
      document.aspnetForm.ReportType.value = "drillthrough";
      document.aspnetForm.DisplayChart.value = "False";
   }
   else if (i_eType == 5) {
      szActionPage = "masterdrillthrough.aspx?ReportId=" + i_nReportId;
      document.aspnetForm.ReportType.value = "masterdrillthrough";
      document.aspnetForm.DisplayChart.value = "False";
   }
   else {
      szActionPage = "dispview.aspx?ReportId=" + i_nReportId;
      document.aspnetForm.ReportType.value = "table";
      document.aspnetForm.DisplayChart.value = "False";
   }
   document.aspnetForm.action = "../View/" + szActionPage;
   if (typeof(GetChartSize) != 'undefined') {
      GetChartSize();
   }
	executeWait(document.aspnetForm);
}

function OnLoadFirstDimension(i_nReportId)
{
   if (G_bShowNotes) {
      return;
   }
   document.aspnetForm.action = "../Dim/dimension.aspx?ReportId=" + i_nReportId;
	executeWait(document.aspnetForm);
}

function OnLoadRSReport(i_szRSServer, i_szRSReportPath, i_nReportId)
{
   if (G_bShowNotes) {
      return;
   }
   document.aspnetForm.action = "../View/RSReport.aspx?RSServer=" + i_szRSServer 
                             + "&RSReportPath=" + i_szRSReportPath + "&ReportId=" + i_nReportId;
   executeWait(document.aspnetForm);
}

function escapeHTML(str)
{
   var div = document.createElement('div');
   var text = document.createTextNode(str);
   div.appendChild(text);
   return div.innerHTML;
}

function unescapeHTML(str)
{
   var div = document.createElement('div');
   div.innerHTML = str;
   if (G_nBrowser == IE) {
      return div.innerText;
   }
   else {
      return div.textContent;
   }
}

function zeroScrollPosition()
{
   document.aspnetForm.ContentPosX.value = 0;
   document.aspnetForm.ContentPosY.value = 0;
}

// Replace the image on the specified image button by changing the suffix from the current one
// to the supplied one (e.g. 'public_reports_active.gif' -> ''public_reports_over.gif').
function SwitchImage(i_clImageButton, i_strSuffix)
{
   var strSource = i_clImageButton.src.replace(new RegExp("selected_over", "g"),"selectedover");
   var astrValues = strSource.split("_");
   var strLastPart = astrValues[astrValues.length - 1];
   var astrLastPart = strLastPart.split(".");
   if (astrLastPart[0] == "selectedover" && i_strSuffix == "active") {
      astrLastPart[0] = "selected";
   }
   else if ((astrLastPart[0] == "selected" || astrLastPart[0] == "selectedover") 
         && i_strSuffix == "over") {
      astrLastPart[0] = "selectedover";
   }
   else {
      astrLastPart[0] = i_strSuffix;
   }
   strLastPart = astrLastPart.join(".");
   astrValues[astrValues.length - 1] = strLastPart;
   strSource = astrValues.join("_");
   i_clImageButton.src = strSource.replace(new RegExp("selectedover", "g"),"selected_over");
}

function SwitchImageUrl(i_strImageUrl, i_strSuffix)
{
   var strSource = i_strImageUrl.replace(new RegExp("selected_over", "g"),"selectedover");
   var astrValues = strSource.split("_");
   var strLastPart = astrValues[astrValues.length - 1];
   var astrLastPart = strLastPart.split(".");
   if (astrLastPart[0] == "selectedover" && i_strSuffix == "active") {
      astrLastPart[0] = "selected";
   }
   else if ((astrLastPart[0] == "selected" || astrLastPart[0] == "selectedover") 
         && i_strSuffix == "over") {
      astrLastPart[0] = "selectedover";
   }
   else {
      astrLastPart[0] = i_strSuffix;
   }
   strLastPart = astrLastPart.join(".");
   astrValues[astrValues.length - 1] = strLastPart;
   strSource = astrValues.join("_");
   strSource = strSource.replace(new RegExp("selectedover", "g"),"selected_over");
   return strSource;
}

function LoginLogout()
{
   var bProceed = true;
   var nReportId;
   var strPrompt;
   var szLanguage = document.aspnetForm.PerspectiveLanguage.value;

   if (document.aspnetForm.login.value == "") {
      ShowLoginOptions();
   } 
   else {
      if (document.aspnetForm.ReportId != null) {
         nReportId = parseInt(document.aspnetForm.ReportId.value);
         if (nReportId == 0) {
            strPrompt = resReportNotSaved + "\n" + resDoYouWantToProceed;
            bProceed = confirm(strPrompt);
         }
      }
      if (bProceed) {
         document.aspnetForm.action = "../Default.aspx?PerspectiveLanguage=" + szLanguage;
         executeWait(document.aspnetForm);
      }
   }
}

function ChangePassword() {
   var clUser;
   var clPwd;

   DisplayOption(ChangePasswordOptions);
   clUser = document.getElementById("currentUser");
   if (clUser != null) {
      clUser.innerHTML = document.aspnetForm.login.value;
   }
   if (!G_dIEVersion) {
      clPwd = document.getElementById("oldpwd");
      if (clPwd != null) {
         clPwd.setAttribute("type", "password");
      }
      clPwd = document.getElementById("newpwd");
      if (clPwd != null) {
         clPwd.setAttribute("type", "password");
      }
      clPwd = document.getElementById("newpwdconfirm");
      if (clPwd != null) {
         clPwd.setAttribute("type", "password");
      }
   }
   setTimeout("document.aspnetForm.oldpwd.focus();", 100);
   // Resize scroll bars
   onLayoutResize();
}

//-----------------------------------------------------------------------------
function OnShowDimsList()
{
   var clDivDimsList = document.getElementById("ctl00_DivDimList");   
      
   if (clDivDimsList.style.display != "none")
   {        
      clDivDimsList.style.display = 'none';      
       document.getElementById("DivVerticalLineOpenTop").style.display='none';
	   document.getElementById("DivVerticalLineOpen").style.display='none';
	   document.getElementById("DivVerticalLineOpenBottom").style.display='none';
	   document.getElementById("DivVerticalLineCloseTop").style.display='';
	   document.getElementById("DivVerticalLineClose").style.display='';
	   document.getElementById("DivVerticalLineCloseBottom").style.display='';
	   
	  if(G_nBrowser != IE)
	   {	         
	     clDivDimsList.style.width= 0;
	   }	  
	   document.aspnetForm.ShowDimsListPane.value='False';
   }
   else
   {        
       document.getElementById("DivVerticalLineOpenTop").style.display='';
	   document.getElementById("DivVerticalLineOpen").style.display='';
	   document.getElementById("DivVerticalLineOpenBottom").style.display='';
	   document.getElementById("DivVerticalLineCloseTop").style.display='none';
	   document.getElementById("DivVerticalLineClose").style.display='none';
	   document.getElementById("DivVerticalLineCloseBottom").style.display='none';
	   clDivDimsList.style.display='';	  
	   document.aspnetForm.ShowDimsListPane.value='True';     
   }
   onLayoutResize();
}

function AdjustDividerStatus()
{
   if (document.aspnetForm.ShowDimsListPane.value=='False' ) {
      document.getElementById("ctl00_DivDimList").style.display='none';     
      document.getElementById("DivVerticalLineOpenTop").style.display='none';
      document.getElementById("DivVerticalLineOpen").style.display='none';
      document.getElementById("DivVerticalLineOpenBottom").style.display='none';
      document.getElementById("DivVerticalLineCloseTop").style.display='';
      document.getElementById("DivVerticalLineClose").style.display='';
      document.getElementById("DivVerticalLineCloseBottom").style.display='';
	   
      if(G_nBrowser != IE)
      {	         
         document.getElementById("ctl00_DivDimList").style.width= 0;
      }	  
   }
   else
   {
      document.getElementById("DivVerticalLineOpenTop").style.display='';
      document.getElementById("DivVerticalLineOpen").style.display='';
      document.getElementById("DivVerticalLineOpenBottom").style.display='';
      document.getElementById("DivVerticalLineCloseTop").style.display='none';
      document.getElementById("DivVerticalLineClose").style.display='none';
      document.getElementById("DivVerticalLineCloseBottom").style.display='none';
      document.getElementById("ctl00_DivDimList").style.display=''; 	  
   }
}

function ValidateSearchString(i_szSearchString)
{
   var szTemp;

   // empty string   
   szTemp = i_szSearchString;
	if ( szTemp == ""){
		alert(resSearchEnterWord);
		return false;
	}

   // spaces
	szTemp = szTemp.replace(new RegExp(" ", "g"),"");
	if ( szTemp == ""){
		alert(resSearchEnterWord);
		return false;
	}
    
   // commas
	szTemp = szTemp.replace(new RegExp("\,", "g"),"");
	if ( szTemp == ""){
		alert(resSearchEnterWord);
		return false;
	}
	
   //back slashes
   //To escape back slash in regular expression we need to put there four of them
   // but it represents just one - RegExp("\\\\", "g").
   szTemp = szTemp.replace(new RegExp("\\\\", "g"),""); 
   if ( szTemp == ""){
      alert(resSearchEnterWord);			
      return false;
   }

   //double quotes  is a special case
	szTemp = i_szSearchString;
	if (szTemp.indexOf("\"") > -1) {
		if (szTemp.indexOf("\"") == 0){
			if (szTemp.length > 1) {
				szTemp = szTemp.substr(1,szTemp.length - 1);
			}
			 else {
				alert(resSearchEnterWord);			
				return false;
			}
		}
		if (szTemp.lastIndexOf("\"") == szTemp.length - 1) {
			if (szTemp.length > 1) {
				szTemp = szTemp.substr(0,szTemp.length - 2);
			}
			else {
				alert(resSearchEnterWord);			
				return false;
			}
		}
		if (szTemp.length < 0) {			
			alert(resSearchEnterWord);			
			return false; 
		}
   } 
   return true;
}

function SubmitSearch(e)
{
   var key = GetKeyCode(e);
   if ( key == 13) {
      if (!ReportSearch()) {
         ResetSubmit(e);
      }
   }
}

function ReportSearch(i_clSearchEntry)
{
   var clSearchEntry;
   
   if (i_clSearchEntry != null) {
      clSearchEntry = i_clSearchEntry;
   }
   else {
      if (document.aspnetForm.GoToPublicReports.value == "True") {
         clSearchEntry = document.aspnetForm.SearchString;
      }
      else {
         clSearchEntry = document.aspnetForm.SearchString2;
      }
   }
   if (clSearchEntry != null) {
      var nLen;
      var szSearchString = clSearchEntry.value;
      
      if (!ValidateSearchString(szSearchString)) {
         clSearchEntry.focus();
      }
      else {
		   //replace quotes with a special character
		   szSearchString = szSearchString.replace(new RegExp("\"", "g"), GDoubleQuoteRep);
		   nLen = szSearchString.length;
         if (nLen > 1 && szSearchString.indexOf(GDoubleQuoteRep) == 0 
               && szSearchString.lastIndexOf(GDoubleQuoteRep) == nLen - 1) {
            // Fill "Phrase" segment (unquoted) - second segment
            szSearchString = GDelim20 + szSearchString.substr(1, nLen - 2) + GDelim20 + GDelim20 + GDelim20
         }
         else {
            // Fill "All Words" segment - first segment
            szSearchString = szSearchString + GDelim20 + GDelim20 + GDelim20 + GDelim20
         }
         if (document.aspnetForm.GoToPublicReports.value == "True") {
            document.aspnetForm.PublicReportsSearchString.value = escapeHTML(szSearchString);
            document.aspnetForm.PublicReportsSearchFields.value = SF_REPORT_TITLES.toString()
               + "," + SF_REPORT_NOTES.toString() + "," + SF_DATA_SOURCE_NAMES.toString()
               + "," + SF_DIMENSION_NAMES.toString();
         }
         else {
            document.aspnetForm.MyReportsSearchString.value = escapeHTML(szSearchString);
            document.aspnetForm.MyReportsSearchFields.value = SF_REPORT_TITLES.toString()
               + "," + SF_REPORT_NOTES.toString() + "," + SF_DATA_SOURCE_NAMES.toString()
               + "," + SF_DIMENSION_NAMES.toString();
         }
         clSearchEntry.value = "";
         executeWait(document.aspnetForm);
      }
   }
}

// ----------------------------------------------------------------------------
function ShowReportsFolder() {
   var bProceed = true;
   var nReportId;
   var strPrompt;

   if (document.aspnetForm.ReportId != null) {
      nReportId = parseInt(document.aspnetForm.ReportId.value);
      if (nReportId == 0) {
         strPrompt = resReportNotSaved + "\n" + resDoYouWantToProceed;
         bProceed = confirm(strPrompt);
      }
   }
   if (bProceed) {
      document.aspnetForm.action = "../Browse/BrowseTables.aspx";
      executeWait(document.aspnetForm);
   }
}

// ----------------------------------------------------------------------------
function ShowChart()
{
   zeroScrollPosition();
   document.aspnetForm.ReportType.value = "chart";
   document.aspnetForm.DisplayChart.value = "True";
   ClearDrillThroughState();
   ClearMasterDrillThroughState();
   document.aspnetForm.FirstRow.value = 0;
   document.aspnetForm.FirstCol.value = 0;
   document.aspnetForm.ChartStartRow.value = 0;
   document.aspnetForm.ChartStartCol.value = 0;
   document.aspnetForm.FullChartRequest.value = "False";
   GetChartSize();
	document.aspnetForm.action = "../View/dispview.aspx";
	executeWait(document.aspnetForm);
}

// ----------------------------------------------------------------------------
function ShowTable()
{
   zeroScrollPosition();
   document.aspnetForm.ReportType.value = "table";
   document.aspnetForm.DisplayChart.value = "False";
   ClearDrillThroughState();
   ClearMasterDrillThroughState();
   document.aspnetForm.FirstRow.value = 0;
   document.aspnetForm.FirstCol.value = 0;
   document.aspnetForm.action = "../View/dispview.aspx";
   executeWait(document.aspnetForm);
}

// ----------------------------------------------------------------------------
// ---handles underlined cells in dispview.aspx, as well as the return to drillthrough data button in help
function OnDrillThrough(i_szDrillThroughMembers, i_szDrillthroughActionId)
{
	var szBuffer = i_szDrillThroughMembers;
	szBuffer = szBuffer.replace(new RegExp(GSingleQuoteRep, "g"), "\'");
   szBuffer = szBuffer.replace(new RegExp("<", "g"), GLtRep);
   szBuffer = szBuffer.replace(new RegExp(">", "g"), GGtRep);
	document.aspnetForm.DrillThroughItems.value = szBuffer;
	
	if (typeof(document.aspnetForm.DrillthroughActionIndex) != "undefined" && i_szDrillthroughActionId != null) {
	   document.aspnetForm.DrillthroughActionIndex.value = i_szDrillthroughActionId;
	}
	
	document.aspnetForm.DimIndex.value = 1 + GetMaxDim();
	document.aspnetForm.FirstRow.value = 0;
	document.aspnetForm.FirstCol.value = 0;
	
	document.aspnetForm.ReportType.value = "drillthrough";
		
	document.aspnetForm.action = "../View/drillthrough.aspx";
	executeWait(document.aspnetForm);
}

// ----------------------------------------------------------------------------
function ShowDrillThrough()
{
   document.aspnetForm.action = "../View/Drillthrough.aspx" ;
   executeWait(document.aspnetForm);
}

// ----------------------------------------------------------------------------
function ShowMasterDrillthrough() {
   document.aspnetForm.action = "../View/MasterDrillthrough.aspx";
   executeWait(document.aspnetForm);
}

// ----------------------------------------------------------------------------
function ClearDrillThroughState()
{
   document.aspnetForm.DrillThroughItems.value = "";
}

// ----------------------------------------------------------------------------
function ClearMasterDrillThroughState() {
   document.aspnetForm.MasterDrillThroughItems.value = "";
}

// ----------------------------------------------------------------------------
// ---Display Master Drillthrough data for the entire report or a specific cell
function OnMasterDrillthrough(i_szMasterDrillthroughMembers, i_nActionId) {
   var szBuffer = i_szMasterDrillthroughMembers;

   szBuffer = szBuffer.replace(new RegExp(GSingleQuoteRep, "g"), "\'");
   szBuffer = szBuffer.replace(new RegExp("<", "g"), GLtRep);
   szBuffer = szBuffer.replace(new RegExp(">", "g"), GGtRep);
   document.aspnetForm.MasterDrillThroughItems.value = szBuffer;

   if (typeof (document.aspnetForm.MasterDrillthroughActionIndex) != "undefined" && i_nActionId != null) {
      document.aspnetForm.MasterDrillthroughActionIndex.value = i_nActionId;
   }

   document.aspnetForm.DimIndex.value = 1 + GetMaxDim();
   document.aspnetForm.FirstRow.value = 0;
   document.aspnetForm.FirstCol.value = 0;

   document.aspnetForm.ReportType.value = "masterdrillthrough";

   document.aspnetForm.action = "../View/MasterDrillthrough.aspx";
   executeWait(document.aspnetForm);
}

// SYMBOLIC FOOTNOTES
var M_aFootnoteDescriptions;
var M_aFootnoteSymbols;
var M_copyFootnotePopupBox;
var M_footnoteSpan;
var M_footnoteTimeoutID = 0;
var M_footnotetimeoutDelay = 500;
var M_footnotePopupOffset = 5;	// Distance from Footnote Symbols to Footnote Popup Box
var M_footnoteBoundary = 5;		// Distance from Footnote Popup Box to screen boundaries

if (G_dIEVersion >= 5.5) {
	var M_oPopup = window.createPopup();
}
else if (G_dIEVersion > 0) {
	var M_aHiddenSelects = new Array();
}

function DisplayFootnotes(i_aFootnoteSymbols, i_aFootnoteDescriptions, i_footnoteSpan) {
    M_aFootnoteSymbols = i_aFootnoteSymbols;
    M_aFootnoteDescriptions = i_aFootnoteDescriptions;
    M_footnoteSpan = i_footnoteSpan;

    if (M_footnoteTimeoutID != 0){
        clearTimeout(M_footnoteTimeoutID);
    }
    M_footnoteTimeoutID = setTimeout("ShowFootnotes()", M_footnotetimeoutDelay);
}

//Hides the Popup Window used for Footnotes and Missing Values
function HideFootnotes () {

    var popupBox = document.getElementById("footnotesBox");
    
    // Clear the timer
    if (M_footnoteTimeoutID != 0){
        clearTimeout(M_footnoteTimeoutID);
        M_footnoteTimeoutID = 0;
    }
    else {
			if (G_dIEVersion >= 5.5) {
				// hide the IE Popup object
				M_oPopup.hide();
			}
			else if (G_dIEVersion > 0) {
				// Show the previously hidden <SELECT> elements (Pre-5.5 IE only)
				var nIndex;
				var nLen = M_aHiddenSelects.length;
				var szName;
			
				for (nIndex = 0; nIndex < nLen; nIndex++) {
				   szName = M_aHiddenSelects[nIndex];
				   if (szName.length > 0) {
					   document.all[szName].style.visibility = "visible";
				   }
				}
				M_aHiddenSelects = new Array();
			}

			if (popupBox != null && M_copyFootnotePopupBox != null) { 
            // Reset the Div
            popupBox.parentNode.replaceChild(M_copyFootnotePopupBox,popupBox);
        }      
    }
}

function ShowFootnotes(){
    // Reset the TimeoutID
    M_footnoteTimeoutID = 0;

    var clDivContentsScroll = document.getElementById("DivContentsScroll");
    var clLeftArea = document.getElementById("LeftArea");
    var clHeaderArea = document.getElementById("HeaderArea");
    
    // Span Size and Positioning Variables
    var spanWidth = M_footnoteSpan.offsetWidth;
    var spanHeight = M_footnoteSpan.offsetHeight;
    var spanPosX = 0;
    var spanPosY = 0;
    var offsetX = 0;
    var offsetY = 0;
    var overflowY = 0;

    // Div variables
    var popupBox = document.getElementById("footnotesBox");
    var divPaddingStyle;
    var divPadding;
    
    // Available screen size (in our document window)
    var docWidth;
    var docHeight;

   if (G_dIEVersion) {
		docWidth = document.body.clientWidth - 4;	// IE 
		docHeight = document.body.clientHeight;
	   divPaddingStyle = popupBox.currentStyle.paddingLeft;
      divPadding = divPaddingStyle.substr(0,divPaddingStyle.length - 2);
   }
	else {
		docWidth = window.innerWidth;	            // NN
		docHeight = window.innerHeight;
	   divPaddingStyle = document.defaultView.getComputedStyle(popupBox,null);
      divPadding = parseInt(divPaddingStyle.getPropertyValue('padding-left'));
   }
    
   // Get the absolute position of the span
   var currentElement = M_footnoteSpan;
   spanPosX = GetOffSet(currentElement, OFFSET_LEFT);
   spanPosY = GetOffSet(currentElement, OFFSET_TOP);
   if (currentElement.nodeName == "AREA") {
      // special case for footnotes in chart areas
      var clChartImageDiv = document.getElementById("ChartImage");
      if (clChartImageDiv != null) {
         if (G_nBrowser == IE || G_nBrowser == SAFARI) {
            spanPosX += GetOffSet(clChartImageDiv, OFFSET_LEFT);
            spanPosY += GetOffSet(clChartImageDiv, OFFSET_TOP);
         }
         if (G_nBrowser != IE) {
            var aszCoords = currentElement.coords.split(",");
            var nIndex;
            var nValue;
            var maxX = 0;
            var maxY = 0;
            var minX = docWidth;
            var minY = docHeight;

            for (nIndex = 0; nIndex < aszCoords.length; nIndex++) {
               nValue = parseInt(aszCoords[nIndex]);
               if (nIndex % 2 == 0) {
                  maxX = Math.max(maxX, nValue);
                  minX = Math.min(minX, nValue);
               }
               else {
                  maxY = Math.max(maxY, nValue);
                  minY = Math.min(minY, nValue);
               }
            }
            spanPosX += minX;
            spanPosY += minY;
            spanWidth = maxX - minX;
            spanHeight = maxY - minY;
         }
         if (clDivContentsScroll != null) {
            spanPosX -= clDivContentsScroll.scrollLeft;
            spanPosY -= clDivContentsScroll.scrollTop;
         }
      }
   }
   else {
      if (clDivContentsScroll != null) {
         spanPosX -= clDivContentsScroll.scrollLeft;
         spanPosY -= clDivContentsScroll.scrollTop;
      }
   }
    
    // Save the Div Element here so that it can be easily reset
    // in the HideFootnotes function
    M_copyFootnotePopupBox = popupBox.cloneNode(true);

    // Create the <Table> to contain the Footnotes Data
    var footnotesTable = document.getElementById("footnotesTable");
    var footnoteTR;
    var footnoteSymbol;
    var footnoteDesc;

   for (index = 0; index < M_aFootnoteSymbols.length; index++) {
      footnoteSymbol = M_aFootnoteSymbols[index];
      if (footnoteSymbol != "") {
         footnoteSymbol = "(" + footnoteSymbol + ")";
         footnoteSymbol = footnoteSymbol.replace(new RegExp(GSingleQuoteRep, "g"), "'");
         footnoteSymbol = footnoteSymbol.replace(new RegExp("&#34;", "g"), "\"");
      }
      footnoteDesc = M_aFootnoteDescriptions[index];
      footnoteDesc = footnoteDesc.replace(new RegExp(GSingleQuoteRep, "g"), "'");
      footnoteDesc = footnoteDesc.replace(new RegExp("&#34;", "g"), "\"");
      footnotesTable.insertRow(index);

      footnotesTable.rows[index].insertCell(0);
      if (footnoteSymbol != "") {
         footnotesTable.rows[index].cells[0].appendChild(document.createTextNode(
	         footnoteSymbol));
      }
      else {
         footnotesTable.rows[index].cells[0].appendChild(document.createTextNode(
	         footnoteDesc));
         footnotesTable.rows[index].cells[0].colSpan = 2;
      }
      footnotesTable.rows[index].cells[0].align = "left";
      footnotesTable.rows[index].cells[0].vAlign = "top";

      if (footnoteSymbol != "") {
         footnotesTable.rows[index].insertCell(1);
         footnotesTable.rows[index].cells[1].appendChild(document.createTextNode(
	         footnoteDesc));
         footnotesTable.rows[index].cells[1].align = "left";
         footnotesTable.rows[index].cells[1].vAlign = "top";
      }
   } 
        
    // Populate, format, and position the Popup box
    // We adjust the width first because any changes in these settings will affect the height.
    // Offsets are measured from the top/left of the current span position
    var boxWidth = footnotesTable.offsetWidth + 2*divPadding;
    var boxLeft;
    var maxBoxWidth;

    // Left side of screen   
    if (spanPosX <= (docWidth/2)) {   
        maxBoxWidth = docWidth - spanWidth - spanPosX - M_footnotePopupOffset
			- M_footnoteBoundary - 2 * divPadding;
        if (boxWidth > maxBoxWidth) {
           boxWidth = maxBoxWidth;
        }
        offsetX = M_footnotePopupOffset + spanWidth;
    }
    // Right side of screen
    else {
        maxBoxWidth = spanPosX - M_footnotePopupOffset - M_footnoteBoundary - 2 * divPadding;
        if (boxWidth > maxBoxWidth) {
           boxWidth = maxBoxWidth;
        }
        offsetX = offsetX - M_footnotePopupOffset - boxWidth - 2*divPadding;
    }
    
    boxLeft = spanPosX + offsetX;
    if (G_nBrowser != IE) boxLeft = boxLeft - clLeftArea.offsetWidth;
    if(docWidth < boxLeft + boxWidth) //truncation
      boxLeft = docWidth - boxWidth - divPadding;
    
    // Set the table width and position
    footnotesTable.width = boxWidth;
    popupBox.style.left = boxLeft;
 
     
    // Allow the box to stretch vertically, if required
    // overflowY tells us how much to shift the box up or down
    // Note: There are different overflow and offset calculations
    // based on current span position
    var boxHeight = footnotesTable.offsetHeight + 2*divPadding;
    var boxTop;
    var noOverflowHeight = 0;

    // Top half of available screen 
    if (spanPosY <= ((docHeight)/2)){
        noOverflowHeight = ((docHeight) - spanPosY - spanHeight - M_footnotePopupOffset 
			- M_footnoteBoundary);
        overflowY = noOverflowHeight - boxHeight; 
        
        // only shift the box when required
        if (overflowY >= 0){
            overflowY = 0;
        }       
        offsetY = spanHeight + M_footnotePopupOffset + overflowY;
    }
    
    // Bottom half of available screen
    else {
        noOverflowHeight = spanPosY - M_footnoteBoundary - M_footnotePopupOffset;
        overflowY = boxHeight - noOverflowHeight;
        
        // only shift the box when required
        if (overflowY <= 0){
            overflowY = 0;
        }
        offsetY = overflowY - M_footnotePopupOffset - boxHeight;
    }
    
	boxTop = spanPosY + offsetY;
	
	if (G_nBrowser != IE) boxTop = boxTop - clHeaderArea.offsetHeight;
	
	// Display the message from top to bottom
  	if (boxTop < 0) {
  	  boxTop = 0;
  	}
   popupBox.style.top = boxTop;
   
	// Display it
	if (G_dIEVersion >= 5.5) {
		// use IE Popup object
		boxLeft -= document.aspnetForm.PosX.value;
		boxTop -= document.aspnetForm.PosY.value;
		var popupBody = M_oPopup.document.body;
		popupBody.innerHTML = popupBox.innerHTML;
		M_oPopup.show(boxLeft, boxTop, 0, 0);
		var realHeight = popupBody.scrollHeight;
		var realWidth = popupBody.scrollWidth;
		M_oPopup.hide();
		M_oPopup.show(boxLeft, boxTop, realWidth, realHeight, document.body);
	}
	else {
		var aSelects;
		var nElement = 0;
		var nIndex;
		
		if (G_dIEVersion > 0) {
			M_aHiddenSelects = new Array();
		}
		aSelects = document.getElementsByTagName('SELECT')
		for (nIndex = 0; nIndex < aSelects.length; nIndex++) {
			if (G_dIEVersion > 0) {
				// Hide all <SELECT> elements (Pre-5.5 IE only)
				// They could be displayed on top of the footnote window
				if (aSelects[nIndex].style.visibility != "hidden") {
					M_aHiddenSelects[nElement++] = aSelects[nIndex].name;
					aSelects[nIndex].style.visibility = "hidden";
				}
			}
			else {
				// Blur all <SELECT> elements in Netscape, their list portion
				// could be displayed on top of the footnote window.
				aSelects[nIndex].blur();
			}
		}
		
		// Show the <div> element in Netscape and pre-5.5 IE
		setTimeout("document.getElementById('footnotesBox').style.visibility = 'visible';", 1);
	}
}

//summary buttons for dispview and drillthrough
function OnCubeSummary(i_nFromDrillthrough) {
   var szSummaryPage = "SummaryWithCubeState";

   if (i_nFromDrillthrough != null) {
      if (i_nFromDrillthrough == 1) {
         szSummaryPage = "SummaryWithDrillthrough";
      }
   }
   document.aspnetForm.action = "../Browse/" + szSummaryPage + ".aspx?SummaryType=CubeSummary";
   executeWait(document.aspnetForm);
}

function OnFootnoteSummary()
{
   document.aspnetForm.FirstRow.value = 0;
   document.aspnetForm.FirstCol.value = 0;
   document.aspnetForm.action = "../Browse/SummaryWithCubeState.aspx?SummaryType=FootnoteSummary";
   executeWait(document.aspnetForm);
}

function OnMissingValueSummary()
{
   document.aspnetForm.FirstRow.value = 0;
   document.aspnetForm.FirstCol.value = 0;
   document.aspnetForm.action = "../Browse/SummaryWithCubeState.aspx?SummaryType=MissingValueSummary";
   executeWait(document.aspnetForm);
}

function OnDimensionSummary(i_strSummaryType, i_nDimIndex)
{
   document.aspnetForm.action = "../Browse/SummaryWithCubeState.aspx?SummaryType=" + i_strSummaryType.toString()
		+ "&DimensionIndex=" + i_nDimIndex.toString();
   executeWait(document.aspnetForm);
}

function OnMemberSummary(i_szDimName, i_szHierarchy, i_szMember)
{
   var szMember = i_szMember.replace(new RegExp(GSingleQuoteRep, "g"), "\'");
   szMember = szMember.replace(new RegExp("<", "g"), GLtRep);
   szMember = szMember.replace(new RegExp(">", "g"), GGtRep);
   document.aspnetForm.action = "../Browse/SummaryWithCubeState.aspx?SummaryType=MemberSummary"
		+ "&DimensionName="
		+ escape(i_szDimName) + "&HierarchyName=" + escape(i_szHierarchy)
		+ "&MemberName=" + escape(szMember);
   executeWait(document.aspnetForm);
}

function OnHierarchySummary(i_strSummaryType, i_nDimIndex, i_nHierarchyIndex)
{
   document.aspnetForm.action = "../Browse/SummaryWithCubeState.aspx?SummaryType=" + i_strSummaryType.toString()
		+ "&DimensionIndex="	+ i_nDimIndex.toString() + "&HierarchyIndex=" + i_nHierarchyIndex.toString();
   executeWait(document.aspnetForm);
}

//-------------------------------------------------------------------
// Adds options to a select control, accounting for browser differences.
function SelectControlAddOption(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_nMaxSelectItems) {
         szText = unescapeHTML(i_szText.substring(0, G_nMaxSelectItems - 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;
      }
   }
}

// ----------------------------------------------------------------------------
// TBD Chart sizing will be redone soon.  Keep this here for now.
function GetChartSize() {
	var varWidth = 0;
   var varHeight = 0;
   var varOffsetHeight = 0;
   var varOffsetWidth = 0;
   var objContentPane = document.getElementById("DivContents");
   var objFooterArea = document.getElementById("FooterArea");
   var objHeaderArea = document.getElementById("HeaderArea");
   var objTopBarRow = document.getElementById("TopBarRow");
   
   // get the height
   if (objHeaderArea) varOffsetHeight += objHeaderArea.offsetHeight;
   if (objTopBarRow) varOffsetHeight += objTopBarRow.offsetHeight * 2;
   if (objFooterArea) varOffsetHeight += objFooterArea.offsetHeight;
   // get the width
   if (objContentPane) varOffsetWidth = GetOffSet(objContentPane, OFFSET_LEFT);
   
   //ensure some reasonable minimums
   varOffsetHeight = Math.max(varOffsetHeight, 140);
   varOffsetWidth = Math.max(varOffsetWidth, 100);

	if( typeof( window.innerWidth ) == 'number' ) {
      varHeight = window.innerHeight;
      varWidth = window.innerWidth;
	} else if( document.documentElement && ( document.documentElement.clientWidth ||document.documentElement.clientHeight ) ) {
      varWidth = document.documentElement.clientWidth;
      varHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
      varHeight = document.body.clientHeight;
      varWidth = document.body.clientWidth;
	}
   varWidth= varWidth - varOffsetWidth - 50;
   varHeight = varHeight - varOffsetHeight - 50;
   if (varWidth*3>= varHeight*4) varWidth = Math.round(varHeight*4/3);
   else varHeight = Math.round(varWidth*3/4);

   if (typeof(document.aspnetForm.ChartWidth) != "undefined") document.aspnetForm.ChartWidth.value=varWidth;
   if (typeof(document.aspnetForm.ChartHeight) != "undefined")document.aspnetForm.ChartHeight.value=varHeight;
}

//-------------------------------------------------------------------
function AdjustDimsListScroll()
{
   var clDimListSplitter = $find("ctl00_RadDimListSplitter");
   var nscrollTop;

   if (clDimListSplitter != null) {
      nScrollTop = document.aspnetForm.DivDimsListScroll.value;
      clDimListSplitter.getEndPane().setScrollPos(0, parseInt(nScrollTop));
   }
}

//-------------------------------------------------------------------
function NotImplementedYet()
{
   alert("Not implemented yet");
}

//-------------------------------------------------------------------
// Wrapping and Fixed Headers
var WRAPPING_ON = 1;
var WRAPPING_OFF = 2;

//-------------------------------------------------------------------
function InitializeWrappingandFixedHeadersOptions(i_strLabelforMaximumLength)
{
   // Hidden fields
   var clFixedHeadersOnScrolling = document.aspnetForm.FixedHeadersOnScrolling;
   var clLabelLength = document.aspnetForm.LabelLength;
   if (clFixedHeadersOnScrolling != null && clLabelLength != null) {
      var clWrappingOn = document.getElementById("WrappingOn");
      var clWrappingOff = document.getElementById("WrappingOff");
      var clLabelForMaximumLength = document.getElementById("LabelForMaximumLength");
      var clMaximumLabelLength = document.getElementById("MaximumLabelLength");
      clLabelForMaximumLength.innerHTML = i_strLabelforMaximumLength;
      TableOptionsPopulateWrappingSelect(clMaximumLabelLength, 10, 5, clLabelLength.value);
      if (clFixedHeadersOnScrolling.value != "true") {
         clWrappingOn.checked = true;
         clWrappingOff.checked = false;
         clMaximumLabelLength.disabled = true;
         clLabelForMaximumLength.className = "DisabledOptionItem";
      }
      else {
         clWrappingOn.checked = false;
         clWrappingOff.checked = true;
         clMaximumLabelLength.disabled = false;
         clLabelForMaximumLength.className = "OptionItem";
      }
   }
}

//-------------------------------------------------------------------
function TableOptionsPopulateWrappingSelect(i_objSelect, i_nOptions, i_nStep, i_nDefaultValue) {
   var nIndex;
   var nValue;
   var nSelectedIndex = 0;

   if (i_objSelect) {
      SelectControlAddOption(i_objSelect, resUnlimited, resUnlimited);
      for (nIndex = 1; nIndex < i_nOptions; nIndex++) {
         nValue = (nIndex + 1) * i_nStep;
         if (nValue == i_nDefaultValue) {
            nSelectedIndex = nIndex;
         }
         SelectControlAddOption(i_objSelect, nValue, nValue.toString());
      }
      i_objSelect.selectedIndex = nSelectedIndex;
   }
}

//---------------------------------------------------------------
function SelectWrappingOption(i_nWrappingOption)
{
   var clLabelForMaximumLength = document.getElementById("LabelForMaximumLength");
   var clMaximumLabelLength = document.getElementById("MaximumLabelLength");
   var nSelectedIndex = 0;
   
   if (clMaximumLabelLength == null) {
      return;
   }
   
   if (i_nWrappingOption == WRAPPING_ON) {
      clMaximumLabelLength.disabled = true;
      clLabelForMaximumLength.className = "DisabledOptionItem";
   }
   else {
      clMaximumLabelLength.disabled = false;
      clLabelForMaximumLength.className = "OptionItem";
   }
}

function SubmitWrappingandFixedHeadersOptions()
{
   var clFixedHeadersOnScrolling = document.aspnetForm.FixedHeadersOnScrolling;
   var clLabelLength = document.aspnetForm.LabelLength;
   var nIndex;
   var nMaxLabelLength;
   
   if (clFixedHeadersOnScrolling != null && clLabelLength != null) {
      var clWrappingOn = document.getElementById("WrappingOn");
      var clMaximumLabelLength = document.getElementById("MaximumLabelLength");
      if (clWrappingOn.checked) {
         clFixedHeadersOnScrolling.value = "false";
      }
      else  {
         clFixedHeadersOnScrolling.value = "true";
         nIndex = clMaximumLabelLength.selectedIndex;
         if (nIndex > 0) {
            nMaxLabelLength = clMaximumLabelLength.options[nIndex].value;
         }
         else {
            nMaxLabelLength = 0;
         }
         clLabelLength.value = nMaxLabelLength;
      }
   }
}



function SubmitToUrl(i_szUrl, i_bNewWindow) {
   var clHelpWindow;
   
   if (i_bNewWindow) {
      clHelpWindow = window.open(i_szUrl, resHelp);
      clHelpWindow.focus();
   }
   else {
      document.aspnetForm.action = i_szUrl;
      executeWait(document.aspnetForm);
   }
}

function DisplayDialogHelp(i_szHelpPage, i_szHelpAnchor) {
   var szLanguage = document.aspnetForm.PerspectiveLanguage.value;
   var szURL = "";

   if (document.aspnetForm.SpawnedWindows.value == "True") {
      szLanguage = szLanguage.substring(0, 2);
      szURL = "../Help/" + szLanguage + "/" + i_szHelpPage;
      if (i_szHelpAnchor != "") {
         szURL += "&HelpAnchor=" + i_szHelpAnchor;
      }
      SubmitToUrl(szURL, true);
   }
}

function DisplayLogo(i_nDisplayLogo)
{
   var clLogo;

   if (i_nDisplayLogo == 1) {
      clLogo = document.getElementById("MenuAppLogo");
      if (clLogo != null) {
         clLogo.style.display = '';
      }
   }
}

function InitializeLanguageSelector(i_strLanguage, i_strLanguageCodes, i_strLanguageNames) {
   document.aspnetForm.PerspectiveLanguage.value = i_strLanguage;
   if (i_strLanguageCodes.length > 0) {
      M_astrLanguageCodes = i_strLanguageCodes.split(GCommaRep);
      M_astrLanguageNames = i_strLanguageNames.split(GCommaRep);
   }
}

function OnLanguageDropDownOpened(sender, args) {
   var clElement;
   var clLanguageDropDown = args.get_item();
   var clLanguageDropDownContainer;
   var nLeftPos;
   var nRightPos;

   clElement = clLanguageDropDown.get_element();
   nRightPos = $telerik.getLocation(clElement).x + $telerik.getSize(clElement).width;
   clLanguageDropDownContainer = clLanguageDropDown._animationContainer;
   nLeftPos = nRightPos - clLanguageDropDownContainer.clientWidth;
   clLanguageDropDownContainer.style.left = nLeftPos;
}

function ShowReportNotes(i_szReportNodeId)
{
   var nReportId;
   var szReportInfo;
   
   szReportInfo = i_szReportNodeId.split("_");
   nReportId = parseInt(szReportInfo[1]);
   OnReportSummary("../Browse/Summary.aspx", nReportId, 0)
}

function ExpandAllPublicReports() {
    RadExpandTree("ctl00_MainContent_RadPublicReportsTree", document.aspnetForm.ClosedPublicFolders);  
}

function CollapseAllPublicReports() {
   var aclNodes;
   var clNodes;
   var clTreeView = $find("ctl00_MainContent_RadPublicReportsTree");
   var nIndex;
   var szClosedFolders = "";
   var szID;

   if (clTreeView != null) {
      aclNodes = clTreeView.get_allNodes();
      for (nIndex = 0; nIndex < aclNodes.length; nIndex++) {
         if (aclNodes[nIndex].get_nodes().get_count() > 0) {
            aclNodes[nIndex].set_expanded(false);
         }
      }      
      clNodes = clTreeView.get_nodes();
      if (clNodes != null) {
         for (nIndex = 0; nIndex < clNodes.get_count(); nIndex++) {
            szID = clNodes.getNode(nIndex).get_value();
            if (szID.substring(0, 2) == "F_") {
               szClosedFolders += szID + ",";
            }
         }
      }
      document.aspnetForm.ClosedPublicFolders.value = szClosedFolders;
   }
}

function ExpandAllMyReports() {
    RadExpandTree("ctl00_MainContent_RadMyReportsTree", document.aspnetForm.ClosedMyFolders);  
}

function CollapseAllMyReports()
{
   var aclNodes;
   var clNodes;
   var clTreeView = $find("ctl00_MainContent_RadMyReportsTree");
   var nIndex;
   var szClosedFolders = "";
   var szID;

   if (clTreeView != null) {
      aclNodes = clTreeView.get_allNodes();
      for (nIndex = 0; nIndex < aclNodes.length; nIndex++) {
         if (aclNodes[nIndex].get_nodes().get_count() > 0) {
            aclNodes[nIndex].set_expanded(false);
         }
      }      
      clNodes = clTreeView.get_nodes();
      if (clNodes != null) {
         for (nIndex = 0; nIndex < clNodes.get_count(); nIndex++) {
            szID = clNodes.getNode(nIndex).get_value();
            if (szID.substring(0, 2) == "F_") {
               szClosedFolders += szID + ",";
            }
         }
      }
      document.aspnetForm.ClosedMyFolders.value = szClosedFolders;
   }
}

function ShowAllReports()
{
   if (document.aspnetForm.GoToPublicReports.value == "True") {
      document.aspnetForm.PublicReportsSearchString.value = "";
   }
   else {
      document.aspnetForm.MyReportsSearchString.value = "";
   }
   executeWait(document.aspnetForm);
}

function DeleteFoldersAndReports()
{
   var strPrompt = "";

   if (M_nCheckedReports > 0) {
      strPrompt += M_nCheckedReports.toString() + " ";
      if (M_nCheckedReports == 1) {
         strPrompt += resReportLowercase;
      }
      else {
         strPrompt += resReportsLowercase;
      }
   }
   if (M_nCheckedReports > 0 && M_nCheckedFolders > 0) {
      strPrompt += " " + resAndLowercase + " ";
   }
   if (M_nCheckedFolders > 0) {
      strPrompt += M_nCheckedFolders.toString() + " ";
      if (M_nCheckedFolders == 1) {
         strPrompt += resFolderLowercase;
      }
      else {
         strPrompt += resFoldersLowercase;
      }
   }
   if ((M_nCheckedReports == 1 && M_nCheckedFolders == 0) || (M_nCheckedReports == 0 && M_nCheckedFolders == 1)) {
      strPrompt += " " + resIsSelectedForDeletion + "\n";
   }
   else if (M_nCheckedReports > 0 || M_nCheckedFolders > 0) {
      strPrompt += " " + resAreSelectedForDeletion + "\n";
   }
   if (M_nCheckedFolders > 0) {
      strPrompt += resDeleteFolderContentsWarning + "\n";
   }
   if (strPrompt.length > 0) {
      strPrompt += resDoYouWantToProceed;
      if (confirm(strPrompt)) {
         showWait();
         PageMethods.DeleteFoldersAndReports(M_szCheckedFolderIds, M_szCheckedReportIds, document.aspnetForm.ApplicationPath.value, 
            onDeleteFoldersAndReportsComplete);
      }
   }
}

function MarkIdForDelete(io_anIds, i_nId) {
   var nIndex;

   if (io_anIds != null) {
      for (nIndex = 0; nIndex < io_anIds.length; nIndex++) {
         if (io_anIds[nIndex] == i_nId) {
            io_anIds[nIndex] = -1;
            break;
         }
      }
   }
}

function onDeleteFoldersAndReportsComplete(results, context, methodName) {
   var aszId;
   var aszIds;
   var bPublic;
   var clMenu;
   var clNode;
   var clRadToolbar;
   var clSelectionLabel;
   var clTreeView;
   var nId;
   var nIndex;
   var szID;
   var szIds;
   var szTitles;

   if (results) {
      if (document.aspnetForm.GoToPublicReports.value == "True") {
         bPublic = true;
         clTreeView = $find("ctl00_MainContent_RadPublicReportsTree");
         clMenu = $find("ctl00_RadPageMenu");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar");
      }
      else {
         bPublic = false;
         clTreeView = $find("ctl00_MainContent_RadMyReportsTree");
         clMenu = $find("ctl00_RadPageMenu2");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar2");
      }
      clTreeView.trackChanges();

      // Delete report nodes first
      aszIds = M_szCheckedReportIds.split(",");
      for (nIndex = 0; nIndex < M_nCheckedReports; nIndex++) {
         szID = aszIds[nIndex];
         clNode = clTreeView.findNodeByValue(szID);
         if (clNode != null) {
            clNode.get_parent().get_nodes().remove(clNode);
            M_nOwnersNodes -= 1;
            aszId = szID.split("_");
            if (aszId.length > 1) {
               nId = parseInt(aszId[1]);
               if (bPublic) {
                  MarkIdForDelete(M_anPublicCubeReportIds, nId);
               }
               else {
                  MarkIdForDelete(M_anMyCubeReportIds, nId);
               }
            }
         }
      }
      szIds = "";
      szTitles = "";
      if (bPublic) {
         if (M_anPublicCubeReportIds != null) {
            for (nIndex = 0; nIndex < M_anPublicCubeReportIds.length; nIndex++) {
               if (M_anPublicCubeReportIds[nIndex] >= 0) {
                  if (szIds.length > 0) {
                     szIds += GCommaRep;
                     szTitles += GCommaRep;
                  }
                  szIds += M_anPublicCubeReportIds[nIndex].toString();
                  szTitles += M_astrPublicCubeReportTitles[nIndex];
               }
            }
            if (szIds.length > 0) {
               aszIds = szIds.split(GCommaRep);
               M_astrPublicCubeReportTitles = szTitles.split(GCommaRep);
               M_anPublicCubeReportIds = new Array();
               for (nIndex = 0; nIndex < aszIds.length; nIndex++) {
                  M_anPublicCubeReportIds[nIndex] = parseInt(aszIds[nIndex]);
               }
            }
            else {
               M_anPublicCubeReportIds = new Array();
               M_astrPublicCubeReportTitles = new Array();
            }
         }
      }
      else {
         if (M_anMyCubeReportIds != null) {
            for (nIndex = 0; nIndex < M_anMyCubeReportIds.length; nIndex++) {
               if (M_anMyCubeReportIds[nIndex] >= 0) {
                  if (szIds.length > 0) {
                     szIds += GCommaRep;
                     szTitles += GCommaRep;
                  }
                  szIds += M_anMyCubeReportIds[nIndex].toString();
                  szTitles += M_astrMyCubeReportTitles[nIndex];
               }
            }
            if (szIds.length > 0) {
               aszIds = szIds.split(GCommaRep);
               M_astrMyCubeReportTitles = szTitles.split(GCommaRep);
               M_anMyCubeReportIds = new Array();
               for (nIndex = 0; nIndex < aszIds.length; nIndex++) {
                  M_anMyCubeReportIds[nIndex] = parseInt(aszIds[nIndex]);
               }
            }
            else {
               M_anMyCubeReportIds = new Array();
               M_astrMyCubeReportTitles = new Array();
            }
         }
      }
      M_szCheckedReportIds = "";
      M_nCheckedReports = 0;
      
      // Delete folder nodes next
      aszIds = M_szCheckedFolderIds.split(",");
      for (nIndex = 0; nIndex < M_nCheckedFolders; nIndex++) {
         szID = aszIds[nIndex];
         clNode = clTreeView.findNodeByValue(szID);
         if (clNode != null) {
            clNode.get_parent().get_nodes().remove(clNode);
            M_nOwnersNodes -= 1;
            aszId = szID.split("_");
            if (aszId.length > 1) {
               nId = parseInt(aszId[1]);
               MarkIdForDelete(M_anOwnersFolderIds, nId);
            }
         }
      }
      szIds = "";
      szTitles = "";
      if (M_anOwnersFolderIds != null) {
         for (nIndex = 0; nIndex < M_anOwnersFolderIds.length; nIndex++) {
            if (M_anOwnersFolderIds[nIndex] >= 0) {
               if (szIds.length > 0) {
                  szIds += GCommaRep;
                  szTitles += GCommaRep;
               }
               szIds += M_anOwnersFolderIds[nIndex].toString();
               szTitles += M_astrOwnersFolderTitles[nIndex];
            }
         }
         if (szIds.length > 0) {
            aszIds = szIds.split(GCommaRep);
            M_astrOwnersFolderTitles = szTitles.split(GCommaRep);
            M_anOwnersFolderIds = new Array();
            for (nIndex = 0; nIndex < aszIds.length; nIndex++) {
               M_anOwnersFolderIds[nIndex] = parseInt(aszIds[nIndex]);
            }
         }
         else {
            M_anOwnersFolderIds = new Array();
            M_astrOwnersFolderTitles = new Array();
         }
      }
      M_szCheckedFolderIds = "";
      M_nCheckedFolders = 0;

      clTreeView.commitChanges();

      // Update selected count of folders and reports
      if (bPublic) {
         clSelectionLabel = document.getElementById("ctl00_MainContent_NodesSelected");
      }
      else {
         clSelectionLabel = document.getElementById("ctl00_MainContent_NodesSelected2");
      }
      if (clSelectionLabel != null) {
         szLabel = "0 " + resReportsLowercase + " " + resAndLowercase + " " 
            + "0 " + resFoldersLowercase + " " + resSelected;
         clSelectionLabel.innerHTML = szLabel;
      }

      // Adjust afftected menu and toolbar items
      AdjustMenuItem(clMenu, "MenuDelete", false);
      AdjustMenuItem(clMenu, "MenuChange", false);
      AdjustMenuItem(clMenu, "MenuMoveToTop", false);
      AdjustMenuItem(clMenu, "MenuMoveUp", false);
      AdjustMenuItem(clMenu, "MenuMoveDown", false);
      AdjustMenuItem(clMenu, "MenuMoveToBottom", false);
      AdjustMenuItem(clMenu, "MenuMoveToFolder", false);
      if (clRadToolbar != null) {
         AdjustRadToolbarItem(clRadToolbar, "DeleteButton", false);
         AdjustRadToolbarItem(clRadToolbar, "ChangeButton", false);
         AdjustRadToolbarItem(clRadToolbar, "MoveTopButton", false);
         AdjustRadToolbarItem(clRadToolbar, "MoveUpButton", false);
         AdjustRadToolbarItem(clRadToolbar, "MoveDownButton", false);
         AdjustRadToolbarItem(clRadToolbar, "MoveBottomButton", false);
         AdjustRadToolbarItem(clRadToolbar, "MoveToFolderButton", false);
      }
      if (M_nOwnersNodes == 0) {
         AdjustMenuItem(clMenu, "MenuSort", false);
         if (clRadToolbar != null) {
            AdjustRadToolbarItem(clRadToolbar, "SortButton", false);
         }
      }
      if (M_anOwnersFolderIds.length == 1) {
         AdjustMenuItem(clMenu, "MenuExpandAll", false);
         AdjustMenuItem(clMenu, "MenuCollapseAll", false);
         if (clRadToolbar != null) {
            AdjustRadToolbarItem(clRadToolbar, "ExpandReportFolders", false);
            AdjustRadToolbarItem(clRadToolbar, "CollapseReportFolders", false);
         }
      }
      if (bPublic) {
         if (M_anPublicCubeReportIds.length == 0) {
            AdjustMenuItem(clMenu, "MenuReportDefinition", false);
         }
      }
      else {
         if (M_anMyCubeReportIds.length == 0) {
            AdjustMenuItem(clMenu, "MenuReportDefinition", false);
         }
      }
   }
   hideWait();
}

function ChangeFolderOrReport() {
   var szID;

   if (M_nCheckedReports == 1) {
      szID = M_szCheckedReportIds;
      ShowChangeTitleAndNotesOptions(szID);
   }
   else if (M_nCheckedFolders == 1) {
      szID = M_szCheckedFolderIds;
      ShowChangeFolderNameOptions(szID);
   }
}

function MoveNode(i_szDirection)
{
   var szID;

   if (M_nCheckedReports == 1) {
      szID = M_szCheckedReportIds;
   }
   else if (M_nCheckedFolders == 1) {
      szID = M_szCheckedFolderIds;
   }
   showWait();
   PageMethods.MoveFolderOrReport(szID, i_szDirection, document.aspnetForm.ApplicationPath.value, onMoveFolderOrReportComplete);
}

function onMoveFolderOrReportComplete(results, context, methodName) {
   var aszResults = results.split(GCommaRep);
   var bCanMoveDown;
   var bCanMoveUp;
   var bPublic;
   var clElement;
   var clMenu;
   var clNode;
   var clNodes;
   var clNotesSpan;
   var clParentNode;
   var clRadToolbar;
   var clTempNode;
   var clTempNodes;
   var clTreeView;
   var nIndex;
   var nInsertIndex = -1;
   var nLen;
   var nNodeIndex;
   var szDirection;
   var szHTML;
   var szNodeId;
   var szNodeType;
   var szNotes = "";
   var szTempNodeType;

   if (aszResults.length > 1) {
      szNodeId = aszResults[0];
      szNodeType = szNodeId.substring(0, 2);
      szDirection = aszResults[1];
      OnCancelOptions();
      if (document.aspnetForm.GoToPublicReports.value == "True") {
         bPublic = true;
         clTreeView = $find("ctl00_MainContent_RadPublicReportsTree");
         clMenu = $find("ctl00_RadPageMenu");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar");
      }
      else {
         bPublic = false;
         clTreeView = $find("ctl00_MainContent_RadMyReportsTree");
         clMenu = $find("ctl00_RadPageMenu2");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar2");
      }
      clTreeView.trackChanges();
      clNode = clTreeView.findNodeByValue(szNodeId);
      if (clNode != null) {
         clNotesSpan = document.getElementById(szNodeId + "_Notes");
         if (clNotesSpan != null) {
            szHTML = clNotesSpan.innerHTML;
            if (szHTML.indexOf("ShowReportNotes") > 0) {
               szNotes = szHTML;
            }
         }
         nNodeIndex = clNode.get_index();
         clParentNode = clNode.get_parent();
         clNodes = clParentNode.get_nodes();
         nLen = clNodes.get_count();
         if (szDirection == "top") {
            if (szNodeType == "F_") {
               nInsertIndex = 0;
            }
            else {
               clTempNode = clNodes.getNode(0);
               szTempNodeType = clTempNode.get_value().substring(0, 2);
               if (szNodeType == szTempNodeType) {
                  nInsertIndex = 0;
               }
               else {
                  for (nIndex = nNodeIndex - 1; nIndex >= 0; nIndex--) {
                     clTempNode = clNodes.getNode(nIndex);
                     szTempNodeType = clTempNode.get_value().substring(0, 2);
                     if (szNodeType != szTempNodeType) {
                        nInsertIndex = nIndex + 1;
                        break;
                     }
                  }
               }
            }
         }
         else if (szDirection == "up") {
            nInsertIndex = Math.max(nNodeIndex - 1, 0);
         }
         else if (szDirection == "down") {
            nInsertIndex = Math.min(nNodeIndex + 1, nLen - 1);
         }
         else if (szDirection == "bottom") {
            if (szNodeType == "F_") {
               clTempNode = clNodes.getNode(nLen - 1);
               szTempNodeType = clTempNode.get_value().substring(0, 2);
               if (szNodeType == szTempNodeType) {
                  nInsertIndex = nLen - 1;
               }
               else {
                  for (nIndex = nNodeIndex + 1; nIndex < nLen; nIndex++) {
                     clTempNode = clNodes.getNode(nIndex);
                     szTempNodeType = clTempNode.get_value().substring(0, 2);
                     if (szNodeType != szTempNodeType) {
                        nInsertIndex = nIndex - 1;
                        break;
                     }
                  }
               }
            }
            else {
               nInsertIndex = nLen - 1;
            }
         }
         if (nInsertIndex >= 0 && nInsertIndex != nNodeIndex) {
            clNodes.removeAt(nNodeIndex);
            if (nInsertIndex == nLen - 1) {
                clNodes.add(clNode);
                clNode.get_textElement().style.fontSize = "110%";
            }
            else if (clParentNode != null) {
                clNodes.insert(nInsertIndex, clNode);
                clNode.get_textElement().style.fontSize = "110%";
            }
            //**bug 2205 need to adjust font size of children nodes that were moved together with it
            var childNodes = clNode.get_allNodes(); 
            if (childNodes.length > 0) {
                for (var c = 0; c < childNodes.length; c++) {
                    childNodes[c].get_textElement().style.fontSize = "110%";                   
                }
            }
            //******************
            if (szNotes != "") {
                clNode = clTreeView.findNodeByValue(szNodeId);                
               if (clNode != null) {
                  szHTML = "<span id='" + szNodeId + "_Notes'>" + szNotes + "</span>";
                  clElement = clNode.get_textElement();
                 
                  if (G_nBrowser == FIREFOX) {
                     clElement.parentNode.innerHTML += szHTML;
                  }
                  else {
                     clElement.outerHTML += szHTML;
                  }
               }
            }
            clTreeView.commitChanges();

            // Adjust afftected menu and toolbar items
            if (szNodeType == "F_") {
               bCanMoveUp = (nInsertIndex > 0);
               if (nInsertIndex == nLen - 1) {
                  bCanMoveDown = false;
               }
               else {
                  clTempNode = clNodes.getNode(nInsertIndex + 1);
                  szTempNodeType = clTempNode.get_value().substring(0, 2);
                  bCanMoveDown = (szTempNodeType == szNodeType);
               }
            }
            else {
               bCanMoveDown = (nInsertIndex < nLen - 1);
               if (nInsertIndex == 0) {
                  bCanMoveUp = false;
               }
               else {
                  clTempNode = clNodes.getNode(nInsertIndex - 1);
                  szTempNodeType = clTempNode.get_value().substring(0, 2);
                  bCanMoveUp = (szTempNodeType == szNodeType);
               }
            }
            AdjustMenuItem(clMenu, "MenuMoveToTop", bCanMoveUp);
            AdjustMenuItem(clMenu, "MenuMoveUp", bCanMoveUp);
            AdjustMenuItem(clMenu, "MenuMoveDown", bCanMoveDown);
            AdjustMenuItem(clMenu, "MenuMoveToBottom", bCanMoveDown);
            if (clRadToolbar != null) {
               if (bCanMoveUp) {
                  AdjustRadToolbarItem(clRadToolbar, "MoveTopButton", true);
                  AdjustRadToolbarItem(clRadToolbar, "MoveUpButton", true);
               }
               else {
                  AdjustRadToolbarItem(clRadToolbar, "MoveTopButton", false);
                  AdjustRadToolbarItem(clRadToolbar, "MoveUpButton", false);
               }
               if (bCanMoveDown) {
                  AdjustRadToolbarItem(clRadToolbar, "MoveDownButton", true);
                  AdjustRadToolbarItem(clRadToolbar, "MoveBottomButton", true);
               }
               else {
                  AdjustRadToolbarItem(clRadToolbar, "MoveDownButton", false);
                  AdjustRadToolbarItem(clRadToolbar, "MoveBottomButton", false);
               }
            }
            clNode.scrollIntoView();
         }
      }
   }
   hideWait();
}

function AdjustMenuItem(i_clMenu, i_szID, i_bEnable) 
{
   var clMenuItem;

   clMenuItem = i_clMenu.findItemByValue(i_szID);
   if (clMenuItem != null) {
      clMenuItem.set_enabled(i_bEnable);
   }
}

function AdjustMenuItemOld(i_clMenu, i_szID, i_bEnable) {
   var clMenuItem;

   clMenuItem = i_clMenu.findItemById(i_szID);
   if (clMenuItem != null) {
      clMenuItem.set_enabled(i_bEnable);
      if (i_bEnable) {
         clMenuItem.set_lookId("DefaultItemLook");
      }
      else {
         clMenuItem.set_lookId("DisabledItemLook");
      }
   }
}

function AdjustToolbarItem(i_clToolbarItems, i_szID, i_bEnable, i_szImageUrl) 
{
   var clToolbarItem;

   clToolbarItem = i_clToolbarItems.getItemById(i_szID);
   if (clToolbarItem != null) {
      clToolbarItem.set_enabled(i_bEnable);
      clToolbarItem.set_imageUrl(i_szImageUrl);
   }
}

function AdjustRadToolbarItem(i_clToolbar, i_szID, i_bEnable) {
   var clToolbarItem;

   clToolbarItem = i_clToolbar.findItemByValue(i_szID);
   if (clToolbarItem != null) {
      clToolbarItem.set_enabled(i_bEnable);
   }
}

function ExpandDimList() {
   RadExpandTree("ctl00_RadDimensionsTree", document.aspnetForm.CollapsedDims);
}

function CollapseDimList() {
   RadCollapseTree("ctl00_RadDimensionsTree", document.aspnetForm.CollapsedDims);
}

function OnClearHierarchy(i_nHierarchy) {
   var astrNames;
   var astrNamesAndState;
   var clChecked = eval("document.aspnetForm.Chk" + i_nHierarchy);
   var clCustomBandNames = eval("document.aspnetForm.CustomBandNames" + i_nHierarchy);
   var clCustomGroupNames = eval("document.aspnetForm.AdHocGroupNames" + i_nHierarchy);
   var clMenu = $find("ctl00_RadPageMenu");
   var clRangeHelp;
   var clRangeTable;
   var clRangeTd;
   var clSelGroups = eval("document.aspnetForm.SelGroups" + i_nHierarchy);
   var clSelLevels = eval("document.aspnetForm.SelLevels" + i_nHierarchy);
   var clSelSearches = eval("document.aspnetForm.SelSearches" + i_nHierarchy);
   var clTimeSetNames = eval("document.aspnetForm.TimeSetNames" + i_nHierarchy);
   var clUnChk = eval("document.aspnetForm.UnChk" + i_nHierarchy);
   var clUnSelGroups = eval("document.aspnetForm.UnSelGroups" + i_nHierarchy);
   var nCurHierarchy = document.aspnetForm.CurrentHierarchy.value;
   var nIndex;

   if (clChecked != null) {
      clChecked.value = "";
   }
   if (clSelGroups != null) {
      clSelGroups.value = "";
   }
   if (clSelLevels != null) {
      clSelLevels.value = "";
   }
   if (clSelSearches != null) {
      clSelSearches.value = "";
   }
   if (clUnChk != null) {
      clUnChk.value = "";
   }
   if (clUnSelGroups != null) {
      clUnSelGroups.value = "";
   }
   if (clTimeSetNames != null) {
      if (clTimeSetNames.value != "") {
         astrNamesAndState = clTimeSetNames.value.split(GSpaceRep);
         for (nIndex = 0; nIndex < astrNamesAndState.length; nIndex++) {
            astrNames = astrNamesAndState[nIndex].split(GCommaRep);
            if (astrNames[1] != null) {
               astrNames[1] = "0";
               astrNamesAndState[nIndex] = astrNames.join(GCommaRep);
            }
            else {
               astrNamesAndState[nIndex] = astrNamesAndState[nIndex] + GCommaRep + "0";
            }
         }
         clTimeSetNames.value = astrNamesAndState.join(GSpaceRep);
      }
   }
   if (clCustomGroupNames != null) {
      if (clCustomGroupNames.value != "") {
         astrNamesAndState = clCustomGroupNames.value.split(GSpaceRep);
         for (nIndex = 0; nIndex < astrNamesAndState.length; nIndex++) {
            astrNames = astrNamesAndState[nIndex].split(GCommaRep);
            if (astrNames[1] != null) {
               astrNames[1] = "0";
               astrNamesAndState[nIndex] = astrNames.join(GCommaRep);
            }
            else {
               astrNamesAndState[nIndex] = astrNamesAndState[nIndex] + GCommaRep + "0";
            }
         }
         clCustomGroupNames.value = astrNamesAndState.join(GSpaceRep);
      }
   }
   if (clCustomBandNames != null) {
      if (clCustomBandNames.value != "") {
         astrNamesAndState = clCustomBandNames.value.split(GSpaceRep);
         for (nIndex = 0; nIndex < astrNamesAndState.length; nIndex++) {
            astrNames = astrNamesAndState[nIndex].split(GCommaRep);
            if (astrNames[1] != null) {
               astrNames[1] = "0";
               astrNamesAndState[nIndex] = astrNames.join(GCommaRep);
            }
            else {
               astrNamesAndState[nIndex] = astrNamesAndState[nIndex] + GCommaRep + "0";
            }
         }
         clCustomBandNames.value = astrNamesAndState.join(GSpaceRep);
      }
   }
   if (i_nHierarchy == nCurHierarchy) {
      UpdateHierarchyNode(i_nHierarchy, "CurrentDimTreeView", false);
      UncheckAllNodes('ctl00_MainContent_RadMembersTree');
      G_nMembersSelected = 0;
      clRangeHelp = document.getElementById("RangeHelp");
      clRangeTable = document.getElementById("RangeTable");
      clRangeTd = document.getElementById("RangeTd");
      clRangeHelp.style.display = "none";
      clRangeTable.style.display = "";
      clRangeTd.className = "OptionItemLight";
      G_bSelectRange = false;
      G_bClearRange = false;
      G_clRangeStartNode = null;
      AdjustMenuItem(clMenu, "MenuExpandToFirstSelected", false);
      AdjustMenuItem(clMenu, "MenuExpandToAllSelected", false);
      if (typeof (ExpandContextMenu) != "undefined") {
         AdjustMenuItemOld(ExpandContextMenu, "ExpandToFirstSelectedContextItem", false);
         AdjustMenuItemOld(ExpandContextMenu, "ExpandToAllSelectedContextItem", false);
      }
      if (clTimeSetNames != null) {
         if (clTimeSetNames.value != "") {
            UncheckAllNodes('ctl00_MainContent_RadTimeSeriesTree');
            G_nTimeSeriesSelected = 0;
            clRangeHelp = document.getElementById("TimeSeriesRangeHelp");
            clRangeTable = document.getElementById("TimeSeriesRangeTable");
            clRangeTd = document.getElementById("TimeSeriesRangeTd");
            clRangeHelp.style.display = "none";
            clRangeTable.style.display = "";
            clRangeTd.className = "OptionItemLight";
            G_bTimeSeriesSelectRange = false;
            G_bTimeSeriesClearRange = false;
            G_clTimeSeriesRangeStartNode = null;
         }
      }
      if (clCustomGroupNames != null) {
         if (clCustomGroupNames.value != "") {
            UncheckAllNodes('ctl00_MainContent_RadCustomGroupTree');
            G_nCustomGroupsSelected = 0;
            clRangeHelp = document.getElementById("CustomGroupRangeHelp");
            clRangeTable = document.getElementById("CustomGroupRangeTable");
            clRangeTd = document.getElementById("CustomGroupRangeTd");
            clRangeHelp.style.display = "none";
            clRangeTable.style.display = "";
            clRangeTd.className = "OptionItemLight";
            G_bCustomGroupSelectRange = false;
            G_bCustomGroupClearRange = false;
            G_clCustomGroupRangeStartNode = null;
         }
      }
      if (clCustomBandNames != null) {
         if (clCustomBandNames.value != "") {
            UncheckAllNodes('ctl00_MainContent_RadBandTree');
            G_nCustomBandsSelected = 0;
            clRangeHelp = document.getElementById("BandRangeHelp");
            clRangeTable = document.getElementById("BandRangeTable");
            clRangeTd = document.getElementById("BandRangeTd");
            clRangeHelp.style.display = "none";
            clRangeTable.style.display = "";
            clRangeTd.className = "OptionItemLight";
            G_bBandSelectRange = false;
            G_bBandClearRange = false;
            G_clBandRangeStartNode = null;
         }
      }
   }
   else {
      UpdateHierarchyNode(i_nHierarchy, "DataBodyTablesTreeView", false);
   }
   G_bRemoveHierarchy = false;
}

function OnRemoveHierarchy(i_nHierarchy) {
   OnClearHierarchy(i_nHierarchy);
   document.aspnetForm.ResetReportHierarchies.value = "1";
   executeWait(document.aspnetForm);
}

function ShowUpdatedReportAfterSelection() {
   // reset chart after member selection
   document.aspnetForm.ChartStartRow.value = 0;
   document.aspnetForm.ChartStartCol.value = 0;
   document.aspnetForm.FullChartRequest.value = "False";
   
   ShowUpdatedReport();
}

function ShowUpdatedReport() {
   var szActionPage;

   szActionPage = "dispview.aspx";
   document.aspnetForm.FirstRow.value = 0;
   document.aspnetForm.FirstCol.value = 0;
   document.aspnetForm.DimIndex.value = 1 + GetMaxDim();
   document.aspnetForm.CurrentHierarchy.value = "";
   document.aspnetForm.action = "../View/" + szActionPage;
   if (typeof (GetChartSize) != 'undefined') {
      GetChartSize();
   }
   executeWait(document.aspnetForm);
}

function ShowSavedReport() {
   var nReportId;
   var szActionPage;

   nReportId = document.aspnetForm.ReportId.value;
   szActionPage = "dispview.aspx?ReportId=" + nReportId;
   document.aspnetForm.action = "../View/" + szActionPage;
   if (typeof (GetChartSize) != 'undefined') {
      GetChartSize();
   }
   executeWait(document.aspnetForm);
}

function CollapseLocalCubeDimensions() {
   RadCollapseTree("ctl00_MainContent_RadLocalCubeDimensionsTree", document.aspnetForm.CollapsedCubeDims);
}

function ExpandLocalCubeDimensions() {
   RadExpandTree("ctl00_MainContent_RadLocalCubeDimensionsTree", document.aspnetForm.CollapsedCubeDims);
}

function CollapseNode(node, field) {
    var szID;
    var szTemp;
    if (node != null) {
        szID = node.get_id();
        szTemp = field.value;
        field.value = szTemp + szID + ",";        
    }
}

function ExpandNode(node, field) {
    var szID;
    var szTemp;
    if (node != null) {
        szID = node.get_id();
        szTemp = field.value;
        field.value = szTemp.replace(new RegExp(szID + ",", "g"), "");
    }
}


function CollapseTree(tree, field) {
   var clNode;
   var clNodes;
   var szCollapsedDims = "";
   var szID;
   tree.collapseAll();
   clNodes = tree.get_nodes();
   if (clNodes != null) {
      for (nIndex = 0; nIndex < clNodes.get_length(); nIndex++) {
         clNode = clNodes.getNode(nIndex);
         if (clNode.get_nodes().get_length() > 0) {
            szID = clNode.get_id();
            szCollapsedDims += szID + GCommaRep;
         }
      }
   }
   field.value = szCollapsedDims;
}

function ExpandTree(tree, field) {
   tree.expandAll();
   field.value = "";
}

function HideElementById(i_szElementID) {
   var clElement;

   clElement = document.getElementById(i_szElementID);
   if (clElement != null) {
      clElement.style.display = "none";
   }
}

function ShowElementById(i_szElementID) {
   var clElement;

   clElement = document.getElementById(i_szElementID);
   if (clElement != null) {
      clElement.style.display = "";
   }
}

function FindViewHierarchy(i_nHierarchy) {
   var nIndex;

   for (nIndex = 0; nIndex < M_anViewHierarchyIndices.length; nIndex++) {
      if (M_anViewHierarchyIndices[nIndex] == i_nHierarchy) {
         return nIndex;
      }
   }
   return -1;
}

function fix_flash() {
    // loop through every embed tag on the site
    var embeds = document.getElementsByTagName('embed');
    for(i=0; i<embeds.length; i++)  {
        embed = embeds[i];
        var new_embed;
        // everything but Firefox & Konqueror
        if(embed.outerHTML) {
            var html = embed.outerHTML;
            // replace an existing wmode parameter
            if(html.match(/wmode\s*=\s*('|")[a-zA-Z]+('|")/i))
                new_embed = html.replace(/wmode\s*=\s*('|")window('|")/i,"wmode='transparent'");
            // add a new wmode parameter
            else 
                new_embed = html.replace(/<embed\s/i,"<embed wmode='transparent' ");
            // replace the old embed object with the fixed version
            embed.insertAdjacentHTML('beforeBegin',new_embed);
            embed.parentNode.removeChild(embed);
        } else {
            // cloneNode is buggy in some versions of Safari & Opera, but works fine in FF
            new_embed = embed.cloneNode(true);
            if(!new_embed.getAttribute('wmode') || new_embed.getAttribute('wmode').toLowerCase()=='window')
                new_embed.setAttribute('wmode','transparent');
            embed.parentNode.replaceChild(new_embed,embed);
        }
    }
    // loop through every object tag on the site
    var objects = document.getElementsByTagName('object');
    for(i=0; i<objects.length; i++) {
        object = objects[i];
        var new_object;
        // object is an IE specific tag so we can use outerHTML here
        if(object.outerHTML) {
            var html = object.outerHTML;
            // replace an existing wmode parameter
            if(html.match(/<param\s+name\s*=\s*('|")wmode('|")\s+value\s*=\s*('|")[a-zA-Z]+('|")\s*\/?\>/i))
                new_object = html.replace(/<param\s+name\s*=\s*('|")wmode('|")\s+value\s*=\s*('|")window('|")\s*\/?\>/i,"<param name='wmode' value='transparent' />");
            // add a new wmode parameter
            else 
                new_object = html.replace(/<\/object\>/i,"<param name='wmode' value='transparent' />\n</object>");
            // loop through each of the param tags
            var children = object.childNodes;
            for(j=0; j<children.length; j++) {
                if(children[j].getAttribute('name').match(/flashvars/i)) {
                    new_object = html.replace(/<param\s+name\s*=\s*('|")flashvars('|")\s+value\s*=\s*('|")[^'"]*('|")\s*\/?\>/i,"<param name='flashvars' value='"+children[j].getAttribute('value')+"' />");
                }
            }
            // replace the old embed object with the fixed versiony
            object.insertAdjacentHTML('beforeBegin',new_object);
            object.parentNode.removeChild(object);
        }
    }
}

function HideMenu(i_strMenuId) {
   var clMenu = document.getElementById(i_strMenuId);

   if (clMenu != null) {
      clMenu.style.display = "none";
   }
}

function ShowMenu(i_strMenuId) {
   var clMenu = document.getElementById(i_strMenuId);

   if (clMenu != null) {
      clMenu.style.display = "";
   }
}

function OnClientItemClicking(sender, eventArgs) {
   sender.close();
   sender.set_clicked(false);
}

function OnReportTabSelected(sender, eventArgs) {
   var clTab = eventArgs.get_tab();

   AdjustRadReportTabs(clTab);
}

function AdjustRadReportTabs(i_clTab) {
   OnCancelOptions();
   onLayoutResize();
   if (i_clTab.get_value() == "MyReportsTab") {
      document.aspnetForm.GoToPublicReports.value = "False";
      HideMenu('ctl00_RadPageMenu');
      ShowMenu('ctl00_RadPageMenu2');
   }
   else {
      document.aspnetForm.GoToPublicReports.value = "True";
      HideMenu('ctl00_RadPageMenu2');
      ShowMenu('ctl00_RadPageMenu');
   }
}

function SelectReportTab(i_strTabValue) {
   var clTab;
   var clTabStrip;

   clTabStrip = $find("ctl00_MainContent_RadReportTabs");
   if (clTabStrip != null) {
      clTab = clTabStrip.findTabByValue(i_strTabValue);
      if (clTab != null) {
         clTab.select();
         AdjustRadReportTabs(clTab);
      }
   }
}

function CheckAllNodes(i_strTreeViewID) {
   var aclNodes;
   var clTreeView;
   var nIndex;

   clTreeView = $find(i_strTreeViewID);
   if (clTreeView != null) {
      aclNodes = clTreeView.get_allNodes();
      if (aclNodes != null) {
         for (nIndex = 0; nIndex < aclNodes.length; nIndex++) {
            aclNodes[nIndex].check();
         }
      }
   }
}

function UncheckAllNodes(i_strTreeViewID) {
   var aclNodes;
   var clTreeView;
   var nIndex;

   clTreeView = $find(i_strTreeViewID);
   if (clTreeView != null) {
      aclNodes = clTreeView.get_allNodes();
      if (aclNodes != null) {
         for (nIndex = 0; nIndex < aclNodes.length; nIndex++) {
            aclNodes[nIndex].uncheck();
         }
      }
   }
}

function OnClientItemClicking(sender, eventArgs) {
   sender.close();
   sender.set_clicked(false);
}

function OnReportNodeCollapse(sender, eventArgs) {
   var bPublic = (document.aspnetForm.GoToPublicReports.value == "True");
   var clNode = eventArgs.get_node();

    if (bPublic) {
        RadCollapseNode(clNode, document.aspnetForm.ClosedPublicFolders);
    }
    else {
        RadCollapseNode(clNode, document.aspnetForm.ClosedMyFolders);
    }   
}

function OnReportNodeExpand(sender, eventArgs) {
   var bPublic = (document.aspnetForm.GoToPublicReports.value == "True");
   var clNode = eventArgs.get_node();

    if (bPublic) {
        RadExpandNode(clNode, document.aspnetForm.ClosedPublicFolders);
    }
    else {
        RadExpandNode(clNode, document.aspnetForm.ClosedMyFolders);
    }   
}

function OnReportNodeCheck(sender, eventArgs) {
   var aszIds;
   var bCanMoveDown;
   var bCanMoveUp;
   var bChecked;
   var bPublic;
   var bReport;
   var bSearchResults = false;
   var clMenu;
   var clNode = eventArgs.get_node();
   var clNodes;
   var clParentNode;
   var clRadToolbar;
   var clTempNode;
   var clSelectionLabel;
   var clTreeView;
   var nCheckedNodes;
   var nIndex;
   var nLen;
   var nNodeIndex;
   var szID;
   var szLabel;
   var szTempNodeType;

   if (clNode != null && clNode.get_checkable()) {
      bPublic = (document.aspnetForm.GoToPublicReports.value == "True");
      if (bPublic) {
         clMenu = $find("ctl00_RadPageMenu");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar");
         clTreeView = $find("ctl00_MainContent_RadPublicReportsTree");
      }
      else {
         clMenu = $find("ctl00_RadPageMenu2");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar2");
         clTreeView = $find("ctl00_MainContent_RadMyReportsTree");
      }

      // Adjust selection information
      szID = clNode.get_value();
      bChecked = clNode.get_checked();
      bReport = (szID.indexOf("R_") == 0);
      if (bChecked) {
         if (bReport) {
            M_nCheckedReports += 1;
            if (M_szCheckedReportIds.length > 0) {
               M_szCheckedReportIds += ",";
            }
            M_szCheckedReportIds += szID;
         }
         else {
            M_nCheckedFolders += 1;
            if (M_szCheckedFolderIds.length > 0) {
               M_szCheckedFolderIds += ",";
            }
            M_szCheckedFolderIds += szID;
         }
      }
      else {
         if (bReport) {
            M_nCheckedReports -= 1;
            aszIds = M_szCheckedReportIds.split(",");
            M_szCheckedReportIds = "";
            for (nIndex = 0; nIndex < aszIds.length; nIndex++) {
               if (aszIds[nIndex] != szID) {
                  if (M_szCheckedReportIds.length > 0) {
                     M_szCheckedReportIds += ",";
                  }
                  M_szCheckedReportIds += aszIds[nIndex];
               }
            }
         }
         else {
            M_nCheckedFolders -= 1;
            aszIds = M_szCheckedFolderIds.split(",");
            M_szCheckedFolderIds = "";
            for (nIndex = 0; nIndex < aszIds.length; nIndex++) {
               if (aszIds[nIndex] != szID) {
                  if (M_szCheckedFolderIds.length > 0) {
                     M_szCheckedFolderIds += ",";
                  }
                  M_szCheckedFolderIds += aszIds[nIndex];
               }
            }
         }
      }

      // Update selected count of folders and reports
      if (bPublic) {
         clSelectionLabel = document.getElementById("ctl00_MainContent_NodesSelected");
         bSearchResults = (document.aspnetForm.PublicReportsSearchString.value != "");
      }
      else {
         clSelectionLabel = document.getElementById("ctl00_MainContent_NodesSelected2");
         bSearchResults = (document.aspnetForm.MyReportsSearchString.value != "");
      }
      if (clSelectionLabel != null) {
         szLabel = M_nCheckedReports.toString();
         if (!bSearchResults) {
            szLabel += " ";
            if (M_nCheckedReports == 1) {
               szLabel += resReportLowercase;
            }
            else {
               szLabel += resReportsLowercase;
            }
            szLabel += " " + resAndLowercase + " " + M_nCheckedFolders.toString() + " ";
            if (M_nCheckedFolders == 1) {
               szLabel += resFolderLowercase;
            }
            else {
               szLabel += resFoldersLowercase;
            }
         }
         szLabel += " " + resSelected;
         clSelectionLabel.innerHTML = szLabel;
      }

      // Adjust buttons and menus that depend on the number of checked nodes
      nCheckedNodes = M_nCheckedReports + M_nCheckedFolders;
      if (nCheckedNodes > 0) {
         AdjustMenuItem(clMenu, "MenuDelete", true);
         AdjustMenuItem(clMenu, "MenuMoveToFolder", true);
         if (clRadToolbar != null) {
            AdjustRadToolbarItem(clRadToolbar, "DeleteButton", true);
            AdjustRadToolbarItem(clRadToolbar, "MoveToFolderButton", true);
         }
      }
      else {
         AdjustMenuItem(clMenu, "MenuDelete", false);
         AdjustMenuItem(clMenu, "MenuMoveToFolder", false);
         if (clRadToolbar != null) {
            AdjustRadToolbarItem(clRadToolbar, "DeleteButton", false);
            AdjustRadToolbarItem(clRadToolbar, "MoveToFolderButton", false);
         }
      }
      if (nCheckedNodes == 1) {
         if (!bChecked) {
            bReport = (M_nCheckedReports == 1);
            if (bReport) {
               szID = M_szCheckedReportIds;
            }
            else {
               szID = M_szCheckedFolderIds;
            }
            clNode = clTreeView.findNodeByValue(szID);
         }
         nNodeIndex = clNode.get_index();
         clParentNode = clNode.get_parent();
         clNodes = clParentNode.get_nodes();
         nLen = clNodes.get_count();
         if (bReport) {
            bCanMoveDown = (nNodeIndex < nLen - 1);
            if (nNodeIndex == 0) {
               bCanMoveUp = false;
            }
            else {
               clTempNode = clNodes.getNode(nNodeIndex - 1);
               szTempNodeType = clTempNode.get_value().substring(0, 2);
               bCanMoveUp = (szTempNodeType == "R_");
            }
         }
         else {
            bCanMoveUp = (nNodeIndex > 0);
            if (nNodeIndex == nLen - 1) {
               bCanMoveDown = false;
            }
            else {
               clTempNode = clNodes.getNode(nNodeIndex + 1);
               szTempNodeType = clTempNode.get_value().substring(0, 2);
               bCanMoveDown = (szTempNodeType == "F_");
            }
         }
         AdjustMenuItem(clMenu, "MenuChange", true);
         AdjustMenuItem(clMenu, "MenuMoveToTop", bCanMoveUp);
         AdjustMenuItem(clMenu, "MenuMoveUp", bCanMoveUp);
         AdjustMenuItem(clMenu, "MenuMoveDown", bCanMoveDown);
         AdjustMenuItem(clMenu, "MenuMoveToBottom", bCanMoveDown);
         if (clRadToolbar != null) {
            AdjustRadToolbarItem(clRadToolbar, "ChangeButton", true);
            if (bCanMoveUp) {
               AdjustRadToolbarItem(clRadToolbar, "MoveTopButton", true);
               AdjustRadToolbarItem(clRadToolbar, "MoveUpButton", true);
            }
            else {
               AdjustRadToolbarItem(clRadToolbar, "MoveTopButton", false);
               AdjustRadToolbarItem(clRadToolbar, "MoveUpButton", false);
            }
            if (bCanMoveDown) {
               AdjustRadToolbarItem(clRadToolbar, "MoveDownButton", true);
               AdjustRadToolbarItem(clRadToolbar, "MoveBottomButton", true);
            }
            else {
               AdjustRadToolbarItem(clRadToolbar, "MoveDownButton", false);
               AdjustRadToolbarItem(clRadToolbar, "MoveBottomButton", false);
            }
         }
      }
      else {
         AdjustMenuItem(clMenu, "MenuChange", false);
         AdjustMenuItem(clMenu, "MenuMoveToTop", false);
         AdjustMenuItem(clMenu, "MenuMoveUp", false);
         AdjustMenuItem(clMenu, "MenuMoveDown", false);
         AdjustMenuItem(clMenu, "MenuMoveToBottom", false);
         if (clRadToolbar != null) {
            AdjustRadToolbarItem(clRadToolbar, "ChangeButton", false);
            AdjustRadToolbarItem(clRadToolbar, "MoveTopButton", false);
            AdjustRadToolbarItem(clRadToolbar, "MoveUpButton", false);
            AdjustRadToolbarItem(clRadToolbar, "MoveDownButton", false);
            AdjustRadToolbarItem(clRadToolbar, "MoveBottomButton", false);
         }
      }
   }
}

function RadCollapseNode(node, field) {
    var szID;
    var szTemp;

    if (node != null) {
        szID = node.get_value();
        szTemp = field.value;
        field.value = szTemp + szID + ",";        
    }
}

function RadExpandNode(node, field) {
    var szID;
    var szTemp;
    if (node != null) {
        szID = node.get_value();
        szTemp = field.value;
        field.value = szTemp.replace(new RegExp(szID + ",", "g"), "");
    }
}

function RadExpandTree(i_szTreeID, field) {
   var aclNodes;
   var clTreeView = $find(i_szTreeID);
   var nIndex;

   if (clTreeView != null) {
      aclNodes = clTreeView.get_allNodes();
      for (nIndex = 0; nIndex < aclNodes.length; nIndex++) {
         if (aclNodes[nIndex].get_nodes().get_count() > 0) {
            aclNodes[nIndex].set_expanded(true);
         }
      }
      if (field != null) {
         field.value = "";
      }
   }
}

function RadCollapseTree(i_szTreeID, field) {
   var aclNodes;
   var clNode;
   var clNodes;
   var clTreeView = $find(i_szTreeID);
   var nIndex;
   var szClosedNodes = "";
   var szID;

   if (clTreeView != null) {
      aclNodes = clTreeView.get_allNodes();
      for (nIndex = 0; nIndex < aclNodes.length; nIndex++) {
         if (aclNodes[nIndex].get_nodes().get_count() > 0) {
            aclNodes[nIndex].set_expanded(false);
         }
      }
      clNodes = clTreeView.get_nodes();
      if (clNodes != null) {
         for (nIndex = 0; nIndex < clNodes.get_count(); nIndex++) {
            clNode = clNodes.getNode(nIndex);
            if (clNode.get_nodes().get_count() > 0) {
               szID = clNode.get_value();
               szClosedNodes += szID + ",";
            }
         }
      }
      if (field != null) {
         field.value = szClosedNodes;
      }
   }
}

function OnTreeViewKeyPressing(sender, args) {
   var bOtherTarget;
   var clEvent = args.get_domEvent();
   var clLinkElement;
   var clNode = sender.get_selectedNode();
   var clTreeView;
   var nKeyCode;
   var szTargetClass;

   nKeyCode = clEvent.keyCode;
   if (nKeyCode == 13) { // ENTER
      bOtherTarget = false;
      if (clEvent.target != "") {
         szTargetClass = clEvent.target.className;
         if (szTargetClass.indexOf("rt") != 0) {
            bOtherTarget = true;
            args.set_cancel(true);
         }
      }
      if (!bOtherTarget) {
         if (clNode) {
            clLinkElement = clNode.get_linkElement();
            if (clLinkElement) {
               clLinkElement.focus();
            }
         }
      }
   }
   else if (nKeyCode == 32) { // Space
      if (clEvent.target != "") {
         szTargetClass = clEvent.target.className;
         if (szTargetClass.indexOf("rtChk") == 0) {
            clEvent.target.blur();
            clTreeView = clNode.get_treeView();
            clTreeView.get_element().focus();
         }
      }
      $telerik.cancelRawEvent(clEvent);
   }
   else if (nKeyCode == 38) { // Up arrow
      clNode = NodeUp(clNode);
      if (clNode) {
         if (typeof (clNode.get_linkElement) != "undefined") {
            clLinkElement = clNode.get_linkElement();
            if (clLinkElement) {
               clLinkElement.focus();
            }
         }
      }
   }
   else if (nKeyCode == 40) { // Down arrow
      clNode = NodeDown(clNode);
      if (clNode) {
         clLinkElement = clNode.get_linkElement();
         if (clLinkElement) {
            clLinkElement.focus();
         }
      }
   }
}

function OnTreeViewLoad(sender, args) {
   var aclCheckboxes = $telerik.$(".rtChk");
   var clCheckBox;
   var nIndex;

   if (aclCheckboxes != null) {
      for (nIndex = 0; nIndex < aclCheckboxes.length; nIndex++) {
         clCheckBox = aclCheckboxes[nIndex];
         clCheckBox.title = resCheckUncheck;
      }
   }
}

function NodeDown(i_clNode) {
   var clNode = null;
   var clParentNode;

   if (i_clNode) {
      if (i_clNode.get_expanded()) {
         clNode = i_clNode.get_nodes().getNode(0);
      }
      else if (i_clNode.get_nextNode() != null) {
         clNode = i_clNode.get_nextNode();
      }
      else {
         clParentNode = i_clNode.get_parent();
         if (clParentNode != null) {
            if (typeof (clParentNode.get_nextNode) != "undefined") {
               clNode = clParentNode.get_nextNode();
            }
         }
      }
   }
   return clNode;
}

function NodeUp(i_clNode) {
   var clNode = null;
   var clNode2;
   var clNodes;

   if (i_clNode) {
      if (i_clNode.get_previousNode() == null) {
         clNode = i_clNode.get_parent();
      }
      else {
         clNode2 = i_clNode.get_previousNode();
         while (clNode2.get_expanded()) {
            clNodes = clNode2.get_nodes();
            clNode2 = clNodes.getNode(clNodes.get_count() - 1);
         }
         clNode = clNode2;
      }
   }
   return clNode;
}

function OnDimensionNodeCollapse(sender, eventArgs) {
   var clNode = eventArgs.get_node();

   RadCollapseNode(clNode, document.aspnetForm.CollapsedDims);
}

function OnDimensionNodeExpand(sender, eventArgs) {
   var clNode = eventArgs.get_node();

   RadExpandNode(clNode, document.aspnetForm.CollapsedDims);
}

function UpdateHierarchyNode(i_nHierarchy, i_szCssClass, i_bHasSelection) {
   var clNode;
   var clSelectionSpan;
   var clTreeView = $find("ctl00_RadDimensionsTree");
   var szHTML;
   var szID = "H_" + i_nHierarchy.toString();

   if (clTreeView != null) {
      clNode = clTreeView.findNodeByValue(szID);
      if (clNode != null) {
         clTreeView.trackChanges();
         clNode.set_cssClass(i_szCssClass);
         clSelectionSpan = document.getElementById(szID + "_ClearSelection");
         if (clSelectionSpan != null) {
            if (i_bHasSelection) {
               szHTML = "<a href='javascript:OnClearHierarchy("
                  + i_nHierarchy.toString() + ");'><img src='../Bmp/remove_dimension.gif' border=0 alt='"
                  + resRemoveDimension + "' title='" + resRemoveDimension + "' /></a>";
            }
            else {
               szHTML = "";
            }
            clSelectionSpan.innerHTML = szHTML;
         }
         clTreeView.commitChanges();
      }
   }
}

function RadDimListSplitterLoaded(sender) {
   RadResizeDimListHeader(sender);
}

function RadDimListSplitterResized(sender, args) {
   RadResizeDimListHeader(sender);
}

function RadResizeDimListHeader(i_clSplitter) {
   var clDimListHeader = document.getElementById("RadDimListHeaderTable");
   var clContentsPane = i_clSplitter.getEndPane();
   var clHeaderPane = i_clSplitter.getStartPane();
   var nContentsHeight;
   var nNewHeight;
   var nOldHeight;

   if (clDimListHeader != null && clHeaderPane != null && clContentsPane != null) {
      nOldHeight = clHeaderPane.getVarSize();
      nNewHeight = clDimListHeader.offsetHeight;
      clHeaderPane.setVarSize(nNewHeight);
      nContentsHeight = clContentsPane.getVarSize();
      clContentsPane.setVarSize(nContentsHeight + nOldHeight - nNewHeight);
   }
}

function RadContentSplitterLoaded(sender) {
   var clHeaderArea = document.getElementById("HeaderArea");
   var clFooterArea = document.getElementById("FooterArea");
   var clMenuTable = document.getElementById("MenuTable");
   var nHeight = sender.get_height();
   var nOffset;

   if (G_nBrowser == IE) {
      nOffset = clMenuTable.offsetHeight + clHeaderArea.offsetHeight + clFooterArea.offsetHeight;
      nOffset += nHeight - document.body.clientHeight;
   }
   else {
      nOffset = GetOffSet(sender.get_element(), OFFSET_TOP) - clHeaderArea.offsetHeight;
   }
   sender._heightOffset = nOffset;
   sender.set_height(nHeight - nOffset);
   AdjustContentsPane();
}

function RadContentSplitterResized(sender, args) {
   AdjustContentsPane();
}

function RadContentsPaneResized(sender, args) {
   AdjustContentsPane();
}

function AdjustContentsPane() {
   var clContentSplitter = $find("ctl00_RadContentSplitter");
   var clDimContentsTable = document.getElementById("DimContentsTable");
   var clDivContents = document.getElementById("DivContents");
   var clDivContentsScroll = document.getElementById("DivContentsScroll");
   var clGroupDialogTable = document.getElementById("GroupDialogTable");
   var clGroupDimensionControlsTable = document.getElementById("GroupDimensionControlsTable");
   var clGroupSelectionControlsTable = document.getElementById("GroupSelectionControlsTable");
   var clOptionDialogTable = document.getElementById("OptionDialogTable");
   var clOtherDimsTable = document.getElementById("OtherDimsTable");
   var clReportSubTitlesTable = document.getElementById("ReportSubTitlesTable");
   var clReportTitleTable = document.getElementById("ReportTitleTable");
   var clTab;
   var clTabStrip;
   var nWidth;
   var szUrl = document.location.pathname;
   var szValue;

   if (clDivContentsScroll != null) {
      // Dimension page has different tabs with different scrolling DIVs
      clTabStrip = $find("ctl00_MainContent_RadDimensionTabs");
      if (clTabStrip != null) {
         clTab = clTabStrip.get_selectedTab();
         if (clTab != null) {
            szValue = clTab.get_value();
            if (szValue == "CustomGroupsTab") {
               clDivContentsScroll = document.getElementById("DivContentsScroll2");
            }
            else if (szValue == "CustomBandsTab") {
               clDivContentsScroll = document.getElementById("DivContentsScroll3");
            }
            else if (szValue == "TimeSeriesTab") {
               clDivContentsScroll = document.getElementById("DivContentsScroll4");
            }
         }
      }
   }
   nWidth = clContentSplitter.getEndPane().get_width() - 1;
   if (G_nBrowser != IE) {
      if (clDivContentsScroll != null) {
         clDivContentsScroll.style.width = nWidth;
      }
      clDivContents.style.width = nWidth;
   }
   else {
      if (clDivContentsScroll != null) {
         clDivContentsScroll.style.posWidth = nWidth;
      }
      clDivContents.style.posWidth = nWidth;
      if (clOptionDialogTable != null) {
         clOptionDialogTable.style.posWidth = nWidth;
      }
      if (clReportTitleTable != null) {
         clReportTitleTable.style.posWidth = nWidth;
      }
      if (clReportSubTitlesTable != null) {
         clReportSubTitlesTable.style.posWidth = nWidth;
      }
      if (clDimContentsTable != null) {
         clDimContentsTable.style.posWidth = nWidth;
      }
      if (clGroupDialogTable != null) {
         clGroupDialogTable.style.posWidth = nWidth;
      }
      if (clGroupDimensionControlsTable != null) {
         clGroupDimensionControlsTable.style.posWidth = nWidth;
      }
      if (clGroupSelectionControlsTable != null) {
         clGroupSelectionControlsTable.style.posWidth = nWidth;
      }
   }
   if (szUrl.indexOf("dispview.aspx") >= 0 || szUrl.indexOf("drillthrough.aspx") >= 0) {
      if (clOtherDimsTable != null) {
         AdjustObjectHeight(clDivContents);
         InitializeOtherDims();
         AdjustObjectHeight(clDivContentsScroll);
      }
      setTimeout("InitializeFloater();ResizeScrollArea();SyncScroll();", 100);
   }
}

function FixImageTitles() {
   var aclImages;
   var clImage;
   var nIndex;
   var szTitle;

   if (G_nBrowser != IE) {
      // Set the image titles where missing (as in some server controls - e.g. tree node images).
      aclImages = document.getElementsByTagName("IMG");
      for (nIndex = 0; nIndex < aclImages.length; nIndex++) {
         clImage = aclImages[nIndex];
         if (clImage.title.length == 0) {
            clImage.title = clImage.alt;
         }
      }
      // Also check <input type="image">
      aclImages = document.getElementsByTagName("input");
      for (nIndex = 0; nIndex < aclImages.length; nIndex++) {
         clImage = aclImages[nIndex];
         if (clImage.type == "image") {
            if (clImage.title.length == 0) {
               clImage.title = clImage.alt;
            }
         }
      }
   }
}

function ShowDimList(i_bShow) {
   var bResult;
   var clContentSplitter = $find("ctl00_RadContentSplitter");
   var clPane;

   if (clContentSplitter != null) {
      clPane = clContentSplitter.getStartPane();
      if (clPane != null) {
         if (i_bShow) {
            bResult = clPane.expand();
         }
         else {
            bResult = clPane.collapse();
         }
         if (bResult) {
            clMenu = $find("ctl00_RadPageMenu");
            if (clMenu != null) {
               AdjustMenuItem(clMenu, "MenuDimensionListShow", !i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListHide", i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListExpandAll", i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListCollapseAll", i_bShow);
            }
            clMenu = $find("ctl00_RadPageMenu2");
            if (clMenu != null) {
               AdjustMenuItem(clMenu, "MenuDimensionListShow", !i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListHide", i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListExpandAll", i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListCollapseAll", i_bShow);
            }
            clMenu = $find("ctl00_RadPageMenu3");
            if (clMenu != null) {
               AdjustMenuItem(clMenu, "MenuDimensionListShow", !i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListHide", i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListExpandAll", i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListCollapseAll", i_bShow);
            }
            clMenu = $find("ctl00_RadPageMenu4");
            if (clMenu != null) {
               AdjustMenuItem(clMenu, "MenuDimensionListShow", !i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListHide", i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListExpandAll", i_bShow);
               AdjustMenuItem(clMenu, "MenuDimensionListCollapseAll", i_bShow);
            }
         }
      }
   }
}

