home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 January / 01_02.iso / software / netscape62win / browser.xpi / bin / chrome / comm.jar / content / navigator / pageInfo.js < prev    next >
Encoding:
Text File  |  2001-08-29  |  7.0 KB  |  220 lines

  1. /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  2.  *
  3.  * The contents of this file are subject to the Netscape Public
  4.  * License Version 1.1 (the "License"); you may not use this file
  5.  * except in compliance with the License. You may obtain a copy of
  6.  * the License at http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the License is distributed on an "AS
  9.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  10.  * implied. See the License for the specific language governing
  11.  * rights and limitations under the License.
  12.  *
  13.  * The Original Code is mozilla.org code.
  14.  *
  15.  * The Initial Developer of the Original Code is Netscape
  16.  * Communications Corporation.  Portions created by Netscape are
  17.  * Copyright (C) 1998 Netscape Communications Corporation. All
  18.  * Rights Reserved.
  19.  *
  20.  * Contributor(s): smorrison@gte.com
  21.  *   Terry Hayes <thayes@netscape.com>
  22.  */
  23.  
  24. const nsScriptableDateFormat_CONTRACTID = "@mozilla.org/intl/scriptabledateformat;1";
  25. const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat;
  26.  
  27. /* Overlays register init functions here.
  28.  *   Add functions to call by invoking "onLoadRegistry.append(XXXLoadFunc);"
  29.  *   The XXXLoadFunc should be unique to the overlay module, and will be
  30.  *   invoked as "XXXLoadFunc();"
  31.  */
  32. var onLoadRegistry = [ ];
  33.  
  34. /* Called when PageInfo window is loaded.  Arguments are:
  35.  *   window.arguments[0] - window (or frame) to use for source (may be null)
  36.  *   window.arguments[1] - tab name to display first (may be null)
  37.  */
  38. function onLoadPageInfo()
  39. {
  40.   var page;
  41.   if ((window.arguments.length >= 1) && window.arguments[0])
  42.     page = window.arguments[0];
  43.   else
  44.     page = window.opener.frames[0].document;
  45.   var root = document.getElementById("cont");
  46.  
  47.   makeDocument(page, root);
  48.  
  49.   var formTreeHolder = document.getElementById("formTreeContainer");
  50.   var hasForm = makeFormTree(page, formTreeHolder);
  51.   if (hasForm)
  52.   {
  53.     var formsTab = document.getElementById("formsTab");
  54.  
  55.     formsTab.removeAttribute("hidden");
  56.     formTreeHolder.removeAttribute("collapsed");
  57.   }
  58.  
  59.   var imageTreeHolder = document.getElementById("imageTreeContainer");
  60.   var hasImages = makeImageTree(page, imageTreeHolder);
  61.   if (hasImages)
  62.   {
  63.     var imagesTab = document.getElementById("imagesTab");
  64.  
  65.     imagesTab.removeAttribute("hidden");
  66.     imageTreeHolder.removeAttribute("collapsed");
  67.   }
  68.  
  69.   /* Call registered overlay init functions */
  70.   for (x in onLoadRegistry)
  71.   {
  72.     onLoadRegistry[x]();
  73.   }
  74.  
  75.   /* Selected the requested tab, if the name is specified */
  76.   /*  if (window.arguments != null) { */
  77.   if ("arguments" in window) {
  78.     var tabName = window.arguments[1];
  79.  
  80.     if (tabName)
  81.     {
  82.       var tabbox = document.getElementById("tabbox");
  83.       var tab = document.getElementById(tabName);
  84.  
  85.       if (tabbox && tab) {
  86.         tabbox.selectedTab = tab;
  87.       }
  88.     }
  89.   }
  90. }
  91.  
  92. function makeDocument(page, root)
  93. {
  94.   var title = page.title;
  95.   var url   = page.URL;
  96.   var lastModified;
  97.   var lastMod = page.lastModified // get string of last modified date
  98.   var lastModdate = Date.parse(lastMod)   // convert modified string to date
  99.   var lastModified;
  100.   if (lastModdate) {
  101.     var date = new Date(lastModdate);
  102.     try {
  103.       var dateService = Components.classes[nsScriptableDateFormat_CONTRACTID]
  104.         .getService(nsIScriptableDateFormat);
  105.       lastModified =  dateService.FormatDateTime(
  106.                               "", dateService.dateFormatLong,
  107.                               dateService.timeFormatSeconds,
  108.                               date.getFullYear(), date.getMonth()+1,
  109.                               date.getDate(), date.getHours(),
  110.                               date.getMinutes(), date.getSeconds());
  111.     } catch(e) {
  112.       lastModified = lastMod;
  113.     }
  114.   } else {
  115.     try {
  116.       var pageInfoBundle = document.getElementById("bundle_pageInfo");
  117.       lastModified = pageInfoBundle.getString("unknown");
  118.     } catch(e) {
  119.       lastModified = "Unknown";
  120.     }
  121.   }
  122.  
  123.   document.getElementById("titletext").setAttribute("value", title);
  124.   document.getElementById("urltext").setAttribute("value", url);
  125.   document.getElementById("lastmodifiedtext").setAttribute("value", lastModified);
  126. }
  127.  
  128. function makeFormTree(page, root)
  129. {
  130.   var formList = page.forms;
  131.   if (formList.length == 0) return false;
  132.  
  133.   var treeChildren = document.getElementById("formChildren");
  134.  
  135.   for (var i = 0; i < formList.length; i++)
  136.   {
  137.     var treeItem = document.createElement("treeitem");
  138.     var treeRowElem = treeItem.appendChild(document.createElement("treerow"));
  139.  
  140.     var treeCellElem = treeRowElem.appendChild(document.createElement("treecell"));
  141.     treeCellElem.setAttribute("label", formList[i].action);
  142.  
  143.     treeCellElem = treeRowElem.appendChild(document.createElement("treecell"));
  144.     treeCellElem.setAttribute("label", formList[i].method);
  145.  
  146.     treeCellElem = treeRowElem.appendChild(document.createElement("treecell"));
  147.     treeCellElem.setAttribute("label", formList[i].name);
  148.  
  149.     treeChildren.appendChild(treeItem);
  150.   }
  151.  
  152.   return true;
  153. }
  154.  
  155. function makeImageTree(page, root)
  156. {
  157.   var imgList = page.images;
  158.   if (imgList.length == 0) return false;
  159.  
  160.   var treeChildren = document.getElementById("imagesChildren");
  161.  
  162.   for (var i = 0; i < imgList.length; i++)
  163.   {
  164.     var treeItem = document.createElement("treeitem");
  165.     treeItem.setAttribute("container", "true");
  166.     treeItem.setAttribute("parent", "true");
  167.  
  168.     var treeRowElem = treeItem.appendChild(document.createElement("treerow"));
  169.  
  170.     var treeCellElem = treeRowElem.appendChild(document.createElement("treecell"));
  171.     treeCellElem.setAttribute("label", imgList[i].src);
  172.  
  173.     treeCellElem = treeRowElem.appendChild(document.createElement("treecell"));
  174.     treeCellElem.setAttribute("label", imgList[i].width);
  175.  
  176.     treeCellElem = treeRowElem.appendChild(document.createElement("treecell"));
  177.     treeCellElem.setAttribute("label", imgList[i].height);
  178.  
  179.     treeCellElem = treeRowElem.appendChild(document.createElement("treecell"));
  180.     treeCellElem.setAttribute("label", imgList[i].alt);
  181.  
  182.     treeChildren.appendChild(treeItem);
  183.   }
  184.  
  185.   return true;
  186. }
  187.  
  188. function onImageSelect()
  189. {
  190.   var imageFrame = document.getElementById("imageFrame");
  191.   imageFrame.setAttribute("src", "about:blank");
  192.  
  193.   var tree = document.getElementById("imageTree");
  194.  
  195.   if (tree.selectedItems.length == 1)
  196.   {
  197.     var clickedRow = tree.selectedItems[0].firstChild;
  198.     var firstCell = clickedRow.firstChild;
  199.     var imageUrl = firstCell.getAttribute("label");
  200.  
  201.     /* The image has to be placed after a setTimeout because of bug 62517. */
  202.     setTimeout(placeImage, 0, imageFrame, imageUrl);
  203.   }
  204. }
  205.  
  206. function placeImage(imageFrame, imageUrl)
  207. {
  208.   var imageDoc = imageFrame.contentDocument;
  209.   var imageNode = imageDoc.createElement("img");
  210.   imageNode.setAttribute("src", imageUrl);
  211.  
  212.   imageDoc.documentElement.appendChild(imageNode);
  213. }
  214.  
  215. function BrowserClose()
  216. {
  217.   window.close();
  218. }
  219.  
  220.