﻿// this file contains code for handling option dialogs

var M_bFormSubmitted = false;
var M_bImageButtonClicked = false;
var M_strCurrentOptionButton = null;
var M_strCurrentButtonImg = "";

var strPasswordType = (G_dNetscapeVersion > 0) ? "type=text" : "type=password";

var LoginOptions = 
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td style='font-size: 8pt; font-weight: normal;'><div id='LoginErrMessage' class='Message' /></td></tr>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td class=OptionHeader nowrap align=left>" + resLogin + "</td></tr>"
   + "<tr height='3' />"
   + "</table></td></tr>"
   + "<tr><td><table border='0'>"
   + "<tr><td class='OptionItem'>"
   + "<label for=logintemp ACCESSKEY='u'>" + resEnterLoginName + "</label></td>"
   + "<TD><INPUT class=Default title=\"" + resEnterLoginName + "\" "
   + "onkeypress='javascript:SubmitLogin(event);'"
   + " name='userlogintemp' id='logintemp' type=text></TD>"
   + "<TD colspan=6></TD></TR>"
   + "<TR><TD class='OptionItem'>"
   + "<LABEL FOR=pwdtemp ACCESSKEY='p'>" + resEnterPassword + "</LABEL></TD>"
   + "<TD><INPUT class=Default id='pwdtemp' title=\"" + resEnterPassword + "\" "
   + strPasswordType + " onkeypress='javascript:SubmitLogin(event);'></TD>"
   + "<TD width=20></TD>"
   + "<TD align='left'>"
   + "<INPUT name=OKButton type=button value=\"" + resOK
   + "\" onclick='javascript:OnLogin();'></TD>"
   + "<TD WIDTH=3></TD>"
   + "<TD><INPUT name=CancelButton type=button value=\"" + resCancel
   + "\" onclick='javascript:OnCancelOptions();'></TD>"
   + "<TD WIDTH=3></TD>"
   + "<TD ALIGN=LEFT>"
   + "<input name=registerButton type=button style='VISIBILITY:hidden' value=\"" + resRegister
   + "\" onclick='javascript:ShowRegisterOptions();'>"
   + "</TD></TR>"
   + "</TABLE></TD></TR>"
   + "</table>";

// csBeginMod WattersJ 2009-09-30    
// ---------------------------------------------------------------------------- 
// This variable displays a message to the end user informing of STAT-USA account status.
// ----------------------------------------------------------------------------  
   var GlobalLoginMessage =  "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td style='font-size: 8pt; font-weight: normal; text-align: center;'><div id='GlobalUserMessage' class='Message' /></td></tr>"
   + "</td></tr>"
   + "</table>";   
// csEndMod WattersJ 2009-09-30    

// Prevent the form submission in Netscape/Firefox when clicking the option dialog image button.
function VerifyFormSubmission(i_clEvent)
{
   var bReturn = true;
   var clLanguageButton;
   var clSearchButton;
   var clTutorialsButton;
   var strId;

   if (M_bImageButtonClicked) {
      M_bImageButtonClicked = false;
      bReturn = false;
   }
   else if (!M_bFormSubmitted) {
      if (M_strCurrentOptionButton != null) {
         if (!G_dIEVersion) {
            if (i_clEvent) {
               if (i_clEvent.explicitOriginalTarget) {
                  strId = i_clEvent.explicitOriginalTarget.id;
                  if (strId == M_strCurrentOptionButton) {
                     bReturn = false;
                  }
               }
            }
         }
      }
      else {
         clLanguageButton = document.getElementById("LanguageButton");
         clTutorialsButton = document.getElementById("TutorialsButton");
         clSummaryButton = document.getElementById("SummaryButton");
         clSearchButton = document.getElementById("SearchButton");
         if(clLanguageButton != null) {
            if (clLanguageButton.src.indexOf("over") > 0 ) {
               bReturn = false;
            }
         }
         if(clTutorialsButton != null) {
            if (clTutorialsButton.src.indexOf("over") > 0 ) {
               bReturn = false;
            }
         }         
         if(clSummaryButton != null) {
            if (clSummaryButton.src.indexOf("over") > 0 ) {
               bReturn = false;
            }
         }
         if(clSearchButton != null) {
            if (clSearchButton.src.indexOf("over") > 0 ) {
               bReturn = false;
            }
         }
      }
      if (bReturn) {
         M_bFormSubmitted = true;
      }
   }
   else {
      // prevent the form from submitting twice
      bReturn = false;
   }
   
   if (bReturn) {
      if (document.aspnetForm.TimerId.value == 0) {
         document.aspnetForm.TimerId.value = setTimeout("pleaseWait();", MnPleaseWaitDelay);
      }
   }
   return bReturn;
}

function DisplayOption(i_strOptionContent, i_strToolbarButton, i_strCurrentButtonImg)
{
   var clButton;
   var clLanguageButton;
   var clOptionDialog;

   CollapseTutorialList();
   CollapseSummaryList();
   CollapseSearchList();
   if (M_strCurrentOptionButton != null) {
      clButton = document.getElementById(M_strCurrentOptionButton);
      if (clButton != null) {
         if (M_strCurrentButtonImg != "") {
            SwitchImage(clButton, M_strCurrentButtonImg);
         }
         else {
            SwitchImage(clButton, "active");
         }
         clButton.disabled = false;
         clButton.style.cursor = "auto";
      }
     
   }
   M_strCurrentOptionButton = i_strToolbarButton;
   if (i_strCurrentButtonImg) {
      M_strCurrentButtonImg = i_strCurrentButtonImg;
   }
   else {
      M_strCurrentButtonImg = "";
   }   
   clOptionDialog = document.getElementById("OptionDialog");
   document.getElementById("OptionDialogRow").className = "";
   clOptionDialog.innerHTML = i_strOptionContent;
   // If any options dialog is displayed, the language icon should be disabled.
   clLanguageButton = document.getElementById("LanguageButton");
   if(clLanguageButton != null) {
      CollapseLanguageList();
      SwitchImage(clLanguageButton, "unavailable");
      clLanguageButton.disabled = true;
      clLanguageButton.style.cursor = "default";
   }
   if (i_strToolbarButton != null) {
      clButton = document.getElementById(i_strToolbarButton);
      if (clButton != null) {
         SwitchImage(clButton, "clicked");
         clButton.disabled = true;
         clButton.style.cursor = "default";
      }
   }
}

function HideOptions(toolbarButton)
{
   var clButton;
   var clOptionDialog;
   
   clOptionDialog = document.getElementById("OptionDialog");
   clOptionDialog.innerHTML = "";
   document.getElementById("OptionDialogRow").className = "Toolbar";
   if (toolbarButton != null) {
      clButton = document.getElementById(toolbarButton);
      if (clButton != null) {
         if (M_strCurrentButtonImg != "") {
            SwitchImage(clButton, M_strCurrentButtonImg);
         }
         else {
            SwitchImage(clButton, "active");
         }
         clButton.disabled = false;
         clButton.style.cursor = "auto";
      }
   }
}

function OnCancelOptions()
{
   var clLanguageButton;
   
   HideOptions(M_strCurrentOptionButton);
   M_bImageButtonClicked = false;
   
   M_strCurrentOptionButton = null;
   M_strCurrentButtonImg = "";
   clLanguageButton = document.getElementById("LanguageButton");
   if(clLanguageButton != null) {
      SwitchImage(clLanguageButton, "active");
      clLanguageButton.disabled = false;
      clLanguageButton.style.cursor = "auto";
   }
   // Resize scroll bars
   onLayoutResize();
}

function GetKeyCode(e)
{
   var key;
   
   if (G_nBrowser == IE) {
      key = e.keyCode;
   }
	else {
	   key = e.which;
	}
   return key;
}

function ResetSubmit(e)
{
   if (G_nBrowser == IE) {
      //e.keyCode = 0; //not allowed in IE 7
      e.returnValue = false;
      e.cancelBubble = true;
   }
   else {
      e.preventDefault();
      e.stopPropagation();
   }
}

//csBeginMod WattersJ B2020 2009-09-30
function ShowMessageOptions(i_strMsg){
 
    var clOptionDialog;
    var clMsg;
    
    //capture message area
    clOptionDialog = document.getElementById("OptionDialog");
    document.getElementById("OptionDialogRow").className = "";
    clOptionDialog.innerHTML = GlobalLoginMessage;
    if(i_strMsg != null){
        //format html to display message to screen
       clMsg = document.getElementById("GlobalUserMessage");
       clMsg.innerHTML = i_strMsg;
    }
}
//csEndMod WattersJ B2020 2009-09-30

function ShowLoginOptions(i_strErrorMsg)
{
   var clErrorMsg;
   var strRegistration;
   
   DisplayOption(LoginOptions, "LoginButton");
   if (!G_dIEVersion) {
      var clPwdtemp = document.getElementById("pwdtemp");
      if (clPwdtemp != null) {
         clPwdtemp.setAttribute("type", "password");
      }
   }
   if (i_strErrorMsg != null) {
      clErrorMsg = document.getElementById("LoginErrMessage");
      clErrorMsg.innerHTML = i_strErrorMsg;
   }
   strRegistration = document.aspnetForm.RegistrationAllowed.value;
   if (strRegistration == "True") {
      document.aspnetForm.registerButton.style.visibility = "visible";
   }
   setTimeout("document.aspnetForm.userlogintemp.focus();", 100);
   // Resize scroll bars
   onLayoutResize();
}

function SubmitLogin(e)
{
   var key = GetKeyCode(e);
   if ( key == 13) {
      OnLogin();
      ResetSubmit(e);
   }
}

function IsControlEmpty(clObj, strMsg)
{
   var str = clObj.value;
   if (str == null || str == "") {
      alert(strMsg);
      clObj.focus();
      return true;
   }

   return false;
}

function CheckForLength(obj, maxLen, strMessage)
{
	if (obj.value.length > maxLen) {
	    alert(strMessage);
	    obj.select();
	    obj.focus();
	    return false;
	}
	return true;
}

function getURLParameters()
{
   var parameters = new Object();
   var query = location.search.substring(1);
    
   var pairs = query.split("&");
   for (var i = 0; i<pairs.length;i++){
      var pos = pairs[i].indexOf('=');
      if (pos != -1) {
         var paraname = pairs[i].substring(0,pos);
         var paravalue = pairs[i].substring(pos+1);
         parameters[paraname] = unescape(paravalue);        
      }
   }
   return parameters;
}

// ----------------------------------------------------------------------------
// Returns true if the string contains only AlphaNumeric characters.
// i_bIgnoreSpaces specifies whether a space is permitted.
function IsAlphaNum(i_szString, i_bIgnoreSpaces, i_bLogin)
{   
   var nIndex;
   var nCode;
   var nTemp;
   for (nIndex = 0; nIndex < i_szString.length; nIndex++) {
      nTemp = i_szString.charAt(nIndex);
      nCode = i_szString.charCodeAt(nIndex);
      if (i_bIgnoreSpaces == false) {
         if (nCode == 32)
            return false;
      }
      if (i_bLogin) {
         if (((nCode >= 0) && (nCode <= 31)) ||    // invalid chars
            ((nCode >= 33) && (nCode <= 47)) ||    // invalid chars
            ((nCode >= 58) && (nCode <= 64)) ||    // :;<=>?@
            ((nCode >= 91) && (nCode <= 96)) ||    // [\]^_`
            ((nCode >= 123) && (nCode <= 127)))
         {
            return false;
         }
      }
   }
   return true;
}

function ValidateLoginFields()
{
   var bValid = true;
   var bRegister = false;
   var object;
   var objLogin;
   var objPwd;
   var strPage;
   var szAction;
   var szPath;
   var szLogin;
   var szPassword;
   var szTemp;
 
   object = document.aspnetForm;
   if (typeof(object.logintemp) != 'undefined') {
  	   szLogin = object.logintemp.value;
  	   szPassword = object.pwdtemp.value;
  	   objLogin = document.getElementById("logintemp");
  	   objPwd = document.getElementById("pwdtemp");
  	}
  	else if (typeof(object.reglogintemp) != 'undefined') {
  	   bRegister = true;
  	   szLogin = object.reglogintemp.value;
  	   szPassword = object.regpwdtemp.value;
  	   objLogin = document.getElementById("reglogintemp");
  	   objPwd = document.getElementById("regpwdtemp");
  	}

   // Login
   if (IsControlEmpty(objLogin, resLoginName)) bValid = false;

   if (bValid) szTemp = szLogin.toLowerCase();      
   
   if (bValid) {
      if (!CheckForLength(objLogin, 50, resLoginNameLength))
		   bValid = false;
   }
   
   if (bValid) {
      if (!IsAlphaNum(szLogin, false, true)) {
         alert(resAlphanumeric);
         objLogin.select();
         objLogin.focus();
         bValid = false;
      }
   }

   // Password
   if (bValid) {
      if (IsControlEmpty(objPwd, resNoPassword))
         bValid = false;
   }
   
   if (bValid) {
      if (szPassword.indexOf(" ") >= 0) {
         alert(resSpaces);
         objPwd.select();
         objPwd.focus();
         bValid = false;
      }
   }
   
   if (bValid) {
      if (!CheckForLength(objPwd, 50, resPasswordLength))
		   bValid = false;
   }
     
   if (bValid) {
      if (!bRegister){
         object.userlogin.value = szLogin;
         object.userpwd.value = szPassword;
      } 
      else {
         object.reglogin.value = szLogin;
         object.regpwd.value = szPassword;
      }
      szPath = document.location.href;
      szPath = szPath.replace(new RegExp("#", "g"),"");
      if (szPath.indexOf("loginrequired=") >= 0) {
         szPath = szPath.replace(new RegExp("loginrequired=0", "g"), "loginrequired=1");
      }
      else {
         if (szPath.indexOf("?") >= 0) {
            szPath += "&";
         }
         else {
            szPath += "?"
         }
         szPath += "loginrequired=1";
      }
      strPage = szPath;
   }
   
   if(strPage != null)
      object.action = strPage;
   return bValid;
}

function OnLogin()
{
   if (ValidateLoginFields()) {
      executeWait(document.aspnetForm);
      return true;
   }
   else {
      return false;
   }
}

var SortOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionHeader nowrap align=left>" + resSort + "</td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td class=OptionItem  nowrap>" + resFolders + "&nbsp</td>"
   + "<td class=OptionItem nowrap>"
   + "<input type=radio title='" + resAllFolders
   + "' name=SortFolderType id=SortFolderTypeAll value='1'"
   + " onClick=\"javascript:SelectSortFolderType(1);\""
   + " onkeypress=\"javascript:SubmitSort(event);\" checked>"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=SortFolderTypeAll ACCESSKEY=\"a\">" + resAllFolders + "</LABEL>"
   + "</td><td></td>"
   + "</tr>"
   + "<tr>"
   + "<td width=10>&nbsp;</td>"
   + "<td class=OptionItem nowrap>"
   + "<input type=radio title='" + resChooseSortFolder
   + "' name=SortFolderType id=SortFolderTypeSingle value='2'"
   + " onClick=\"javascript:SelectSortFolderType(2);\""
   + " onkeypress=\"javascript:SubmitSort(event);\">"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=SortFolderTypeSingle ACCESSKEY=\"f\">" + resChooseSortFolder + "</LABEL>"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<select name=SortFolder title = '" + resChooseSortFolder
   + "' id=SortFolderId onkeypress=\"javascript:SubmitSort(event);\" disabled />"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td class=OptionItem nowrap>" + resChooseSortType + "&nbsp</td>"
   + "<td class=OptionItem nowrap>"
   + "<input type=radio title='" + resAscending
   + "' name=rgSortType id=SortByAscending value='1'"
   + " onkeypress=\"javascript:SubmitSort(event);\" checked>"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=SortByAscending ACCESSKEY=\"s\">" + resAscending + "</LABEL>"
   + "</td>"
   + "<td></td>"
   + "</tr>"
   + "<tr>"
   + "<td></td>"
   + "<td class=OptionItem nowrap>"
   + "<input type=radio title='" + resDescending
   + "' name=rgSortType id=SortByDescending value='-1'"
   + " onkeypress=\"javascript:SubmitSort(event);\">"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=SortByDescending ACCESSKEY=\"e\">" + resDescending + "</LABEL>"
   + "</td></tr>"
   + "<tr><td nowrap>"
   + "<input type=button name=SortGo value=\"" + resOK 
   + "\" onclick=\"javascript:OnSortOptions();\">&nbsp;"
   + "<input type=button name=Cancel value=\"" + resCancel 
   + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";

function ShowSortOptions()
{
   var clAscSortType;
   var clFolders;
   var nIndex;
   
   DisplayOption(SortOptions, "SortButton");
   clFolders = document.getElementById("SortFolderId");
   for (nIndex = 0; nIndex < M_anOwnersFolderIds.length; nIndex++) {
      SelectControlAddOption(clFolders, M_anOwnersFolderIds[nIndex], M_astrOwnersFolderTitles[nIndex]);
   }
   clAscSortType = document.getElementById("SortByAscending");
   clAscSortType.focus();
   onLayoutResize();
}

function SelectSortFolderType(i_nType)
{
   var objSortFolder = document.getElementById("SortFolderId");
   
   if (i_nType == 1) {
      // All Folders
      objSortFolder.selectedIndex = 0;
      objSortFolder.disabled = true;
   }
   else {
      // Single Folder
      objSortFolder.disabled = false;
   }
}

function SubmitSort(e)
{
   var key = GetKeyCode(e);
   if ( key ==13) {
      OnSortOptions();
      ResetSubmit(e);
   }
}

function OnSortOptions()  
{
   var nFolderId = -1;
   var nSortType;
   var objSortAll = document.getElementById("SortFolderTypeAll");
   var objSortFolder = document.getElementById("SortFolderId");
   var objAscSortType = document.getElementById("SortByAscending");
   var objDecSortType = document.getElementById("SortByDescending");
   var szFolderName;
   
   if (objSortAll == null || objSortFolder == null || objAscSortType == null || objDecSortType == null) {
      return false;
   }
   
   if (objAscSortType.checked) {
      nSortType = objAscSortType.value;
   }
   else {
      nSortType = objDecSortType.value;
   }
   
   if (!objSortAll.checked) {
      nFolderId = objSortFolder.options[objSortFolder.selectedIndex].value;
   }
   OnSortFolders(nFolderId, nSortType);
   return true;
}

function OnSortFolders(i_nFolderId, i_nSortType)  
{
	document.aspnetForm.FolderToSort.value = i_nFolderId;
	document.aspnetForm.FolderSortType.value = i_nSortType;
	executeWait(document.aspnetForm);
}

var MoveToFolderOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionHeader nowrap align=left>" + resMoveToFolder + "</td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=DestinationFolderId ACCESSKEY=\"d\">" + resChooseDestinationFolder + "</LABEL>"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<select name=DestinationFolder title = '" + resChooseDestinationFolder
   + "' id=DestinationFolderId onkeypress=\"javascript:SubmitMoveToFolder(event);\" />"
   + "</td>"
   + "</tr>"
   + "<tr><td nowrap>"
   + "<input type=button name=MoveToFolderGo value=\"" + resOK 
   + "\" onclick=\"javascript:OnMoveToFolderOptions();\">&nbsp;"
   + "<input type=button name=Cancel value=\"" + resCancel 
   + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";

function ShowMoveToFolderOptions()
{
   var clFolders;
   var nIndex;
   
   DisplayOption(MoveToFolderOptions, "MoveToFolderButton");
   clFolders = document.getElementById("DestinationFolderId");
   for (nIndex = 0; nIndex < M_anOwnersFolderIds.length; nIndex++) {
      SelectControlAddOption(clFolders, M_anOwnersFolderIds[nIndex], M_astrOwnersFolderTitles[nIndex]);
   }
   clFolders.focus();
   onLayoutResize();
}

function SubmitMoveToFolder(e)
{
   var key = GetKeyCode(e);
   if ( key ==13) {
      OnMoveToFolderOptions();
      ResetSubmit(e);
   }
}

function OnMoveToFolderOptions()  
{
   var anDestinationFolderParents = new Array;
   var clDestinationFolder;
   var nDestinationFolderId;
   var nFolderId;
   var nIndex;
   var nParent;
   var nParentIndex = -1;
   var szFolderTitle = "";
   
   clDestinationFolder = document.getElementById("DestinationFolderId");
   if (clDestinationFolder == null) {
      return;
   }
   nDestinationFolderId = clDestinationFolder.options[clDestinationFolder.selectedIndex].value;
   if (nDestinationFolderId > 0) {
      // Generate destination folder's parent indexes
      for (nIndex = 0; nIndex < M_anNodeFolderId.length; nIndex++) {
         if (M_anNodeFolderId[nIndex] == nDestinationFolderId) {
            nParentIndex = M_anNodeParentIndex[nIndex];
            break;
         }
      }
      while (nParentIndex >= 0) {
         anDestinationFolderParents[anDestinationFolderParents.length] = nParentIndex;
         nParentIndex = M_anNodeParentIndex[nParentIndex];
      }

      for (nIndex = 0; nIndex < M_anNodeChecked.length; nIndex++) {
         if (M_anNodeChecked[nIndex] == 1 && M_anNodeType[nIndex] == NODE_FOLDER) {
            // Don't allow moving the folder to itself or to its sub-folder
            nFolderId = M_anNodeFolderId[nIndex];
            szFolderTitle = M_astrNodeText[nIndex];
            if (nFolderId == nDestinationFolderId) {
               alert('"' + szFolderTitle + '" ' + resMoveFolderToItself);
		         clDestinationFolder.focus();
		         return;
            }
            else {
               for (nParent = 0; nParent < anDestinationFolderParents.length; nParent++) {
                  nParentIndex = anDestinationFolderParents[nIndex];
                  if (nParentIndex == nIndex) {
                     alert('"' + szFolderTitle +  '" ' + resMoveFolderToItsSubfolder);
                     return;
                  }
               }
            }
         }
      }
   }

   OnMoveToFolder(nDestinationFolderId);
}

function OnMoveToFolder(i_nDestinationFolderId)
{
   document.aspnetForm.MoveToFolderId.value = i_nDestinationFolderId;
   executeWait(document.aspnetForm);
}

var CreateNewReportOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionHeader nowrap align=left>" + resCreateNewReport + "</td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=DataSourceId ACCESSKEY=\"d\">" + resChooseDataSource + "</LABEL>"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<select name=DataSource title = '" + resChooseDataSource
   + "' id=DataSourceId onkeypress=\"javascript:SubmitCreateNewReport(event);\" />"
   + "</td>"
   + "</tr>"
   + "<tr><td nowrap>"
   + "<input type=button name=CreateNewReportGo value=\"" + resOK 
   + "\" onclick=\"javascript:OnCreateNewReportOptions();\">&nbsp;"
   + "<input type=button name=Cancel value=\"" + resCancel 
   + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";
   
function ShowCreateNewReportOptions()
{
   var clDataSource;
   var nIndex;
   var strText;

   if (M_anCubeIds.length == 1) {
      OnNewReport(M_anCubeIds[0]);
      return;
   }
   DisplayOption(CreateNewReportOptions, "CreateNewReportButton");
   clDataSource = document.getElementById("DataSourceId");
   for (nIndex = 0; nIndex < M_anCubeIds.length; nIndex++) {
      strText = M_astrCubeTitles[nIndex];
      if (strText.length > G_nMaxDataSourceTitle) {
         strText = strText.substring(0, G_nMaxDataSourceTitle - 1) + G_strThreeDots;
      }
      SelectControlAddOption(clDataSource, M_anCubeIds[nIndex], strText);
   }
   clDataSource.focus();
   // Resize scroll bars
   onLayoutResize();
}

function SubmitCreateNewReport(e)
{
   var key = GetKeyCode(e);
   if ( key ==13) {
      OnCreateNewReportOptions();
      ResetSubmit(e);
   }
}

function OnCreateNewReportOptions()  
{
   var clDataSource;
   var nCube;
   
   clDataSource = document.getElementById("DataSourceId");
   if (clDataSource == null) {
      return;
   }
   nCube = clDataSource.options[clDataSource.selectedIndex].value;
   OnNewReport(nCube);
}

function OnNewReport(i_nCubeId)
{
	document.aspnetForm.CubeId.value = i_nCubeId;
	document.aspnetForm.action = "../Dim/dimension.aspx";
	executeWait(document.aspnetForm);
}

var RegisterOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><div id='RegErrMessage' class='Message' /></td></tr>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td class=OptionHeader nowrap align=left>" + resRegister + "</td></tr>"
   + "<tr height='3' />"
   + "</table></td></tr>"
   + "<tr><td><table border=0 width=1%>"
   + "<tr><th colspan=2 class='OptionItem'>" + resRegistrationHelp + "</th>"
   + "<th colspan=4></th></tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=reglogintemp ACCESSKEY='u'>" + resEnterLoginName + "</label></td>"
   + "<td><input class=Default title=\"" + resEnterLoginName + "\" "
   + "onkeypress='javascript:SubmitRegister(event);'"
   + " name='reguserlogintemp' id='reglogintemp' type=text></td>"
   + "<td colspan=4></td></tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=regpwdtemp ACCESSKEY='p'>" + resEnterPassword + "</label></td>"
   + "<td><input class=Default id='regpwdtemp' title=\"" + resEnterPassword + "\" "
   + strPasswordType + " onkeypress='javascript:SubmitRegister(event);'></td>"
   + "<td colspan=4></td></tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=confirmId ACCESSKEY='r'>" + resRetypePassword + "</label></td>"
   + "<td><input class=Default name='confirm' id='confirmId' title=\"" + resRetypePassword + "\" "
   + strPasswordType + " onkeypress='javascript:SubmitRegister(event);'></td>"
   + "<td colspan=4></td></tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=firstnameId ACCESSKEY='f'>" + resFirstName + "</label></td>"
   + "<td><input class=Default name='firstname' id='firstnameId' title=\"" + resFirstName + "\" "
   + "onkeypress='javascript:SubmitRegister(event);'></td>"
   + "<td colspan=4></td></tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=lastnameId ACCESSKEY='f'>" + resLastName + "</label></td>"
   + "<td><input class=Default name='lastname' id='lastnameId' title=\"" + resLastName + "\" "
   + "onkeypress='javascript:SubmitRegister(event);'></td>"
   + "<td colspan=4></td></tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=organizationId ACCESSKEY='f'>" + resCompany + "</label></td>"
   + "<td><input class=Default name='organization' id='organizationId' title=\"" + resCompany + "\" "
   + "onkeypress='javascript:SubmitRegister(event);'></td>"
   + "<td colspan=4></td></tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=emailId ACCESSKEY='f'>" + resEmail + "</label></td>"
   + "<td><input class=Default name='email' id='emailId' title=\"" + resEmail + "\" "
   + "onkeypress='javascript:SubmitRegister(event);'></td>"
   + "<td width=20></td>"
   + "<td align='left'>"
   + "<input name=OKButton type=button value=\"" + resOK
   + "\" onclick='javascript:OnRegister();'></td>"
   + "<td width=3></td>"
   + "<td><input name=CancelButton type=button value=\"" + resCancel
   + "\" onclick='javascript:OnCancelOptions();'></td></tr>"
   + "</table></td></tr>"
   + "</table>";

function ShowRegisterOptions(i_strErrorMsg)
{
   var clErrorMsg;

   DisplayOption(RegisterOptions, "LoginButton");
   if (!G_dIEVersion) {
      var clPwdtemp = document.getElementById("regpwdtemp");
      if (clPwdtemp != null) {
         clPwdtemp.setAttribute("type", "password");
      }
      clPwdtemp = document.getElementById("confirmId");
      if (clPwdtemp != null) {
         clPwdtemp.setAttribute("type", "password");
      }
   }
   if (i_strErrorMsg != null) {
      clErrorMsg = document.getElementById("RegErrMessage");
      clErrorMsg.innerHTML = i_strErrorMsg;
   }
   setTimeout("document.aspnetForm.reguserlogintemp.focus();", 100);
   // Resize scroll bars
   onLayoutResize();
}

function SubmitRegister(e)
{
   var key = GetKeyCode(e);
   if ( key == 13) {
      OnRegister();
      ResetSubmit(e);
   }
}

function OnRegister()
{
   if (ValidateRegisterFields()) {
      executeWait(document.aspnetForm);
   }
}

function ValidateRegisterFields()
{
	var obj;
	var str;
	var strConfirm;
	var strAlertLogin, strAlertFirstname, strAlertLastname, strAlertCompany,  strAlertEmail;
		
	obj = document.aspnetForm;
		
	// Login
	if (!ValidateLoginFields()) return false;
	
	obj = obj.reguserlogintemp;
	strAlertLogin = obj.value;

	// Confirm password
	obj = document.aspnetForm.confirm;
	strConfirm = obj.value;
	if (IsControlEmpty(obj, resPasswordConfirmation))	return false;
	
	
	// compare the password and the confirm password
	if (document.aspnetForm.regpwd.value != strConfirm) {
		alert(resPasswordMismatch);
		obj.select();
		obj.focus();
		return false;
	}

	// First name
	obj = document.aspnetForm.firstname;
	str = obj.value;
	if (IsControlEmpty(obj, resFirstNameEntry)) return false;
	if (!CheckForLength(obj, 50, resFirstNameLength)) return false;
	strAlertFirstname = str;

	// Last name
	obj = document.aspnetForm.lastname;
	str = obj.value;
	if (IsControlEmpty(obj, resLastNameEntry)) return false;
	if (!CheckForLength(obj, 100, resLastNameLength)) return false;
	strAlertLastname = str;

	// organization
	obj = document.aspnetForm.organization;
	str = obj.value;
	if (IsControlEmpty(obj, resCompanyEntry)) return false;
	if (!CheckForLength(obj, 100, resCompanyLength)) return false;
	strAlertCompany = str;

	// email
	obj = document.aspnetForm.email;
	str = obj.value;
    
	if (IsControlEmpty(obj, resEmailEntry)) return false;
		
	// validate the email address.
	if ((str.indexOf("@") == -1) || (str.indexOf(".") == -1)) {
		alert(resInvalidEmail);
		obj.select();
		obj.focus();
		return false;
	}
	
	if (!CheckForLength(obj, 100, resEmailLength)) return false;
	strAlertEmail = str;
	var strBuffer = 
			resPleaseConfirm + '\n' +
			'---------------------------------------------------- \n' +
			resConfirmUserName + '\t' + 
			strAlertLogin +  '\n' +
			resConfirmFirstName + '\t' + 
			strAlertFirstname + '\n' +
			resConfirmLastName + '\t' + 
			strAlertLastname + '\n' +
			resConfirmCompany + '\t' + 
			strAlertCompany + '\n' +
			resConfirmEmail + '\t' + strAlertEmail + '\n';

	if (!confirm(strBuffer)) return false;
	document.aspnetForm.regemail.value = strAlertEmail;
	document.aspnetForm.regorganization.value = strAlertCompany;
	document.aspnetForm.regfirstname.value = strAlertFirstname;
	document.aspnetForm.reglastname.value = strAlertLastname;
	document.aspnetForm.CheckRegistration.value ="1";
	return true;
}

var CreateNewFolderOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionHeader nowrap align=left>" + resCreateNewFolder + "</td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td id='NewFolderMsg' class=OptionHeader nowrap align=left></td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=FolderNameId ACCESSKEY='n'>" + resFolderName + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resFolderName + "\" "
   + "onkeypress='javascript:SubmitCreateNewFolder(event);'"
   + " name='FolderName' id='FolderNameId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"  
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=ParentFolderId ACCESSKEY='d'>" + resChooseParentFolder + "</LABEL>"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<select name=ParentFolder title = '" + resChooseParentFolder
   + "' id=ParentFolderId onkeypress=\"javascript:SubmitCreateNewFolder(event);\" />"
   + "</td>"
   + "</tr>"
   + "<tr><td nowrap>"
   + "<input name=OKButton type=button value=\"" + resOK 
   + "\" onclick=\"javascript:OnCreateNewFolderOptions();\">&nbsp;"
   + "<input name=CancelButton type=button value=\"" + resCancel 
   + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";

function ShowCreateNewFolderOptions()
{
   var bFound;
   var clFolderName;
   var clParentFolder;
   var nFolderNameIndex = 0;
   var nIndex;
   var objMsgCell;
   var szTitle = "";
   var szDefaultTitle = resNewFolderName;
   var szName = "";
   var szTemp;
   
   DisplayOption(CreateNewFolderOptions, "CreateNewFolderButton");
   clFolderName = document.getElementById("FolderNameId");
   clParentFolder = document.getElementById("ParentFolderId");
   
   if (document.aspnetForm.CurrentAction.value == ACTION_NEW_FOLDER_NAME) {
      szName = document.aspnetForm.CurrentActionBuffer2.value;
   }
   else {
      //assign default folder name
      while (szName == "") {
         szTemp = szDefaultTitle  + " " + nFolderNameIndex.toString();
         bFound = false;
         for (nIndex = 0; nIndex < M_astrOwnersFolderTitles.length; nIndex++)
         {
            szTitle = M_astrOwnersFolderTitles[nIndex];
            //remove leading spaces
            while (szTitle.substring(0, 1) == " ") {
               szTitle = szTitle.substring(1)
            }
            if (szTemp == szTitle){
               bFound = true;
               break;
            }
         }
         if (!bFound) {
            szName = szTemp;
         }
         nFolderNameIndex += 1;
      }
   }
   clFolderName.value = szName;

   for (nIndex = 0; nIndex < M_astrOwnersFolderTitles.length; nIndex++) {
      SelectControlAddOption(clParentFolder, M_anOwnersFolderIds[nIndex], M_astrOwnersFolderTitles[nIndex]);
   }
   clParentFolder.selectedIndex = 0;
   
   if (M_strDialogMsg) {
      if (M_strDialogMsg != "") {
         objMsgCell = document.getElementById("NewFolderMsg");
         if (objMsgCell) { 
            objMsgCell.innerHTML = M_strDialogMsg;
            M_strDialogMsg = "";
         }
      }
   }

   setTimeout("document.aspnetForm.FolderName.focus();", 100);

   // Resize scroll bars
   onLayoutResize();
}

function SubmitCreateNewFolder(e)
{
   var key = GetKeyCode(e);
   if ( key == 13) {
      OnCreateNewFolderOptions();
      ResetSubmit(e);
   }
}

function ValidateFolderName(i_clFolderName, i_szFolderName)
{
   var bValid = true;
   var nCode;
   var nIndex;
   var nTemp;

   if (i_szFolderName.length == 0) {
		alert(resSpecifyFolderName);
      i_clFolderName.focus();
      bValid = false;
   }
   else if (i_szFolderName == resPublicReports || i_szFolderName == resMyReports) {
		alert(resFolderExists + i_szFolderName); 
      i_clFolderName.focus();
      bValid = false;
   }
	else if (i_szFolderName.charAt(0) == " ") {
		alert(resFirstFolderCharacter); 
      i_clFolderName.focus();
      bValid = false;
	}
	else if (i_szFolderName.length > 250) {
		alert(resFolderNameTooLong);
      i_clFolderName.focus();
      bValid = false;
	}
	else {
	   bValid = true;
		for (nIndex = 0; nIndex < i_szFolderName.length && bValid; nIndex++) {
			nTemp = i_szFolderName.charAt(nIndex);
			nCode = i_szFolderName.charCodeAt(nIndex);
			if ( nCode == 34 || nCode == 43 || nCode == 92) // Invalidate " + \
			{
				alert(nTemp + " " + resInvalidFolderChar);
            i_clFolderName.focus();
				bValid = false;
			}
		}           
	}
	return bValid;
}

function OnCreateNewFolderOptions()  
{
   var clFolderName = document.getElementById("FolderNameId");
   var clParentFolder;
   var nParentFolder;
   var szFolderName;
   
   szFolderName = clFolderName.value;
   if (ValidateFolderName(clFolderName, szFolderName)) {
      clParentFolder = document.getElementById("ParentFolderId");
      nParentFolder = clParentFolder.options[clParentFolder.selectedIndex].value;
	   document.aspnetForm.CurrentAction.value = ACTION_NEW_FOLDER_NAME;
	   document.aspnetForm.CurrentActionBuffer1.value = nParentFolder;
      szFolderName = szFolderName.replace(new RegExp("<", "g"), GLtRep);
      szFolderName = szFolderName.replace(new RegExp(">", "g"), GGtRep);
	   document.aspnetForm.CurrentActionBuffer2.value = escapeHTML(szFolderName);
	   executeWait(document.aspnetForm);
   }
}

var CreateLocalCubeOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionHeader nowrap align=left>" + resCreateLocalCube + "</td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"  
   + "<td class=OptionItem nowrap>"
   + "<LABEL id=DataSourceForLocalCubeLabel FOR=DataSourceForLocalCubeId ACCESSKEY='d'>" 
   + resChooseDataSource + "</LABEL>"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<select name=DataSource title = '" + resChooseDataSource
   + "' id=DataSourceForLocalCubeId onkeypress='javascript:SubmitCreateLocalCube(event);'"
   + " onkeyup='javascript:SwitchLocalCubeDataSource(this);'"
   + " onchange='javascript:SwitchLocalCubeDataSource(this);' />"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=LocalNameId ACCESSKEY='n'>" + resLocalCubeName + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resLocalCubeName + "\" "
   + "onkeypress='javascript:SubmitCreateLocalCube(event);'"
   + " name='LocalName' id='LocalNameId' type=text size='50' value='" 
   + resLocalCubeDefaultName + "'>"
   + "</td>"
   + "</tr>"
   + "<tr>"  
   + "<td class=OptionItem nowrap>" + resCreateLocalCubeFor + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<input name=CreateLocalCubeFor id=CreateLocalCubeForExcel type=radio title='" 
   + resMicrosoftExcel + "' checked >"
   + "<LABEL FOR=CreateLocalCubeForExcel ACCESSKEY='e'>" + resMicrosoftExcel + "</LABEL>"
   + "&nbsp;&nbsp;&nbsp;&nbsp;"
   + "<input name=CreateLocalCubeFor id=CreateLocalCubeForPerspective type=radio title='" + resPerspective + "' >"
   + "<LABEL id=CreateLocalCubeForPerspectiveLabel FOR=CreateLocalCubeForPerspective ACCESSKEY='v'>" 
   + resPerspective + "</LABEL>"
   + "</td>"
   + "</tr>"
   + "<tr><td nowrap>"
   + "<input name=OKButton type=button value=\"" + resOK 
   + "\" onclick='javascript:OnCreateLocalCubeOptions();'>&nbsp;"
   + "<input name=CancelButton type=button value=\"" + resCancel 
   + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";

function ShowCreateLocalCubeOptions()
{
   var clDataSource;
   var clDataSourceLabel;
   var nIndex;

   DisplayOption(CreateLocalCubeOptions, "CreateLocalCubeButton");
   clDataSource = document.getElementById("DataSourceForLocalCubeId");
   clDataSourceLabel = document.getElementById("DataSourceForLocalCubeLabel");
   for (nIndex = 0; nIndex < M_astrLocalSourceTitles.length; nIndex++) {
      SelectControlAddOption(clDataSource, M_anLocalSourceIds[nIndex], M_astrLocalSourceTitles[nIndex]);
   }
   clDataSource.selectedIndex = 0;
   if (G_nBrowser == IE) {
      clDataSourceLabel.onclick = AdjustLocalCubeDataSource;
   }
   AdjustLocalCubeDataSource();
   clDataSource.focus();

   // Resize scroll bars
   onLayoutResize();
}

function SwitchLocalCubeDataSource(i_clDataSource, i_nSelectedIndex)
{
   var clCreateLocalCubeForExcel = document.getElementById("CreateLocalCubeForExcel");
   var clCreateLocalCubeForPerspective = document.getElementById("CreateLocalCubeForPerspective");
   var clCreateLocalCubeForPerspectiveLabel = document.getElementById("CreateLocalCubeForPerspectiveLabel");
   var nIndex;
   
   if (i_nSelectedIndex == null) {
      nIndex = i_clDataSource.selectedIndex;
   }
   else {
      nIndex = i_nSelectedIndex;
   }
   if (M_abLocalSourceMetadataExport[nIndex]) {
      clCreateLocalCubeForExcel.checked = true;
      clCreateLocalCubeForPerspective.checked = false;
      clCreateLocalCubeForPerspective.disabled = false;
      clCreateLocalCubeForPerspectiveLabel.disabled = false;
      clCreateLocalCubeForPerspectiveLabel.className = "";
   } 
   else {
      clCreateLocalCubeForExcel.checked = true;
      clCreateLocalCubeForPerspective.checked = false;
      clCreateLocalCubeForPerspective.disabled = true;
      clCreateLocalCubeForPerspectiveLabel.disabled = true;
      clCreateLocalCubeForPerspectiveLabel.className = "DisabledLabel";
   }
}

function AdjustLocalCubeDataSource()
{
   SwitchLocalCubeDataSource(document.getElementById('DataSourceForLocalCubeId'), 0);
}

function SubmitCreateLocalCube(e)
{
   var key = GetKeyCode(e);
   if ( key ==13) {
      OnCreateLocalCubeOptions();
      ResetSubmit(e);
   }
}

function OnCreateLocalCubeOptions()  
{
   var clCreateLocalCubeForExcel = document.getElementById("CreateLocalCubeForExcel");
   var clDataSourceForLocalCubeId = document.getElementById("DataSourceForLocalCubeId");
   var clLocalCubeNameId = document.getElementById("LocalNameId");
   var nCube;
   var strLocalCubeName = "";   
   
   if (clLocalCubeNameId != null) {
      strLocalCubeName = clLocalCubeNameId.value;
      if (strLocalCubeName == "") {// check if the name is not given
         alert(resLocalCubeNameMissing);
         clLocalCubeNameId.focus();
         return;
      } 
      else { // check if the length of the name is over 24
         if (strLocalCubeName.length > 24) {
            alert(resLocalCubeNameLengthOver);
            clLocalCubeNameId.value = strLocalCubeName.substring(0,23);
            clLocalCubeNameId.focus();
            return;   
         }
      }	      
   }
   
   nCube = clDataSourceForLocalCubeId.options[clDataSourceForLocalCubeId.selectedIndex].value;
   
   document.aspnetForm.LocalCubeSourceId.value = nCube;
   document.aspnetForm.LocalCubeName.value = strLocalCubeName;
   if (clCreateLocalCubeForExcel != null) {
      if (clCreateLocalCubeForExcel.checked) {
         document.aspnetForm.LocalCubeForExcel.value = "True";
      }
      else {
         document.aspnetForm.LocalCubeForExcel.value = "False";
      }
   }
   document.aspnetForm.action = "../Dim/localcubeselection.aspx";
   executeWait(document.aspnetForm);
}

function OnCancelLocalCube()
{
   document.aspnetForm.action = "../Browse/browsetables.aspx";
   executeWait(document.aspnetForm);
}

function CreateLocalCube()  
{
   // At least one measure should be selected
   if (M_nMeasuresChecked == 0) {
      alert(resLocalCubeAtLeastOneMeasure);
      return;
   }
   
   // At least one level of a dimension or a parent-child duimension should be selected
   if (M_nLevelsChecked == 0) {
      alert(resLocalCubeAtLeastOneLevel);
      return;
   }
   
   var clLangCellDiv = document.getElementById("LangCellDiv");
   var clLangCellDivDisabled = document.getElementById("LangCellDivDisabled");
   if( clLangCellDiv != null && clLangCellDivDisabled != null) {
      clLangCellDiv.style.display = "block";
      clLangCellDivDisabled.style.display = "none";
   }
   
   var clOkAndCancelButtons = document.getElementById("OkAndCancelButtons");
   var clCloseButton = document.getElementById("CloseButton");
   if (clOkAndCancelButtons != null) {
      clOkAndCancelButtons.style.display = 'none';
   }
   if (clCloseButton != null) {
      clCloseButton.style.display = 'block';
   }
   
	// The ?x= in the action line below is required to make Netscape dowload the files properly.
   // Without that, Netscape will try to add a .aspx extension to whatever filename is suggested,
   // resulting in things like localcube.cub.aspx, which doesn't work at all.
   // This solution was found on BugZilla: http://bugzilla.mozilla.org/show_bug.cgi?id=65827#c81
	document.aspnetForm.action = "../Dim/localcubecreation.aspx?x="; // See comments
   document.aspnetForm.submit();
   document.aspnetForm.action = '';
}

var ChangeFolderNameOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionHeader nowrap align=left>" + resChangeFolderName + "</td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td id='ChangeFolderNameOptionsMsg' class=OptionHeader nowrap align=left></td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<div id='OptionLanguageEntry' />"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<div id='OptionLanguageTitle' />"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=ChangeNameId ACCESSKEY='n'>" + resFolderName + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resFolderName + "\" "
   + "onkeypress='javascript:SubmitChangeFolderName(event);'"
   + " name='ChangeName' id='ChangeNameId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr><td nowrap>"
   + "<input name=OKButton type=button value=\"" + resOK 
   + "\" onclick='javascript:OnChangeFolderNameOptions();'>&nbsp;"
   + "<input name=CancelButton type=button value=\"" + resCancel 
   + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";

var g_strChangeTitleAndNotesOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionHeader nowrap align=left>" + resChangeTitleAndNotes + "</td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td id='SaveReportMsg' class=OptionHeader nowrap align=left></td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<div id='OptionLanguageEntry' />"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<div id='OptionLanguageTitle' />"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=ChangeTitleId ACCESSKEY='n'>" + resTitle + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resTitle + "\" "
   + "onkeypress='javascript:SubmitChangeTitleAndNotes(event);'"
   + " name='ChangeTitle' id='ChangeTitleId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td class=OptionItem valign=top nowrap><Label for='ChangeNotesId'>"
   + resNotes + "</label></td>"
   + "<td>"
   + "<textarea class=Default title='" + resNotes + "' name=ChangeNotes "
   + "id=ChangeNotesId cols='50' rows='10' "
   + "onmousedown='event.cancelBubble = true; return true;' "
   + "onmousemove='event.cancelBubble = true; return true;' >"
   + "</textarea>"
   + "</td>"
   + "</tr>"
   + "<tr><td nowrap>"
   + "<input name=OKButton type=button value=\"" + resOK 
   + "\" onclick=\"javascript:OnChangeTitleAndNotesOptions();\">&nbsp;"
   + "<input name=CancelButton type=button value=\"" + resCancel 
   + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";

function ShowChangeOptions()
{
   var nIndex;
   for (nIndex = 0; nIndex < M_astrNodeText.length; nIndex++) {
      if (M_anNodeChecked[nIndex] == 1) {
         if (M_anNodeType[nIndex] == NODE_FOLDER) {
            ShowChangeFolderNameOptions(nIndex);
         }
         else if (M_anNodeType[nIndex] == NODE_REPORT) {
            ShowChangeTitleAndNotesOptions(nIndex);
         }
         break;
      }
   }
}

function ShowChangeFolderNameOptions(i_nNodeIndex)
{
   var clFolderName;
   var clLanguageEntry;
   var clLanguageTitle;
   var nIndex;
   var objMsgCell;
   var strCurLang;
   
   DisplayOption(ChangeFolderNameOptions, "ChangeButton");
   if (M_astrLanguageNames.length > 1) {
      clLanguageEntry = document.getElementById("OptionLanguageEntry");
      clLanguageTitle = document.getElementById("OptionLanguageTitle");
      if (clLanguageEntry != null && clLanguageTitle != null) {
         clLanguageEntry.innerHTML = resLanguagePrompt;
         strCurLang = document.aspnetForm.PerspectiveLanguage.value;
         for (nIndex = 0; nIndex < M_astrLanguageCodes.length; nIndex++) {
            if (M_astrLanguageCodes[nIndex] == strCurLang) {
               clLanguageTitle.innerHTML = M_astrLanguageNames[nIndex];
               break;
            }
         }
      }
   }
   if (M_strDialogMsg) {
      if (M_strDialogMsg != "") {
         objMsgCell = document.getElementById("ChangeFolderNameOptionsMsg");
         if (objMsgCell) { 
            objMsgCell.innerHTML = M_strDialogMsg;
            M_strDialogMsg = "";
         }
      }
   }
   clFolderName = document.getElementById("ChangeNameId");
   if (clFolderName != null) {
      if (document.aspnetForm.CurrentAction.value == ACTION_CHANGE_FOLDER_NAME) {
         clFolderName.value = unescapeHTML(document.aspnetForm.CurrentActionBuffer1.value);
      }
      else {
         clFolderName.value = unescapeHTML(M_astrNodeText[i_nNodeIndex]);
      }
      clFolderName.select();
      setTimeout("document.aspnetForm.ChangeName.focus();", 100);
   }

   // Resize scroll bars
   onLayoutResize();
}

function ShowChangeTitleAndNotesOptions(i_nNodeIndex)
{
   var clLanguageEntry;
   var clLanguageTitle;
   var clReportNotes;
   var clReportTitle;
   var nIndex;
   var objSaveReportMsgCell;
   var strCurLang;
   var strNotes;
   var szReportTitle;
   
   DisplayOption(g_strChangeTitleAndNotesOptions, "ChangeButton");
   if (M_astrLanguageNames.length > 1) {
      clLanguageEntry = document.getElementById("OptionLanguageEntry");
      clLanguageTitle = document.getElementById("OptionLanguageTitle");
      if (clLanguageEntry != null && clLanguageTitle != null) {
         clLanguageEntry.innerHTML = resLanguagePrompt;
         strCurLang = document.aspnetForm.PerspectiveLanguage.value;
         for (nIndex = 0; nIndex < M_astrLanguageCodes.length; nIndex++) {
            if (M_astrLanguageCodes[nIndex] == strCurLang) {
               clLanguageTitle.innerHTML = M_astrLanguageNames[nIndex];
               break;
            }
         }
      }
   }
   clReportTitle = document.getElementById("ChangeTitleId");
   clReportNotes = document.getElementById("ChangeNotesId");
   if (clReportTitle != null && clReportNotes != null) {
      if (M_strDialogMsg) {
         if (M_strDialogMsg != "") {
            objSaveReportMsgCell = document.getElementById("SaveReportMsg");
            if (objSaveReportMsgCell) { 
               objSaveReportMsgCell.innerHTML = M_strDialogMsg;
               M_strDialogMsg = "";
            }
         }
      }
      if (document.aspnetForm.CurrentAction.value == ACTION_TITLE_NOTES) {
         szReportTitle = document.aspnetForm.CurrentActionBuffer1.value;
         strNotes = document.aspnetForm.CurrentActionBuffer2.value;
      }
      else {
         if (typeof(i_nNodeIndex) != 'undefined') {
            // use the browsetables info
            szReportTitle = M_astrNodeText[i_nNodeIndex];
            strNotes = M_astrNodeNotes[i_nNodeIndex];
         }
         else {
            // use the report info
            szReportTitle = document.aspnetForm.ViewTitle.value;
            strNotes = document.aspnetForm.ViewNotes.value.replace(new RegExp(GDoubleQuoteRep, "g"), "\"");
         }
      }

      szReportTitle = szReportTitle.replace(new RegExp(GLtRep, "g"), "<");
      szReportTitle = szReportTitle.replace(new RegExp(GGtRep, "g"), ">");
      clReportTitle.value = unescapeHTML(szReportTitle);

	   strNotes = strNotes.replace(new RegExp(GCommaRep, "g"), String.fromCharCode(13));
	   strNotes = strNotes.replace(new RegExp(GSpaceRep, "g"), String.fromCharCode(10));
	   strNotes = strNotes.replace(new RegExp(GLtRep, "g"), "<");
      strNotes = strNotes.replace(new RegExp(GGtRep, "g"), ">");
      clReportNotes.value = strNotes;
      clReportTitle.select();
      setTimeout("document.aspnetForm.ChangeTitle.focus();", 100);
   }

   // Resize scroll bars
   onLayoutResize();
}

function SubmitChangeFolderName(e)
{
   var key = GetKeyCode(e);
   if ( key == 13) {
      OnChangeFolderNameOptions();
      ResetSubmit(e);
   }
}

function SubmitChangeTitleAndNotes(e)
{
   var key = GetKeyCode(e);
   if ( key == 13) {
      OnChangeTitleAndNotesOptions();
      ResetSubmit(e);
   }
}

function OnChangeFolderNameOptions() {
   var clFolderName = document.getElementById("ChangeNameId");
   var szFolderName;

   szFolderName = clFolderName.value;
   if (ValidateFolderName(clFolderName, szFolderName)) {
      document.aspnetForm.CurrentAction.value = ACTION_CHANGE_FOLDER_NAME;
      document.aspnetForm.CurrentActionBuffer1.value = escapeHTML(szFolderName);
      executeWait(document.aspnetForm);
   }
}

function ValidateReportTitle(i_clReportTitle, i_szReportTitle)
{
   var bValid = true;
   var nCode;
   var nIndex;
   var nTemp;

   if (i_szReportTitle.length == 0) {
		alert(resSpecifyName);
      i_clReportTitle.focus();
      bValid = false;
   }
	else if (i_szReportTitle.charAt(0) == " ") {
		alert(resFirstCharacter); 
      i_clReportTitle.focus();
      bValid = false;
	}
	else if (i_szReportTitle.length > 250) {
		alert(resNameTooLong);
      i_clReportTitle.focus();
      bValid = false;
	}
	else {
	   bValid = true;
		for (nIndex = 0; nIndex < i_szReportTitle.length && bValid; nIndex++) {
			nTemp = i_szReportTitle.charAt(nIndex);
			nCode = i_szReportTitle.charCodeAt(nIndex);
			if ( nCode == 34 || nCode == 43 || nCode == 92) // Invalidate " + \
			{
				alert(nTemp + " " + resInvalidChar);
            i_clReportTitle.focus();
				bValid = false;
			}
		}           
	}
	return bValid;
}

function OnChangeTitleAndNotesOptions() {
   var clReportTitle = document.getElementById("ChangeTitleId");
   var szReportNotes;
   var szReportTitle;
   
   szReportTitle = clReportTitle.value;
   if (ValidateReportTitle(clReportTitle, szReportTitle)) {
      szReportNotes = document.getElementById("ChangeNotesId").value
      document.aspnetForm.CurrentAction.value = ACTION_TITLE_NOTES;
      szReportTitle = szReportTitle.replace(new RegExp("<", "g"), GLtRep);
      szReportTitle = szReportTitle.replace(new RegExp(">", "g"), GGtRep);
      document.aspnetForm.CurrentActionBuffer1.value = escapeHTML(szReportTitle);
      szReportNotes = szReportNotes.replace(new RegExp("<", "g"), GLtRep);
      szReportNotes = szReportNotes.replace(new RegExp(">", "g"), GGtRep);
      document.aspnetForm.CurrentActionBuffer2.value = escapeHTML(szReportNotes);
      executeWait(document.aspnetForm);
   }
}

var PAGE_TYPE_DISPVIEW = 1;
var PAGE_TYPE_DISPCHART = 2;
var PAGE_TYPE_DRILLTHROUGH = 3;
var PAGE_TYPE_OTHER = 4;
var PAGE_TYPE_DIM = 5;

function GetPageType()
{
   var strThisPage = document.location.href.toLowerCase();
   if(strThisPage.indexOf("dispview.aspx")>0) return PAGE_TYPE_DISPVIEW;
   if(strThisPage.indexOf("dispchart.aspx")>0) return PAGE_TYPE_DISPCHART;
   if(strThisPage.indexOf("drillthrough.aspx")>0) return PAGE_TYPE_DRILLTHROUGH;
   if(strThisPage.indexOf("dimension.aspx")>0) return PAGE_TYPE_DIM;
   return PAGE_TYPE_OTHER;
}

function IsValidValue(i_szValue, i_nCount)
{
   var cChar;
   var nIndex;

   for (nIndex = 0; nIndex < i_szValue.length; nIndex++) {
      cChar = i_szValue.charAt(nIndex);
      if (cChar < '0' || cChar > '9') {
		   return false;
	   }
	   else if (cChar == '0' && nIndex == 0) {
		   return false;
	   }
   }
   if (parseInt(i_szValue) < 1 || parseInt(i_szValue) > parseInt(i_nCount)) {
      return false;
   }
   return true;
}

//Get the back ground color for this particular style.
// ----------------------------------------------------------------------------    
function getBackGroundColor(strBackGroundStyle)
{
	var bkgColor;
	var bkgColorIndex = getStyleSheetRuleIndex(strBackGroundStyle);

   if (bkgColorIndex != -1) {
	   // If the browser supports the W3C DOM way, use cssRules.
	   if (document.styleSheets[0].cssRules) {
		   bkgColor = document.styleSheets[0].cssRules[bkgColorIndex].style.backgroundColor;
	   }
	   // If it supports the Microsoft way, use rules.
	   else if (document.styleSheets[0].rules) {
		   bkgColor = document.styleSheets[0].rules[bkgColorIndex].style.backgroundColor;
	   }
	}

	return bkgColor;
}

//Get the index where this particular style exists in the style sheet.
// ----------------------------------------------------------------------------
function getStyleSheetRuleIndex(strBackGroundStyle)
{
	var astrRules;

	// If the browser supports the W3C DOM way, use cssRules.
	if (document.styleSheets[0].cssRules) {
		astrRules = document.styleSheets[0].cssRules;
	}
	// If it supports the Microsoft way, use rules.
	else if (document.styleSheets[0].rules) {
		astrRules = document.styleSheets[0].rules
	}
	for (var i = 0; i < astrRules.length; i++) {
		if (astrRules[i].selectorText == strBackGroundStyle) {
			return i;
		}
	}

	return -1;
}

