home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2001 November / november_2001.iso / Browsers / Netscape 6.1 / browser.xpi / bin / chrome / help.jar / content / help / help.js < prev    next >
Encoding:
JavaScript  |  2001-07-11  |  16.1 KB  |  393 lines

  1. //-------- global variables
  2.  
  3. var gBrowser;
  4.  
  5. // The key object is used to define special context strings that, when appended to
  6. // the url for the help window itself, load specific content. For example, the uri:
  7. //     chrome://help/content/help.xul?mail
  8. // loads the document at:
  9. //     chrome://help/locale/mail_help.html into the window on initialization.
  10. var key = {
  11.  "?mail": "chrome://help/locale/mail_help.html",
  12.  "?nav":  "chrome://help/locale/nav_help.html",
  13.  "?im":    "chrome://help/locale/im_help.html",
  14.  "?sec":   "chrome://help/locale/security_help.html",
  15.  "?cust":  "chrome://help/locale/customize_help.html",
  16.  "?comp":  "chrome://help/locale/composer_help.html",
  17.  "?prefs":   "chrome://help/locale/prefs_help.html#prefs_first",
  18.  
  19.  "?mail_prefs_general": "chrome://help/locale/mail_help.html#PREFERENCES_MAILNEWS_MAIN_PANE", 
  20.  "?mail_prefs_display": "chrome://help/locale/mail_help.html#PREFERENCES_MAILNEWS_DISPLAY", 
  21.  "?mail_prefs_messages": "chrome://help/locale/mail_help.html#PREFERENCES_MAILNEWS_MESSAGES", 
  22.  "?mail_prefs_formatting": "chrome://help/locale/mail_help.html#PREFERENCES_MAILNEWS_FORMATTING", 
  23.  "?mail_prefs_addressing": "chrome://help/locale/mail_help.html#PREFERENCES_MAILNEWS_ADDRESSING", 
  24.  "?mail_prefs_offline": "chrome://help/locale/mail_help.html#PREFERENCES_MAILNEWS_OFFLINE", 
  25.  
  26.  "?composer_prefs_general": "chrome://help/locale/composer_help.html#PREFERENCES_EDITOR_GENERAL", 
  27.  "?composer_prefs_newpage": "chrome://help/locale/composer_help.html#PREFERENCES_NEWPAGE", 
  28.  
  29.  "?appearance_pref":  "chrome://help/locale/cs_nav_prefs_appearance.html",
  30.  "?appearance_pref_appearance":  "chrome://help/locale/cs_nav_prefs_appearance.html#appearance",
  31.  "?appearance_pref_fonts":  "chrome://help/locale/cs_nav_prefs_appearance.html#fonts",
  32.  "?appearance_pref_colors":  "chrome://help/locale/cs_nav_prefs_appearance.html#colors",
  33.  "?appearance_pref_fonts":  "chrome://help/locale/cs_nav_prefs_appearance.html#fonts",
  34.  "?appearance_pref_themes":  "chrome://help/locale/cs_nav_prefs_appearance.html#themes",
  35.  
  36.  "?navigator_pref":  "chrome://help/locale/cs_nav_prefs_navigator.html",
  37.  "?navigator_pref_navigator":  "chrome://help/locale/cs_nav_prefs_navigator.html#Navigator",
  38.  "?navigator_pref_history":  "chrome://help/locale/cs_nav_prefs_navigator.html#History",
  39.  "?navigator_pref_languages":  "chrome://help/locale/cs_nav_prefs_navigator.html#Languages",
  40.  "?navigator_pref_helper_applications": "chrome://help/locale/cs_nav_prefs_navigator.html#Helper",
  41.  "?navigator_pref_internet_searching": "chrome://help/locale/cs_nav_prefs_navigator.html#Internet",
  42.  "?navigator_pref_smart_browsing": "chrome://help/locale/cs_nav_prefs_navigator.html#Smart",  
  43.  
  44.  "?advanced_pref":  "chrome://help/locale/cs_nav_prefs_advanced.html",
  45.  "?advanced_pref_advanced":  "chrome://help/locale/cs_nav_prefs_advanced.html#Advanced",
  46.  "?advanced_pref_cache":  "chrome://help/locale/cs_nav_prefs_advanced.html#Cache",
  47.  "?advanced_pref_installation": "chrome://help/locale/cs_nav_prefs_advanced.html#Software_Installation",
  48.  "?advanced_pref_mouse_wheel": "chrome://help/locale/cs_nav_prefs_advanced.html#Mouse_Wheel",
  49.  "?advanced_pref_system":  "chrome://help/locale/cs_nav_prefs_advanced.html#system",
  50. "?advanced_pref_proxies": "chrome://help/locale/cs_nav_prefs_advanced.html#Proxies",
  51.  "?nover_noencrypt":  "chrome://help/locale/ssl_page_info_help.html#Not_Verified_Not Encrypted",
  52.  "?ver_encrypt":  "chrome://help/locale/ssl_page_info_help.html#Verified_Encrypted",
  53.  "?conver_encrypt":  "chrome://help/locale/ssl_page_info_help.html#Conditionally_Verified_Encrypted",
  54.  "?ver_noencrypt":  "chrome://help/locale/ssl_page_info_help.html#Verified_Not Encrypted",
  55.  "?conver_noencrypt":  "chrome://help/locale/ssl_page_info_help.html#Conditionally_Verified_Not_Encrypted",
  56.  
  57.  "?my_certs":  "chrome://help/locale/certs_help.html#My_Certificates",
  58.  "?cert_backup_pwd":  "chrome://help/locale/certs_help.html#Choose_a_Certificate_Backup_Password",
  59.  "?delete_my_certs":  "chrome://help/locale/certs_help.html#Delete_My_Certificate",
  60.  "?change_pwd":  "chrome://help/locale/passwords_help.html#Change_Master_Password",
  61.  "?web_certs":  "chrome://help/locale/certs_help.html#Web_Site_Certificates",
  62.  "?edit_web_certs":  "chrome://help/locale/certs_help.html#Edit_Web_Site_Certificate_Settings",
  63.  "?delete_web_certs":  "chrome://help/locale/certs_help.html#Delete_Web_Site_Certificate",
  64.  "?ca_certs":  "chrome://help/locale/certs_help.html#CA_Certificates",
  65.  "?edit_ca_certs":  "chrome://help/locale/certs_help.html#Edit_CA_Certificate_Settings",
  66.  "?delete_ca_certs":  "chrome://help/locale/certs_help.html#Delete_CA_Certificate",
  67.  "?sec_devices":  "chrome://help/locale/certs_help.html#Security_Devices",
  68.  
  69.  "?cert_details":  "chrome://help/locale/cert_dialog_help.html#Certificate_Details",
  70.  "?which_token":  "chrome://help/locale/cert_dialog_help.html#Choose_Security_Device",
  71.  "?priv_key_copy":  "chrome://help/locale/cert_dialog_help.html#Encryption_Key_Copy",
  72.  "?backup_your_cert":  "chrome://help/locale/cert_dialog_help.html#Certificate_Backup",
  73.  "?which_cert":  "chrome://help/locale/cert_dialog_help.html#User_Identification_Request",
  74.  "?no_cert":  "chrome://help/locale/cert_dialog_help.html#No_Acceptable_Identification",
  75.  "?new_ca":  "chrome://help/locale/cert_dialog_help.html#New_Certificate_Authority",
  76.  "?new_web_cert":  "chrome://help/locale/cert_dialog_help.html#New_Web_Site_Certificate",
  77.  "?exp_web_cert":  "chrome://help/locale/cert_dialog_help.html#Expired_Web_Site_Certificate",
  78.  "?not_yet_web_cert":  "chrome://help/locale/cert_dialog_help.html#Web_Site_Certificate_Not_Yet_Valid",
  79.  "?bad_name_web_cert":  "chrome://help/locale/cert_dialog_help.html#Unexpected_Certificate_Name",
  80.  
  81.  "?sec_gen":  "chrome://help/locale/privsec_help.html#privsec_help_first",
  82.  "?ssl_prefs":  "chrome://help/locale/ssl_help.html#ssl_first",
  83.  "?validation_prefs":  "chrome://help/locale/validation_help.html",
  84.  "?passwords_prefs":  "chrome://help/locale/passwords_help.html",
  85.  "?passwords_master":  "chrome://help/locale/passwords_help.html#Master_Password_Timeout",
  86.  "?forms_prefs":  "chrome://help/locale/using_priv_help.html#using_forms",  
  87.  "?cookies_prefs": "chrome://help/locale/using_priv_help.html#using_cookies",
  88.  "?images_prefs": "chrome://help/locale/using_priv_help.html#using_images",
  89.  "?certs_prefs": "chrome://help/locale/certs_prefs_help.html",
  90.  
  91.  "?im_prefs_general": "chrome://help/locale/im_help.html#im_gen", 
  92.  "?im_prefs_privacy": "chrome://help/locale/im_help.html#im_privacy", 
  93.  "?im_prefs_notification": "chrome://help/locale/im_help.html#im_notif", 
  94.  "?im_prefs_away": "chrome://help/locale/im_help.html#im_awaypref", 
  95.  "?im_prefs_connection": "chrome://help/locale/im_help.html#im_connect", 
  96.  
  97.  "?image_properties": "chrome://help/locale/composer_help.html#PROPERTIES_IMAGE",
  98.  "?imagemap_properties": "chrome://help/locale/composer_help.html#IMAGE_MAPS",
  99.  "?link_properties": "chrome://help/locale/composer_help.html#page_link",
  100.  "?table_properties": "chrome://help/locale/composer_help.html#Setting_table_properties",
  101.  "?advanced_property_editor": "chrome://help/locale/composer_help.html#PROPERTY_EDITOR",
  102.  
  103.  // Mailnews account settings tag mappings. 
  104.  "?mail_account_identity": "chrome://help/locale/mail_help.html#PREFERENCES_MAILNEWS_IDENTITY",
  105.  "?mail_server_imap": "chrome://help/locale/mail_help.html#IMAP_SERVER", 
  106.  "?mail_server_pop3": "chrome://help/locale/mail_help.html#POP_SERVER", 
  107.  "?mail_server_nntp": "chrome://help/locale/mail_help.html#DISCUSSION_HOST_PROPERTIES", 
  108.  "?mail_copies": "chrome://help/locale/mail_help.html#PREFERENCES_MAILNEWS_COPIES",
  109.  "?mail_addressing_settings": "chrome://help/locale/mail_help.html#addressing_settings", 
  110.  "?mail_offline_imap": "chrome://help/locale/mail_help.html#OFFLINE_IMAP", 
  111.  "?mail_offline_pop3": "chrome://help/locale/mail_help.html#OFFLINE_POP", 
  112.  "?mail_offline_nntp": "chrome://help/locale/mail_help.html#OFFLINE_NEWS", 
  113.  "?mail_smtp": "chrome://help/locale/mail_help.html#PREFERENCES_MAILNEWS_SMTP" 
  114. }
  115.  
  116. // This function is called by dialogs that want to display context-sensitive help
  117. function openHelp(uri)
  118. {
  119.   var windowManager = Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator'].getService();
  120.   var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
  121.   var topWindow = windowManagerInterface.getMostRecentWindow( "mozilla:help" );
  122.   if ( topWindow ) {
  123.      topWindow.focus();
  124.   } else {
  125.       window.open(uri, "_blank", "chrome,menubar,toolbar,dialog=no,resizable,scrollbars");
  126.   }
  127. }
  128.  
  129. function init()
  130. {
  131.   // Initialize the Help window
  132.  
  133.   // move to right end of screen
  134.   var width = document.documentElement.getAttribute("width");
  135.   var height = document.documentElement.getAttribute("height");
  136.   window.moveTo(screen.availWidth-width, (screen.availHeight-height)/2);
  137.  
  138.   gBrowser = document.getElementById("help-content");
  139.   var sessionHistory =  Components.classes["@mozilla.org/browser/shistory;1"]
  140.                                   .createInstance(Components.interfaces.nsISHistory);
  141.  
  142.   getWebNavigation().sessionHistory = sessionHistory;
  143.   // if this is context-sensitive,
  144.   // then window.location.search contains the "key" (from the top of this file)
  145.   // that resolves to a particular html document or target
  146.   if (key[window.location.search]) {
  147.       dump("loading help content: " + key[window.location.search] + "\n");
  148.       loadURI(key[window.location.search]);
  149.    } else {
  150.       goHome();
  151.   }
  152.   window.XULBrowserWindow = new nsHelpStatusHandler();
  153.   // hook up UI through progress listener
  154.   var browser = document.getElementById("help-content");
  155.   var interfaceRequestor = browser.docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
  156.   var webProgress = interfaceRequestor.getInterface(Components.interfaces.nsIWebProgress);
  157.   webProgress.addProgressListener(window.XULBrowserWindow);
  158. }
  159.  
  160. // select the item in the tree called "Dialog Help" if the window was loaded from a dialog
  161. function setContext() {
  162.   var items = document.getElementsByAttribute("helplink", "chrome://help/locale/context_help.html");
  163.   if (items.length) {
  164.      var tree = document.getElementById("help-toc-tree");
  165.      try { tree.selectItem(items[0].parentNode.parentNode); } catch(ex) { dump("can't select in toc: " + ex + "\n"); }
  166.   }
  167. }
  168.  
  169. function selectTOC(link_attr) {
  170.   var items = document.getElementsByAttribute("helplink", link_attr);
  171.   if (items.length) {
  172.      openTwistyTo(items[0]);
  173.      var tree = document.getElementById("help-toc-tree");
  174.      try { tree.selectItem(items[0].parentNode.parentNode); } catch(ex) { dump("can't select in toc: " + ex + "\n"); }
  175.   } 
  176. }
  177.  
  178. // open parent nodes for the selected node
  179. // until you get to the top of the tree
  180. function openTwistyTo(selectedURINode)
  181. {
  182.   var parent = selectedURINode.parentNode;
  183.   var tree = document.getElementById("help-toc-tree");
  184.   if (parent == tree)
  185.     return;
  186.  
  187.   parent.setAttribute("open", "true");
  188.   openTwistyTo(parent);
  189. }
  190.  
  191.  
  192. function getWebNavigation()
  193. {
  194.   return gBrowser.webNavigation;
  195. }
  196.  
  197. function loadURI(aURI)
  198. {
  199.   const nsIWebNavigation = Components.interfaces.nsIWebNavigation;
  200.   getWebNavigation().loadURI(aURI, nsIWebNavigation.LOAD_FLAGS_NONE);
  201. }
  202.  
  203. function goBack()
  204. {
  205.   var webNavigation = getWebNavigation();
  206.   if (webNavigation.canGoBack)
  207.     webNavigation.goBack();
  208. }
  209.  
  210. function goForward()
  211. {
  212.   var webNavigation = getWebNavigation();
  213.   if (webNavigation.canGoForward)
  214.     webNavigation.goForward();
  215. }
  216.  
  217. function goHome() {
  218.   // load "Welcome" page
  219.   loadURI("chrome://help/locale/welcome_help.html");
  220. }
  221.  
  222. function print()
  223. {
  224.   try {
  225.     _content.print();
  226.   } catch (e) {
  227.   }
  228. }
  229.  
  230. function createBackMenu(event)
  231. {
  232.   FillHistoryMenu(event.target, "back");
  233. }
  234.  
  235. function createForwardMenu(event)
  236. {
  237.   FillHistoryMenu(event.target, "forward");
  238. }
  239.  
  240. function gotoHistoryIndex(aEvent)
  241. {
  242.   var index = aEvent.target.getAttribute("index");
  243.   if (!index)
  244.     return false;
  245.   try {
  246.     getWebNavigation().gotoIndex(index);
  247.   }
  248.   catch(ex) {
  249.     return false;
  250.   }
  251.   return true;
  252. }
  253.  
  254. function BrowserBack()
  255. {
  256.   try {
  257.     getWebNavigation().goBack();
  258.   }
  259.   catch(ex) {
  260.   }
  261.   UpdateBackForwardButtons();
  262. }
  263.  
  264. function BrowserForward()
  265. {
  266.   try {
  267.     getWebNavigation().goForward();
  268.   }
  269.   catch(ex) {
  270.   }
  271.   UpdateBackForwardButtons();
  272. }
  273.  
  274. function nsHelpStatusHandler()
  275. {
  276. }
  277.  
  278. nsHelpStatusHandler.prototype =
  279. {
  280.   onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus) {},
  281.   onProgressChange : function(aWebProgress, aRequest, aCurSelfProgress,
  282.                               aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress) {},
  283.   onSecurityChange : function(aWebProgress, aRequest, state) {},
  284.   onLocationChange : function(aWebProgress, aRequest, aLocation)
  285.   {
  286.     UpdateBackForwardButtons();
  287.   },
  288.   QueryInterface : function(aIID)
  289.   {
  290.     if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
  291.       aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
  292.       aIID.equals(Components.interfaces.nsIXULBrowserWindow) ||
  293.       aIID.equals(Components.interfaces.nsISupports))
  294.       return this;
  295.     throw Components.results.NS_NOINTERFACE;
  296.   },
  297.   setJSStatus : function(status) {},
  298.   setJSDefaultStatus : function(status) {},
  299.   setOverLink : function(link) {}
  300. }
  301.  
  302. function UpdateBackForwardButtons()
  303. {
  304.   var backBroadcaster = document.getElementById("canGoBack");
  305.   var forwardBroadcaster = document.getElementById("canGoForward");
  306.   var webNavigation = getWebNavigation();
  307.  
  308.   // Avoid setting attributes on broadcasters if the value hasn't changed!
  309.   // Remember, guys, setting attributes on elements is expensive!  They
  310.   // get inherited into anonymous content, broadcast to other widgets, etc.!
  311.   // Don't do it if the value hasn't changed! - dwh
  312.  
  313.   var backDisabled = (backBroadcaster.getAttribute("disabled") == "true");
  314.   var forwardDisabled = (forwardBroadcaster.getAttribute("disabled") == "true");
  315.  
  316.   if (backDisabled == webNavigation.canGoBack)
  317.     backBroadcaster.setAttribute("disabled", !backDisabled);
  318.   
  319.   if (forwardDisabled == webNavigation.canGoForward)
  320.     forwardBroadcaster.setAttribute("disabled", !forwardDisabled);
  321. }
  322.  
  323. function find(again)
  324. {
  325.   var focusedWindow = document.commandDispatcher.focusedWindow;
  326.   var browser = document.getElementById("help-content");
  327.   if (!focusedWindow || focusedWindow == window)
  328.     focusedWindow = window._content;
  329.   if (again)
  330.     findAgainInPage(browser, window._content, focusedWindow);
  331.   else
  332.     findInPage(browser, window._content, focusedWindow)
  333. }
  334.  
  335. function getMarkupDocumentViewer()
  336. {
  337.   return document.getElementById("help-content").markupDocumentViewer;
  338. }
  339.  
  340. function BrowserReload()
  341. {
  342.   const reloadFlags = Components.interfaces.nsIWebNavigation.LOAD_FLAGS_NONE;
  343.   return BrowserReloadWithFlags(reloadFlags);
  344. }
  345.  
  346. function BrowserReloadWithFlags(reloadFlags)
  347. {
  348.    try {
  349.      /* Need to get SessionHistory from docshell so that
  350.       * reload on framed pages will work right. This 
  351.       * method should not be used for the context menu item "Reload frame".
  352.       * "Reload frame" should directly call into docshell as it does right now
  353.       */
  354.      var sh = getWebNavigation().sessionHistory;
  355.      var webNav = sh.QueryInterface(Components.interfaces.nsIWebNavigation);      
  356.      webNav.reload(reloadFlags);
  357.    }
  358.    catch(ex) {
  359.    }
  360.  }
  361.  
  362.  function BrowserPageInfo(doc)
  363.  {
  364.    window.openDialog("chrome://navigator/content/pageInfo.xul",
  365.                      "_blank",
  366.                      "chrome,dialog=no",
  367.                      doc);
  368. }
  369.  
  370. function BrowserViewSource()
  371. {
  372.   var focusedWindow = document.commandDispatcher.focusedWindow;
  373.   if (focusedWindow == window)
  374.     focusedWindow = _content;
  375.  
  376.   if (focusedWindow)
  377.     var docCharset = "charset=" + focusedWindow.document.characterSet;
  378.  
  379.   BrowserViewSourceOfURL(_content.location, docCharset);
  380. }
  381.  
  382. function BrowserViewSourceOfURL(url, charset)
  383. {
  384.   // try to open a view-source window while inheriting the charset (if any)
  385.   openDialog("chrome://navigator/content/viewSource.xul",
  386.              "_blank",
  387.              "scrollbars,resizable,chrome,dialog=no",
  388.              url, charset);
  389. }
  390.  
  391. function getBrowser() {
  392.   return document.getElementById("help-content");
  393. }