home *** CD-ROM | disk | FTP | other *** search
/ PC World Plus! (NZ) 2001 June / HDC50.iso / browsers / ie55 / FLAT / WIN32 / EN / IEMIL_3.CAB / SHDOCLC.DLL / HTML / PREVIEW.DLG < prev    next >
Text File  |  2000-10-20  |  40KB  |  1,506 lines

  1. <HTML XMLNS:IE>
  2. <HEAD>
  3. <?IMPORT namespace="ie" implementation="#default">
  4. <TITLE>Print Preview</TITLE>
  5. <STYLE>
  6. .divPage
  7. {
  8.  position:  absolute;
  9.  top:   -20000px;
  10. }
  11. .page
  12.  background:  white;   
  13.         border-left: 1 solid black;
  14.         border-top:  1 solid black;
  15.         border-right: 4 solid black;
  16.         border-bottom: 4 solid black;
  17.  width:   8.5in;
  18.  height:   11in;
  19.  margin:   0px;
  20.  overflow:  hidden;
  21. }
  22. .mRect
  23. {
  24.  position: absolute; 
  25.  margin: 1in;
  26.  width: 6.5in;
  27.  height: 9in;
  28.  border: none;
  29.  overflow : hidden;
  30. }
  31. .divHead
  32. {
  33.  position: absolute;
  34.  overflow: hidden;
  35.  top:  0in;
  36.  left:  0in;
  37.  width: 8.5in;
  38. }
  39. .divFoot
  40. {
  41.  position: absolute;
  42.  overflow: hidden;
  43.  bottom: 0in;
  44.  left:  0in;
  45.  width: 8.5in;
  46. }
  47. BODY   { overflow: hidden; padding: 0; margin: 0; background: threedface;  }
  48. TABLE   { margin: 0px; padding: 0px; background: threedface; }
  49. .THeader  { border: none; background: white; color: black; } 
  50. .TFooter  { border: none; background: white; color: black; } 
  51. TD    { padding: 0; margin: 0; border: none;    }
  52. TD.UIPane  { width: 20px; border: none; font-family: 'ms sans serif'; font-size: 8pt; }
  53. TD.UISeparator { width: 1px; border-left: 2px threedhighlight ridge; }
  54. BUTTON   { border: 1px solid threedface; background: threedface; font-family: 'ms sans serif'; font-size: 8pt; color: buttontext;}
  55. </STYLE>
  56. <SCRIPT DEFER>
  57. var g_aDocTree  = new Object(); 
  58. var g_strDispDoc = "C";   
  59. var g_nDispPage  = -1;   
  60. var g_nZoomFactor = 0;   
  61. var g_cLeftToPrint = 0;   
  62. var g_fPreviewing;
  63. var g_fRTL;
  64. var g_nMarginTop   = 0;
  65. var g_nMarginBottom   = 0;
  66. var g_nMarginLeft   = 0;
  67. var g_nMarginRight   = 0;
  68. var g_nPageWidth   = 0;
  69. var g_nPageHeight   = 0;
  70. var g_nUnprintTop   = 0;
  71. var g_nUnprintBottom  = 0;
  72. var g_strHeader    = "";
  73. var g_strFooter    = "";
  74. var g_fTableOfLinks   = false;
  75. var g_cPagesDisplayed  = 0;
  76. var g_cxDisplaySlots  = 1;
  77. var g_cyDisplaySlots  = 1;
  78. var g_imgUnderMouse   = null;
  79. function GetRuleFromSelector(strSelector)
  80. {
  81. var i;
  82. var oRule;
  83. var oSS = document.styleSheets[0]; 
  84. for (i=0;;i++)
  85. {
  86.  oRule = oSS.rules[i];
  87.  if (oRule == null)
  88.   break;
  89.  if (oRule.selectorText == strSelector)
  90.   break;   
  91. }
  92. return oRule;
  93. }
  94. function UnprintableURL(strLink)
  95. {
  96. var fUnprintable = false;
  97. var cIndex;
  98. cIndex = strLink.indexOf(":");
  99. switch (cIndex)
  100. {
  101.  case 4:
  102.   if (strLink.substr(0, cIndex) == "news")
  103.    fUnprintable = true;
  104.   break;
  105.  case 5:
  106.   if (strLink.substr(0, cIndex) == "snews")
  107.    fUnprintable = true;
  108.   break;
  109.  case 6:
  110.   if ( strLink.substr(0, cIndex) == "telnet"
  111.    || strLink.substr(0, cIndex) == "mailto")
  112.    fUnprintable = true;
  113.   break;
  114.  case 8:
  115.   if (strLink,substr(0,cIndex) == "vbscript")
  116.    fUnprintable = true;
  117.   break;
  118.  case 10:
  119.   if (strLink.substr(0,cIndex) == "javascript")
  120.    fUnprintable = true;
  121.   break;
  122. }
  123. return fUnprintable;
  124. }
  125. function OnKeyPress()
  126. {
  127. if (event.keyCode == 27) 
  128. {
  129.  Close();
  130. }
  131. }
  132. function OnKeyDown()
  133. {
  134. if (event.altKey)
  135. {
  136.  switch (event.keyCode)
  137.  {
  138.  case 37: 
  139.   ChangeDispPage(g_nDispPage-1);
  140.   break;
  141.  case 39: 
  142.   ChangeDispPage(g_nDispPage+1);
  143.   break;
  144.  case 107: 
  145.  case 187: 
  146.   HandleZoom(-1);
  147.   break;
  148.  case 109: 
  149.  case 189: 
  150.   HandleZoom(1);
  151.   break;
  152.  case 35: 
  153.   HandleLastPage();
  154.   break;
  155.  case 36: 
  156.   HandleFirstPage();
  157.   break;
  158.  }
  159. }
  160. }
  161. function ShowHelp()
  162. {
  163. window.showHelp("iexplore.chm::/print_preview.htm");
  164. }
  165. function AttachDialogEvents()
  166. {
  167. butPrint.onclick  = HandlePrintClick;
  168. butPageSetup.onclick = HandlePageSetup;
  169. butFirstPage.onclick = HandleFirstPage;
  170. butBackPage.onclick  = HandleBackPage;
  171. butNextPage.onclick  = HandleForwardPage;
  172. butLastPage.onclick  = HandleLastPage;
  173. butZoomIn.onclick  = new Function("HandleZoom(-1);");
  174. butZoomOut.onclick  = new Function("HandleZoom(1);");
  175. butClose.onclick  = Close;
  176. butHelp.onclick   = ShowHelp;
  177. document.onhelp   = ShowHelp;
  178. butPrint.onmousedown  = buttonDown;
  179. butPageSetup.onmousedown = buttonDown;
  180. butFirstPage.onmousedown = buttonDown;
  181. butBackPage.onmousedown  = buttonDown;
  182. butNextPage.onmousedown  = buttonDown;
  183. butLastPage.onmousedown  = buttonDown;
  184. butZoomIn.onmousedown  = buttonDown;
  185. butZoomOut.onmousedown  = buttonDown;
  186. butClose.onmousedown  = buttonDown;
  187. butHelp.onmousedown   = buttonDown;
  188. printCtl.onmouseover = buttonOver;
  189. printCtl.onmouseout  = buttonOut;
  190. begin.onmouseover  = buttonOver;
  191. begin.onmouseout  = buttonOut;
  192. prev.onmouseover  = buttonOver;
  193. prev.onmouseout   = buttonOut;
  194. next.onmouseover  = buttonOver;
  195. next.onmouseout   = buttonOut;
  196. end.onmouseover   = buttonOver;
  197. end.onmouseout   = buttonOut;
  198. zoomIn.onmouseover  = buttonOver;
  199. zoomIn.onmouseout  = buttonOut;
  200. zoomOut.onmouseover  = buttonOver;
  201. zoomOut.onmouseout  = buttonOut;
  202. butPrint.onmouseover = new Function("buttonRaise(this);");
  203. butPrint.onmouseout  = new Function("buttonLower(this);");
  204. butClose.onmouseover = new Function("buttonRaise(this);");
  205. butClose.onmouseout  = new Function("buttonLower(this);");
  206. butHelp.onmouseover  = new Function("buttonRaise(this);");
  207. butHelp.onmouseout  = new Function("buttonLower(this);");
  208. inputPageNum.onkeypress = HandleInputKeyPress;
  209. inputPageNum.onchange = HandlePageSelect;
  210. selectZoom.onchange  = HandleZoomSelect;
  211. window.onresize   = OnResizeBody;
  212. window.onerror   = HandleError;
  213. document.body.onkeypress = OnKeyPress;
  214. document.body.onkeydown = OnKeyDown;
  215. }
  216. function OnLoadBody()
  217. {
  218. g_fRTL = (document.body.currentStyle.direction.toLowerCase() == "rtl");
  219. if (UnprintableURL(dialogArguments.__IE_ContentDocumentUrl))
  220. {
  221.  var L_Invalid_Text = "Unable to print URL. Please navigate directly to this page and select Print.";
  222.  alert(L_Invalid_Text);
  223.  window.close();
  224. }
  225. var str;
  226. str = begin.src;
  227. begin.base = str.slice(str.lastIndexOf("/")+1,str.indexOf("_"));
  228. str = end.src;
  229. end.base = str.slice(str.lastIndexOf("/")+1,str.indexOf("_"));
  230. str = next.src;
  231. next.base = str.slice(str.lastIndexOf("/")+1,str.indexOf("_"));
  232. str = prev.src;
  233. prev.base = str.slice(str.lastIndexOf("/")+1,str.indexOf("_"));
  234. ChangeZoom(75);
  235. if (dialogArguments.__IE_HeaderString)
  236.  Printer.header = dialogArguments.__IE_HeaderString
  237. if (dialogArguments.__IE_FooterString)
  238.  Printer.footer = dialogArguments.__IE_FooterString 
  239. EnsureDocuments();      
  240. CreateDocument("document", "C", true);
  241. HandleFirstPage();
  242. if (dialogArguments.__IE_ContentSelectionUrl)
  243. {  
  244.  CreateDocument(dialogArguments.__IE_ContentSelectionUrl, "S", true);
  245. }
  246. switch (dialogArguments.__IE_PrintType)
  247. {
  248.  case "Prompt":
  249.   PrintNow(true);
  250.   break;
  251.  case "NoPrompt":
  252.   PrintNow(false);
  253.   break;
  254.  case "Preview":
  255.  default:
  256.   AttachDialogEvents();
  257.   OverflowContainer.style.top = idDivToolbar.offsetHeight;
  258.   OverflowContainer.style.height = document.body.clientHeight - idDivToolbar.offsetHeight;
  259.   break;
  260. }
  261. }
  262. function OnResizeBody()
  263. {
  264. OverflowContainer.style.height = Math.max(0, document.body.clientHeight - idDivToolbar.offsetHeight);
  265. HandleDynamicZoom();
  266. PositionPages(g_strDispDoc, g_nDispPage);
  267. }
  268. function HandleError(message, url, line)
  269. {
  270. var L_Internal_ErrorMessage = "There was an internal error, and Internet Explorer is unable to print this document.";
  271. alert(L_Internal_ErrorMessage);
  272. window.close();
  273. return true;
  274. }
  275. function OnRectComplete( strDoc )
  276. {
  277. if (!g_aDocTree[strDoc])
  278. {
  279.  HandleError("Document " + strDoc + " does not exist.", document.URL, "OnRectComplete");
  280.  return;
  281. }
  282. window.setTimeout("OnRectCompleteNext('" + strDoc + "', " + event.contentOverflow + ",'" + event.srcElement.id + "');", 25);
  283. }
  284. function OnRectCompleteNext( strDoc, fOverflow, strElement)
  285. g_aDocTree[strDoc].RectComplete(fOverflow, strElement);
  286. }
  287. function enableButton(btn, img)
  288. {
  289. btn.disabled = false;
  290. if (g_imgUnderMouse == img)
  291. {
  292.  img.src = img.base + "_hilite.gif";
  293.  buttonRaise(btn);
  294. }
  295. else
  296. {
  297.  img.src = img.base + ".gif";
  298.  buttonLower(btn);
  299. }
  300. }
  301. function disableButton(btn, img)
  302. {
  303. btn.disabled = true;
  304. buttonLower(btn);
  305. if (img != null)
  306. {
  307.  img.src = img.base + "_inactive.gif";
  308. }
  309. }
  310. function updateNavButtons()
  311. {
  312. if (g_nDispPage == 1)
  313. {
  314.  disableButton(butFirstPage, begin);
  315.  disableButton(butBackPage, prev);
  316. }
  317. else
  318. {
  319.  enableButton(butFirstPage, begin);
  320.  enableButton(butBackPage, prev);
  321. }
  322. if (g_aDocTree[g_strDispDoc].Pages() - g_nDispPage < g_cxDisplaySlots * g_cyDisplaySlots)
  323. {
  324.  disableButton(butNextPage, next);
  325.  disableButton(butLastPage, end);
  326. }
  327. else
  328. {
  329.  enableButton(butNextPage, next);
  330.  enableButton(butLastPage, end);
  331. }
  332. }
  333. function updateZoomButtons()
  334. {
  335. var fZoomOutDisabled = false;
  336. var fZoomInDisabled = false;
  337. var oOptions = selectZoom.options;
  338. if (g_nZoomFactor >= parseInt(oOptions[0].value))
  339. {
  340.  disableButton(butZoomIn, null);
  341.  zoomIn.src = "zoom_inactive.gif";
  342.  fZoomInDisabled = true;
  343. }
  344. else if (g_nZoomFactor <= parseInt(oOptions[oOptions.length-1-3].value))
  345. {
  346.  disableButton(butZoomOut, null);
  347.  zoomOut.src = "zoom_inactive.gif";
  348.  fZoomOutDisabled = true;
  349. }
  350. if (!fZoomOutDisabled)
  351. {
  352.  enableButton(butZoomOut, zoomOut);
  353. }
  354. if (!fZoomInDisabled)
  355. {
  356.  enableButton(butZoomIn, zoomIn);
  357. }
  358. }
  359. function getPageWidth()
  360. {
  361. return g_aDocTree[g_strDispDoc].Page(1).offsetWidth;
  362. }
  363. function getPageHeight()
  364. {
  365. return g_aDocTree[g_strDispDoc].Page(1).offsetHeight;
  366. }
  367. function UndisplayPages()
  368. {
  369. while (g_cPagesDisplayed > 0)
  370. {
  371.  var oPage = g_aDocTree[g_strDispDoc].Page(g_nDispPage + g_cPagesDisplayed - 1);
  372.  if (oPage != null)
  373.  {
  374.   oPage.style.top = "-20000px";
  375.   if (g_fRTL)
  376.    oPage.style.right = "10px";
  377.   else
  378.    oPage.style.left = "10px";
  379.  }
  380.  g_cPagesDisplayed--;
  381. }
  382. }
  383. function PositionPages(strDispDoc, nDispPage)
  384. {
  385. if (g_aDocTree != null &&
  386.  g_aDocTree[g_strDispDoc] != null &&
  387.  g_aDocTree[strDispDoc] != null &&
  388.  g_aDocTree[strDispDoc].Pages() > 0)
  389. {
  390.  UndisplayPages();
  391.  g_strDispDoc = strDispDoc;
  392.  var xPageWidth = getPageWidth();
  393.  var yPageHeight = getPageHeight();
  394.  g_cxDisplaySlots = Math.max(1, Math.floor((OverflowContainer.offsetWidth*100)/(g_nZoomFactor*(xPageWidth+10))));
  395.  g_cyDisplaySlots = Math.max(1, Math.floor((OverflowContainer.offsetHeight*100)/(g_nZoomFactor*(yPageHeight+10))));
  396.  var nMaxPageRequest = Math.max(g_aDocTree[g_strDispDoc].Pages() - g_cxDisplaySlots * g_cyDisplaySlots + 1, 1);
  397.  if ( nDispPage < 1 )
  398.   nDispPage = 1;  
  399.  else if (nDispPage > nMaxPageRequest)
  400.  {
  401.   nDispPage = nMaxPageRequest;
  402.  }
  403.  g_nDispPage = nDispPage;
  404.  document.all.spanPageTotal.value = g_aDocTree[g_strDispDoc].Pages();
  405.  document.all.inputPageNum.value = g_nDispPage;
  406.  updateNavButtons();
  407.  var xDisplaySlot = 1;
  408.  var yDisplaySlot = 1;
  409.  var iPage = g_nDispPage;
  410.  g_cPagesDisplayed = 0;
  411.  var nMaxPage = g_aDocTree[g_strDispDoc].Pages();
  412.  while (iPage <= nMaxPage && yDisplaySlot <= g_cyDisplaySlots)
  413.  {
  414.   var xPos = xDisplaySlot*10 + (xDisplaySlot-1)*xPageWidth;
  415.   var yPos = yDisplaySlot*10 + (yDisplaySlot-1)*yPageHeight;
  416.   if (g_fRTL)
  417.    g_aDocTree[g_strDispDoc].Page(iPage).style.right = xPos;
  418.   else
  419.    g_aDocTree[g_strDispDoc].Page(iPage).style.left = xPos;
  420.   g_aDocTree[g_strDispDoc].Page(iPage).style.top = yPos;
  421.   iPage++;
  422.   if (++xDisplaySlot > g_cxDisplaySlots)
  423.   {
  424.    xDisplaySlot = 1;
  425.    yDisplaySlot++;
  426.   }
  427.   g_cPagesDisplayed++;
  428.  }
  429. }
  430. }
  431. function ChangeDispPage(nDispPageNew)
  432. {
  433. if (isNaN(nDispPageNew))
  434. {
  435.  inputPageNum.value = g_nDispPage;
  436. }
  437. else
  438. {
  439.  OverflowContainer.scrollTop = 0;
  440.  PositionPages(g_strDispDoc, nDispPageNew);
  441. }
  442. return g_nDispPage;
  443. }
  444. function ChangeZoom(nNewVal)
  445. {
  446. if (nNewVal < 10)
  447.  nNewVal = 10;
  448. else if (nNewVal > 1000)
  449.  nNewVal = 1000;
  450. else if (isNaN(nNewVal))
  451.  nNewVal = g_nZoomFactor;
  452. if (nNewVal != g_nZoomFactor)
  453.     {
  454.         MasterContainer.style.zoom = nNewVal + "%";
  455.         g_nZoomFactor = nNewVal;
  456.  updateZoomButtons();
  457.  PositionPages(g_strDispDoc, g_nDispPage);
  458.     }
  459. return g_nZoomFactor;
  460. }
  461. function BuildTableOfLinks( docSource )
  462. {
  463. var aLinks = docSource.links;
  464. var nLinks = aLinks.length; 
  465. if (nLinks > 0)
  466. {
  467.  var fDuplicate;
  468.  var i;
  469.  var j;
  470.  var newHTM;
  471.  var docLinkTable = document.createElement("BODY"); 
  472.  var L_LINKSHEADER1_Text = "Shortcut Text";
  473.  var L_LINKSHEADER2_Text = "Internet Address";
  474.  newHTM = "<CENTER><TABLE BORDER=1>"; 
  475.  newHTM += "<THEAD style=\"display:table-header-group\"><TR><TH>" 
  476.    + L_LINKSHEADER1_Text 
  477.    + "</TH><TH>" + L_LINKSHEADER2_Text + "</TH></TR></THEAD><TBODY>";
  478.  for (i = 0; i < nLinks; i++)
  479.  {
  480.   fDuplicate = false;
  481.   for (j = 0; (!fDuplicate) && (j < i); j++)
  482.   {
  483.    if (aLinks[i].href == aLinks[j].href)
  484.     fDuplicate = true;
  485.   }
  486.   if (!fDuplicate)   
  487.    newHTM += ("<TR><TD>" + aLinks[i].innerText + "</TD><TD>" + aLinks[i].href + "</TD></TR>");  
  488.  }
  489.  newHTM += "</TBODY></TABLE></CENTER>";
  490.  docLinkTable.innerHTML = newHTM;
  491.  return docLinkTable.document;
  492. }
  493. return null; 
  494. }
  495. function CreateDocument( docURL, strDocID, fUseStreamHeader )
  496. {
  497. if (g_aDocTree[strDocID])
  498.  return; 
  499. g_aDocTree[strDocID] = new CPrintDoc( strDocID, docURL );   
  500. g_aDocTree[strDocID].InitDocument( fUseStreamHeader );
  501. }
  502. function EnsureDocuments()
  503. {
  504. var i;
  505. var tmp;
  506. var top   = Printer.marginTop   / 100;
  507. var bottom  = Printer.marginBottom  / 100;
  508. var left  = Printer.marginLeft  / 100;
  509. var right  = Printer.marginRight  / 100;
  510. var pageWidth = Printer.pageWidth   / 100;
  511. var pageHeight = Printer.pageHeight  / 100;
  512. var linktable = Printer.tableOfLinks;
  513. var upTop  = Printer.unprintableTop / 100;
  514. var upBottom = Printer.unprintableBottom / 100;
  515. var header  = Printer.header;
  516. var footer  = Printer.footer;
  517. if (header) 
  518. {
  519.  tmp = upTop + (27 / 100);
  520.  if (tmp > top)
  521.   top = tmp;
  522. }
  523. if (footer)
  524. {
  525.  tmp = upBottom + (27 / 100);
  526.  if (tmp > bottom)
  527.   bottom = tmp;
  528. }
  529. if (upTop != g_nUnprintTop)
  530. {
  531.  g_nUnprintTop = upTop;
  532.  oRule = GetRuleFromSelector(".divHead");
  533.  if (oRule == null)
  534.  {
  535.   HandleError("'.divHead' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  536.  }
  537.  oRule.style.top   = upTop  + "in";
  538. }
  539. if (upBottom != g_nUnprintBottom)
  540. {
  541.  g_nUnprintBottom= upBottom;
  542.  oRule = GetRuleFromSelector(".divFoot");
  543.  if (oRule == null)
  544.  {
  545.   HandleError("'.divFoot' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  546.  }
  547.  oRule.style.bottom   = upBottom + "in";
  548. }
  549. if ( top   != g_nMarginTop
  550.  || bottom  != g_nMarginBottom
  551.  || left  != g_nMarginLeft
  552.  || right  != g_nMarginRight
  553.  || pageWidth != g_nPageWidth
  554.  || pageHeight != g_nPageHeight
  555.  || header  != g_strHeader
  556.  || footer  != g_strFooter )
  557. {
  558.  var conWidth = pageWidth - left - right;
  559.  var conHeight = pageHeight - top - bottom;
  560.  var oStyleSheet = document.styleSheets[0];
  561.  var oRule;
  562.  UndisplayPages();
  563.  for (i in g_aDocTree)
  564.  {
  565.   g_aDocTree[i].ResetDocument();
  566.  }
  567.  g_nMarginTop = top;
  568.  g_nMarginBottom = bottom;
  569.  g_nMarginLeft = left;
  570.  g_nMarginRight = right;
  571.  g_nPageWidth = pageWidth;
  572.  g_nPageHeight = pageHeight;
  573.  g_fTableofLinks = linktable;
  574.  g_strHeader  = header;  
  575.  g_strFooter  = footer;
  576.  HeadFoot.textHead = g_strHeader;
  577.  HeadFoot.textFoot = g_strFooter;
  578.  oRule = GetRuleFromSelector(".page");
  579.  if (oRule == null)
  580.  {
  581.   HandleError("'.page' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  582.  }
  583.  oRule.style.width  = pageWidth + "in";
  584.  oRule.style.height  = pageHeight + "in";
  585.  oRule = GetRuleFromSelector(".mRect");
  586.  if (oRule == null)
  587.  {
  588.   HandleError("'.mRect' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  589.  }
  590.  oRule.style.marginLeft  = left  + "in";
  591.  oRule.style.marginRight = right  + "in";
  592.  oRule.style.marginTop  = top  + "in";
  593.  oRule.style.marginBottom = bottom + "in";
  594.  oRule.style.width   = conWidth + "in";
  595.  oRule.style.height   = conHeight + "in";
  596.  oRule = GetRuleFromSelector(".divHead");
  597.  if (oRule == null)
  598.  {
  599.   HandleError("'.divHead' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  600.  }
  601.  oRule.style.left   = left  + "in";
  602.  oRule.style.width   = conWidth + "in";
  603.  oRule = GetRuleFromSelector(".divFoot");
  604.  if (oRule == null)
  605.  {
  606.   HandleError("'.divHead' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  607.  }
  608.  oRule.style.left   = left  + "in";
  609.  oRule.style.width   = conWidth + "in";
  610.  for (i in g_aDocTree)
  611.  {
  612.   g_aDocTree[i].InitDocument((g_aDocTree[i]._anMerge[1] == 1));
  613.  }
  614. }
  615. else if (linktable != g_fTableOfLinks)
  616. {
  617.  g_fTableOfLinks = linktable;
  618.  for (i in g_aDocTree)
  619.  {
  620.   g_aDocTree[i].ResetTableOfLinks();
  621.  }
  622. }
  623. function buttonRaise( elem )
  624. {
  625.     elem.style.borderStyle = "outset";
  626.     elem.style.borderColor = "threedhighlight";
  627. }
  628. function buttonLower( elem )
  629. {
  630.     elem.style.borderStyle = "solid";
  631.     elem.style.borderColor = "threedface";
  632. }
  633. function buttonDepress(elem)
  634. {
  635. elem.style.borderStyle = "inset";
  636. elem.style.borderColor = "threedshadow";
  637. }
  638. function buttonOver()
  639. {
  640. var imgSrc = event.srcElement;
  641. g_imgUnderMouse = imgSrc;
  642. if (imgSrc == begin ||
  643.  imgSrc == prev ||
  644.  imgSrc == next ||
  645.  imgSrc == end)
  646. {
  647.  updateNavButtons();
  648. }
  649. else if (imgSrc == zoomIn ||
  650.    imgSrc == zoomOut)
  651. {
  652.  updateZoomButtons();
  653. }
  654. else
  655. {
  656.      imgSrc.src= "" + imgSrc.id + "_hilite.gif";
  657.      buttonRaise( imgSrc.parentNode );
  658. }
  659. }
  660. function buttonOut()
  661. {
  662. var imgSrc = event.srcElement;
  663. g_imgUnderMouse = null;
  664. if (imgSrc == begin ||
  665.  imgSrc == prev ||
  666.  imgSrc == next ||
  667.  imgSrc == end)
  668. {
  669.  updateNavButtons();
  670. }
  671. else if (imgSrc == zoomIn ||
  672.    imgSrc == zoomOut)
  673. {
  674.  updateZoomButtons();
  675. }
  676. else
  677. {
  678.      imgSrc.src= "" + imgSrc.id + ".gif";
  679.      buttonLower( imgSrc.parentNode );
  680. }
  681. }
  682. function buttonDown()
  683. {
  684. buttonDepress(event.srcElement);
  685. }
  686. function HandlePageSelect()
  687. {
  688.  event.srcElement.value = ChangeDispPage(parseInt(inputPageNum.value));
  689. }
  690. function HandlePageSetup()
  691. {
  692. if (Printer.showPageSetupDialog())
  693.  EnsureDocuments();
  694. }  
  695. function HandleForwardPage()
  696. {
  697. ChangeDispPage(g_nDispPage + 1);
  698. }
  699. function HandleBackPage()
  700. {
  701. ChangeDispPage(g_nDispPage - 1);
  702. }
  703. function HandleFirstPage()
  704. {
  705. ChangeDispPage(-1);
  706. }
  707. function HandleLastPage()
  708. ChangeDispPage(g_aDocTree[g_strDispDoc].Pages());
  709. }
  710. function NumericFromSpecialZoom(fnBounder)
  711. {
  712. var iMaxNumericZoom = selectZoom.options.length-1-3; 
  713. var iBelow = -1;
  714. var nBelow = 0;
  715. var iAbove = iMaxNumericZoom + 1;
  716. var i;
  717. for (i = 0; i <= iMaxNumericZoom; i++)
  718. {
  719.  var nThisIndex = parseInt(selectZoom.options[i].value);
  720.  if (nThisIndex >= g_nZoomFactor)
  721.  {
  722.   iBelow = i;
  723.   nBelow = nThisIndex;
  724.  }
  725.  else
  726.  {
  727.   break;
  728.  }
  729. }
  730. if (nBelow > g_nZoomFactor)
  731. {
  732.  iAbove = iBelow + 1;
  733. }
  734. else
  735. {
  736.  iAbove = iBelow;
  737. }
  738. return fnBounder(iBelow, iAbove);
  739. }
  740. function HandleZoom(nZoomIndexDelta)
  741. {
  742. var iCurrZoom = selectZoom.selectedIndex;
  743. var iMaxNumericZoom = selectZoom.options.length-1-3; 
  744. if (iCurrZoom > iMaxNumericZoom)
  745. {
  746.  var fnRemapBounder = null;
  747.  if (nZoomIndexDelta == 1)
  748.  {
  749.   fnRemapBounder = Math.min;
  750.  }
  751.  else
  752.  {
  753.   fnRemapBounder = Math.max;
  754.  }
  755.  iCurrZoom = NumericFromSpecialZoom(fnRemapBounder);
  756. }
  757. selectZoom.selectedIndex = Math.min(Math.max(0, iCurrZoom + nZoomIndexDelta), iMaxNumericZoom);
  758. ChangeZoom(parseInt(selectZoom.options[selectZoom.selectedIndex].value));
  759. }
  760. function HandleDynamicZoom()
  761. {
  762. var nZoomType = parseInt(selectZoom.options[selectZoom.selectedIndex].value);
  763. if (nZoomType < 0)
  764. {
  765.  var nZoomFactor = 100;
  766.  var xPageWidth = getPageWidth();
  767.  switch (nZoomType)
  768.  {
  769.   case -1:
  770.    nZoomFactor = Math.floor(((OverflowContainer.offsetWidth - 20) * 100) / xPageWidth);
  771.    break;
  772.   case -2:
  773.    var xZoom = Math.floor(((OverflowContainer.offsetWidth - 20) * 100) / xPageWidth);
  774.    var yZoom = Math.floor(((OverflowContainer.offsetHeight - 20) * 100) / getPageHeight());
  775.    nZoomFactor = Math.min(xZoom, yZoom);
  776.    break;
  777.   case -3:
  778.    nZoomFactor = Math.floor(((OverflowContainer.offsetWidth - 30) * 100) / (2 * xPageWidth));
  779.    break;
  780.   default:
  781.    nZoomFactor = 100;
  782.    break;
  783.  }
  784.  ChangeZoom(nZoomFactor);
  785. }
  786. }
  787. function HandleZoomSelect()
  788. {
  789. var nZoomFactor = parseInt(selectZoom.options[selectZoom.selectedIndex].value);
  790. if (nZoomFactor < 0)
  791. {
  792.  HandleDynamicZoom();
  793. }
  794. else
  795. {
  796.  ChangeZoom(nZoomFactor);
  797. }
  798. }
  799. function HandleInputKeyPress()
  800. {
  801. var keyStroke = event.keyCode;
  802. if (keyStroke == 13) 
  803. {
  804.  event.srcElement.onchange(); 
  805. }
  806. else if (keyStroke < 48 || keyStroke > 57)
  807. {
  808.  event.returnValue = false;
  809. }
  810. }
  811. function Close()
  812. {
  813. Printer.updatePageStatus(-1); 
  814. window.close();
  815. }
  816. function PrintAll()
  817. {
  818. var i;
  819. var nFirstDoc;
  820. EnsureDocuments(); 
  821. if (Printer.copies <= 0)
  822. {
  823.  Close(); 
  824. }
  825. else if ( Printer.selectedPages
  826.    && Printer.pageFrom > Printer.pageTo )
  827. {
  828.  var L_PAGERANGE_ErrorMessage = "The 'From' value cannot be greater than the 'To' value.";
  829.  alert(L_PAGERANGE_ErrorMessage);
  830. }
  831. else
  832. {
  833.  g_cLeftToPrint = 1;
  834.  Printer.updatePageStatus(1); 
  835.  PrintSentinel((Printer.selection) ? "S" : "C", true);
  836. }
  837. function PrintSentinel( strDoc, fRecursionOK )
  838. {
  839. if ( !g_aDocTree[strDoc]
  840.  || !g_aDocTree[strDoc].ReadyToPrint() )
  841. {
  842.  window.setTimeout("PrintSentinel('" + strDoc + "'," + fRecursionOK + ");", 500);
  843.  return;
  844. g_aDocTree[strDoc].Print(fRecursionOK);
  845. }
  846. function PrintDocumentComplete()
  847. {
  848. g_cLeftToPrint--;
  849. if (g_cLeftToPrint <= 0)
  850. {
  851.  Close(); 
  852. }
  853. function PrintNow( fWithPrompt )
  854. {
  855. if ( !g_aDocTree["C"]
  856.  || !g_aDocTree["C"]._aaRect[1][0]
  857.  || !g_aDocTree["C"]._aaRect[1][0].contentDocument.body) 
  858. {
  859.  window.setTimeout("PrintNow('" + fWithPrompt + "');", 100); 
  860.  return;
  861. }  
  862. var oDoc = g_aDocTree["C"]._aaRect[1][0].contentDocument;
  863. var fConfirmed;
  864. var fFramesetDocument = (oDoc.body.tagName.toUpperCase() == "FRAMESET");
  865. Printer.framesetDocument = fFramesetDocument;
  866. Printer.frameActive  = (oDoc.all.tags("HTML").item(0).__IE_ActiveFrame != null);
  867. Printer.currentPageAvail = false;
  868. Printer.selection = !!(dialogArguments.__IE_ContentSelectionUrl);
  869. fConfirmed = (eval(fWithPrompt)) ? Printer.showPrintDialog() : Printer.ensurePrintDialogDefaults();
  870. if ( fConfirmed )
  871. {
  872.  g_fPreviewing = false;
  873.  PrintAll();   
  874. }
  875. else
  876. {
  877.  Close();
  878. }
  879. function HandlePrintClick()
  880. if ( !g_aDocTree["C"]
  881.  || !g_aDocTree["C"]._aaRect[1][0]
  882.  || !g_aDocTree["C"]._aaRect[1][0].contentDocument.body) 
  883. {
  884.  window.setTimeout("PrintNow('" + fWithPrompt + "');", 100); 
  885.  return;
  886. }  
  887. var oDoc = g_aDocTree["C"]._aaRect[1][0].contentDocument;
  888. var fFramesetDocument = (oDoc.body.tagName.toUpperCase() == "FRAMESET");
  889. Printer.framesetDocument = fFramesetDocument;
  890. Printer.frameActive  = (oDoc.all.tags("HTML").item(0).__IE_ActiveFrame != null);
  891. Printer.currentPageAvail = true;
  892. Printer.selection = !!(dialogArguments.__IE_ContentSelectionUrl);
  893. if ( Printer.showPrintDialog() )
  894. {
  895.  g_fPreviewing = true;
  896.  PrintAll();
  897. }
  898. else
  899. {
  900. }
  901. function CPrintDoc_ReadyToPrint()
  902. {
  903. if ( this._nStatus == 4
  904.  && this._aaRect[1][0].contentDocument.readyState == "complete")
  905. {
  906.  return true;
  907. }
  908. return false; 
  909. }
  910. function CPrintDoc_Print( fRecursionOK )
  911. if (!this.ReadyToPrint())
  912. {
  913.  HandleError("Printing when not ready!", document.URL, "CPrintDoc::Print");
  914.  return;
  915. }  
  916. var nCount = Printer.copies;
  917. var nFrom;
  918. var nTo;
  919. if (fRecursionOK)
  920. {
  921.  var fFrameset = (this._aaRect[1][0].contentDocument.body.tagName.toUpperCase() == "FRAMESET");
  922.  if (Printer.frameActive)  
  923.  {
  924.   var n = parseInt(this._aaRect[1][0].contentDocument.all.tags("HTML").item(0).__IE_ActiveFrame);
  925.   if (n >= 0)
  926.   {
  927.    var oTargetFrame = (fFrameset)
  928.      ? this._aaRect[1][0].contentDocument.all.tags("FRAME").item(n)
  929.      : this._aaRect[1][0].contentDocument.all.tags("IFRAME").item(n);
  930.    if ( oTargetFrame.src == "res://SHDOCLC.DLL/printnof.htm" 
  931.     || oTargetFrame.src == "about:blank" )     
  932.    {
  933.     Printer.printNonNativeFrames(this._aaRect[1][0].contentDocument, true); 
  934.    }
  935.    else
  936.    {
  937.     this.CreateSubDocument(oTargetFrame.src);
  938.     this.PrintAllSubDocuments(true);
  939.    }
  940.    PrintDocumentComplete();
  941.    return;
  942.   }
  943.  }
  944.  if (fFrameset)
  945.  {
  946.   if (!Printer.frameAsShown) 
  947.   {
  948.    this.BuildAllFrames();
  949.    this.PrintAllSubDocuments(true);
  950.    Printer.printNonNativeFrames(this._aaRect[1][0].contentDocument, false); 
  951.    PrintDocumentComplete();
  952.    return;
  953.   }
  954.   else
  955.   {
  956.    Printer.printNonNativeFrames(this._aaRect[1][0].contentDocument, false); 
  957.   }
  958.  }   
  959.  else  
  960.  {
  961.   if (Printer.allLinkedDocuments)
  962.   {
  963.    this.BuildAllLinkedDocuments();
  964.    this.PrintAllSubDocuments(false);
  965.   }
  966.  }    
  967. }
  968. if (Printer.printNonNative(this._aaRect[1][0].contentDocument) )
  969. {
  970.  PrintDocumentComplete();
  971.  return;
  972. if (Printer.selectedPages)
  973. {
  974.  nFrom = Printer.pageFrom;
  975.  nTo  = Printer.pageTo;
  976.  if (nFrom < 1)
  977.   nFrom = 1;
  978.  if (nTo > this.Pages())
  979.   nTo = this.Pages();
  980. else if (Printer.currentPage)
  981. {
  982.  if (this._strDoc == g_strDispDoc)
  983.   nFrom = 1;
  984.  else
  985.   nFrom = (this.Pages() >= g_nDispPage) ? g_nDispPage : this.Pages();
  986.  nTo = nFrom;
  987. }
  988. else
  989. {
  990.  nFrom = 1;
  991.  nTo = this.Pages();
  992. }
  993. if (nTo < nFrom)
  994. {
  995.  PrintDocumentComplete();
  996.  return;
  997. }
  998. ;
  999. ;
  1000. ;
  1001. if (Printer.startDoc(this._aaRect[1][0].contentDocument.URL))
  1002.  if (Printer.collate)
  1003.  {
  1004.   var fExtraPage = (  Printer.duplex
  1005.        && ((nFrom - nTo) % 2 == 0) );
  1006.   for (j = 0; j < nCount; j++)
  1007.   {     
  1008.    for (i = nFrom; i <= nTo; i++)
  1009.    {
  1010.     Printer.printPage(this.Page(i));
  1011.    }
  1012.    if (fExtraPage)
  1013.     Printer.printBlankPage();    
  1014.   }   
  1015.  }
  1016.  else
  1017.  {
  1018.   var fDuplex = Printer.duplex;
  1019.   for (i = nFrom; i <= nTo; i++)
  1020.   {
  1021.    for (j = 0; j < nCount; j++)
  1022.    {
  1023.     Printer.printPage(this.Page(i));
  1024.     if (fDuplex)
  1025.     {
  1026.      if (i < nTo)
  1027.       Printer.printPage(this.Page(i+1));
  1028.      else
  1029.       Printer.printBlankPage();
  1030.     }
  1031.    } 
  1032.    if (fDuplex)
  1033.     i++;
  1034.   }
  1035.   }
  1036.  Printer.stopDoc();
  1037. }   
  1038. PrintDocumentComplete();
  1039. }
  1040. function CPrintDoc_RectComplete(fOverflow, strElement)
  1041. {
  1042. var nStatus = parseInt(strElement.substr(5,1));
  1043. var nPage = parseInt(strElement.substr(strElement.lastIndexOf("p") + 1));
  1044. ;
  1045. ;
  1046. if (nStatus > this._nStatus)
  1047.  return false;
  1048. if (nPage != this._acPage[nStatus] - 1 + this._anMerge[nStatus])
  1049.  return false;
  1050. if (nStatus != this._nStatus)
  1051. {
  1052.  if (!fOverflow)
  1053.   return false;
  1054.  this.StopFixupHF();           
  1055.  this._nStatus = nStatus;  
  1056. }
  1057. if (this._strDoc == g_strDispDoc)
  1058. {
  1059.  spanPageTotal.innerText = this.Pages();
  1060. }
  1061. if (fOverflow)
  1062. {
  1063.  this.AddPage();
  1064. }
  1065. else
  1066. {
  1067.  switch (this._nStatus)
  1068.  {
  1069.   case 0:
  1070.    this._nStatus = 1;
  1071.    this.AddFirstPage();
  1072.    this._aaRect[this._nStatus][0].contentSrc = this._strDocURL;
  1073.    break;
  1074.   case 1:
  1075.    this._nStatus = 2;
  1076.    this.AddTableOfLinks();
  1077.    break;
  1078.   case 2:
  1079.    this._nStatus = 3;    
  1080.    if (this._strDoc == g_strDispDoc)
  1081.     ChangeDispPage(g_nDispPage);  
  1082.    this.FixupHF();
  1083.    break;
  1084.  }
  1085. }
  1086. updateNavButtons();
  1087. }
  1088. function CPrintDoc_AddPage()
  1089. {
  1090. var newHTM = "";
  1091. var aPage = this._aaPage[this._nStatus];
  1092. var aRect = this._aaRect[this._nStatus];
  1093. ;
  1094. (this._acPage[this._nStatus])++; 
  1095. HeadFoot.URL  = this.EnsureURL();
  1096. HeadFoot.title  = this.EnsureTitle();
  1097. HeadFoot.pageTotal = this.Pages();
  1098. HeadFoot.page  = HeadFoot.pageTotal;
  1099. if (this._acPage[this._nStatus] <= aPage.length)
  1100. {
  1101.  var oPage = aPage[this._acPage[this._nStatus] - 1];
  1102.  oPage.children("header").innerHTML = HeadFoot.HtmlHead;
  1103.  oPage.children("footer").innerHTML = HeadFoot.HtmlFoot;
  1104.  return false;  
  1105. }
  1106. newHTM = "<DIV class=divPage><IE:DeviceRect media=\"print\" class=page id=mDiv" + this._nStatus + this._strDoc + "p" + aPage.length + ">";
  1107. newHTM += "<IE:LayoutRect id=mRect"    + this._nStatus + this._strDoc + "p" + aRect.length;
  1108. newHTM += " class=mRect nextRect=mRect"   + this._nStatus + this._strDoc + "p" + (aRect.length + 1);
  1109. newHTM += " onlayoutcomplete=OnRectComplete('" + this._strDoc + "')";
  1110. newHTM += " tabindex=-1 onbeforefocusenter='event.returnValue=false;' ";
  1111. newHTM += " /><DIV class=divHead id=header>";
  1112. newHTM += HeadFoot.HtmlHead;
  1113. newHTM += "</DIV><DIV class=divFoot id=footer>";
  1114. newHTM += HeadFoot.HtmlFoot;
  1115. newHTM += " </DIV></IE:DeviceRect></DIV>";
  1116. MasterContainer.insertAdjacentHTML("beforeEnd", newHTM);
  1117. aPage[aPage.length] = eval( "document.all.mDiv" + this._nStatus + this._strDoc + "p" + aPage.length);
  1118. aRect[aRect.length] = eval("document.all.mRect" + this._nStatus + this._strDoc + "p" + aRect.length);
  1119. return true;
  1120. }
  1121. function CPrintDoc_AddFirstPage()
  1122. {
  1123. var fReturn;
  1124. this._acPage[this._nStatus] = 0;
  1125. if (this._anMerge[this._nStatus] == 0)
  1126. {
  1127.  fReturn = this.AddPage();
  1128. }
  1129. else
  1130. {
  1131.  var aRect = this._aaRect[this._nStatus];
  1132.  var oPage = this._aaPage[this._nStatus - 1][this._acPage[this._nStatus - 1] - 1];
  1133.  var oTop = this._aaRect[this._nStatus - 1][this._acPage[this._nStatus - 1] + this._anMerge[this._nStatus - 1] - 1];
  1134.  var nTop = oTop.offsetTop + oTop.scrollHeight;
  1135.  var nHeight = oTop.clientHeight - oTop.scrollHeight;
  1136.  ;
  1137.  ;
  1138.  if (aRect.length > 0)
  1139.  {
  1140.   var oNode  = aRect[0];
  1141.   oNode.style.marginTop  = nTop + "px";
  1142.   oNode.style.pixelHeight = nHeight;
  1143.   if (oNode.parentElement != oPage)
  1144.   {
  1145.    oNode.removeNode(true);
  1146.    oPage.appendChild(oNode);
  1147.   }
  1148.   fReturn = false;
  1149.  }
  1150.  else
  1151.  {
  1152.   var newHTM;
  1153.   var oNode;
  1154.   newHTM = "<IE:LayoutRect id=mRect"  + this._nStatus + this._strDoc + "p0";
  1155.   newHTM += " class=mRect nextRect=mRect" + this._nStatus + this._strDoc + "p1";
  1156.   newHTM += " onlayoutcomplete=OnRectComplete('" + this._strDoc + "')";
  1157.   newHTM += " tabindex=-1 onbeforefocus='event.returnValue=false;' />";
  1158.   oPage.insertAdjacentHTML("beforeEnd", newHTM);
  1159.   oNode = eval("document.all.mRect" + this._nStatus + this._strDoc + "p0");
  1160.   aRect[0] = oNode;
  1161.   oNode.style.marginTop = nTop + "px";
  1162.   oNode.style.height  = nHeight + "px";  
  1163.   fReturn = true;
  1164.  }
  1165. }
  1166. return fReturn;
  1167. }
  1168. function CPrintDoc_InitDocument( fUseStreamHeader )
  1169. {
  1170. fReallyUseStreamHeader = (fUseStreamHeader && (dialogArguments.__IE_OutlookHeader != null));
  1171. this._anMerge[1] = (fReallyUseStreamHeader) ? 1 : 0;
  1172. this._nStatus = (fReallyUseStreamHeader) ? 0 : 1;
  1173. this.AddFirstPage();
  1174. this._aaRect[this._nStatus][0].contentSrc = (fReallyUseStreamHeader)
  1175.            ? dialogArguments.__IE_OutlookHeader
  1176.            : this._strDocURL;
  1177. }
  1178. function CPrintDoc_PrintAllSubDocuments( fRecursionOK )
  1179. {
  1180. if (!this._aDoc)
  1181.  return;
  1182. var nDocs = this._aDoc.length;
  1183. var i;
  1184. g_cLeftToPrint += nDocs;
  1185. for (i = 0; i < nDocs; i++)
  1186. {  
  1187.  PrintSentinel(this._aDoc[i]._strDoc, fRecursionOK);
  1188. }     
  1189. }
  1190. function CPrintDoc_BuildAllLinkedDocuments()
  1191. {
  1192. var strURL = this._aaRect[1][0].contentDocument.URL;
  1193. var aLinks = this._aaRect[1][0].contentDocument.links;
  1194. var nLinks = aLinks.length;
  1195. var i;
  1196. var j;
  1197. var strLink;
  1198. for (i = 0; i < nLinks; i++)
  1199. {  
  1200.  strLink = aLinks[i].href;
  1201.  if ( (strURL == strLink)
  1202.   || UnprintableURL(strLink) )
  1203.   continue;
  1204.  for (j = 0; j < i; j++)
  1205.  {
  1206.   if (strLink == aLinks[j].href)
  1207.    break;
  1208.  }
  1209.  if (j < i)  
  1210.   continue;
  1211.  this.CreateSubDocument(strLink);
  1212. }
  1213. }
  1214. function CPrintDoc_BuildAllFrames()
  1215. {
  1216. var aFrames = this._aaRect[1][0].contentDocument.all.tags("FRAME");
  1217. var nFrames = aFrames.length;
  1218. var i;
  1219. var strSrc;
  1220. for (i = 0; i < nFrames; i++)
  1221. {
  1222.  strSrc = aFrames[i].src;
  1223.  if (strSrc == "res://SHDOCLC.DLL/printnof.htm")
  1224.   continue;
  1225.  this.CreateSubDocument(strSrc);
  1226. }     
  1227. }
  1228. function CPrintDoc_CreateSubDocument( docURL )
  1229. {
  1230. if (!this._aDoc)
  1231.  this._aDoc = new Array();
  1232. var nDoc = this._aDoc.length;
  1233. var strDoc = this._strDoc + "_" + nDoc;
  1234. CreateDocument(docURL, strDoc, false);
  1235. this._aDoc[nDoc] = g_aDocTree[strDoc];
  1236. }
  1237. function CPrintDoc_AddTableOfLinks()
  1238. {
  1239. ;
  1240. if (!g_fTableOfLinks)
  1241. {
  1242.  this._nStatus = 3;
  1243.  ChangeDispPage(g_nDispPage);  
  1244.  this.FixupHF();
  1245. }
  1246. else if (this._aaRect[this._nStatus].length > 0)
  1247. {
  1248.  this.AddFirstPage();
  1249. }
  1250. else
  1251. {     
  1252.  var oTableOfLinks = BuildTableOfLinks(this._aaRect[1][0].contentDocument);
  1253.  if (oTableOfLinks != null)
  1254.  {
  1255.   var oBody = oTableOfLinks.body;
  1256.   this.AddFirstPage()
  1257.   this._aaRect[this._nStatus][0].contentSrc = oBody.document;   
  1258.  }
  1259.  else
  1260.  {
  1261.   this._nStatus = 3;
  1262.   ChangeDispPage(g_nDispPage);  
  1263.   this.FixupHF();
  1264.  }  
  1265. }
  1266. }
  1267. function OnTickHF( strDoc )
  1268. {
  1269. if (!g_aDocTree[strDoc])
  1270. {
  1271.  HandleError("Document " + strDoc + " does not exist.", document.URL, "OnRectComplete");
  1272.  return;
  1273. }
  1274. g_aDocTree[strDoc].TickHF();
  1275. }
  1276. function CPrintDoc_TickHF()
  1277. {
  1278. var i, j;
  1279. var iTo, jTo;
  1280. var aTok;
  1281. var oTok;
  1282. var nStartPage = this._nNextHF;
  1283. var cPages  = this.Pages();
  1284. iTo = nStartPage + 2;
  1285. if (iTo > cPages)
  1286.  iTo = cPages;
  1287. for (i = nStartPage; i <= iTo; i++)
  1288. {
  1289.  aTok = this.Page(i).children[0].getElementsByTagName("SPAN");
  1290.  for (j=0, jTo = aTok.length; j < jTo; j++)
  1291.  {
  1292.   oTok = aTok[j];
  1293.   if (oTok.className == "hfPageTotal")
  1294.    oTok.innerText = cPages;
  1295.   else if ( oTok.className == "hfUrl"   
  1296.      && oTok.innerText == ""  )
  1297.    oTok.innerText = this.EnsureURL();         
  1298.   else if ( oTok.className == "hfTitle"
  1299.      && oTok.innerText == ""  )
  1300.    oTok.innerText = this.EnsureTitle();         
  1301.  }
  1302. }
  1303. this._nNextHF = i;
  1304. if (iTo == cPages)
  1305. {
  1306.  this._nStatus = 4; 
  1307. }
  1308. else 
  1309. {
  1310.  this._nTimerHF = window.setTimeout("OnTickHF('" + this._strDoc + "');", 250);
  1311. }
  1312. }
  1313. function CPrintDoc_FixupHF()
  1314. {
  1315. ;
  1316. this.TickHF();
  1317. }
  1318. function CPrintDoc_Pages()
  1319. var i;
  1320. var c;
  1321. for (i = 0, c = 0; i < 3; i++)
  1322. {
  1323.  c += this._acPage[i];
  1324. }
  1325. return c;
  1326. }
  1327. function CPrintDoc_Page(nPage)
  1328. {
  1329. var i;
  1330. var n = nPage;
  1331. if (n <= 0)
  1332.  return null;  
  1333. for (i = 0; i < 3; i++)
  1334. {
  1335.  if (n <= this._acPage[i])
  1336.   return this._aaPage[i][n - 1].parentElement;
  1337.  n -= this._acPage[i];
  1338. }
  1339. return null;
  1340. }
  1341. function CPrintDoc_EnsureURL()
  1342. {
  1343. if (this._strURL == null)
  1344. {
  1345.  if ( this._aaRect[1][0]
  1346.   && this._aaRect[1][0].contentDocument)
  1347.  {
  1348.   this._strURL = this._aaRect[1][0].contentDocument.URL;
  1349.  }
  1350.  if (this._strURL == null)
  1351.   return "";
  1352. }
  1353. return this._strURL;
  1354. }
  1355. function CPrintDoc_EnsureTitle()
  1356. {
  1357. if (this._strTitle == null)
  1358. {
  1359.  if ( this._aaRect[1][0]
  1360.   && this._aaRect[1][0].contentDocument)
  1361.  {
  1362.   this._strTitle = this._aaRect[1][0].contentDocument.title;
  1363.  }
  1364.  if (this._strTitle == null)
  1365.   return "";
  1366. }
  1367. return this._strTitle;
  1368. }
  1369. function CPrintDoc_ResetDocument()
  1370. {
  1371. var i;
  1372. for (i = 0; i < 3; i++)
  1373. {
  1374.  this._acPage[i] = 0;
  1375.  if (this._aaRect[i][0])
  1376.   this._aaRect[i][0].contentSrc = "";
  1377. }
  1378. this.StopFixupHF();
  1379. this._nStatus = (this._anMerge[1] == 0) ? 1 : 0;
  1380. this.AddFirstPage();
  1381. }
  1382. function CPrintDoc_ResetTableOfLinks()
  1383. {
  1384. if (this._nStatus <= 2)
  1385.  return;
  1386. this.StopFixupHF();
  1387. this._nStatus = 2;
  1388. this.AddTableOfLinks();
  1389. }
  1390. function CPrintDoc_StopFixupHF()
  1391. {
  1392. if (this._nTimerHF != -1)
  1393.  window.clearTimeout(this._nTimerHF);
  1394. this._nTimerHF = -1;
  1395. this._nNextHF = 1; 
  1396. }
  1397. function CPrintDoc( nDocNum, strDocURL, fUseStreamHeader )
  1398. {
  1399. var i;
  1400. this._aDoc   = null;   
  1401. this._strDoc  = nDocNum;  
  1402. this._strDocURL  = strDocURL; 
  1403. this._nStatus  = 0;
  1404. this._aaPage  = new Array(3);
  1405. this._aaRect  = new Array(3);
  1406. this._acPage  = new Array(3);
  1407. this._anMerge  = new Array(3);
  1408. for (i=0; i<3; i++)
  1409. {
  1410.  this._aaPage[i] = new Array();
  1411.  this._aaRect[i] = new Array();
  1412.  this._acPage[i] = 0;
  1413.  this._anMerge[i] = 0;
  1414. }
  1415. this._nNextHF  = 1;
  1416. this._nTimerHF  = -1;
  1417. this._strURL  = null;
  1418. this._strTitle  = null;
  1419. }
  1420. CPrintDoc.prototype.RectComplete = CPrintDoc_RectComplete;
  1421. CPrintDoc.prototype.AddPage = CPrintDoc_AddPage;
  1422. CPrintDoc.prototype.AddFirstPage = CPrintDoc_AddFirstPage;
  1423. CPrintDoc.prototype.AddTableOfLinks = CPrintDoc_AddTableOfLinks;
  1424. CPrintDoc.prototype.FixupHF = CPrintDoc_FixupHF;
  1425. CPrintDoc.prototype.StopFixupHF = CPrintDoc_StopFixupHF;
  1426. CPrintDoc.prototype.TickHF = CPrintDoc_TickHF;
  1427. CPrintDoc.prototype.InitDocument = CPrintDoc_InitDocument;
  1428. CPrintDoc.prototype.ResetDocument = CPrintDoc_ResetDocument;
  1429. CPrintDoc.prototype.ResetTableOfLinks = CPrintDoc_ResetTableOfLinks;
  1430. CPrintDoc.prototype.BuildAllLinkedDocuments = CPrintDoc_BuildAllLinkedDocuments;
  1431. CPrintDoc.prototype.BuildAllFrames = CPrintDoc_BuildAllFrames;
  1432. CPrintDoc.prototype.CreateSubDocument = CPrintDoc_CreateSubDocument;
  1433. CPrintDoc.prototype.Print = CPrintDoc_Print;
  1434. CPrintDoc.prototype.PrintAllSubDocuments = CPrintDoc_PrintAllSubDocuments;
  1435. CPrintDoc.prototype.ReadyToPrint = CPrintDoc_ReadyToPrint;
  1436. CPrintDoc.prototype.Page = CPrintDoc_Page;
  1437. CPrintDoc.prototype.Pages = CPrintDoc_Pages;
  1438. CPrintDoc.prototype.EnsureURL = CPrintDoc_EnsureURL;
  1439. CPrintDoc.prototype.EnsureTitle = CPrintDoc_EnsureTitle;
  1440. </SCRIPT>
  1441. </HEAD>
  1442. <BODY onload="setTimeout('OnLoadBody()', 400);">
  1443. <!-- Controls for printing -->
  1444. <IE:TemplatePrinter id=Printer />
  1445. <IE:HeaderFooter id=HeadFoot />
  1446. <DIV id=idDivToolbar style="width:100%; overflow:hidden;">
  1447. <DIV style="width=100%; border:'thin threedhighlight groove';">
  1448. <TABLE><TR>
  1449.  <TD class="UIPane"> <BUTTON id="butPrint" title="Print Document (Alt+P)" accesskey=p><U>P</U>rint...</BUTTON></TD>
  1450.  <TD class="UISeparator"><IMG width=0 height=0></TD>
  1451.  <TD class="UIPane"> <BUTTON id="butPageSetup" accesskey=u><IMG id="printCtl" src="printctl.gif" alt="Page Setup (Alt+U)"></BUTTON></TD>
  1452.  <TD class="UISeparator"><IMG width=0 height=0></TD>
  1453.  <TD class="UIPane"> <BUTTON id="butFirstPage"><IMG id="begin" src="begin_inactive.gif" alt="First Page (Alt+Home)"></BUTTON></TD>
  1454.  <TD class="UIPane"> <BUTTON id="butBackPage"> <IMG id="prev" src="prev_inactive.gif" alt="Previous Page (Alt+LeftArrow)"></BUTTON></TD>
  1455.  <TD class="UIPane"><SPAN style="color:windowtext;"><NOBR Loc> <ID id=idTdPageXofYLocText1>P<U>a</U>ge</ID> <INPUT type=text id="inputPageNum" title="Preview Page (Alt+A)" value="1" style="height:1.5em; width: 2em; color:windowtext;" accesskey=a Loc><ID id=idTdPageXofYLocText2> of </ID><SPAN id="spanPageTotal"></SPAN>
  1456.   </SPAN></NOBR></TD>
  1457.  <TD class="UIPane"> <BUTTON id="butNextPage"> <IMG id="next" src="next_inactive.gif"   alt="Next Page (Alt+RightArrow)"></BUTTON></TD>
  1458.  <TD class="UIPane"> <BUTTON id="butLastPage"> <IMG id="end"  src="end_inactive.gif"   alt="Last Page (Alt+End)"></BUTTON></TD>
  1459.  <TD class="UISeparator"><IMG width=0 height=0></TD>
  1460.  <TD class="UIPane"> <BUTTON id="butZoomOut"> <IMG id="zoomOut" base="zoomOut" src="zoomout.gif" alt="Zoom Out (Alt+Minus)"></BUTTON></TD>
  1461.  <TD class="UIPane"> <BUTTON id="butZoomIn"> <IMG id="zoomIn" base="zoomIn" src="zoomin.gif"  alt="Zoom In (Alt+Plus)"></BUTTON></TD>
  1462.  <TD class="UIPane"> <SELECT id="selectZoom" accesskey=z>
  1463.        <OPTION VALUE="500"    >500%
  1464.        <OPTION VALUE="200"    >200%
  1465.        <OPTION VALUE="150"    >150%
  1466.        <OPTION VALUE="100"    >100%
  1467.        <OPTION VALUE="75" SELECTED  >75%
  1468.        <OPTION VALUE="50"    >50%
  1469.        <OPTION VALUE="25"    >25%
  1470.        <OPTION VALUE="10"    >10%
  1471.        <!-- ID's are for localization -->
  1472.        <OPTION VALUE=-1 id="idPageWidth">Page Width</OPTION>
  1473.        <OPTION VALUE=-2 id="idWholePage">Whole Page</OPTION>
  1474.        <OPTION VALUE=-3 id="idTwoPages" >Two Pages </OPTION>
  1475.       </SELECT></TD>
  1476.  <TD class="UISeparator"><IMG width=0 height=0></TD>
  1477.  <TD class="UIPane"> <BUTTON id="butHelp" title="Print Preview Help (Alt+H)" accesskey=h><U>H</U>elp</BUTTON></TD>
  1478.  <TD class="UISeparator"><IMG width=0 height=0></TD>
  1479.  <TD class="UIPane"> <BUTTON id="butClose" title="Close Print Preview (Alt+C)" accessKey=c><U>C</U>lose</BUTTON></TD>
  1480. </TR></TABLE>
  1481. </DIV>
  1482. </DIV>
  1483. <DIV id=OverflowContainer onclick="this.focus();" onfocus="butPrint.scrollIntoView();" tabindex=1 style="position:absolute; left:0; width:100%; overflow:auto; border:'thin threedhighlight inset'; background:threedshadow;">
  1484. <DIV id=MasterContainer style="width:100%; position:absolute;">
  1485.  <!-- Pages go here -->
  1486. </DIV>
  1487. </DIV>
  1488. </BODY>
  1489. </HTML>
  1490.