﻿// this file contains code for handling option dialogs

var M_clCurrentOptionButton = null;
var M_strCurrentButtonImg = "";
var M_clCurrentOptionButtonExtra = null;

var strPasswordType = "type=password";

var LoginOptions = 
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><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='logintemp' id='logintemp' type=text></TD>"
   + "</TR>"
   + "<TR><TD class='OptionItem'>"
   + "<LABEL FOR=pwdtemp ACCESSKEY='p'>" + resEnterPassword + "</LABEL></TD>"
   + "<TD><INPUT class=Default name='pwdtemp' id='pwdtemp' title=\"" + resEnterPassword + "\" "
   + strPasswordType + " onkeypress='javascript:SubmitLogin(event);'></TD>"
   + "</tr>"
   + "</table></td></tr>"
   + "<tr><td><table>"
   + "<tr>"
   + "<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 id=TdRegisterButtonSpacer WIDTH=3 style='display:none'></TD>"
   + "<TD id=TdRegisterButton ALIGN=LEFT style='display:none'>"
   + "<input name=registerButton type=button value=\"" + resRegister
   + "\" onclick='javascript:ShowRegisterOptions();'>"
   + "</TD>"
   + "<TD id=TdPasswordRecoveryButtonSpacer WIDTH=3 style='display:none'></TD>"
   + "<TD id=TdPasswordRecoveryButton ALIGN=LEFT style='display:none'>"
   + "<input name=PasswordRecoveryButton type=button value=\"" + resForgotPassword
   + "\" onclick='javascript:OnForgotpassword();'>"
   + "</TD>"
   + "<TD WIDTH=3></TD>"
   + "<TD><input name=DialogHelpButton type=button value=\"" + resHelp
   + "\" onclick=\"javascript:DisplayDialogHelp('SignIn.htm', '');\"></TD>"
   + "</TR>"
   + "</TABLE></TD></TR>"
   + "</table>";

function DisplayOption(i_strOptionContent, i_strToolbarButton, i_strCurrentButtonImg, 
   i_clToolbar, i_strToolbarButtonExtra)
{
   var clOptionDialog;
   var strImage;
   var strToolbar;

   if (M_clCurrentOptionButton != null) {
      if (M_strCurrentButtonImg != "") {
         strImage = SwitchImageUrl(M_clCurrentOptionButton.get_imageUrl(), M_strCurrentButtonImg);
         M_clCurrentOptionButton.set_imageUrl(strImage);
      }
      else {
         strImage = SwitchImageUrl(M_clCurrentOptionButton.get_imageUrl(), "active");
         M_clCurrentOptionButton.set_imageUrl(strImage);
      }
      M_clCurrentOptionButton.set_enabled(true);
   }
   if (M_clCurrentOptionButtonExtra != null) {
      strImage = SwitchImageUrl(M_clCurrentOptionButtonExtra.get_imageUrl(), "active");
      M_clCurrentOptionButtonExtra.set_imageUrl(strImage);
      M_clCurrentOptionButtonExtra.set_enabled(true);
   }
   M_clCurrentOptionButton = null;
   M_clCurrentOptionButtonExtra = null;
   if (i_strToolbarButton != null && i_clToolbar != null) {
       M_clCurrentOptionButton = i_clToolbar.get_items().getItem(i_strToolbarButton);
      if (i_strToolbarButtonExtra != null) {
          M_clCurrentOptionButtonExtra = i_clToolbar.get_items().getItem(i_strToolbarButtonExtra);
      }
   }
   if (i_strCurrentButtonImg) {
      M_strCurrentButtonImg = i_strCurrentButtonImg;
   }
   else {
      M_strCurrentButtonImg = "";
   }   
   clOptionDialog = document.getElementById("OptionDialog");
   document.getElementById("OptionDialogRow").className = "";
   clOptionDialog.innerHTML = i_strOptionContent;
   if(M_clCurrentOptionButton != null) {
      strImage = SwitchImageUrl(M_clCurrentOptionButton.get_imageUrl(), "clicked");
      M_clCurrentOptionButton.set_imageUrl(strImage);
      M_clCurrentOptionButton.set_enabled(false);
   }
   if (M_clCurrentOptionButtonExtra != null) {
      strImage = SwitchImageUrl(M_clCurrentOptionButtonExtra.get_imageUrl(), "clicked");
      M_clCurrentOptionButtonExtra.set_imageUrl(strImage);
      M_clCurrentOptionButtonExtra.set_enabled(false);
   }
   AdjustDialogHelp();
}

function HideOptions(toolbarButton, toolbarButtonExtra)
{
   var clOptionDialog;
   var strImage;
   
   clOptionDialog = document.getElementById("OptionDialog");
   clOptionDialog.innerHTML = "";
   document.getElementById("OptionDialogRow").className = "Toolbar";
   if (toolbarButton != null) {
      if (M_strCurrentButtonImg != "") {
         strImage = SwitchImageUrl(toolbarButton.get_imageUrl(), M_strCurrentButtonImg);
         toolbarButton.set_imageUrl(strImage);
      }
      else {
         strImage = SwitchImageUrl(toolbarButton.get_imageUrl(), "active");
         toolbarButton.set_imageUrl(strImage);
      }
      toolbarButton.set_enabled(true);
   }
   if (toolbarButtonExtra != null) {
      strImage = SwitchImageUrl(toolbarButtonExtra.get_imageUrl(), "active");
      toolbarButtonExtra.set_imageUrl(strImage);
      toolbarButtonExtra.set_enabled(true);
   }
}

function OnCancelOptions()
{
   HideOptions(M_clCurrentOptionButton, M_clCurrentOptionButtonExtra);
   
   M_clCurrentOptionButton = null;
   M_strCurrentButtonImg = "";
   M_clCurrentOptionButtonExtra = null;
   // 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();
   }
}

function ShowLoginOptions() {
   var clTdPasswordRecoveryButton;
   var clTdPasswordRecoveryButtonSpacer;
   var clTdRegisterButton;
   var clTdRegisterButtonSpacer;
   var strPasswordRecovery;
   var strRegistration;
   
   DisplayOption(LoginOptions);
   if (!G_dIEVersion) {
      var clPwdtemp = document.getElementById("pwdtemp");
      if (clPwdtemp != null) {
         clPwdtemp.setAttribute("type", "password");
      }
   }
   strRegistration = document.aspnetForm.RegistrationAllowed.value;
   if (strRegistration == "True") {
      clTdRegisterButton = document.getElementById("TdRegisterButton");
      clTdRegisterButtonSpacer = document.getElementById("TdRegisterButtonSpacer");
      if (clTdRegisterButton != null && clTdRegisterButtonSpacer != null) {
         clTdRegisterButton.style.display = "";
         clTdRegisterButtonSpacer.style.display = "";
      }
   }
   strPasswordRecovery = document.aspnetForm.PasswordRecoverySupported.value;
   if (strPasswordRecovery == "True") {
      clTdPasswordRecoveryButton = document.getElementById("TdPasswordRecoveryButton");
      clTdPasswordRecoveryButtonSpacer = document.getElementById("TdPasswordRecoveryButtonSpacer");
      if (clTdPasswordRecoveryButton != null && clTdPasswordRecoveryButtonSpacer != null) {
         clTdPasswordRecoveryButton.style.display = "";
         clTdPasswordRecoveryButtonSpacer.style.display = "";
      }
   }
   setTimeout("document.aspnetForm.logintemp.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;
   objLogin = document.getElementById("logintemp");
   if (objLogin != null) {
      szLogin = objLogin.value;
      objPwd = document.getElementById("pwdtemp");
      szPassword = objPwd.value;
   }
   else {
      objLogin = document.getElementById("reglogintemp");
      if (objLogin != null) {
         bRegister = true;
         szLogin = objLogin.value;
         objPwd = document.getElementById("regpwdtemp");
         szPassword = objPwd.value;
      }
   }

   // 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;
   }
   return bValid;
}

function OnLogin() {
   var szLogin;
   var szPassword;
   
   if (!ValidateLoginFields()) {
      return false;
   }
   szLogin = document.aspnetForm.logintemp.value;
   szPassword = document.aspnetForm.pwdtemp.value;
   showWait();
   PageMethods.ValidateUserLogin(szLogin, szPassword, document.aspnetForm.ApplicationPath.value, onValidateUserLoginComplete);
}

function onValidateUserLoginComplete(results, context, methodName) {
   var aszResults = results.split(GCommaRep);
   var objMsgCell;
   var szErrorMsg;

   if (aszResults.length > 1) {
      szErrorMsg = aszResults[1];
      if (szErrorMsg.length > 0) {
         szErrorMsg = eval("res" + szErrorMsg);
         objMsgCell = document.getElementById("LoginErrMessage");
         if (objMsgCell) {
            objMsgCell.innerHTML = szErrorMsg;
            document.aspnetForm.logintemp.focus();
         }
      }
      else {
         document.aspnetForm.login.value = document.aspnetForm.logintemp.value;
         document.aspnetForm.pwd.value = document.aspnetForm.pwdtemp.value;
         document.aspnetForm.userId.value = aszResults[0];
         executeWait(document.aspnetForm);
      }
   }
   hideWait();
}

function OnForgotpassword() {
   var clLogin;
   var szCurLang;
   var szLogin;

   clLogin = document.getElementById("logintemp");
   if (IsControlEmpty(clLogin, resLoginName)) {
      return;
   }
   if (!CheckForLength(clLogin, 50, resLoginNameLength)) {
      return;
   }
   szLogin = clLogin.value;
   if (!IsAlphaNum(szLogin, false, true)) {
      alert(resAlphanumeric);
      clLogin.select();
      clLogin.focus();
      return;
   }
   szCurLang = document.aspnetForm.PerspectiveLanguage.value;
   showWait();
   PageMethods.EmailPassword(szLogin, document.aspnetForm.ApplicationPath.value, szCurLang, onEmailPasswordComplete);
}

function onEmailPasswordComplete(results, context, methodName) {
   var aszResults = results.split(GCommaRep);
   var objMsgCell;
   var szErrorDetail;
   var szErrorMsg;

   if (aszResults.length > 2) {
      szErrorMsg = aszResults[1];
      szErrorDetail = aszResults[2];
      if (szErrorMsg.length > 0) {
         szErrorMsg = eval("res" + szErrorMsg);
         objMsgCell = document.getElementById("LoginErrMessage");
         if (objMsgCell) {
            if (szErrorDetail != "") {
               szErrorMsg += "<BR>" + resErrorDetails + " " + szErrorDetail;
            }
            objMsgCell.innerHTML = szErrorMsg;
            document.aspnetForm.logintemp.focus();
         }
      }
      else {
         hideWait();
         OnCancelOptions();
         alert(resPasswordSent);
      }
   }
   hideWait();
}

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 nowrap>"
   + "<select class=Default 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();\">&nbsp;"
   + "<input name=DialogHelpButton type=button value=\"" + resHelp
   + "\" onclick=\"javascript:DisplayDialogHelp('Sort.htm', '');\">"
   + "</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);
   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 nowrap>"
   + "<select class=Default 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();\">&nbsp;"
   + "<input name=DialogHelpButton type=button value=\"" + resHelp
   + "\" onclick=\"javascript:DisplayDialogHelp('MoveToFolder.htm', '');\">"
   + "</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);
   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 aszCheckedFolders;
   var aszDestinationParents = new Array();
   var aszDestinationParentsTitle = new Array();
   var clDestinationFolder;
   var clNode;
   var clTreeView;
   var nDestinationFolderId;
   var nIndex;
   var nParent;
   var nParents = 0;
   var szCheckedFolder;
   var szDestinationFolder;
   var szDestinationFolderTitle;
   
   clDestinationFolder = document.getElementById("DestinationFolderId");
   if (clDestinationFolder == null) {
      return;
   }
   nDestinationFolderId = clDestinationFolder.options[clDestinationFolder.selectedIndex].value;
   if (nDestinationFolderId > 0 && M_szCheckedFolderIds.length > 0) {
      szDestinationFolder = "F_" + nDestinationFolderId.toString();
      aszCheckedFolders = M_szCheckedFolderIds.split(",");
      if (document.aspnetForm.GoToPublicReports.value == "True") {
         clTreeView = $find("ctl00_MainContent_RadPublicReportsTree");
      }
      else {
         clTreeView = $find("ctl00_MainContent_RadMyReportsTree");
      }

      // Generate parents of destination folder
      clNode = clTreeView.findNodeByValue(szDestinationFolder);
      szDestinationFolderTitle = clNode.get_text();
      while (clNode.get_parent() != clNode.get_treeView()) {
          clNode = clNode.get_parent();         
         if (clNode != null ) {
            aszDestinationParents[nParents] = clNode.get_value();
            aszDestinationParentsTitle[nParents] = clNode.get_text();
            nParents++;
         }
      }
      
      // Don't allow moving the folder to itself or to its sub-folder
      for (nIndex = 0; nIndex < aszCheckedFolders.length; nIndex++) {
         szCheckedFolder = aszCheckedFolders[nIndex];
         if (szCheckedFolder == szDestinationFolder) {
            alert('"' + szDestinationFolderTitle + '" ' + resMoveFolderToItself);
            clDestinationFolder.focus();
            return;
         }
         else {
            for (nParent = 0; nParent < nParents; nParent++) {
               if (szCheckedFolder == aszDestinationParents[nParent]) {
                  alert('"' + aszDestinationParentsTitle[nParent] + '" ' + resMoveFolderToItsSubfolder);
                  clDestinationFolder.focus();
                  return;
               }
            }
         }
      }
   }

   OnMoveToFolder(nDestinationFolderId);
}

function OnMoveToFolder(i_nDestinationFolderId)
{
   document.aspnetForm.MoveToFolderId.value = i_nDestinationFolderId;
   document.aspnetForm.MoveFolders.value = M_szCheckedFolderIds;
   document.aspnetForm.MoveReports.value = M_szCheckedReportIds;
   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 id='NewReportMsg' class=OptionHeader nowrap align=left></td>"
   + "</tr>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td class=OptionItem nowrap><label FOR=SaveAsId ACCESSKEY=\"s\">" + resTitle + "</label></td>"
   + "<td>"
   + "<input type=TEXT title='" + resTitle + "' name='SaveAs' id='SaveAsId' size='50' "
   + "class=Default onkeypress=\"javascript:return SubmitCreateNewReport(event);\" " 
   + "onmousedown='event.cancelBubble = true; return true;' onmousemove='event.cancelBubble = true; return true;' >"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<label FOR=SaveReportFolderId ACCESSKEY=\"d\">" + resChooseFolder + "</label>"
   + "</td>"
   + "<td nowrap>"
   + "<select class=Default name=SaveReportFolder title = '" + resChooseFolder + "' id=SaveReportFolderId "
   + "onkeypress=\"javascript:SubmitCreateNewReport(event);\"></select>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=DataSourceId ACCESSKEY=\"d\">" + resChooseDataSource + "</LABEL>"
   + "</td>"
   + "<td nowrap>"
   + "<select class=Default name=DataSource title = '" + resChooseDataSource
   + "' id=DataSourceId onkeypress=\"javascript:SubmitCreateNewReport(event);\" />"
   + "</td>"
   + "</tr>"
   + "<tr><td nowrap>"
   + "<input type=button name=CreateNewReportGo value=\"" + resContinue 
   + "\" onclick=\"javascript:OnCreateNewReportOptions();\">&nbsp;"
   + "<input type=button name=Cancel value=\"" + resCancel
   + "\" onclick=\"javascript:OnCancelOptions();\">&nbsp;"
   + "<input name=DialogHelpButton type=button value=\"" + resHelp
   + "\" onclick=\"javascript:DisplayDialogHelp('CreateNewReport.htm', '');\">"
   + "</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 clFolders;
   var nIndex;
   var strNewTitle = document.aspnetForm.NewViewTitle.value;
   var strText;

   DisplayOption(CreateNewReportOptions);
   document.aspnetForm.SaveAs.value = strNewTitle;
   clFolders = document.getElementById("SaveReportFolderId");
   for (nIndex = 0; nIndex < M_anOwnersFolderIds.length; nIndex++) {
      SelectControlAddOption(clFolders, M_anOwnersFolderIds[nIndex], M_astrOwnersFolderTitles[nIndex]);
   }
   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 bPublic;
   var nCode;
   var nIndex;
   var nTemp;
   var nUserId;
   var szViewName;
   
   szViewName = document.aspnetForm.SaveAs.value
   if (szViewName == null) {
      document.aspnetForm.SaveAs.focus();
	   return false;
   }
   if (szViewName.charAt(0) == " ") {
	   alert(resFirstCharacter); 
      document.aspnetForm.SaveAs.focus();
      return false;
   }
   else if (szViewName.length > 250) {
	   alert(resNameTooLong);
      document.aspnetForm.SaveAs.focus();
      return false;
   }
   else if (szViewName.length == 0) {
	   alert(resSpecifyName);
      document.aspnetForm.SaveAs.focus();
      return false;
   }
   else {
	   for (nIndex = 0; nIndex < szViewName.length; nIndex++) {
		   nTemp = szViewName.charAt(nIndex);
		   nCode = szViewName.charCodeAt(nIndex);
		   if ( nCode == 34 || nCode == 43 || nCode == 92) // Invalidate " + \
		   {
			   alert(nTemp + resInvalidChar);
            document.aspnetForm.SaveAs.focus();
            return false;         
		   }
	   }
	}
	if (document.aspnetForm.GoToPublicReports.value == "True") {
	   bPublic = true;
	}
	else {
	   bPublic = false;
	}
	nUserId = parseInt(document.aspnetForm.userId.value);
	showWait();
	PageMethods.ValidateNewReport(szViewName, bPublic, nUserId, document.aspnetForm.ApplicationPath.value,
         onValidateNewReportComplete);
}

function onValidateNewReportComplete(results, context, methodName) {
   var clDataSource;
   var clFolder;
   var objMsgCell;
   var szErrorMsg;
   var szViewName;

   if (results != null) {
      szErrorMsg = results;
   }
   else {
      szErrorMsg = "ReportNotValidatedDBError";
   }
   if (szErrorMsg.length > 0) {
      szErrorMsg = eval("res" + szErrorMsg);
      objMsgCell = document.getElementById("NewReportMsg");
      if (objMsgCell) {
         objMsgCell.innerHTML = szErrorMsg;
         document.aspnetForm.SaveAs.focus();
      }
      hideWait();
   }
   else {
      szViewName = document.aspnetForm.SaveAs.value;
      szViewName = szViewName.replace(new RegExp("<", "g"), GLtRep);
      szViewName = szViewName.replace(new RegExp(">", "g"), GGtRep);
      document.aspnetForm.ViewTitle.value = escapeHTML(szViewName);
      clFolder = document.getElementById("SaveReportFolderId");
      document.aspnetForm.ReportFolderId.value = clFolder.options[clFolder.selectedIndex].value;
      clDataSource = document.getElementById("DataSourceId");
      document.aspnetForm.CubeId.value = clDataSource.options[clDataSource.selectedIndex].value;
      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='reglogintemp' id='reglogintemp' type=text></td>"
   + "</tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=regpwdtemp ACCESSKEY='p'>" + resEnterPassword + "</label></td>"
   + "<td><input class=Default name='regpwdtemp' id='regpwdtemp' title=\"" + resEnterPassword + "\" "
   + strPasswordType + " onkeypress='javascript:SubmitRegister(event);'></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>"
   + "</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></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>"
   + "</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>"
   + "</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>"
   + "</tr>"
   + "</table></td></tr>"
   + "<tr><td><table>"
   + "<tr>"
   + "<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>"
   + "<TD WIDTH=3></TD>"
   + "<TD><input name=DialogHelpButton type=button value=\"" + resHelp
   + "\" onclick=\"javascript:DisplayDialogHelp('Register.htm', '');\"></TD>"
   + "</tr>"
   + "</table></td></tr>"
   + "</table>";

function ShowRegisterOptions()
{
   DisplayOption(RegisterOptions);
   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");
      }
   }
   setTimeout("document.aspnetForm.reglogintemp.focus();", 100);
   // Resize scroll bars
   onLayoutResize();
}

function SubmitRegister(e)
{
   var key = GetKeyCode(e);
   if ( key == 13) {
      OnRegister();
      ResetSubmit(e);
   }
}

function OnRegister()
{
   var szEmail;
   var szFirstName;
   var szLastName;
   var szLogin;
   var szOrganization;
   var szPassword;

   if (!ValidateRegisterFields()) {
      return false;
   }
   szLogin = document.aspnetForm.reglogintemp.value;
   szPassword = document.aspnetForm.regpwdtemp.value;
   szFirstName = document.aspnetForm.firstname.value;
   szLastName = document.aspnetForm.lastname.value;
   szOrganization = document.aspnetForm.organization.value;
   szEmail = document.aspnetForm.email.value;
   showWait();
   PageMethods.ProcessRegistration(szLogin, szPassword, szFirstName, szLastName,
      szOrganization, szEmail, document.aspnetForm.ApplicationPath.value, onProcessRegistrationComplete);
}

function onProcessRegistrationComplete(results, context, methodName) {
   var aszResults = results.split(GCommaRep);
   var objMsgCell;
   var szErrorMsg;

   if (aszResults.length > 1) {
      szErrorMsg = aszResults[1];
      if (szErrorMsg.length > 0) {
         szErrorMsg = eval("res" + szErrorMsg);
         objMsgCell = document.getElementById("RegErrMessage");
         if (objMsgCell) {
            objMsgCell.innerHTML = szErrorMsg;
            document.aspnetForm.reglogintemp.focus();
         }
      }
      else {
         document.aspnetForm.login.value = document.aspnetForm.reglogintemp.value;
         document.aspnetForm.pwd.value = document.aspnetForm.regpwdtemp.value;
         document.aspnetForm.userId.value = aszResults[0];
         executeWait(document.aspnetForm);
      }
   }
   hideWait();
}

function ValidateRegisterFields()
{
	var obj;
	var str;
	var strConfirm;
	var strAlertLogin, strAlertFirstname, strAlertLastname, strAlertCompany, strAlertEmail;
	var strTab;
		
	obj = document.aspnetForm;
		
	// Login
	if (!ValidateLoginFields()) return false;
	
	obj = obj.reglogintemp;
	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.regpwdtemp.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;
	if (G_nBrowser == IE || G_nBrowser == FIREFOX) {
	   strTab = "\t";
	}
	else {
	   strTab = " ";
	}
	var strBuffer = 
			resPleaseConfirm + '\n' +
			'---------------------------------------------------- \n' +
			resConfirmUserName + strTab + 
			strAlertLogin +  '\n' +
			resConfirmFirstName + strTab + 
			strAlertFirstname + '\n' +
			resConfirmLastName + strTab + 
			strAlertLastname + '\n' +
			resConfirmCompany + strTab + 
			strAlertCompany + '\n' +
			resConfirmEmail + strTab + strAlertEmail + '\n';

	if (!confirm(strBuffer)) return false;
	return true;
}

var ChangePasswordOptions =
"<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><div id='PwdErrMessage' class='Message' /></td></tr>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td class=OptionHeader nowrap align=left>" + resChangePassword + "</td></tr>"
   + "<tr height='3' />"
   + "</table></td></tr>"
   + "<tr><td><table border=0 width=1%>"
   + "<tr><td nowrap class='OptionItem'>" + resEnterLoginName + "</td>"
   + "<td id='currentUser' nowrap class='OptionItem'>" + "</td>"
   + "</tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=oldpwd ACCESSKEY='o'>" + resEnterOldPassword + "</label></td>"
   + "<td><input class=Default name='oldpwd' id='oldpwd' title=\"" + resEnterOldPassword + "\" "
   + strPasswordType + " onkeypress='javascript:SubmitChangePassword(event);'></td>"
   + "</tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=newpwd ACCESSKEY='n'>" + resEnterNewPassword + "</label></td>"
   + "<td><input class=Default name='newpwd' id='newpwd' title=\"" + resEnterNewPassword + "\" "
   + strPasswordType + " onkeypress='javascript:SubmitChangePassword(event);'></td>"
   + "</tr>"
   + "<tr><td nowrap class='OptionItem'>"
   + "<label for=newpwdconfirm ACCESSKEY='r'>" + resRetypePassword + "</label></td>"
   + "<td><input class=Default name='newpwdconfirm' id='newpwdconfirm' title=\"" + resRetypePassword + "\" "
   + strPasswordType + " onkeypress='javascript:SubmitChangePassword(event);'></td>"
   + "</tr>"
   + "</table></td></tr>"
   + "<tr><td><table>"
   + "<tr>"
   + "<td align='left'>"
   + "<input name=OKButton type=button value=\"" + resOK
   + "\" onclick='javascript:OnChangePassword();'></td>"
   + "<td width=3></td>"
   + "<td><input name=CancelButton type=button value=\"" + resCancel
   + "\" onclick='javascript:OnCancelOptions();'></td>"
   + "<TD WIDTH=3></TD>"
   + "<TD><input name=DialogHelpButton type=button value=\"" + resHelp
   + "\"  onclick=\"javascript:DisplayDialogHelp('ChangePassword.htm', '');\"></TD>"
   + "</tr>"
   + "</table></td></tr>"
   + "</table>";

function SubmitChangePassword(e) {
   var key = GetKeyCode(e);
   if (key == 13) {
      OnChangePassword();
      ResetSubmit(e);
   }
}

function OnChangePassword() {
   var szLogin;
   var szNewPassword;
   var szOldPassword;

   if (!ValidatePasswordFields()) {
      return false;
   }
   szLogin = document.aspnetForm.login.value;
   szOldPassword = document.aspnetForm.oldpwd.value;
   szNewPassword = document.aspnetForm.newpwd.value;
   showWait();
   PageMethods.ProcessPasswordChange(szLogin, szOldPassword, szNewPassword, document.aspnetForm.ApplicationPath.value, onProcessPasswordChangeComplete);
}

function onProcessPasswordChangeComplete(results, context, methodName) {
   var aszResults = results.split(GCommaRep);
   var objMsgCell;
   var szErrorMsg;

   if (aszResults.length > 1) {
      szErrorMsg = aszResults[1];
      if (szErrorMsg.length > 0) {
         if (szErrorMsg == "StrongPasswordError") {
            document.aspnetForm.newpwd.focus();
         }
         else {
            document.aspnetForm.oldpwd.focus();
         }
         szErrorMsg = eval("res" + szErrorMsg);
         objMsgCell = document.getElementById("PwdErrMessage");
         if (objMsgCell) {
            objMsgCell.innerHTML = szErrorMsg;
         }
      }
      else {
         hideWait();
         OnCancelOptions();
         alert(resPasswordChanged);
      }
   }
   hideWait();
}

function ValidatePasswordFields() {
   var clConfirm;
   var clNewPassword;
   var clOldPassword;

   clOldPassword = document.aspnetForm.oldpwd;
   if (IsControlEmpty(clOldPassword, resNoOldPassword)) {
      return false;
   }
   if (clOldPassword.value.indexOf(" ") >= 0) {
      alert(resSpaces);
      clOldPassword.select();
      clOldPassword.focus();
      return false;
   }
   if (!CheckForLength(clOldPassword, 50, resPasswordLength)) {
      return false;
   }

   clNewPassword = document.aspnetForm.newpwd;
   if (IsControlEmpty(clNewPassword, resNoNewPassword)) {
      return false;
   }
   if (clNewPassword.value.indexOf(" ") >= 0) {
      alert(resSpaces);
      clNewPassword.select();
      clNewPassword.focus();
      return false;
   }
   if (!CheckForLength(clNewPassword, 50, resPasswordLength)) {
      return false;
   }

   clConfirm = document.aspnetForm.newpwdconfirm;
   if (IsControlEmpty(clConfirm, resPasswordConfirmation)) {
      return false;
   }
   if (clNewPassword.value != clConfirm.value) {
      alert(resPasswordMismatch);
      clConfirm.select();
      clConfirm.focus();
      return false;
   }
   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 nowrap>"
   + "<select class=Default 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();\">&nbsp;"
   + "<input name=DialogHelpButton type=button value=\"" + resHelp
   + "\" onclick=\"javascript:DisplayDialogHelp('CreateNewFolder.htm', '');\">"
   + "</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);
   clFolderName = document.getElementById("FolderNameId");
   clParentFolder = document.getElementById("ParentFolderId");

   //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;
   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 bPublic;
   var clFolderName = document.getElementById("FolderNameId");
   var clParentFolder;
   var nParentFolder;
   var nUserId;
   var szCurLang;
   var szFolderName;

   szFolderName = clFolderName.value;
   if (ValidateFolderName(clFolderName, szFolderName)) {
      clParentFolder = document.getElementById("ParentFolderId");
      nParentFolder = clParentFolder.options[clParentFolder.selectedIndex].value;
      if (document.aspnetForm.GoToPublicReports.value == "True") {
         bPublic = true;
      }
      else {
         bPublic = false;
      }
      nUserId = parseInt(document.aspnetForm.userId.value);
      szCurLang = document.aspnetForm.PerspectiveLanguage.value;
      showWait();
      PageMethods.CreateNewFolder(szFolderName, nParentFolder, bPublic, nUserId, document.aspnetForm.ApplicationPath.value, szCurLang,
         onCreateNewFolderComplete);
   }
}

function onCreateNewFolderComplete(results, context, methodName) {
   var aszResults = results.split(GCommaRep);
   var clFolderName = document.getElementById("FolderNameId");
   var clMenu;
   var clNewFolderNode;
   var clNode;
   var clNodes;
   var clRadToolbar;
   var clTempNode;
   var clTempNodes;
   var clTreeView;
   var nFolderId;
   var nIndex;
   var nInsertIndex = -1;
   var nLen;
   var objMsgCell;
   var szErrorMsg;
   var szFolderNodeID;
   var szFolderName;
   var szID;
   var szParentFolderNodeID;
   var szText;

   if (aszResults.length > 3) {
      szFolderNodeID = aszResults[0];
      szFolderName = aszResults[1];
      szParentFolderNodeID = aszResults[2];
      szErrorMsg = aszResults[3];
   }
   else {
      szErrorMsg = "FolderNotCreatedDBError";
   }
   if (szErrorMsg.length > 0) {
      szErrorMsg = eval("res" + szErrorMsg);
      objMsgCell = document.getElementById("NewFolderMsg");
      if (objMsgCell) {
         objMsgCell.innerHTML = szErrorMsg;
         clFolderName.focus();
      }
   }
   else {
      OnCancelOptions();
      if (document.aspnetForm.GoToPublicReports.value == "True") {
         clTreeView = $find("ctl00_MainContent_RadPublicReportsTree");
         clMenu = $find("ctl00_RadPageMenu");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar");
      }
      else {
         clTreeView = $find("ctl00_MainContent_RadMyReportsTree");
         clMenu = $find("ctl00_RadPageMenu2");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar2");
      }
      clTreeView.trackChanges();
      if (szParentFolderNodeID.length > 0) {
         clNode = clTreeView.findNodeByValue(szParentFolderNodeID);
         if (clNode != null) {
            clNodes = clNode.get_nodes();
         }
      }
      else {
         clNodes = clTreeView.get_nodes();
      }
      if (clNodes != null) {
         for (nIndex = 0; nIndex < clNodes.get_count(); nIndex++) {
            szID = clNodes.getNode(nIndex).get_value();
            if (szID != null) {
               if (szID.indexOf("R_") == 0) {
                  nInsertIndex = nIndex;
                  break;
               }
            }
         }
         clNode = new Telerik.Web.UI.RadTreeNode();
         clNode.set_value(szFolderNodeID);
         clNode.set_text(szFolderName);
         clNode.set_imageUrl("../Bmp/FolderClosed.gif");
         clNode.set_toolTip(resFolder);
         clNode.set_cssClass("TitleTreeView");
          clNode.set_navigateUrl("");            
         if (nInsertIndex >= 0) {
            clNodes.insert(nInsertIndex, clNode);
         }
         else {
            clNodes.add(clNode);
        }
        clNode.get_textElement().style.fontSize = "110%";
        szText = clNodes.getNode(0).get_text();
        clNode.expand();
         if (szText == resNoContents || szText == resNoReportsSaved) {
            clNodes.removeAt(0);
         }
         ExpandAncestors(clNode)
         clNewFolderNode = clNode;
         clNodes = clNode.get_nodes();
         clNode = new Telerik.Web.UI.RadTreeNode();
         clNode.set_text(resNoContents);
         
         clNode.set_checkable(false);
         clNode.set_navigateUrl("");
         clNodes.add(clNode);
         clNode.get_textElement().style.fontSize = "110%";
         M_nOwnersNodes += 1;
         clTreeView.commitChanges();
         nFolderId = parseInt(szFolderNodeID.substr(2));
         nLen = M_anOwnersFolderIds.length;
         M_anOwnersFolderIds[nLen] = nFolderId;
         M_astrOwnersFolderTitles[nLen] = szFolderName;
         if (nLen == 1) {
            // Enable Collapse/Expand All menus and buttons if this is the first folder
            AdjustMenuItem(clMenu, "MenuExpandAll", true);
            AdjustMenuItem(clMenu, "MenuCollapseAll", true);
            if (clRadToolbar != null) {
               AdjustRadToolbarItem(clRadToolbar, "ExpandReportFolders", true);
               AdjustRadToolbarItem(clRadToolbar, "CollapseReportFolders", true);
            }
            if (M_nOwnersNodes == 1) {
               // Enable Sort menus and buttons if this is the first folder and the only node with checkbox
               AdjustMenuItem(clMenu, "MenuSort", true);
               if (clRadToolbar != null) {
                  AdjustRadToolbarItem(clRadToolbar, "SortButton", true);
               }
            }
         }
      }
      if (clNewFolderNode != null) {
         clNewFolderNode.scrollIntoView();
      }
   }
   hideWait();
}

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 nowrap>"
   + "<select class=Default name=DataSource title = '" + resChooseDataSource
   + "' id=DataSourceForLocalCubeId onkeypress='javascript:SubmitCreateLocalCube(event);' />"
   + "</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 nowrap>"
   + "<input name=OKButton type=button value=\"" + resOK 
   + "\" onclick='javascript:OnCreateLocalCubeOptions();'>&nbsp;"
   + "<input name=CancelButton type=button value=\"" + resCancel
   + "\" onclick=\"javascript:OnCancelOptions();\">&nbsp;"
   + "<input name=DialogHelpButton type=button value=\"" + resHelp
   + "\" onclick=\"javascript:DisplayDialogHelp('LocalCube.htm', '');\">"
   + "</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);
   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;
   clDataSource.focus();

   // Resize scroll bars
   onLayoutResize();
}

function SubmitCreateLocalCube(e)
{
   var key = GetKeyCode(e);
   if ( key ==13) {
      OnCreateLocalCubeOptions();
      ResetSubmit(e);
   }
}

function OnCreateLocalCubeOptions()  
{
   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;
   document.aspnetForm.action = "../Browse/localcubeselection.aspx";
   executeWait(document.aspnetForm);
}

function OnCancelLocalCube()
{
   document.aspnetForm.action = "../Browse/browsetables.aspx";
   executeWait(document.aspnetForm);
}



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();\">&nbsp;"
   + "<input name=DialogHelpButton type=button value=\"" + resHelp
   + "\" onclick=\"javascript:DisplayDialogHelp('ChangeFolderName.htm', '');\">"
   + "</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();\">&nbsp;"
   + "<input name=DialogHelpButton type=button value=\"" + resHelp
   + "\" onclick=\"javascript:DisplayDialogHelp('ChangeTitle.htm', '');\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";

function ShowChangeFolderNameOptions(i_szID)
{
   var bPublic;
   var clFolderName;
   var clLanguageEntry;
   var clLanguageTitle;
   var clNode;
   var clTreeView;
   var nIndex;
   var objMsgCell;
   var strCurLang;
   var strFolderName;

   bPublic = (document.aspnetForm.GoToPublicReports.value == "True");
   if (bPublic) {
      clTreeView = $find("ctl00_MainContent_RadPublicReportsTree");
   }
   else {
      clTreeView = $find("ctl00_MainContent_RadMyReportsTree");
   }
   DisplayOption(ChangeFolderNameOptions);
   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];
               clLanguageTitle.innerHTML = "<table cellpadding=0 cellspacing=0><tr><td class=OptionItem nowrap>"
                  + M_astrLanguageNames[nIndex] + "</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
                  + "<td><input type=checkbox id='ApplyDefaultLanguage' title='' name='ApplyDefaultLanguage' "
                  + "onkeypress='javascript:SubmitChangeFolderName(event);' ></td>"
                  + "<td class=OptionItem nowrap>" + "<label for='ApplyDefaultLanguage'>"
                  + resApplyDefaultLanguage + "</label></td></tr></table>";
               break;
            }
         }
      }
   }
   clFolderName = document.getElementById("ChangeNameId");
   if (clFolderName != null) {
      clNode = clTreeView.findNodeByValue(i_szID);
      strFolderName = clNode.get_text();
      clFolderName.value = unescapeHTML(strFolderName);
      clFolderName.select();
      setTimeout("document.aspnetForm.ChangeName.focus();", 100);
   }

   // Resize scroll bars
   onLayoutResize();
}

function ShowChangeTitleAndNotesOptions(i_szID)
{
   var bPublic;
   var clLanguageEntry;
   var clLanguageTitle;
   var clNode;
   var clReportNotes;
   var clReportTitle;
   var clTreeView;
   var nIndex;
   var strCurLang;
   var strNotes;
   var szReportTitle;

   if (typeof (i_szID) != 'undefined') {
      bPublic = (document.aspnetForm.GoToPublicReports.value == "True");
      if (bPublic) {
         clTreeView = $find("ctl00_MainContent_RadPublicReportsTree");
      }
      else {
         clTreeView = $find("ctl00_MainContent_RadMyReportsTree");
      }
   }
   DisplayOption(g_strChangeTitleAndNotesOptions);
   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 = "<table cellpadding=0 cellspacing=0><tr><td class=OptionItem nowrap>"
                  + M_astrLanguageNames[nIndex] + "</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
                  + "<td><input type=checkbox id='ApplyDefaultLanguage' title='' name='ApplyDefaultLanguage' "
                  + "onkeypress='javascript:SubmitChangeTitleAndNotes(event);' ></td>"
                  + "<td class=OptionItem nowrap>"+ "<label for='ApplyDefaultLanguage'>"
                  + resApplyDefaultLanguage+ "</label></td></tr></table>";
               break;
            }
         }
      }
   }
   clReportTitle = document.getElementById("ChangeTitleId");
   clReportNotes = document.getElementById("ChangeNotesId");
   if (clReportTitle != null && clReportNotes != null) {
      if (typeof (i_szID) != 'undefined') {
         // use the browsetables info
         clNode = clTreeView.findNodeByValue(i_szID);
         szReportTitle = clNode.get_text();
         strNotes = clNode.get_attributes().getAttribute("Notes");
         if (typeof (strNotes) == 'undefined') {
            strNotes = "";
         }
      }
      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 bApplyDefault = true;
   var bPublic;
   var clApplyDefaultLanguage;
   var clFolderName = document.getElementById("ChangeNameId");
   var szCurLang;
   var szFolderName;

   szFolderName = clFolderName.value;
   if (ValidateFolderName(clFolderName, szFolderName)) {
      clApplyDefaultLanguage = document.getElementById("ApplyDefaultLanguage");
      if (document.aspnetForm.GoToPublicReports.value == "True") {
         bPublic = true;
      }
      else {
         bPublic = false;
      }
      nUserId = parseInt(document.aspnetForm.userId.value);
      szCurLang = document.aspnetForm.PerspectiveLanguage.value;
      showWait();
      if (clApplyDefaultLanguage != null) {
         bApplyDefault = clApplyDefaultLanguage.checked;
      }
      PageMethods.ChangeFolderName(M_szCheckedFolderIds, szFolderName,
            bApplyDefault, bPublic, nUserId, document.aspnetForm.ApplicationPath.value, szCurLang, onChangeFolderNameComplete);
   }
}

function onChangeFolderNameComplete(results, context, methodName) {
   var aszResults = results.split(GCommaRep);
   var bPublic;
   var clFolderName = document.getElementById("ChangeNameId");
   var clMenu;
   var clNode;
   var clRadToolbar;
   var clSelectionLabel;
   var clTreeView;
   var nFolderId;
   var nIndex;
   var objMsgCell;
   var szErrorMsg;
   var szLabel;
   var szName;
   var szNodeId;

   if (aszResults.length > 2) {
      szNodeId = aszResults[0];
      szName = aszResults[1];
      szErrorMsg = aszResults[2];
   }
   else {
      szErrorMsg = "FolderNameNotSavedDBError";
   }
   if (szErrorMsg.length > 0) {
      szErrorMsg = eval("res" + szErrorMsg);
      objMsgCell = document.getElementById("ChangeFolderNameOptionsMsg");
      if (objMsgCell) {
         objMsgCell.innerHTML = szErrorMsg;
         clFolderName.focus();
      }
   }
   else {
      OnCancelOptions();
      if (document.aspnetForm.GoToPublicReports.value == "True") {
         bPublic = true;
         clTreeView = $find("ctl00_MainContent_RadPublicReportsTree");
         clMenu = $find("ctl00_RadPageMenu");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar");
         clSelectionLabel = document.getElementById("ctl00_MainContent_NodesSelected");
      }
      else {
         bPublic = false;
         clTreeView = $find("ctl00_MainContent_RadMyReportsTree");
         clMenu = $find("ctl00_RadPageMenu2");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar2");
         clSelectionLabel = document.getElementById("ctl00_MainContent_NodesSelected2");
      }
      clNode = clTreeView.findNodeByValue(szNodeId);
      if (clNode != null) {
         clTreeView.trackChanges();
         clNode.set_text(szName);
         clNode.set_checked(false);
         clTreeView.commitChanges();
         nFolderId = parseInt(szNodeId.substring(2));
         for (nIndex = 0; nIndex < M_anOwnersFolderIds.length; nIndex++) {
            if (M_anOwnersFolderIds[nIndex] == nFolderId) {
               M_astrOwnersFolderTitles[nIndex] = szName;
               break;
            }
         }
      }
      M_nCheckedFolders = 0;
      M_szCheckedFolderIds = "";

      // Update selected count of folders and reports
      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);
      }
   }
   hideWait();
}

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 bApplyDefault = true;
   var bPublic;
   var clApplyDefaultLanguage;
   var clReportTitle = document.getElementById("ChangeTitleId");
   var szCurLang;
   var szReportNotes;
   var szReportTitle;
   
   szReportTitle = clReportTitle.value;
   if (ValidateReportTitle(clReportTitle, szReportTitle)) {
      szReportNotes = document.getElementById("ChangeNotesId").value
      clApplyDefaultLanguage = document.getElementById("ApplyDefaultLanguage");
      if (document.aspnetForm.GoToPublicReports.value == "True") {
         bPublic = true;
      }
      else {
         bPublic = false;
      }
      nUserId = parseInt(document.aspnetForm.userId.value);
      szCurLang = document.aspnetForm.PerspectiveLanguage.value;
      showWait();
      if (clApplyDefaultLanguage != null) {
         bApplyDefault = clApplyDefaultLanguage.checked;
      }
      if (typeof (M_szCheckedReportIds) != "undefined") {
         PageMethods.ChangeSelectedReport(M_szCheckedReportIds, szReportTitle, szReportNotes,
            bApplyDefault, bPublic, nUserId, document.aspnetForm.ApplicationPath.value, szCurLang, onChangeSelectedReportComplete);
      }
   }
}

function onChangeSelectedReportComplete(results, context, methodName) {
   var aszResults = results.split(GCommaRep);
   var bNewNotes;
   var bOldNotes;
   var bPublic;
   var clMenu;
   var clNode;
   var clNotesSpan;
   var clReportTitle = document.getElementById("ChangeTitleId");
   var clRadToolbar;
   var clSelectionLabel;
   var clTextElement;
   var clTreeView;
   var nIndex;
   var nReportId;
   var objMsgCell;
   var szErrorMsg;
   var szHTML;
   var szLabel;
   var szNodeId;
   var szNotes;
   var szNotesTemplateId;
   var szTitle;

   if (aszResults.length > 3) {
      szNodeId = aszResults[0];
      szTitle = aszResults[1];
      szNotes = aszResults[2];
      szErrorMsg = aszResults[3];
   }
   else {
      szErrorMsg = "TitleAndNotesNotSavedDBError";
   }
   if (szErrorMsg.length > 0) {
      szErrorMsg = eval("res" + szErrorMsg);
      objMsgCell = document.getElementById("SaveReportMsg");
      if (objMsgCell) {
         objMsgCell.innerHTML = szErrorMsg;
         clReportTitle.focus();
      }
   }
   else {
      OnCancelOptions();
      if (document.aspnetForm.GoToPublicReports.value == "True") {
         bPublic = true;
         clTreeView = $find("ctl00_MainContent_RadPublicReportsTree");
         clMenu = $find("ctl00_RadPageMenu");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar");
         clSelectionLabel = document.getElementById("ctl00_MainContent_NodesSelected");
         szNotesTemplateId = "ReportWithNotes";
      }
      else {
         bPublic = false;
         clTreeView = $find("ctl00_MainContent_RadMyReportsTree");
         clMenu = $find("ctl00_RadPageMenu2");
         clRadToolbar = $find("ctl00_MainContent_RadContentToolBar2");
         clSelectionLabel = document.getElementById("ctl00_MainContent_NodesSelected2");
         szNotesTemplateId = "ReportWithNotes2";
      }
      clNode = clTreeView.findNodeByValue(szNodeId);
      if (clNode != null) {
         clTreeView.trackChanges();
         clNode.set_text(szTitle);
         clNode.get_attributes().setAttribute("Notes", escapeHTML(szNotes))
         clNode.set_checked(false);
         clTreeView.commitChanges();
         clTextElement = clNode.get_textElement();
         // RS Reports always display the Notes icon - no changes for them
         if (G_nBrowser == FIREFOX) {
            szHTML = clTextElement.parentNode.innerHTML;
         }
         else {
            szHTML = clTextElement.outerHTML;
         }
         if (szHTML.indexOf("OnLoadRSReport") < 0) {
            clNotesSpan = document.getElementById(szNodeId + "_Notes");
            if (clNotesSpan != null) {
               szHTML = clNotesSpan.innerHTML;
               bOldNotes = (szHTML.indexOf("ShowReportNotes") > 0);
               bNewNotes = (szNotes.length > 0);
               if (bOldNotes && !bNewNotes) {
                  szHTML = "";
               }
               else if (!bOldNotes && bNewNotes) {
                  szHTML = "<a href='javascript:ShowReportNotes(\""
                  + szNodeId + "\");'>" + "<img src='../Bmp/info.gif' border=0 alt='" + resNotes
                  + "' title='" + resNotes + "' /></a>";
               }
               if (bOldNotes != bNewNotes) {
                  clNotesSpan.innerHTML = szHTML;
               }
            }
         }
         nReportId = parseInt(szNodeId.substring(2));
         if (bPublic) {
            for (nIndex = 0; nIndex < M_anPublicCubeReportIds.length; nIndex++) {
               if (M_anPublicCubeReportIds[nIndex] == nReportId) {
                  M_astrPublicCubeReportTitles[nIndex] = szTitle;
                  break;
               }
            }
         }
         else {
            for (nIndex = 0; nIndex < M_anMyCubeReportIds.length; nIndex++) {
               if (M_anMyCubeReportIds[nIndex] == nReportId) {
                  M_astrMyCubeReportTitles[nIndex] = szTitle;
                  break;
               }
            }
         }
      }
      M_nCheckedReports = 0;
      M_szCheckedReportIds = "";

      // Update selected count of folders and reports
      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);
      }
   }
   hideWait();
}

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;

	strBackGroundStyle = strBackGroundStyle.toLowerCase();
	// 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.toLowerCase() == strBackGroundStyle) {
			return i;
		}
	}

	return -1;
}

function AdjustDialogHelp() {
   var aclHelpButton;
   var clHelpButton;
   var nIndex;

   if (document.aspnetForm.SpawnedWindows.value != "True") {
      clHelpButton = document.aspnetForm.DialogHelpButton;
      if (clHelpButton != null) {
         if (typeof (clHelpButton.length) != "undefined") {
            aclHelpButton = clHelpButton;
            for (nIndex = 0; nIndex < aclHelpButton.length; nIndex++) {
               clHelpButton = aclHelpButton[nIndex];
               clHelpButton.style.display = "none";
            }
         }
         else {
            clHelpButton.style.display = "none";
         }
      }
   }
}

function ExpandAncestors(i_clNode) {
   var clNode;

   clNode = i_clNode.get_parent();
   while (clNode != null) {
      if (clNode.expand) {
         clNode.expand();
      }
      clNode = clNode.get_parent();
   }
}

