home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / mozil06.zip / bin / chrome / messenger.jar / content / messenger / mailWindowOverlay.js < prev    next >
Text File  |  2001-02-14  |  23KB  |  820 lines

  1. /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  2.  * The contents of this file are subject to the Netscape Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/NPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is Mozilla Communicator client code, released
  13.  * March 31, 1998.
  14.  * 
  15.  * The Initial Developer of the Original Code is Netscape
  16.  * Communications Corporation. Portions created by Netscape are
  17.  * Copyright (C) 1998-1999 Netscape Communications Corporation. All
  18.  * Rights Reserved.
  19.  *
  20.  * Contributors: timeless
  21.  */
  22.  
  23. function file_init()
  24. {
  25.     file_attachments();
  26. /* file_attachments() can return false to indicate a load failure,
  27.    but if you return false to oncreate then
  28.    the popup menu will not display which is not a good thing.
  29.  */
  30. }
  31.  
  32. function file_attachments()
  33. {
  34.     var apChild=document.getElementById('attachmentPopup').cloneNode(true);
  35.     if (!apChild)
  36.         return false;
  37.     apChild.removeAttribute('popupanchor');
  38.     apChild.removeAttribute('popupalign');
  39.     var amParent=document.getElementById('fileAttachmentMenu');
  40.     if (!amParent)
  41.         return false;
  42.     if (apChild.childNodes.length){
  43.         if ( amParent.childNodes.length )
  44.             amParent.removeChild(amParent.childNodes[0]); 
  45.         amParent.appendChild(apChild);
  46.         amParent.removeAttribute('hidden');
  47.     }
  48.     else
  49.         amParent.setAttribute('hidden',true);
  50.     return true;
  51. }
  52.  
  53. function view_init()
  54. {
  55.     var message_menuitem=document.getElementById('menu_showMessage');
  56.  
  57.     if (message_menuitem)
  58.     {
  59.         var message_menuitem_hidden = message_menuitem.getAttribute("hidden");
  60.         if(message_menuitem_hidden != "true"){
  61.             message_menuitem.setAttribute('checked',!IsThreadAndMessagePaneSplitterCollapsed());
  62.         }
  63.     }
  64.     var threadColumn = document.getElementById('ThreadColumnHeader');
  65.     var thread_menuitem=document.getElementById('menu_showThreads');
  66.     if (threadColumn && thread_menuitem){
  67.         thread_menuitem.setAttribute('checked',threadColumn.getAttribute('currentView')=='threaded');
  68.     }
  69. }
  70.  
  71. function InitViewMessagesMenu()
  72. {
  73.     var allMenuItem = document.getElementById("viewAllMessagesMenuItem");
  74.     var hidden = allMenuItem.getAttribute("hidden") == "true";
  75.     if(allMenuItem && !hidden)
  76.         allMenuItem.setAttribute("checked", messageView.viewType == viewShowAll);
  77.  
  78.     var unreadMenuItem = document.getElementById("viewUnreadMessagesMenuItem");
  79.     hidden = unreadMenuItem.getAttribute("hidden") == "true";
  80.     if(unreadMenuItem && !hidden)
  81.         unreadMenuItem.setAttribute("checked", messageView.viewType == viewShowUnread);
  82.  
  83. }
  84.  
  85. function InitMessageMenu()
  86. {
  87.     var aMessage = GetSelectedMessage(0);
  88.     var isNews = false;
  89.     if(aMessage)
  90.     {
  91.         isNews = GetMessageType(aMessage) == "news";
  92.     }
  93.  
  94.     //We show reply to Newsgroups only for news messages.
  95.     var replyNewsgroupMenuItem = document.getElementById("replyNewsgroupMainMenu");
  96.     if(replyNewsgroupMenuItem)
  97.         replyNewsgroupMenuItem.setAttribute("hidden", isNews ? "" : "true");
  98.  
  99.     //For mail messages we say reply. For news we say ReplyToSender.
  100.     var replyMenuItem = document.getElementById("replyMainMenu");
  101.     if(replyMenuItem)
  102.     {
  103.         replyMenuItem.setAttribute("hidden", !isNews ? "" : "true");
  104.     }
  105.  
  106.     var replySenderMenuItem = document.getElementById("replySenderMainMenu");
  107.     if(replySenderMenuItem)
  108.     {
  109.         replySenderMenuItem.setAttribute("hidden", isNews ? "" : "true");
  110.     }
  111.  
  112.     //disable the move and copy menus only if there are no messages selected.
  113.     var moveMenu = document.getElementById("moveMenu");
  114.     if(moveMenu)
  115.         moveMenu.setAttribute("disabled", !aMessage);
  116.  
  117.     var copyMenu = document.getElementById("copyMenu");
  118.     if(copyMenu)
  119.         copyMenu.setAttribute("disabled", !aMessage);
  120.  
  121. }
  122.  
  123. function GetMessageType(message)
  124. {
  125.  
  126.     var compositeDS = GetCompositeDataSource("MessageProperty");
  127.     var property = RDF.GetResource('http://home.netscape.com/NC-rdf#MessageType');
  128.     var result = compositeDS.GetTarget(message, property, true);
  129.     result = result.QueryInterface(Components.interfaces.nsIRDFLiteral);
  130.     return result.Value;
  131.  
  132. }
  133.  
  134. function InitMessageMarkMenu()
  135. {
  136.     InitMarkReadMenuItem();
  137.     InitMarkFlaggedMenuItem();
  138.  
  139. }
  140.  
  141. function InitMarkReadMenuItem()
  142. {
  143.  
  144.     areMessagesRead = SelectedMessagesAreRead();
  145.  
  146.     var markReadMenuItem = document.getElementById("markReadMenuItem");
  147.     if(markReadMenuItem)
  148.         markReadMenuItem.setAttribute("checked", areMessagesRead);
  149. }
  150.  
  151. function SelectedMessagesAreRead()
  152. {
  153.     var aMessage = GetSelectedMessage(0);
  154.  
  155.     var compositeDS = GetCompositeDataSource("MarkMessageRead");
  156.     var property = RDF.GetResource('http://home.netscape.com/NC-rdf#IsUnread');
  157.  
  158.     var areMessagesRead =false;
  159.  
  160.     if(!aMessage)
  161.         areMessagesRead = false;
  162.     else
  163.     {
  164.         var result = compositeDS.GetTarget(aMessage, property, true);
  165.         result = result.QueryInterface(Components.interfaces.nsIRDFLiteral);
  166.         areMessagesRead = result.Value != "true"
  167.     }
  168.  
  169.     return areMessagesRead;
  170. }
  171.  
  172. function InitMarkFlaggedMenuItem()
  173. {
  174.     areMessagesFlagged = SelectedMessagesAreFlagged();
  175.  
  176.     var markFlaggedMenuItem = document.getElementById("markFlaggedMenuItem");
  177.     if(markFlaggedMenuItem)
  178.         markFlaggedMenuItem.setAttribute("checked", areMessagesFlagged);
  179. }
  180.  
  181. function SelectedMessagesAreFlagged()
  182. {
  183.     var aMessage = GetSelectedMessage(0);
  184.  
  185.     var compositeDS = GetCompositeDataSource("MarkMessageFlagged");
  186.     var property = RDF.GetResource('http://home.netscape.com/NC-rdf#Flagged');
  187.  
  188.     var areMessagesFlagged = false;
  189.  
  190.     if(!aMessage)
  191.         areMessagesFlagged = false;
  192.     else
  193.     {
  194.         var result = compositeDS.GetTarget(aMessage, property, true);
  195.         result = result.QueryInterface(Components.interfaces.nsIRDFLiteral);
  196.         areMessagesFlagged = (result.Value == "flagged");
  197.     }
  198.     return areMessagesFlagged;
  199. }
  200.  
  201. function GetFirstSelectedMsgFolder()
  202. {
  203.     var result = null;
  204.     var selectedFolders = GetSelectedMsgFolders();
  205.     if (selectedFolders.length > 0) {
  206.         result = selectedFolders[0];
  207.     }
  208.  
  209.     return result;
  210. }
  211.  
  212. function MsgGetMessage() 
  213. {
  214.     var folders = GetSelectedMsgFolders();
  215.     var compositeDataSource = GetCompositeDataSource("GetNewMessages");
  216.     GetNewMessages(folders, compositeDataSource);
  217. }
  218.  
  219. function MsgGetNextNMessages()
  220. {
  221.     var folder = GetFirstSelectedMsgFolder();
  222.     if(folder)
  223.     {
  224.         GetNextNMessages(folder)
  225.     }
  226. }
  227.  
  228. function MsgDeleteMessage(reallyDelete, fromToolbar)
  229. {
  230.  
  231.     if(reallyDelete)
  232.         dump("reallyDelete\n");
  233.     var srcFolder = GetLoadedMsgFolder();
  234.     // if from the toolbar, return right away if this is a news message
  235.     // only allow cancel from the menu:  "Edit | Cancel / Delete Message"
  236.     if (fromToolbar)
  237.     {
  238.         var folderResource = srcFolder.QueryInterface(Components.interfaces.nsIRDFResource);
  239.         var uri = folderResource.Value;
  240.         //dump("uri[0:6]=" + uri.substring(0,6) + "\n");
  241.         if (uri.substring(0,6) == "news:/")
  242.         {
  243.             //dump("delete ignored!\n");
  244.             return;
  245.         }
  246.     }
  247.     dump("tree is valid\n");
  248.     //get the selected elements
  249.  
  250.     var compositeDataSource = GetCompositeDataSource("DeleteMessages");
  251.     var messages = GetSelectedMessages();
  252.  
  253.     SetNextMessageAfterDelete(null, true);
  254.     DeleteMessages(compositeDataSource, srcFolder, messages, reallyDelete);
  255. }
  256.  
  257. function MsgCopyMessage(destFolder)
  258. {
  259.     // Get the id for the folder we're copying into
  260.     destUri = destFolder.getAttribute('id');
  261.     destResource = RDF.GetResource(destUri);
  262.     destMsgFolder = destResource.QueryInterface(Components.interfaces.nsIMsgFolder);
  263.  
  264.     var srcFolder = GetLoadedMsgFolder();
  265.     if(srcFolder)
  266.     {
  267.         var compositeDataSource = GetCompositeDataSource("Copy");
  268.         var messages = GetSelectedMessages();
  269.  
  270.         CopyMessages(compositeDataSource, srcFolder, destMsgFolder, messages, false);
  271.     }    
  272. }
  273.  
  274. function MsgMoveMessage(destFolder)
  275. {
  276.     // Get the id for the folder we're copying into
  277.     destUri = destFolder.getAttribute('id');
  278.     destResource = RDF.GetResource(destUri);
  279.     destMsgFolder = destResource.QueryInterface(Components.interfaces.nsIMsgFolder);
  280.     
  281.     var srcFolder = GetLoadedMsgFolder();
  282.     if(srcFolder)
  283.     {
  284.         var compositeDataSource = GetCompositeDataSource("Move");
  285.         var messages = GetSelectedMessages();
  286.  
  287.         var srcResource = srcFolder.QueryInterface(Components.interfaces.nsIRDFResource);
  288.         var srcUri = srcResource.Value;
  289.         if (srcUri.substring(0,6) == "news:/")
  290.         {
  291.             CopyMessages(compositeDataSource, srcFolder, destMsgFolder, messages, false);
  292.         }
  293.         else
  294.         {
  295.             SetNextMessageAfterDelete(null, true);
  296.  
  297.             CopyMessages(compositeDataSource, srcFolder, destMsgFolder, messages, true);
  298.         }
  299.     }    
  300. }
  301.  
  302. function MsgNewMessage(event)
  303. {
  304.   var loadedFolder = GetFirstSelectedMsgFolder();
  305.   var messageArray = GetSelectedMessages();
  306.  
  307.   if (event && event.shiftKey)
  308.     ComposeMessage(msgComposeType.New, msgComposeFormat.OppositeOfDefault, loadedFolder, messageArray);
  309.   else
  310.     ComposeMessage(msgComposeType.New, msgComposeFormat.Default, loadedFolder, messageArray);
  311.  
  312. function MsgReplyMessage(event)
  313. {
  314.   var loadedFolder = GetLoadedMsgFolder();
  315.  
  316.   var server = loadedFolder.server;
  317.  
  318.   if(server && server.type == "nntp")
  319.     MsgReplyGroup(event);
  320.   else 
  321.     MsgReplySender(event);
  322.  
  323. }
  324.  
  325. function MsgReplySender(event)
  326. {
  327.   var loadedFolder = GetLoadedMsgFolder();
  328.   var messageArray = GetSelectedMessages();
  329.  
  330.   if (event && event.shiftKey)
  331.     ComposeMessage(msgComposeType.Reply, msgComposeFormat.OppositeOfDefault, loadedFolder, messageArray);
  332.   else
  333.     ComposeMessage(msgComposeType.Reply, msgComposeFormat.Default, loadedFolder, messageArray);
  334.  
  335. }
  336.  
  337. function MsgReplyGroup(event)
  338. {
  339.   var loadedFolder = GetLoadedMsgFolder();
  340.   var messageArray = GetSelectedMessages();
  341.  
  342.   if (event && event.shiftKey)
  343.     ComposeMessage(msgComposeType.ReplyToGroup, msgComposeFormat.OppositeOfDefault, loadedFolder, messageArray);
  344.   else
  345.     ComposeMessage(msgComposeType.ReplyToGroup, msgComposeFormat.Default, loadedFolder, messageArray);
  346. }
  347.  
  348. function MsgReplyToAllMessage(event) 
  349. {
  350.   var loadedFolder = GetLoadedMsgFolder();
  351.   var messageArray = GetSelectedMessages();
  352.  
  353.   dump("\nMsgReplyToAllMessage from XUL\n");
  354.   if (event && event.shiftKey)
  355.     ComposeMessage(msgComposeType.ReplyAll, msgComposeFormat.OppositeOfDefault, loadedFolder, messageArray);
  356.   else
  357.     ComposeMessage(msgComposeType.ReplyAll, msgComposeFormat.Default, loadedFolder, messageArray);
  358. }
  359.  
  360. function MsgForwardMessage(event)
  361. {
  362.  
  363.   dump("\nMsgForwardMessage from XUL\n");
  364.   var forwardType = 0;
  365.   try {
  366.       forwardType = pref.GetIntPref("mail.forward_message_mode");
  367.   } catch (e) {dump ("failed to retrieve pref mail.forward_message_mode");}
  368.   
  369.   if (forwardType == 0)
  370.       MsgForwardAsAttachment(event);
  371.   else
  372.       MsgForwardAsInline(event);
  373. }
  374.  
  375. function MsgForwardAsAttachment(event)
  376. {
  377.   var loadedFolder = GetLoadedMsgFolder();
  378.   var messageArray = GetSelectedMessages();
  379.  
  380.   dump("\nMsgForwardAsAttachment from XUL\n");
  381.   if (event && event.shiftKey)
  382.     ComposeMessage(msgComposeType.ForwardAsAttachment,
  383.                    msgComposeFormat.OppositeOfDefault, loadedFolder, messageArray);
  384.   else
  385.     ComposeMessage(msgComposeType.ForwardAsAttachment, msgComposeFormat.Default, loadedFolder, messageArray);
  386. }
  387.  
  388. function MsgForwardAsInline(event)
  389. {
  390.   var loadedFolder = GetLoadedMsgFolder();
  391.   var messageArray = GetSelectedMessages();
  392.  
  393.  dump("\nMsgForwardAsInline from XUL\n");
  394.   if (event && event.shiftKey)
  395.     ComposeMessage(msgComposeType.ForwardInline,
  396.                    msgComposeFormat.OppositeOfDefault, loadedFolder, messageArray);
  397.   else
  398.     ComposeMessage(msgComposeType.ForwardInline, msgComposeFormat.Default, loadedFolder, messageArray);
  399. }
  400.  
  401.  
  402. function MsgEditMessageAsNew()
  403. {
  404.     var loadedFolder = GetLoadedMsgFolder();
  405.     var messageArray = GetSelectedMessages();
  406.     ComposeMessage(msgComposeType.Template, msgComposeFormat.Default, loadedFolder, messageArray);
  407. }
  408.  
  409. function MsgHome(url)
  410. {
  411.   window.open( url, "_blank", "chrome,dependent=yes,all" );
  412. }
  413.  
  414. function MsgNewFolder()
  415. {
  416.     var windowTitle = Bundle.GetStringFromName("newFolderDialogTitle");
  417.     var preselectedFolder = GetFirstSelectedMsgFolder();
  418.     var dualUseFolders = true;
  419.     var server = null;
  420.     var destinationFolder = null;
  421.  
  422.     if (preselectedFolder)
  423.     {
  424.         try {
  425.             server = preselectedFolder.server;
  426.             if (server)
  427.             {
  428.                 destinationFolder = getDestinationFolder(preselectedFolder, server);
  429.  
  430.                 var imapServer =
  431.                     server.QueryInterface(Components.interfaces.nsIImapIncomingServer);
  432.                 if (imapServer)
  433.                     dualUseFolders = imapServer.dualUseFolders;
  434.             }
  435.         } catch (e) {
  436.             dump ("Exception: dualUseFolders = true\n");
  437.         }
  438.     }
  439.  
  440.     CreateNewSubfolder("chrome://messenger/content/newFolderNameDialog.xul",windowTitle, destinationFolder, dualUseFolders);
  441. }
  442.  
  443.  
  444. function getDestinationFolder(preselectedFolder, server)
  445. {
  446.     var destinationFolder = null;
  447.  
  448.     var isCreateSubfolders = preselectedFolder.canCreateSubfolders;
  449.     if (!isCreateSubfolders) 
  450.     {
  451.         var tmpDestFolder = server.RootFolder;
  452.         destinationFolder 
  453.           = tmpDestFolder.QueryInterface(Components.interfaces.nsIMsgFolder);
  454.  
  455.         var verifyCreateSubfolders = null;
  456.         if (destinationFolder)
  457.             verifyCreateSubfolders = destinationFolder.canCreateSubfolders;
  458.  
  459.         // in case the server cannot have subfolders,
  460.         // get default account and set its incoming server as parent folder
  461.         if (!verifyCreateSubfolders) 
  462.         {
  463.             try {
  464.                 var account = accountManager.defaultAccount;
  465.                 var defaultServer = account.incomingServer;
  466.                 var tmpDefaultFolder = defaultServer.RootFolder;
  467.                 var defaultFolder 
  468.                   = tmpDefaultFolder.QueryInterface(Components.interfaces.nsIMsgFolder);
  469.  
  470.                 var checkCreateSubfolders = null;
  471.                 if (defaultFolder)
  472.                     checkCreateSubfolders = defaultFolder.canCreateSubfolders;
  473.  
  474.                 if (checkCreateSubfolders)
  475.                     destinationFolder = defaultFolder;
  476.  
  477.             } catch (e) {
  478.                 dump ("Exception: defaultAccount Not Available\n");
  479.             }
  480.         }
  481.     }
  482.     else
  483.         destinationFolder = preselectedFolder;
  484.  
  485.     return destinationFolder;
  486. }
  487.  
  488. function MsgSubscribe()
  489. {
  490.     var windowTitle = Bundle.GetStringFromName("subscribeDialogTitle");
  491.     var preselectedFolder = GetFirstSelectedMsgFolder();
  492.     Subscribe(windowTitle, preselectedFolder);
  493. }
  494.  
  495. function MsgSaveAsFile() 
  496. {
  497.     dump("\MsgSaveAsFile from XUL\n");
  498.     var messages = GetSelectedMessages();
  499.     if (messages && messages.length == 1)
  500.     {
  501.         SaveAsFile(messages[0]);
  502.     }
  503. }
  504.  
  505.  
  506. function MsgSaveAsTemplate() 
  507. {
  508.     dump("\MsgSaveAsTemplate from XUL\n");
  509.     var folder = GetLoadedMsgFolder();
  510.     var messages = GetSelectedMessages();
  511.     if (messages && messages.length == 1)
  512.     {
  513.         SaveAsTemplate(messages[0], folder);
  514.     }
  515. }
  516.  
  517. function MsgOpenNewWindowForFolder(folderUri)
  518. {
  519.     if(!folderUri)
  520.     {
  521.         var folder = GetLoadedMsgFolder();
  522.         var folderResource = folder.QueryInterface(Components.interfaces.nsIRDFResource);
  523.         folderUri = folderResource.Value;
  524.     }
  525.  
  526.     if(folderUri)
  527.     {
  528.         var layoutType = pref.GetIntPref("mail.pane_config");
  529.         
  530.         if(layoutType == 0)
  531.             window.openDialog( "chrome://messenger/content/messenger.xul", "_blank", "chrome,all,dialog=no", folderUri );
  532.         else
  533.             window.openDialog("chrome://messenger/content/mail3PaneWindowVertLayout.xul", "_blank", "chrome,all,dialog=no", folderUri );
  534.     }
  535.  
  536. }
  537.  
  538. function MsgOpenNewWindowForMessage(messageUri, folderUri)
  539. {
  540.     var message;
  541.  
  542.     if(!messageUri)
  543.     {
  544.         message = GetLoadedMessage();
  545.         var messageResource = message.QueryInterface(Components.interfaces.nsIRDFResource);
  546.         messageUri = messageResource.Value;
  547.     }
  548.  
  549.     if(!folderUri)
  550.     {
  551.         message = RDF.GetResource(messageUri);
  552.         message = message.QueryInterface(Components.interfaces.nsIMessage);
  553.         var folder = message.msgFolder;
  554.         var folderResource = folder.QueryInterface(Components.interfaces.nsIRDFResource);
  555.         folderUri = folderResource.Value;
  556.     }
  557.  
  558.     if(messageUri && folderUri)
  559.     {
  560.         window.openDialog( "chrome://messenger/content/messageWindow.xul", "_blank", "chrome,all,dialog=no", messageUri, folderUri );
  561.     }
  562.  
  563.  
  564. }
  565.  
  566. function CloseMailWindow() 
  567. {
  568.     dump("\nClose from XUL\nDo something...\n");
  569.     window.close();
  570. }
  571.  
  572. function MsgMarkMsgAsRead(markRead)
  573. {
  574.     if(markRead == null)
  575.     {
  576.         markRead= !SelectedMessagesAreRead();
  577.     }
  578.     var selectedMessages = GetSelectedMessages();
  579.     var compositeDataSource = GetCompositeDataSource("MarkMessageRead");
  580.  
  581.     MarkMessagesRead(compositeDataSource, selectedMessages, markRead);
  582. }
  583.  
  584. function MsgMarkAsFlagged(markFlagged)
  585. {
  586.     if(markFlagged == null)
  587.     {
  588.         markFlagged= !SelectedMessagesAreFlagged();
  589.     }
  590.  
  591.     var selectedMessages = GetSelectedMessages();
  592.     var compositeDataSource = GetCompositeDataSource("MarkMessageFlagged");
  593.  
  594.     MarkMessagesFlagged(compositeDataSource, selectedMessages, markFlagged);
  595. }
  596.  
  597.  
  598. function MsgMarkAllRead()
  599. {
  600.     var compositeDataSource = GetCompositeDataSource("MarkAllMessagesRead");
  601.     var folder = GetLoadedMsgFolder();
  602.  
  603.     if(folder)
  604.         MarkAllMessagesRead(compositeDataSource, folder);
  605. }
  606.  
  607. function MsgMarkThreadAsRead()
  608. {
  609.     
  610.     var messageList = GetSelectedMessages();
  611.     if(messageList.length == 1)
  612.     {
  613.         var message = messageList[0];
  614.         var compositeDataSource = GetCompositeDataSource("MarkThreadAsRead");
  615.  
  616.         MarkThreadAsRead(compositeDataSource, message);
  617.     }
  618.  
  619. }
  620.  
  621. function MsgViewPageSource() 
  622. {
  623.     dump("MsgViewPageSource(); \n ");
  624.     
  625.     var messages = GetSelectedMessages();
  626.     ViewPageSource(messages);
  627. }
  628.  
  629. function MsgFind() {
  630.     messenger.find();
  631. }
  632. function MsgFindAgain() {
  633.     messenger.findAgain();
  634. }
  635.  
  636. function MsgSearchMessages() {
  637.     var preselectedFolder = GetFirstSelectedMsgFolder();
  638.     window.openDialog("chrome://messenger/content/SearchDialog.xul", "SearchMail", "chrome,resizable", { folder: preselectedFolder });
  639. }
  640.  
  641. function MsgFilters() {
  642.     window.openDialog("chrome://messenger/content/FilterListDialog.xul", "FilterDialog", "chrome,resizable");
  643. }
  644.  
  645. function MsgViewAllHeaders() 
  646. {
  647.     pref.SetIntPref("mail.show_headers",2);
  648.     MsgReload();
  649.     return true;
  650. }
  651. function MsgViewNormalHeaders() 
  652. {
  653.     pref.SetIntPref("mail.show_headers",1);
  654.     MsgReload();
  655.     return true;
  656. }
  657. function MsgViewBriefHeaders() 
  658. {
  659.     pref.SetIntPref("mail.show_headers",0);
  660.     MsgReload();
  661.     return true;
  662. }
  663.  
  664. function MsgReload() 
  665. {
  666.     ReloadMessage();
  667. }
  668.  
  669. function MsgStop()
  670. {
  671.     StopUrls();
  672. }
  673.  
  674. function MsgSendUnsentMsg() 
  675. {
  676.     var folder = GetFirstSelectedMsgFolder();
  677.     if(folder)
  678.     {
  679.         SendUnsentMessages(folder);
  680.     }
  681. }
  682.  
  683. function PrintEnginePrint()
  684. {
  685.  
  686.     var messageList = GetSelectedMessages();
  687.     numMessages = messageList.length;
  688.  
  689.  
  690.     if (numMessages == 0)
  691.     {
  692.         dump("PrintEnginePrint(): No messages selected.\n");
  693.         return false;
  694.     }  
  695.  
  696.     var selectionArray = new Array(numMessages);
  697.  
  698.     for(var i = 0; i < numMessages; i++)
  699.     {
  700.         var messageResource = messageList[i].QueryInterface(Components.interfaces.nsIRDFResource);
  701.         selectionArray[i] = messageResource.Value;
  702.     }
  703.  
  704.     printEngineWindow = window.openDialog("chrome://messenger/content/msgPrintEngine.xul",
  705.                                                         "",
  706.                                                         "chrome,dialog=no,all",
  707.                                                         numMessages, selectionArray, statusFeedback);
  708.     return true;
  709. }
  710.  
  711. function IsMailFolderSelected()
  712. {
  713.     var selectedFolders = GetSelectedMsgFolders();
  714.     var numFolders = selectedFolders.length;
  715.     if(numFolders !=1)
  716.         return false;
  717.         
  718.     var folder = selectedFolders[0];
  719.     if (!folder)
  720.         return false;
  721.     
  722.     var server = folder.server;
  723.     var serverType = server.type;
  724.     
  725.     if((serverType == "nntp"))
  726.         return false;
  727.     else return true;
  728. }
  729.  
  730. function IsGetNewMessagesEnabled()
  731. {
  732.     var selectedFolders = GetSelectedMsgFolders();
  733.     var numFolders = selectedFolders.length;
  734.     if(numFolders !=1)
  735.         return false;
  736.         
  737.     var folder = selectedFolders[0];
  738.     if (!folder)
  739.         return false;
  740.     
  741.     var server = folder.server;
  742.     var isServer = folder.isServer;
  743.     var serverType = server.type;
  744.     
  745.     if(isServer && (serverType == "nntp"))
  746.         return false;
  747.     else if(serverType == "none")
  748.         return false;
  749.     else
  750.         return true;    
  751. }
  752.  
  753. function IsGetNextNMessagesEnabled()
  754. {
  755.     var selectedFolders = GetSelectedMsgFolders();
  756.     var numFolders = selectedFolders.length;
  757.     if(numFolders !=1)
  758.         return false;
  759.  
  760.     var folder = selectedFolders[0];
  761.     if (!folder)
  762.         return false;
  763.    
  764.     var server = folder.server;
  765.     var serverType = server.type;
  766.    
  767.     var menuItem = document.getElementById("menu_getnextnmsg");
  768.     if((serverType == "nntp")) {
  769.         var newsServer = server.QueryInterface(Components.interfaces.nsINntpIncomingServer);
  770.         var menuValue = Bundle.formatStringFromName("getNextNMessages",
  771.                                         [ newsServer.maxArticles], 1);
  772.         menuItem.setAttribute("value",menuValue);
  773.         menuItem.setAttribute("hidden","false");
  774.         return true;
  775.     }
  776.     else {
  777.         menuItem.setAttribute("hidden","true");
  778.         return false;
  779.     }
  780. }
  781.  
  782. function IsEmptyTrashEnabled()
  783. {
  784.     return IsMailFolderSelected();
  785. }
  786.  
  787. function IsCompactFolderEnabled()
  788. {
  789.     return IsMailFolderSelected();
  790. }
  791.  
  792. function MsgMarkByDate() {}
  793. function MsgOpenAttachment() {}
  794. function MsgUpdateMsgCount() {}
  795. function MsgImport() {}
  796. function MsgWorkOffline() {}
  797. function MsgSynchronize() {}
  798. function MsgGetSelectedMsg() {}
  799. function MsgGetFlaggedMsg() {}
  800. function MsgSelectThread() {}
  801. function MsgSelectFlaggedMsg() {}
  802. function MsgShowFolders(){}
  803. function MsgShowLocationbar() {}
  804. function MsgViewAttachInline() {}
  805. function MsgWrapLongLines() {}
  806. function MsgIncreaseFont() {}
  807. function MsgDecreaseFont() {}
  808. function MsgShowImages() {}
  809. function MsgRefresh() {}
  810. function MsgViewPageInfo() {}
  811. function MsgFirstUnreadMessage() {}
  812. function MsgFirstFlaggedMessage() {}
  813. function MsgGoBack() {}
  814. function MsgGoForward() {}
  815. function MsgAddSenderToAddressBook() {}
  816. function MsgAddAllToAddressBook() {}
  817. function MsgIgnoreThread() {}
  818. function MsgWatchThread() {}
  819.