<!--
/************************************************************************/
/* mailserver.js                                                        */
/*----------------------------------------------------------------------*/
/* Functions that perform operations on the mail server.                */
/* Typically through ajax requests.                                     */
/* A proxy for PHP mailserver object which is itself a proxy for the    */
/* VM server.                                                           */
/*----------------------------------------------------------------------*/
/* 30Apr08 File created         acurtis                                 */
/* 02Jun08 Version 5.0 started                                          */
/*----------------------------------------------------------------------*/
/* Copyright (c) 2008-2009 Avaya Inc.                                   */
/************************************************************************/


// Calls ajax/ajax_keep_session_contact.php
function UpdateLastContact()
{
  var queryString = "idletime=" + 0;

  Ajax.ajax_keep_session_contact.Execute( queryString );
}

// Calls ajax/ajax_get_messages.php
function GetMessages( keepSessionActive, nNewSelection )
{
  var pageNbr = 1;
  var pageList = document.getElementById('pageSelect');
  if( pageList )
  {
    var selectedIndex = pageList.selectedIndex;
    pageNbr = pageList.options[selectedIndex].value;
  }
  var numMsgsPerPage = GetNumMsgsPerPage();

  // If php hasn't set numMsgsPerPage cookie (means something's broken), or if user has set it to a stupid value...
  if( numMsgsPerPage < 1 )
  {
    numMsgsPerPage = 10;
  }

  var queryString = "mbid=" + gMailboxId
   + "&folderId=" + gFolderList.currentFolderId
   + "&orderBy=" + gCurrentOrderBy
   + "&sortDir=" + gCurrentSortDir
   + "&getAlways=" + (keepSessionActive?1:0)
   + "&offset=" + (pageNbr-1) * numMsgsPerPage
   + "&amount=" + numMsgsPerPage;

  Ajax.ajax_get_messages.nNewSelection = nNewSelection;
  Ajax.ajax_get_messages.currentSortDir = gCurrentSortDir;
  Ajax.ajax_get_messages.currentOrderBy = gCurrentOrderBy;
  Ajax.ajax_get_messages.mailboxName = gMailboxName;
  Ajax.ajax_get_messages.folderId = gFolderList.currentFolderId;
  Ajax.ajax_get_messages.offset = (pageNbr-1) * numMsgsPerPage;
  Ajax.ajax_get_messages.amount = numMsgsPerPage;
  Ajax.ajax_get_messages.Execute( queryString );

  if( Activity )
  {
    Activity();
  }
}

// Sends request to ajax/ajax_move_message.php and updates message list.
function MoveMessages( msgIds, folderId )
{
  if( msgIds )
  {
    var queryString = "mbId=" + gMailboxId +
              "&msgIds=" + msgIds +
              "&folderId=" + folderId;

    Ajax.ajax_move_message.Execute( queryString );
  }
}

// Sends request to ajax_delete_message.php to delete the specified messages
function DeleteMessages( msgIds )
{
  if( msgIds )
  {
    var queryString = "msgIds=" + msgIds;
    Ajax.ajax_delete_message.Execute( queryString );
  }
}

// Changes message icon to save.gif
// Sends request to ajax/ajax_update_message.php
function UpdateMessageState( msgIds, state )
{
  if( msgIds )
  {
    var queryString = "mbId=" + gMailboxId +
              "&msgIds=" + msgIds +
              "&state=" + state;

    Ajax.ajax_update_message.state = state;
    Ajax.ajax_update_message.msgIds = msgIds;
    Ajax.ajax_update_message.Execute( queryString );
  }
}


// Sends request to ajax/ajax_get_mailboxes.php
// Displays error messages in divMsg
// Arg 'mailboxType' is either eMBT_huntGroup, eMBT_extension
function GetMailboxes()
{
  Ajax.ajax_get_mailboxes.Execute( "" );
}

// Sends request to ajax/ajax_forward_messages.php
// Looks at forward list dialog to find which targets to forward to.
function Forward( mailboxType, selectedIds )
{
  if( selectedIds != null )
  {
    var numPrivateMsgs = GetNumberPrivateSelectedMessages();
    if (numPrivateMsgs > 0)
    {
      ShowAlert( LocaliseString("Private messages can not forwarded.") );
      DeselectPrivateMessages();
      return;
    }

    var tbl = '';
    var divMsg = '';
    var prepend = '';
    switch( mailboxType )
    {
      case eMBT_extension:
        tbl = 'tbl_ForwardExtn';
        prepend = 'cb_ForwardExtn';
        divMsg = 'dlg_ForwardExtn_msg';
        break;

      case eMBT_huntGroup:
        tbl = 'tbl_ForwardHunt';
        prepend = 'cb_ForwardHunt';
        divMsg = 'dlg_ForwardHunt_msg';
        break;
    }
    //clear status message
    if( mailboxType != eMBT_email )
    {
      document.getElementById(divMsg).innerHTML = "&nbsp;";

      var ids = "";
      var names = "";
      var numnames = 0;
      var totalCount = document.getElementById(tbl).rows.length;
      var index;
      for (index = 0; index < totalCount; index++ )
      {
        var ctrlId = prepend + index;
        var chbox = document.getElementById(ctrlId);
        if ( chbox.checked )
        {
          var id_name = chbox.value;
          var id = UnescapeDelimiters(id_name.split("|")[0]);
          var name = UnescapeDelimiters(id_name.split("|")[1]);
          if ( ids.length > 0 )
          {
            ids += ",";
            names += ",";
          }
          ids += id;
          names += name;
          ++numnames;
        }
      }
  
      if ( numnames == 0)
      {
        ShowAlert( LocaliseString("Please select a forward destination.") );
        return;
      }
    }
    else
    {
      ids = "FORWARDTOEMAIL";
    }

    var queryString = "mbId=" + gMailboxId + "&msgIds=" + selectedIds + "&mbIds=" + ids;
    Ajax.ajax_forward_messages.divMsg = divMsg;
    Ajax.ajax_forward_messages.Execute( queryString );
  }
}

// Puts selected messages into the default folder (i.e. the Inbox)
function Undelete( selectedIds )
{
  if( selectedIds )
  {
    /** This block assumes that if you have a current message then the message dlg is open and that is how you got to this Undelete function: */
    // Ensure no message is selected in list
    RemoveCurrentMsgFromList();
    if(gCurrentMsg)
    {
      // This assumes that server will mark undeleted items as open:
      gCurrentMsg.state = eMS_open;
    }
    /* End of block. */

    MoveMessages( selectedIds, gDefaultFolderId );
  }
}

// Asks user for confirmation then requests server to delete messages.
function ConfirmAndDeleteMessages( selectedIds )
{
  if( selectedIds )
  {
    var msg1;
    var msg2;
    if( selectedIds.indexOf(',') >= 0 )
    {
      msg1 = LocaliseString("Are you sure you want to delete the selected messages?");
      msg2 = LocaliseString('This will permanently delete the messages. Proceed?');
    }
    else
    {
      msg1 = LocaliseString("Are you sure you want to delete the selected message?")
      msg2 = LocaliseString('This will permanently delete the messages. Proceed?');
    }
    ShowAlert( msg1,
          null,
          function(e) {
            CatchEvent(e);
            ReallyActivateDialog('dlg_alert',false);
            if( (null != gCurrentMsg && gCurrentMsg.state == eMS_deleted)
             || (null == gCurrentMsg && window.gTrashFolderId == window.gFolderList.currentFolderId) )
            {
              ShowAlert( msg2,
                        null,
                        function(e) {
                          CatchEvent(e);
                          DeleteMessages( selectedIds );
                          ActivateDialog('dlg_alert',false);
                          ReallyActivateDialog('dlg_msg',false);
                          gCurrentMsg = null;
                          return false;
                        },
                        LocaliseString('Yes'),
                        null,
                        LocaliseString('No') );
            }
            else
            {
              // Ensure no message is selected in list
              RemoveCurrentMsgFromList();
              UpdateMessageState( selectedIds, 'D' );
              MoveMessages( selectedIds, -1 );
            }
            return false;
          },
          LocaliseString('Yes'),
          null,
          LocaliseString('No') );
  }
}

// If current message is no longer in the list on the screen use this function to set
// its attributes appropriately.
function RemoveCurrentMsgFromList()
{
  if( gCurrentMsg )
  {
    gCurrentMsg.num = null;
    gCurrentMsg.displayMessageNum = null;
    gCurrentMsg.elemID = null;
  }
}

//-->

