home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 December / PCWorld_2000-12_cd.bin / Komunikace / mozilla / mozilla-win32-M18-mathml-svg-xslt.exe / chrome / messenger.jar / content / messenger / mailWindowOverlay.js < prev    next >
Text File  |  2000-09-15  |  22KB  |  771 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.     if (preselectedFolder)
  421.     {
  422.         try {
  423.             server = preselectedFolder.server;
  424.             if (server)
  425.             {
  426.                 var imapServer =
  427.                     server.QueryInterface(Components.interfaces.nsIImapIncomingServer);
  428.                 if (imapServer)
  429.                     dualUseFolders = imapServer.dualUseFolders;
  430.             }
  431.         } catch (e) {
  432.             dump ("Exception: dualUseFolders = true\n");
  433.         }
  434.     }
  435.     CreateNewSubfolder("chrome://messenger/content/newFolderNameDialog.xul",windowTitle, preselectedFolder, dualUseFolders);
  436. }
  437.  
  438.  
  439. function MsgSubscribe()
  440. {
  441.     var windowTitle = Bundle.GetStringFromName("subscribeDialogTitle");
  442.     var preselectedFolder = GetFirstSelectedMsgFolder();
  443.     Subscribe(windowTitle, preselectedFolder);
  444. }
  445.  
  446. function MsgSaveAsFile() 
  447. {
  448.     dump("\MsgSaveAsFile from XUL\n");
  449.     var messages = GetSelectedMessages();
  450.     if (messages && messages.length == 1)
  451.     {
  452.         SaveAsFile(messages[0]);
  453.     }
  454. }
  455.  
  456.  
  457. function MsgSaveAsTemplate() 
  458. {
  459.     dump("\MsgSaveAsTemplate from XUL\n");
  460.     var folder = GetLoadedMsgFolder();
  461.     var messages = GetSelectedMessages();
  462.     if (messages && messages.length == 1)
  463.     {
  464.         SaveAsTemplate(messages[0], folder);
  465.     }
  466. }
  467.  
  468. function MsgOpenNewWindowForFolder(folderUri)
  469. {
  470.     if(!folderUri)
  471.     {
  472.         var folder = GetLoadedMsgFolder();
  473.         var folderResource = folder.QueryInterface(Components.interfaces.nsIRDFResource);
  474.         folderUri = folderResource.Value;
  475.     }
  476.  
  477.     if(folderUri)
  478.     {
  479.         var layoutType = pref.GetIntPref("mail.pane_config");
  480.         
  481.         if(layoutType == 0)
  482.             window.openDialog( "chrome://messenger/content/messenger.xul", "_blank", "chrome,all,dialog=no", folderUri );
  483.         else
  484.             window.openDialog("chrome://messenger/content/mail3PaneWindowVertLayout.xul", "_blank", "chrome,all,dialog=no", folderUri );
  485.     }
  486.  
  487. }
  488.  
  489. function MsgOpenNewWindowForMessage(messageUri, folderUri)
  490. {
  491.     var message;
  492.  
  493.     if(!messageUri)
  494.     {
  495.         message = GetLoadedMessage();
  496.         var messageResource = message.QueryInterface(Components.interfaces.nsIRDFResource);
  497.         messageUri = messageResource.Value;
  498.     }
  499.  
  500.     if(!folderUri)
  501.     {
  502.         message = RDF.GetResource(messageUri);
  503.         message = message.QueryInterface(Components.interfaces.nsIMessage);
  504.         var folder = message.msgFolder;
  505.         var folderResource = folder.QueryInterface(Components.interfaces.nsIRDFResource);
  506.         folderUri = folderResource.Value;
  507.     }
  508.  
  509.     if(messageUri && folderUri)
  510.     {
  511.         window.openDialog( "chrome://messenger/content/messageWindow.xul", "_blank", "chrome,all,dialog=no", messageUri, folderUri );
  512.     }
  513.  
  514.  
  515. }
  516.  
  517. function CloseMailWindow() 
  518. {
  519.     dump("\nClose from XUL\nDo something...\n");
  520.     window.close();
  521. }
  522.  
  523. function MsgMarkMsgAsRead(markRead)
  524. {
  525.     if(markRead == null)
  526.     {
  527.         markRead= !SelectedMessagesAreRead();
  528.     }
  529.     var selectedMessages = GetSelectedMessages();
  530.     var compositeDataSource = GetCompositeDataSource("MarkMessageRead");
  531.  
  532.     MarkMessagesRead(compositeDataSource, selectedMessages, markRead);
  533. }
  534.  
  535. function MsgMarkAsFlagged(markFlagged)
  536. {
  537.     if(markFlagged == null)
  538.     {
  539.         markFlagged= !SelectedMessagesAreFlagged();
  540.     }
  541.  
  542.     var selectedMessages = GetSelectedMessages();
  543.     var compositeDataSource = GetCompositeDataSource("MarkMessageFlagged");
  544.  
  545.     MarkMessagesFlagged(compositeDataSource, selectedMessages, markFlagged);
  546. }
  547.  
  548.  
  549. function MsgMarkAllRead()
  550. {
  551.     var compositeDataSource = GetCompositeDataSource("MarkAllMessagesRead");
  552.     var folder = GetLoadedMsgFolder();
  553.  
  554.     if(folder)
  555.         MarkAllMessagesRead(compositeDataSource, folder);
  556. }
  557.  
  558. function MsgMarkThreadAsRead()
  559. {
  560.     
  561.     var messageList = GetSelectedMessages();
  562.     if(messageList.length == 1)
  563.     {
  564.         var message = messageList[0];
  565.         var compositeDataSource = GetCompositeDataSource("MarkThreadAsRead");
  566.  
  567.         MarkThreadAsRead(compositeDataSource, message);
  568.     }
  569.  
  570. }
  571.  
  572. function MsgViewPageSource() 
  573. {
  574.     dump("MsgViewPageSource(); \n ");
  575.     
  576.     var messages = GetSelectedMessages();
  577.     ViewPageSource(messages);
  578. }
  579.  
  580. function MsgFind() {
  581.     messenger.find();
  582. }
  583. function MsgFindAgain() {
  584.     messenger.findAgain();
  585. }
  586.  
  587. function MsgSearchMessages() {
  588.     var preselectedFolder = GetFirstSelectedMsgFolder();
  589.     window.openDialog("chrome://messenger/content/SearchDialog.xul", "SearchMail", "chrome,resizable", { folder: preselectedFolder });
  590. }
  591.  
  592. function MsgFilters() {
  593.     window.openDialog("chrome://messenger/content/FilterListDialog.xul", "FilterDialog", "chrome,resizable");
  594. }
  595.  
  596. function MsgViewAllHeaders() 
  597. {
  598.     pref.SetIntPref("mail.show_headers",2);
  599.     MsgReload();
  600.     return true;
  601. }
  602. function MsgViewNormalHeaders() 
  603. {
  604.     pref.SetIntPref("mail.show_headers",1);
  605.     MsgReload();
  606.     return true;
  607. }
  608. function MsgViewBriefHeaders() 
  609. {
  610.     pref.SetIntPref("mail.show_headers",0);
  611.     MsgReload();
  612.     return true;
  613. }
  614.  
  615. function MsgReload() 
  616. {
  617.     ReloadMessage();
  618. }
  619.  
  620. function MsgStop()
  621. {
  622.     StopUrls();
  623. }
  624.  
  625. function MsgSendUnsentMsg() 
  626. {
  627.     var folder = GetFirstSelectedMsgFolder();
  628.     if(folder)
  629.     {
  630.         SendUnsentMessages(folder);
  631.     }
  632. }
  633.  
  634. function PrintEnginePrint()
  635. {
  636.  
  637.     var messageList = GetSelectedMessages();
  638.     numMessages = messageList.length;
  639.  
  640.  
  641.     if (numMessages == 0)
  642.     {
  643.         dump("PrintEnginePrint(): No messages selected.\n");
  644.         return false;
  645.     }  
  646.  
  647.     var selectionArray = new Array(numMessages);
  648.  
  649.     for(var i = 0; i < numMessages; i++)
  650.     {
  651.         var messageResource = messageList[i].QueryInterface(Components.interfaces.nsIRDFResource);
  652.         selectionArray[i] = messageResource.Value;
  653.     }
  654.  
  655.     printEngineWindow = window.openDialog("chrome://messenger/content/msgPrintEngine.xul",
  656.                                                         "",
  657.                                                         "chrome,dialog=no,all",
  658.                                                         numMessages, selectionArray, statusFeedback);
  659.     return true;
  660. }
  661.  
  662. function IsMailFolderSelected()
  663. {
  664.     var selectedFolders = GetSelectedMsgFolders();
  665.     var numFolders = selectedFolders.length;
  666.     if(numFolders !=1)
  667.         return false;
  668.         
  669.     var folder = selectedFolders[0];
  670.     if (!folder)
  671.         return false;
  672.     
  673.     var server = folder.server;
  674.     var serverType = server.type;
  675.     
  676.     if((serverType == "nntp"))
  677.         return false;
  678.     else return true;
  679. }
  680.  
  681. function IsGetNewMessagesEnabled()
  682. {
  683.     var selectedFolders = GetSelectedMsgFolders();
  684.     var numFolders = selectedFolders.length;
  685.     if(numFolders !=1)
  686.         return false;
  687.         
  688.     var folder = selectedFolders[0];
  689.     if (!folder)
  690.         return false;
  691.     
  692.     var server = folder.server;
  693.     var isServer = folder.isServer;
  694.     var serverType = server.type;
  695.     
  696.     if(isServer && (serverType == "nntp"))
  697.         return false;
  698.     else if(serverType == "none")
  699.         return false;
  700.     else
  701.         return true;    
  702. }
  703.  
  704. function IsGetNextNMessagesEnabled()
  705. {
  706.     var selectedFolders = GetSelectedMsgFolders();
  707.     var numFolders = selectedFolders.length;
  708.     if(numFolders !=1)
  709.         return false;
  710.  
  711.     var folder = selectedFolders[0];
  712.     if (!folder)
  713.         return false;
  714.    
  715.     var server = folder.server;
  716.     var serverType = server.type;
  717.    
  718.     var menuItem = document.getElementById("menu_getnextnmsg");
  719.     if((serverType == "nntp")) {
  720.         var newsServer = server.QueryInterface(Components.interfaces.nsINntpIncomingServer);
  721.         var menuValue = Bundle.formatStringFromName("getNextNMessages",
  722.                                         [ newsServer.maxArticles], 1);
  723.         menuItem.setAttribute("value",menuValue);
  724.         menuItem.setAttribute("hidden","false");
  725.         return true;
  726.     }
  727.     else {
  728.         menuItem.setAttribute("hidden","true");
  729.         return false;
  730.     }
  731. }
  732.  
  733. function IsEmptyTrashEnabled()
  734. {
  735.     return IsMailFolderSelected();
  736. }
  737.  
  738. function IsCompactFolderEnabled()
  739. {
  740.     return IsMailFolderSelected();
  741. }
  742.  
  743. function MsgMarkByDate() {}
  744. function MsgOpenAttachment() {}
  745. function MsgUpdateMsgCount() {}
  746. function MsgImport() {}
  747. function MsgWorkOffline() {}
  748. function MsgSynchronize() {}
  749. function MsgGetSelectedMsg() {}
  750. function MsgGetFlaggedMsg() {}
  751. function MsgSelectThread() {}
  752. function MsgSelectFlaggedMsg() {}
  753. function MsgShowFolders(){}
  754. function MsgShowLocationbar() {}
  755. function MsgViewAttachInline() {}
  756. function MsgWrapLongLines() {}
  757. function MsgIncreaseFont() {}
  758. function MsgDecreaseFont() {}
  759. function MsgShowImages() {}
  760. function MsgRefresh() {}
  761. function MsgViewPageInfo() {}
  762. function MsgFirstUnreadMessage() {}
  763. function MsgFirstFlaggedMessage() {}
  764. function MsgGoBack() {}
  765. function MsgGoForward() {}
  766. function MsgAddSenderToAddressBook() {}
  767. function MsgAddAllToAddressBook() {}
  768. function MsgIgnoreThread() {}
  769. function MsgWatchThread() {}
  770.