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