home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / WindowsServerTrial / server.iso / sources / install.wim / 2 / Windows / System32 / ieframe.dll / HTML / PREVIEW.JS < prev    next >
Text File  |  2008-01-19  |  55KB  |  2,339 lines

  1. var g_aDocTree = new Object();
  2. var g_nDispPage = -1;
  3. var g_cLeftToPrint = 0;
  4. var g_fRTL = false;
  5. var g_fPreview;
  6. var g_nScreenDPI = 96
  7. var g_nMarginTop = 0;
  8. var g_nMarginBottom = 0;
  9. var g_nMarginLeft = 0;
  10. var g_nMarginRight = 0;
  11. var g_nPageWidth = 0;
  12. var g_nPageHeight = 0;
  13. var g_strOrientation = Printer.orientation;
  14. var g_nScalePercent = 100;
  15. var g_fCheckAutoFit = false;
  16. var g_fCheckOrphan = false;
  17. var g_nUnprintTop = 0;
  18. var g_nUnprintBottom = 0;
  19. var g_strHeader = "";
  20. var g_strFooter = "";
  21. var g_fTableOfLinks = false;
  22. var g_fPrintHeaderFooter = true;
  23. var g_cPagesDisplayed = 0;
  24. var g_cxDisplaySlots = 1;
  25. var g_cyDisplaySlots = 1;
  26. var g_imgUnderMouse = null;
  27. var g_imgDown = null;
  28. var g_curMultiSelect = null;
  29. var g_curMultiPages = 1;
  30. var g_nFramesetLayout = 0;
  31. var g_strActiveFrame = null;
  32. var g_nTotalPages = 0;
  33. var g_nDocsToCalc = 0;
  34. var g_nFramesLeft = 0;
  35. var g_nZoomLevel = 100;
  36. var g_zoomLayout = -2;
  37. var g_zoomLayoutX = 1;
  38. var g_zoomLayoutY = 1;
  39. var g_zoomPageCount = 1;
  40. var g_fDelayClose = false;
  41. var g_ObsoleteBar = 0;
  42. function AttachDialogEvents()
  43. {
  44. printimg.onclick = HandlePrintClick;
  45. printimg.onmouseover = buttonOver;
  46. printimg.onmouseout = buttonOut;
  47. portrait.onmouseover = buttonOver;
  48. portrait.onmouseout = buttonOut;
  49. landscape.onmouseover = buttonOver;
  50. landscape.onmouseout = buttonOut;
  51. settings.onmouseover = buttonOver;
  52. settings.onmouseout = buttonOut;
  53. headerimg.onmouseover = buttonOver;
  54. headerimg.onmouseout = buttonOut;
  55. zoomWidth.onmouseover = buttonOver;
  56. zoomWidth.onmouseout = buttonOut;
  57. zoomPage.onmouseover = buttonOver;
  58. zoomPage.onmouseout = buttonOut;
  59. helpimg.onmouseover = buttonOver;
  60. helpimg.onmouseout = buttonOut;
  61. begin.onmouseover = buttonOver;
  62. begin.onmouseout = buttonOut;
  63. prev.onmouseover = buttonOver;
  64. prev.onmouseout = buttonOut;
  65. next.onmouseover = buttonOver;
  66. next.onmouseout = buttonOut;
  67. end.onmouseover = buttonOver;
  68. end.onmouseout = buttonOut;
  69. printimg.onmousedown = buttonDown;
  70. printimg.onmouseup = buttonUp;
  71. portrait.onmousedown = buttonDown;
  72. portrait.onmouseup = buttonUp;
  73. landscape.onmousedown = buttonDown;
  74. landscape.onmouseup = buttonUp;
  75. settings.onmousedown = buttonDown;
  76. settings.onmouseup = buttonUp;
  77. headerimg.onmousedown = buttonDown;
  78. headerimg.onmouseup = buttonUp;
  79. zoomWidth.onmousedown = buttonDown;
  80. zoomWidth.onmouseup = buttonUp;
  81. zoomPage.onmousedown = buttonDown;
  82. zoomPage.onmouseup = buttonUp;
  83. helpimg.onmousedown = buttonDown;
  84. helpimg.onmouseup = buttonUp;
  85. portrait.onclick = HandlePortrait;
  86. landscape.onclick = HandleLandscape;
  87. settings.onclick = HandlePageSetup;
  88. headerimg.onclick = HandleHeaders;
  89. zoomWidth.onclick = HandleZoomWidthButton;
  90. zoomPage.onclick = HandleZoomPageButton;
  91. begin.onclick = HandleFirstPage;
  92. prev.onclick = HandleBackPage;
  93. next.onclick = HandleForwardPage;
  94. end.onclick = HandleLastPage;
  95. helpimg.onclick = HandleHelp;
  96. document.onhelp = HandleHelp;
  97. begin.onmousedown = buttonDown;
  98. begin.onmouseup = buttonUp;
  99. prev.onmousedown = buttonDown;
  100. prev.onmouseup = buttonUp;
  101. next.onmousedown = buttonDown;
  102. next.onmouseup = buttonUp;
  103. end.onmousedown = buttonDown;
  104. end.onmouseup = buttonUp;
  105. inputCustomScale.onkeypress = HandleInputKeyPress;
  106. inputCustomScale.onchange = HandleCustomScaleSelect;
  107. inputPageNum.onkeypress = HandleInputKeyPress;
  108. inputPageNum.onchange = HandlePageSelect;
  109. selectScale.onchange = HandleScaleSelect;
  110. selectFrameset.onchange = HandleFramesetSelect;
  111. selectPages.onchange = HandleZoomMultiPageSelect;
  112. window.onresize = OnResizeBody;
  113. window.onerror = HandleError;
  114. document.body.onkeypress = OnKeyPress;
  115. document.body.onkeydown = OnKeyDown;
  116. OverflowContainer.onmousedown = HandleMarginMouseDown;
  117. OverflowContainer.onmouseup = HandleMarginMouseUp;
  118. OverflowContainer.onmousemove = HandleMarginMouseMove;
  119. window.onfocus = new Function("MasterContainer.focus()");
  120. }
  121. function GetRuleFromSelector(strSelector)
  122. {
  123. var i;
  124. var oRule;
  125. var oSS = document.styleSheets[0];
  126. for (i = 0; i < oSS.rules.length; i++)
  127. {
  128. oRule = oSS.rules[i];
  129. if (oRule == null)
  130. break;
  131. if (oRule.selectorText == strSelector)
  132. break;
  133. }
  134. return oRule;
  135. }
  136. function UnprintableURL(strLink)
  137. {
  138. var fUnprintable = false;
  139. var cIndex;
  140. cIndex = strLink.indexOf(":");
  141. switch (cIndex)
  142. {
  143. case 4:
  144. if (strLink.substr(0, cIndex) == "news")
  145. {
  146. fUnprintable = true;
  147. }
  148. break;
  149. case 5:
  150. if (strLink.substr(0, cIndex) == "snews")
  151. {
  152. fUnprintable = true;
  153. }
  154. break;
  155. case 6:
  156. if ( strLink.substr(0, cIndex) == "telnet"
  157. || strLink.substr(0, cIndex) == "mailto")
  158. {
  159. fUnprintable = true;
  160. }
  161. break;
  162. case 8:
  163. if (strLink.substr(0,cIndex) == "vbscript")
  164. {
  165. fUnprintable = true;
  166. }
  167. break;
  168. case 10:
  169. if (strLink.substr(0,cIndex) == "javascript")
  170. {
  171. fUnprintable = true;
  172. }
  173. break;
  174. }
  175. return fUnprintable;
  176. }
  177. function OnKeyPress()
  178. {
  179. if (event.keyCode == 27)
  180. {
  181. Close();
  182. }
  183. }
  184. function OnKeyDown()
  185. {
  186. if(event.keyCode==13 && event.srcElement && (event.srcElement.id=="OverflowContainer" || event.srcElement.id=="MasterContainer")) {
  187. event.cancelBubble = true;
  188. return false;
  189. }
  190. if (event.altKey)
  191. {
  192. switch (event.keyCode)
  193. {
  194. case 37:
  195. if (document.body.dir=="rtl")
  196. {
  197. ChangeDispPage(g_nDispPage+1);
  198. }
  199. else
  200. {
  201. ChangeDispPage(g_nDispPage-1);
  202. }
  203. break;
  204. case 39:
  205. if (document.body.dir=="rtl")
  206. {
  207. ChangeDispPage(g_nDispPage-1);
  208. }
  209. else
  210. {
  211. ChangeDispPage(g_nDispPage+1);
  212. }
  213. break;
  214. case 35:
  215. HandleLastPage();
  216. break;
  217. case 36:
  218. HandleFirstPage();
  219. break;
  220. case 50: '2'
  221. case 98: '2'
  222. selectPages.selectedIndex = 1;
  223. HandleZoomMultiPageClick(2);
  224. break;
  225. case 51: '3'
  226. case 99: '3'
  227. selectPages.selectedIndex = 2;
  228. HandleZoomMultiPageClick(3);
  229. break;
  230. case 54: '6'
  231. case 102: '6'
  232. selectPages.selectedIndex = 3;
  233. HandleZoomMultiPageClick(6);
  234. break;
  235. case 67: 'C'
  236. Close();
  237. break;
  238. case 48: '0'
  239. case 96: '0'
  240. selectPages.selectedIndex = 4;
  241. HandleZoomMultiPageClick(12);
  242. break;
  243. default:
  244. return;
  245. }
  246. event.cancelBubble = true;
  247. return false;
  248. }
  249. }
  250. function OnLoadBody()
  251. {
  252. try{
  253. if(dialogArguments.__IE_BrowseDocument && dialogArguments.__IE_BrowseDocument.body) {
  254. g_fRTL = (dialogArguments.__IE_BrowseDocument.body.currentStyle.direction.toLowerCase() == "rtl");
  255. }
  256. }catch(e){}
  257. g_fPreview = dialogArguments.__IE_PrintType == "Preview";
  258. if (UnprintableURL(dialogArguments.__IE_ContentDocumentUrl))
  259. {
  260. var L_Invalid_Text = "Unable to print URL. Please navigate directly to this page and select Print.";
  261. alert(L_Invalid_Text);
  262. window.close();
  263. }
  264. UpdateOrientationButtons();
  265. ChangeZoom();
  266. if (dialogArguments.__IE_HeaderString)
  267. {
  268. Printer.header = dialogArguments.__IE_HeaderString
  269. }
  270. if (dialogArguments.__IE_FooterString)
  271. {
  272. Printer.footer = dialogArguments.__IE_FooterString
  273. }
  274. EnsureDocuments(false);
  275. window.document.body.style.cursor="wait";
  276. g_fCheckAutoFit = (dialogArguments.__IE_STFScaleMin != 100);
  277. g_fCheckOrphan = true;
  278. CreateDocument("document", "C", true);
  279. ChangeDispPage(1);
  280. g_nFramesLeft = 1;
  281. OnBuildAllFrames("C");
  282. if (g_fPreview)
  283. {
  284. if(dialogArguments.__IE_ContentSelectionUrl)
  285. {
  286. CreateDocument(dialogArguments.__IE_ContentSelectionUrl, "S", true);
  287. }
  288. AttachDialogEvents();
  289. OverflowContainer.style.top = idDivToolbar.offsetHeight;
  290. var h = document.body.clientHeight - idDivToolbar.offsetHeight - idDivToolbar2.offsetHeight;
  291. if(h<0) h = 0;
  292. OverflowContainer.style.height = h;
  293. idDivToolbar2.style.visibility = "visible";
  294. idDivToolbar2.style.pixelTop = idDivToolbar.offsetHeight + h;
  295. ChangeZoomSpecial(g_zoomLayout);
  296. }
  297. else
  298. {
  299. PrintNow(dialogArguments.__IE_PrintType == "Prompt");
  300. }
  301. }
  302. function BuildAllFramesComplete()
  303. {
  304. ;
  305. window.document.body.style.cursor="auto";
  306. UpdateFramesetSelect();
  307. }
  308. function CalcDocsComplete()
  309. {
  310. ;
  311. if (g_nFramesetLayout == 2)
  312. {
  313. ChangeFramesetLayout(g_nFramesetLayout, true)
  314. }
  315. if(g_fCheckAutoFit)
  316. {
  317. g_fCheckAutoFit = false;
  318. var fitScale = CalcAutoFit();
  319. if (fitScale < dialogArguments.__IE_STFScaleMin) fitScale = dialogArguments.__IE_STFScaleMin;
  320. if(fitScale < 30) fitScale = 30;
  321. selectScale.selectedIndex = 0;
  322. cellCustomScale.style.display = "none";
  323. g_nScalePercent = fitScale;
  324. if(fitScale!=100 )
  325. {
  326. EnsureDocuments(true);
  327. return;
  328. }
  329. }
  330. if (g_fCheckOrphan)
  331. {
  332. g_fCheckOrphan = false;
  333. if(IsOrphaned())
  334. {
  335. var orphanScale = CalcOrphanRemovalScale();
  336. g_nScalePercent = g_nScalePercent * orphanScale/100;
  337. if(g_nScalePercent < 30) g_nScalePercent = 30;
  338. EnsureDocuments(true);
  339. return;
  340. }
  341. }
  342. ChangeDispPage(g_nDispPage);
  343. ChangeZoomSpecial(g_zoomLayout);
  344. }
  345. function OnResizeBody()
  346. {
  347. OverflowContainer.style.top = idDivToolbar.offsetHeight;
  348. var h = document.body.clientHeight - idDivToolbar.offsetHeight - idDivToolbar2.offsetHeight;
  349. if(h<0) h = 0;
  350. OverflowContainer.style.height = h;
  351. idDivToolbar2.style.visibility = "visible";
  352. idDivToolbar2.style.pixelTop = idDivToolbar.offsetHeight + h;
  353. ChangeZoomSpecial(g_zoomLayout);
  354. PositionPages(g_nDispPage);
  355. }
  356. function HandleError(message, url, line)
  357. {
  358. var L_Internal_ErrorMessage = "There was an internal error, and Internet Explorer is unable to print this document.";
  359. alert(L_Internal_ErrorMessage);
  360. window.close();
  361. return true;
  362. }
  363. function OnRectComplete(strDoc, ObsoleteCookie)
  364. {
  365. if (!g_aDocTree[strDoc])
  366. {
  367. HandleError("Document " + strDoc + " does not exist.", document.URL, "OnRectComplete");
  368. return;
  369. }
  370. window.setTimeout("OnRectCompleteNext('" + strDoc + "', " + event.contentOverflow + ",'" + event.srcElement.id + "'," + ObsoleteCookie + ");", 25);
  371. }
  372. function OnRectCompleteNext( strDoc, fOverflow, strElement, ObsoleteCookie)
  373. {
  374. if (ObsoleteCookie == g_ObsoleteBar)
  375. {
  376. g_aDocTree[strDoc].RectComplete(fOverflow, strElement);
  377. }
  378. }
  379. function enableButton(img)
  380. {
  381. var imgname = img.id;
  382. if (img == begin || img == end || img == prev || img == next)
  383. {
  384. imgname = img.value;
  385. }
  386. img.disabled = false;
  387. if (g_imgUnderMouse == img)
  388. {
  389. if(g_imgDown==img)
  390. {
  391. img.src = imgname + "_down.png";
  392. }
  393. else
  394. {
  395. img.src = imgname + "_hover.png";
  396. }
  397. }
  398. else
  399. {
  400. img.src = imgname + ".png";
  401. }
  402. }
  403. function disableButton(img)
  404. {
  405. var imgname = img.id;
  406. if (img == begin || img == end || img == prev || img == next)
  407. {
  408. imgname = img.value;
  409. }
  410. img.disabled = true;
  411. img.src = imgname + "_disabled.png";
  412. }
  413. function updateNavButtons()
  414. {
  415. if (g_nDispPage == 1)
  416. {
  417. disableButton(begin);
  418. disableButton(prev);
  419. }
  420. else
  421. {
  422. enableButton(begin);
  423. enableButton(prev);
  424. }
  425. if (TotalDisplayPages() - g_nDispPage < g_cxDisplaySlots * g_cyDisplaySlots)
  426. {
  427. disableButton(next);
  428. disableButton(end);
  429. }
  430. else
  431. {
  432. enableButton(next);
  433. enableButton(end);
  434. }
  435. }
  436. function UpdateOrientationButtons()
  437. {
  438. if (g_strOrientation != Printer.orientation)
  439. {
  440. g_strOrientation = Printer.orientation;
  441. }
  442. if (g_strOrientation == "portrait")
  443. {
  444. disableButton(portrait);
  445. enableButton(landscape);
  446. }
  447. else
  448. {
  449. disableButton(landscape);
  450. enableButton(portrait);
  451. }
  452. }
  453. function buttonOver()
  454. {
  455. var imgSrc = event.srcElement;
  456. if(imgSrc.disabled) return;
  457. g_imgUnderMouse = imgSrc;
  458. if (imgSrc == begin ||
  459. imgSrc == prev ||
  460. imgSrc == next ||
  461. imgSrc == end)
  462. {
  463. updateNavButtons();
  464. }
  465. else
  466. {
  467. if(g_imgDown==imgSrc)
  468. {
  469. imgSrc.src= "" + imgSrc.id + "_down.png";
  470. }
  471. else
  472. {
  473. imgSrc.src= "" + imgSrc.id + "_hover.png";
  474. }
  475. }
  476. }
  477. function buttonOut()
  478. {
  479. var imgSrc = event.srcElement;
  480. if(imgSrc.disabled) return;
  481. g_imgUnderMouse = null;
  482. if (imgSrc == begin || imgSrc == prev ||
  483. imgSrc == next || imgSrc == end)
  484. {
  485. updateNavButtons();
  486. }
  487. else
  488. {
  489. imgSrc.src= "" + imgSrc.id + ".png";
  490. }
  491. }
  492. function buttonDown()
  493. {
  494. if(event.button!=1) return;
  495. var imgSrc = event.srcElement;
  496. if(imgSrc.disabled) return;
  497. var imgname = imgSrc.id;
  498. if (imgSrc == begin || imgSrc == end
  499. || imgSrc == next || imgSrc == prev)
  500. {
  501. imgname = imgSrc.value;
  502. }
  503. imgSrc.src= "" + imgname + "_down.png";
  504. g_imgDown = imgSrc;
  505. g_imgDown.setCapture();
  506. }
  507. function buttonUp()
  508. {
  509. if(event.button!=1) return;
  510. var imgSrc = event.srcElement;
  511. if(imgSrc.disabled) return;
  512. if(g_imgDown!=null) {
  513. var imgname = g_imgDown.id;
  514. if (g_imgDown == begin || g_imgDown == end
  515. || g_imgDown == next || g_imgDown == prev)
  516. {
  517. imgname = g_imgDown.value;
  518. }
  519. if(g_imgUnderMouse==g_imgDown)
  520. {
  521. g_imgDown.src= "" + imgname + "_hover.png";
  522. }
  523. else
  524. {
  525. g_imgDown.src= "" + imgname + ".png";
  526. }
  527. g_imgDown.releaseCapture();
  528. g_imgDown = null;
  529. }
  530. }
  531. function HandlePageSelect()
  532. {
  533. event.srcElement.value = ChangeDispPage(parseInt(inputPageNum.value));
  534. MasterContainer.focus();
  535. }
  536. function HandleCustomScaleSelect()
  537. {
  538. var scale = parseInt(inputCustomScale.value);
  539. if(isNaN(scale)) scale = 100;
  540. if (scale < 30)
  541. {
  542. scale = 30;
  543. }
  544. if (scale > 999)
  545. {
  546. scale = 999;
  547. }
  548. inputCustomScale.value = scale;
  549. if(g_nScalePercent!=scale)
  550. {
  551. g_nScalePercent = scale;
  552. EnsureDocuments(true);
  553. }
  554. MasterContainer.focus();
  555. }
  556. function HandleInputKeyPress()
  557. {
  558. var keyStroke = event.keyCode;
  559. if (keyStroke == 13)
  560. {
  561. event.srcElement.onchange();
  562. return false;
  563. }
  564. else if (keyStroke < 48 || keyStroke > 57)
  565. {
  566. event.returnValue = false;
  567. }
  568. }
  569. function HandleScaleSelect()
  570. {
  571. var oldScale = g_nScalePercent;
  572. g_nScalePercent = parseInt(selectScale.options[selectScale.selectedIndex].value);
  573. g_fCheckAutoFit = false;
  574. g_fCheckOrphan = false;
  575. if (g_nScalePercent == (-1))
  576. {
  577. g_nScalePercent = 100;
  578. g_fCheckAutoFit = true;
  579. g_fCheckOrphan = true;
  580. cellCustomScale.style.display = "none";
  581. EnsureDocuments(true);
  582. }
  583. else if(g_nScalePercent == (0))
  584. {
  585. g_nScalePercent = oldScale;
  586. cellCustomScale.style.display = "block";
  587. inputCustomScale.value = oldScale;
  588. }
  589. else
  590. {
  591. cellCustomScale.style.display = "none";
  592. EnsureDocuments(true);
  593. }
  594. printimg.scrollIntoView();
  595. }
  596. function HandlePageSetup()
  597. {
  598. if (Printer.showPageSetupDialog())
  599. {
  600. UpdateOrientationButtons();
  601. if (IsShrinkToFit())
  602. {
  603. g_nScalePercent = 100;
  604. g_fCheckAutoFit = true;
  605. g_fCheckOrphan = true;
  606. EnsureDocuments(true);
  607. }
  608. else
  609. {
  610. EnsureDocuments(false);
  611. }
  612. }
  613. }
  614. function HandleHelp()
  615. {
  616. var w = Math.floor(document.body.offsetWidth*0.75);
  617. var h = Math.floor(document.body.offsetHeight*0.75);
  618. window.open("http://go.microsoft.com/fwlink/?LinkId=56117","_blank","scrollbars=yes,width="+w+",height="+h);
  619. event.cancelBubble = true;
  620. return false;
  621. }
  622. function HandleForwardPage()
  623. {
  624. ChangeDispPage(g_nDispPage + 1);
  625. }
  626. function HandleBackPage()
  627. {
  628. ChangeDispPage(g_nDispPage - 1);
  629. }
  630. function HandleFirstPage()
  631. {
  632. ChangeDispPage(1);
  633. }
  634. function HandleLastPage()
  635. {
  636. ChangeDispPage(TotalDisplayPages());
  637. }
  638. function HandleHeaders()
  639. {
  640. g_fPrintHeaderFooter = !g_fPrintHeaderFooter;
  641. var oRule = GetRuleFromSelector(".divHead");
  642. if (oRule == null)
  643. {
  644. HandleError("'.divHead' rule does not exist!", document.URL, "HandleHeaders()");
  645. }
  646. oRule.style.display = g_fPrintHeaderFooter ? "inline" : "none";
  647. oRule = GetRuleFromSelector(".divFoot");
  648. if (oRule == null)
  649. {
  650. HandleError("'.divFoot' rule does not exist!", document.URL, "HandleHeaders()");
  651. }
  652. oRule.style.display = g_fPrintHeaderFooter ? "inline" : "none";
  653. }
  654. function HandleLandscape()
  655. {
  656. HandleOrient(false);
  657. }
  658. function HandlePortrait()
  659. {
  660. HandleOrient(true);
  661. }
  662. function HandleOrient(fPortrait)
  663. {
  664. var newOrient;
  665. if (fPortrait)
  666. {
  667. newOrient = "portrait";
  668. }
  669. else
  670. {
  671. newOrient = "landscape";
  672. }
  673. if(newOrient==g_strOrientation) return;
  674. g_strOrientation = newOrient;
  675. var ml = Printer.marginLeft;
  676. var mr = Printer.marginRight;
  677. var mt = Printer.marginTop;
  678. var mb = Printer.marginBottom;
  679. Printer.orientation = g_strOrientation;
  680. Printer.marginLeft = mt;
  681. Printer.marginRight = mb;
  682. Printer.marginTop = ml;
  683. Printer.marginBottom = mr;
  684. UpdateOrientationButtons();
  685. ReflowDocument();
  686. }
  687. function HandleFramesetSelect()
  688. {
  689. UndisplayPages();
  690. var newFramesetLayout = parseInt(selectFrameset.options[selectFrameset.selectedIndex].value);
  691. var isShrinkToFit = IsShrinkToFit();
  692. if (isShrinkToFit)
  693. {
  694. g_nScalePercent = 100;
  695. g_fCheckAutoFit = true;
  696. g_fCheckOrphan = true;
  697. }
  698. ChangeFramesetLayout(newFramesetLayout, false);
  699. if (isShrinkToFit)
  700. {
  701. EnsureDocuments(true);
  702. }
  703. printimg.scrollIntoView();
  704. }
  705. function HandleZoomWidthButton()
  706. {
  707. ChangeZoomSpecial(-1);
  708. g_zoomPageCount = 1;
  709. selectPages.selectedIndex = 0;
  710. }
  711. function HandleZoomPageButton()
  712. {
  713. ChangeZoomSpecial(-2);
  714. g_zoomPageCount = 1;
  715. selectPages.selectedIndex = 0;
  716. }
  717. function getLeft(elm) {
  718. if(elm==null) {
  719. return 0;
  720. } else {
  721. var sz = getLeft(elm.offsetParent);
  722. return sz + elm.offsetLeft;
  723. }
  724. }
  725. function getTop(elm) {
  726. if(elm==null) {
  727. return 0;
  728. } else {
  729. var sz = getTop(elm.offsetParent);
  730. return sz + elm.offsetTop;
  731. }
  732. }
  733. function HandleZoomMultiPageSelect()
  734. {
  735. g_zoomPageCount = parseInt(selectPages.options[selectPages.selectedIndex].value);
  736. UpdateZoomMultiPage();
  737. }
  738. function HandleZoomMultiPageClick(pageCount)
  739. {
  740. g_zoomPageCount = pageCount;
  741. UpdateZoomMultiPage()
  742. }
  743. function UpdateZoomMultiPage()
  744. {
  745. switch(g_zoomPageCount) {
  746. case 2:
  747. HandleZoomMultiPage(2,1);
  748. break;
  749. case 3:
  750. HandleZoomMultiPage(3,1);
  751. break;
  752. case 6:
  753. HandleZoomMultiPage(3,2);
  754. break;
  755. case 12:
  756. HandleZoomMultiPage(4,3);
  757. break;
  758. default:
  759. ChangeZoomSpecial(-2);
  760. break;
  761. }
  762. printimg.scrollIntoView();
  763. }
  764. function HandleZoomMultiPage(x,y)
  765. {
  766. g_zoomLayoutX = x;
  767. g_zoomLayoutY = y;
  768. ChangeZoomSpecial(0);
  769. }
  770. function HandlePrintClick()
  771. {
  772. PrintNow(true);
  773. }
  774. var g_sMarginItemID;
  775. var g_nMarginStartingPos;
  776. var g_nMarginImageOffset;
  777. var g_nMarginLowerLimit;
  778. var g_nMarginUpperLimit;
  779. function HandleMarginMouseDown()
  780. {
  781. if(event.button!=1) return;
  782. if(g_zoomLayout!=-2) return;
  783. var posX = event.x;
  784. var posY = event.y;
  785. if(g_nDispPage <= 0) return;
  786. var oPage = DisplayPage(g_nDispPage);
  787. if(null == oPage) return;
  788. var pageOffsetX;
  789. var pageOffsetY = oPage.style.pixelTop;
  790. if(g_fRTL)
  791. {
  792. pageOffsetX = oPage.style.pixelRight;
  793. }
  794. else
  795. {
  796. pageOffsetX = oPage.style.pixelLeft;
  797. }
  798. var xPageWidth = getPageWidth();
  799. var yPageHeight = getPageHeight();
  800. switch(event.srcElement.id)
  801. {
  802. case "maLeft":
  803. g_nMarginStartingPos = posX;
  804. g_nMarginImageOffset = maLeft.offsetLeft - posX;
  805. g_nMarginLowerLimit = (pageOffsetX * g_nZoomLevel/100) - 10;
  806. g_nMarginUpperLimit = g_nMarginLowerLimit + ((xPageWidth - ((g_nMarginRight+0.5)*g_nScreenDPI)) * g_nZoomLevel/100);
  807. break;
  808. case "maRight":
  809. g_nMarginStartingPos = posX;
  810. g_nMarginImageOffset = maRight.offsetLeft - posX;
  811. g_nMarginLowerLimit = (pageOffsetX * g_nZoomLevel/100) - 10;
  812. g_nMarginUpperLimit = g_nMarginLowerLimit + (xPageWidth * g_nZoomLevel/100);
  813. g_nMarginLowerLimit += ((g_nMarginLeft+0.5)*g_nScreenDPI) * g_nZoomLevel/100;
  814. break;
  815. case "maTop":
  816. g_nMarginStartingPos = posY;
  817. g_nMarginImageOffset = maTop.offsetTop - posY;
  818. g_nMarginLowerLimit = (pageOffsetY * g_nZoomLevel/100) - 10;
  819. g_nMarginUpperLimit = g_nMarginLowerLimit + ((yPageHeight - ((g_nMarginBottom+0.5)*g_nScreenDPI)) * g_nZoomLevel/100);
  820. break;
  821. case "maBottom":
  822. g_nMarginStartingPos = posY;
  823. g_nMarginImageOffset = maBottom.offsetTop - posY;
  824. g_nMarginLowerLimit = (pageOffsetY * g_nZoomLevel/100) - 10;
  825. g_nMarginUpperLimit = g_nMarginLowerLimit + (yPageHeight * g_nZoomLevel/100);
  826. g_nMarginLowerLimit += ((g_nMarginTop+0.5)*g_nScreenDPI) * g_nZoomLevel/100;
  827. break;
  828. default:
  829. return;
  830. }
  831. g_sMarginItemID = event.srcElement.id;
  832. UpdateMarginBox();
  833. OverflowContainer.setCapture();
  834. }
  835. function ReflowDocument()
  836. {
  837. if(IsShrinkToFit())
  838. {
  839. g_nScalePercent = 100;
  840. g_fCheckAutoFit = true;
  841. g_fCheckOrphan = true;
  842. }
  843. EnsureDocuments(true);
  844. }
  845. function IsShrinkToFit()
  846. {
  847. return parseInt(selectScale.options[selectScale.selectedIndex].value) == (-1);
  848. }
  849. function UpdateMarginBox()
  850. {
  851. MarginBox.style.pixelLeft = maLeft.style.pixelLeft + 10;
  852. MarginBox.style.pixelWidth = maRight.style.pixelLeft - maLeft.style.pixelLeft;
  853. MarginBox.style.pixelTop = maTop.style.pixelTop + 10;
  854. MarginBox.style.pixelHeight = maBottom.style.pixelTop - maTop.style.pixelTop;
  855. MarginBox.style.display = "block";
  856. }
  857. function HandleMarginMouseUp()
  858. {
  859. if(g_sMarginItemID==null) return;
  860. if(((g_sMarginItemID=="maLeft" || g_sMarginItemID=="maRight") && g_nMarginStartingPos==event.x)
  861. || ((g_sMarginItemID=="maTop" || g_sMarginItemID=="maBottom") && g_nMarginStartingPos==event.y))
  862. {
  863. g_sMarginItemID = null;
  864. MarginBox.style.display = "none";
  865. OverflowContainer.releaseCapture();
  866. return;
  867. }
  868. var posX = event.x + g_nMarginImageOffset + 10;
  869. var posY = event.y + g_nMarginImageOffset + 10;
  870. posX *= 100/g_nZoomLevel;
  871. posY *= 100/g_nZoomLevel;
  872. var oPage = DisplayPage(g_nDispPage);
  873. var pageOffsetX;
  874. var pageOffsetY = oPage.style.pixelTop;
  875. var xPageWidth = getPageWidth();
  876. var yPageHeight = getPageHeight();
  877. var fReflow = false;
  878. var limit;
  879. if(g_fRTL)
  880. {
  881. pageOffsetX = oPage.style.pixelRight;
  882. }
  883. else
  884. {
  885. pageOffsetX = oPage.style.pixelLeft;
  886. }
  887. switch(g_sMarginItemID)
  888. {
  889. case "maLeft":
  890. var newLeft = Math.floor((posX - pageOffsetX) * 100 / g_nScreenDPI);
  891. limit = Printer.pageWidth - Printer.marginRight - 50;
  892. if(newLeft > limit) newLeft = limit;
  893. if(newLeft<0) newLeft = 0;
  894. if(Printer.marginLeft!=newLeft)
  895. {
  896. Printer.marginLeft = newLeft;
  897. fReflow = true;
  898. }
  899. break;
  900. case "maRight":
  901. var newRight = Math.floor((pageOffsetX + xPageWidth - posX) * 100 / g_nScreenDPI);
  902. limit = Math.floor((g_nPageWidth-g_nMarginLeft-0.5)*100);
  903. if(newRight > limit) newRight = limit;
  904. if(newRight<0) newRight = 0;
  905. if(Printer.marginRight!=newRight)
  906. {
  907. Printer.marginRight = newRight;
  908. fReflow = true;
  909. }
  910. break;
  911. case "maTop":
  912. var newTop = Math.floor((posY - pageOffsetY) * 100 / g_nScreenDPI);
  913. limit = Math.floor((g_nPageHeight-g_nMarginBottom-0.5)*100);
  914. if(newTop > limit) newTop = limit;
  915. if(newTop<0) newTop = 0;
  916. if(Printer.marginTop != newTop)
  917. {
  918. Printer.marginTop = newTop;
  919. fReflow = true;
  920. }
  921. break;
  922. case "maBottom":
  923. var newBottom = Math.floor((pageOffsetY + yPageHeight - posY) * 100 / g_nScreenDPI);
  924. if(newBottom<0) newBottom = 0;
  925. limit = Math.floor((g_nPageHeight-g_nMarginTop-0.5)*100);
  926. if(newBottom > limit) newBottom = limit;
  927. if(Printer.marginBottom != newBottom)
  928. {
  929. Printer.marginBottom = newBottom;
  930. fReflow = true;
  931. }
  932. break;
  933. }
  934. if(fReflow)
  935. {
  936. ReflowDocument();
  937. }
  938. else
  939. {
  940. PositionPages(g_nDispPage);
  941. }
  942. g_sMarginItemID = null;
  943. MarginBox.style.display = "none";
  944. OverflowContainer.releaseCapture();
  945. }
  946. function HandleMarginMouseMove()
  947. {
  948. if(g_sMarginItemID==null) return;
  949. var posX = event.x + g_nMarginImageOffset;
  950. var posY = event.y + g_nMarginImageOffset;
  951. switch(g_sMarginItemID)
  952. {
  953. case "maLeft":
  954. if(posX < g_nMarginLowerLimit) posX = g_nMarginLowerLimit;
  955. if(posX > g_nMarginUpperLimit) posX = g_nMarginUpperLimit;
  956. maLeft.style.left = posX;
  957. break;
  958. case "maRight":
  959. if(posX < g_nMarginLowerLimit) posX = g_nMarginLowerLimit;
  960. if(posX > g_nMarginUpperLimit) posX = g_nMarginUpperLimit;
  961. maRight.style.left = posX;
  962. break;
  963. case "maTop":
  964. if(posY < g_nMarginLowerLimit) posY = g_nMarginLowerLimit;
  965. if(posY > g_nMarginUpperLimit) posY = g_nMarginUpperLimit;
  966. maTop.style.top = posY;
  967. break;
  968. case "maBottom":
  969. if(posY < g_nMarginLowerLimit) posY = g_nMarginLowerLimit;
  970. if(posY > g_nMarginUpperLimit) posY = g_nMarginUpperLimit;
  971. maBottom.style.top = posY;
  972. break;
  973. }
  974. UpdateMarginBox();
  975. }
  976. function UpdateFramesetSelect()
  977. {
  978. if(g_aDocTree["S"]==null)
  979. {
  980. selectFrameset.options.remove(3);
  981. }
  982. if ( g_aDocTree["C"]._fFrameset )
  983. {
  984. if (!g_strActiveFrame)
  985. {
  986. selectFrameset.options.remove(1);
  987. }
  988. separatorFrameset.style.display = "inline";
  989. cellFrameset.style.display = "inline";
  990. }
  991. if(g_aDocTree["S"]!=null)
  992. {
  993. if(!g_aDocTree["C"]._fFrameset)
  994. {
  995. selectFrameset.options.remove(2);
  996. selectFrameset.options.remove(1);
  997. }
  998. if(g_nFramesetLayout == 3)
  999. {
  1000. idSelection.selected = true;
  1001. }
  1002. separatorFrameset.style.display = "inline";
  1003. cellFrameset.style.display = "inline";
  1004. }
  1005. }
  1006. function getPageWidth()
  1007. {
  1008. return g_aDocTree["C"].Page(1).offsetWidth;
  1009. }
  1010. function getPageHeight()
  1011. {
  1012. return g_aDocTree["C"].Page(1).offsetHeight;
  1013. }
  1014. function UndisplayPages()
  1015. {
  1016. while (g_cPagesDisplayed > 0)
  1017. {
  1018. var oPage = DisplayPage(g_nDispPage + g_cPagesDisplayed - 1);
  1019. if (oPage != null)
  1020. {
  1021. oPage.style.top = "-20000px";
  1022. if (g_fRTL)
  1023. {
  1024. oPage.style.right = "10px";
  1025. }
  1026. else
  1027. {
  1028. oPage.style.left = "10px";
  1029. }
  1030. }
  1031. g_cPagesDisplayed--;
  1032. }
  1033. var oAnchorRule = GetRuleFromSelector(".MarginAnchor");
  1034. oAnchorRule.style.display = "none";
  1035. }
  1036. function PositionPages(nDispPage)
  1037. {
  1038. var fRendering = false;
  1039. if((g_fCheckAutoFit || g_fCheckOrphan) && g_nDocsToCalc>0) {
  1040. UndisplayPages();
  1041. fRendering = true;
  1042. }
  1043. var strDispDoc = DisplayDocument(nDispPage);
  1044. if (g_aDocTree != null &&
  1045. g_aDocTree[strDispDoc] != null &&
  1046. g_aDocTree[strDispDoc].Pages() > 0)
  1047. {
  1048. UndisplayPages();
  1049. RecalculateZoom();
  1050. MasterContainer.style.zoom = g_nZoomLevel + "%";
  1051. var xPageWidth = getPageWidth();
  1052. var yPageHeight = getPageHeight();
  1053. var nMaxPage = TotalDisplayPages();
  1054. var xContainerWidth = (OverflowContainer.offsetWidth)*100/g_nZoomLevel;
  1055. var yContainerHeight = OverflowContainer.offsetHeight*100/g_nZoomLevel;
  1056. if(g_zoomLayout==0) {
  1057. g_cxDisplaySlots = g_zoomLayoutX;
  1058. g_cyDisplaySlots = g_zoomLayoutY;
  1059. } else {
  1060. g_cxDisplaySlots = 1;
  1061. g_cyDisplaySlots = 1;
  1062. }
  1063. var yOff = (yContainerHeight - (g_cyDisplaySlots * yPageHeight) - ((g_cyDisplaySlots-1)*10)) / 2;
  1064. if(yOff<0)
  1065. {
  1066. xContainerWidth -= 20*100/g_nZoomLevel;
  1067. yOff = 10;
  1068. }
  1069. var xOff = (xContainerWidth - (g_cxDisplaySlots * xPageWidth) - ((g_cxDisplaySlots-1)*10)) / 2;
  1070. if(xOff<0) xOff = 0;
  1071. if(fRendering)
  1072. {
  1073. EmptyPage.style.left = xOff;
  1074. EmptyPage.style.top = yOff;
  1075. EmptyPage.style.display = "block";
  1076. return;
  1077. } else {
  1078. EmptyPage.style.display = "none";
  1079. }
  1080. var nMaxPageRequest = Math.max(nMaxPage - g_cxDisplaySlots * g_cyDisplaySlots + 1, 1);
  1081. if (nDispPage < 1)
  1082. {
  1083. nDispPage = 1;
  1084. }
  1085. else if (nDispPage > nMaxPageRequest)
  1086. {
  1087. nDispPage = nMaxPageRequest;
  1088. }
  1089. g_nDispPage = nDispPage;
  1090. document.all.spanPageTotal.innerText = nMaxPage;
  1091. document.all.inputPageNum.value = g_nDispPage;
  1092. updateNavButtons();
  1093. var xDisplaySlot = 1;
  1094. var yDisplaySlot = 1;
  1095. var iPage = g_nDispPage;
  1096. g_cPagesDisplayed = 0;
  1097. while (iPage <= nMaxPage && yDisplaySlot <= g_cyDisplaySlots)
  1098. {
  1099. var xPos = xOff + (xDisplaySlot-1)*(xPageWidth+10);
  1100. var yPos = yOff + (yDisplaySlot-1)*(yPageHeight+10);
  1101. var oPage = DisplayPage(iPage);
  1102. if (g_fRTL)
  1103. {
  1104. oPage.style.right = xPos;
  1105. }
  1106. else
  1107. {
  1108. oPage.style.left = xPos;
  1109. }
  1110. oPage.style.top = yPos;
  1111. iPage++;
  1112. if (++xDisplaySlot > g_cxDisplaySlots)
  1113. {
  1114. xDisplaySlot = 1;
  1115. yDisplaySlot++;
  1116. }
  1117. g_cPagesDisplayed++;
  1118. }
  1119. var oAnchorRule = GetRuleFromSelector(".MarginAnchor");
  1120. if(g_zoomLayout==-2)
  1121. {
  1122. var oPage = DisplayPage(g_nDispPage);
  1123. if(g_fRTL)
  1124. {
  1125. maLeft.style.pixelLeft = (oPage.style.pixelRight * g_nZoomLevel/100) - 10;
  1126. maTop.style.left = (oPage.style.pixelRight * g_nZoomLevel/100) - 24;
  1127. maRight.style.left = ((oPage.style.pixelRight + xPageWidth) * g_nZoomLevel/100) - 10;
  1128. }
  1129. else
  1130. {
  1131. maLeft.style.pixelLeft = (oPage.style.pixelLeft * g_nZoomLevel/100) - 10;
  1132. maTop.style.left = (oPage.style.pixelLeft * g_nZoomLevel/100) - 20;
  1133. maRight.style.left = ((oPage.style.pixelLeft + xPageWidth) * g_nZoomLevel/100) - 10;
  1134. }
  1135. maLeft.style.pixelTop = (oPage.style.pixelTop * g_nZoomLevel/100) - 20;
  1136. maTop.style.top = oPage.style.pixelTop * g_nZoomLevel/100 - 10;
  1137. maRight.style.top = maLeft.style.pixelTop;
  1138. maBottom.style.left = maTop.style.pixelLeft;
  1139. maBottom.style.top = ((oPage.style.pixelTop + yPageHeight) * g_nZoomLevel/100) - 10;
  1140. maLeft.style.pixelLeft += g_nMarginLeft * g_nScreenDPI * g_nZoomLevel/100;
  1141. maTop.style.pixelTop += g_nMarginTop * g_nScreenDPI * g_nZoomLevel/100;
  1142. maRight.style.pixelLeft -= g_nMarginRight * g_nScreenDPI * g_nZoomLevel/100;
  1143. maBottom.style.pixelTop -= g_nMarginBottom * g_nScreenDPI * g_nZoomLevel/100;
  1144. oAnchorRule.style.display = "block";
  1145. }
  1146. else
  1147. {
  1148. oAnchorRule.style.display = "none";
  1149. }
  1150. }
  1151. }
  1152. function ChangeDispPage(nDispPageNew)
  1153. {
  1154. if (isNaN(nDispPageNew))
  1155. {
  1156. inputPageNum.value = g_nDispPage;
  1157. }
  1158. else
  1159. {
  1160. var totalPages = TotalDisplayPages();
  1161. if (nDispPageNew < 1)
  1162. {
  1163. nDispPageNew = 1;
  1164. }
  1165. else if (nDispPageNew > totalPages)
  1166. {
  1167. nDispPageNew = totalPages;
  1168. }
  1169. if((!g_fCheckAutoFit && !g_fCheckOrphan) || g_nDocsToCalc>0)
  1170. {
  1171. PositionPages(nDispPageNew);
  1172. }
  1173. }
  1174. return g_nDispPage;
  1175. }
  1176. function DisplayDocument(nWhichPage)
  1177. {
  1178. switch (g_nFramesetLayout)
  1179. {
  1180. case 0:
  1181. return "C";
  1182. break;
  1183. case 1:
  1184. return g_strActiveFrame;
  1185. break;
  1186. case 3:
  1187. return "S";
  1188. break;
  1189. case 2:
  1190. var i;
  1191. if (!nWhichPage)
  1192. return null;
  1193. ;
  1194. for (i in g_aDocTree)
  1195. {
  1196. if ( nWhichPage >= g_aDocTree[i]._nStartingPage
  1197. && nWhichPage < (g_aDocTree[i]._nStartingPage + g_aDocTree[i].Pages()))
  1198. return i;
  1199. }
  1200. break;
  1201. default:
  1202. HandleError("Display document cannot be found!", document.URL, "DisplayDocument");
  1203. break;
  1204. }
  1205. }
  1206. function TotalDisplayPages()
  1207. {
  1208. if (g_nFramesetLayout == 2)
  1209. {
  1210. return g_nTotalPages;
  1211. }
  1212. return g_aDocTree[DisplayDocument()].Pages();
  1213. }
  1214. function DisplayPage(nWhichPage)
  1215. {
  1216. ;
  1217. if (g_nFramesetLayout != 2)
  1218. {
  1219. return g_aDocTree[DisplayDocument(nWhichPage)].Page(nWhichPage);
  1220. }
  1221. return g_aDocTree[DisplayDocument(nWhichPage)].Page(nWhichPage - g_aDocTree[DisplayDocument(nWhichPage)]._nStartingPage + 1);
  1222. }
  1223. function DisplayPageLayoutRect(nWhichPage)
  1224. {
  1225. var oPage = DisplayPage(nWhichPage);
  1226. if(oPage==null) return null;
  1227. var oRectColl = oPage.getElementsByTagName("LAYOUTRECT");
  1228. if(oRectColl==null || oRectColl.length==0) return null;
  1229. ;
  1230. return oRectColl[0];
  1231. }
  1232. function ChangeZoom()
  1233. {
  1234. MasterContainer.style.zoom = g_nZoomLevel + "%";
  1235. PositionPages(g_nDispPage);
  1236. return g_nZoomLevel;
  1237. }
  1238. function ChangeZoomSpecial(zoomtype)
  1239. {
  1240. CalculateZoomSpecial(zoomtype);
  1241. ChangeZoom();
  1242. }
  1243. function RecalculateZoom()
  1244. {
  1245. CalculateZoomSpecial(g_zoomLayout);
  1246. }
  1247. function CalculateZoomSpecial(zoomtype)
  1248. {
  1249. var xPage = getPageWidth();
  1250. var yPage = getPageHeight();
  1251. if(xPage==0 || yPage==0) return;
  1252. var xContainer = OverflowContainer.offsetWidth;
  1253. var yContainer = OverflowContainer.offsetHeight;
  1254. if(zoomtype==0 && g_zoomLayoutX==1 && g_zoomLayoutY==1) {
  1255. zoomtype = -2;
  1256. }
  1257. var x,y;
  1258. var factor = 100;
  1259. switch(zoomtype) {
  1260. case -1:
  1261. factor = Math.floor(((xContainer - 40)*100)/xPage);
  1262. break;
  1263. case -2:
  1264. x = Math.floor(((xContainer - 40)*100)/xPage);
  1265. y = Math.floor(((yContainer - 40)*100)/yPage);
  1266. factor = Math.min(x,y);
  1267. break;
  1268. case 0:
  1269. x = Math.floor(((xContainer - 20)*100)/((xPage+10)*g_zoomLayoutX));
  1270. y = Math.floor(((yContainer - 20)*100)/((yPage+10)*g_zoomLayoutY));
  1271. factor = Math.min(x,y);
  1272. break;
  1273. default:
  1274. return;
  1275. }
  1276. if(factor<10) factor = 10;
  1277. else if(factor>1000) factor = 1000;
  1278. g_zoomLayout = zoomtype;
  1279. g_nZoomLevel = factor;
  1280. }
  1281. function BuildTableOfLinks(docSource)
  1282. {
  1283. var aLinks = docSource.links;
  1284. var nLinks = aLinks.length;
  1285. if (nLinks > 0)
  1286. {
  1287. var fDuplicate;
  1288. var i;
  1289. var j;
  1290. var newHTM;
  1291. var docLinkTable = document.createElement("BODY");
  1292. var L_LINKSHEADER1_Text = "Shortcut Text";
  1293. var L_LINKSHEADER2_Text = "Internet Address";
  1294. newHTM = "<CENTER><TABLE BORDER=1>";
  1295. newHTM += "<THEAD style=\"display:table-header-group\"><TR><TH>"
  1296. + L_LINKSHEADER1_Text
  1297. + "</TH><TH>" + L_LINKSHEADER2_Text + "</TH></TR></THEAD><TBODY>";
  1298. for (i = 0; i < nLinks; i++)
  1299. {
  1300. fDuplicate = false;
  1301. for (j = 0; (!fDuplicate) && (j < i); j++)
  1302. {
  1303. if (aLinks[i].href == aLinks[j].href)
  1304. {
  1305. fDuplicate = true;
  1306. }
  1307. }
  1308. if (!fDuplicate)
  1309. {
  1310. newHTM += ("<TR><TD>" + aLinks[i].innerText + "</TD><TD>" + aLinks[i].href + "</TD></TR>");
  1311. }
  1312. }
  1313. newHTM += "</TBODY></TABLE></CENTER>";
  1314. docLinkTable.innerHTML = newHTM;
  1315. return docLinkTable.document;
  1316. }
  1317. return null;
  1318. }
  1319. function CreateDocument(docURL, strDocID, fUseStreamHeader)
  1320. {
  1321. if (g_aDocTree[strDocID])
  1322. {
  1323. return;
  1324. }
  1325. g_aDocTree[strDocID] = new CPrintDoc(strDocID, docURL);
  1326. g_aDocTree[strDocID].InitDocument(fUseStreamHeader);
  1327. g_nDocsToCalc++;
  1328. }
  1329. function ChangeFramesetLayout(nNewLayout, fForce)
  1330. {
  1331. if (g_nFramesetLayout == nNewLayout && !fForce)
  1332. {
  1333. return;
  1334. }
  1335. UndisplayPages();
  1336. g_nFramesetLayout = nNewLayout;
  1337. switch (nNewLayout)
  1338. {
  1339. case 0:
  1340. case 1:
  1341. case 3:
  1342. break;
  1343. case 2:
  1344. g_nTotalPages = 0;
  1345. var i;
  1346. for (i in g_aDocTree)
  1347. {
  1348. if (g_aDocTree[i]._fFrameset || i == "S")
  1349. {
  1350. g_aDocTree[i]._nStartingPage = 0;
  1351. }
  1352. else
  1353. {
  1354. g_aDocTree[i]._nStartingPage = g_nTotalPages + 1;
  1355. g_nTotalPages += g_aDocTree[i].Pages();
  1356. }
  1357. }
  1358. break;
  1359. default:
  1360. HandleError("Impossible frameset layout type: " + nNewLayout, document.URL, "ChangeFramesetLayout");
  1361. break;
  1362. }
  1363. ChangeDispPage(1);
  1364. }
  1365. function EnsureDocuments(fForceRepaginate)
  1366. {
  1367. var i;
  1368. var tmp;
  1369. var top = Printer.marginTop / 100;
  1370. var bottom = Printer.marginBottom / 100;
  1371. var left = Printer.marginLeft / 100;
  1372. var right = Printer.marginRight / 100;
  1373. var pageWidth = Printer.pageWidth / 100;
  1374. var pageHeight = Printer.pageHeight / 100;
  1375. var linktable = Printer.tableOfLinks;
  1376. var upTop = Printer.unprintableTop / 100;
  1377. var upBottom = Printer.unprintableBottom / 100;
  1378. var header = Printer.header;
  1379. var footer = Printer.footer;
  1380. if (header)
  1381. {
  1382. tmp = upTop + (27 / 100);
  1383. if (tmp > top)
  1384. {
  1385. top = tmp;
  1386. }
  1387. }
  1388. if (footer)
  1389. {
  1390. tmp = upBottom + (27 / 100);
  1391. if (tmp > bottom)
  1392. {
  1393. bottom = tmp;
  1394. }
  1395. }
  1396. if (upTop != g_nUnprintTop)
  1397. {
  1398. g_nUnprintTop = upTop;
  1399. var oRule = GetRuleFromSelector(".divHead");
  1400. if (oRule == null)
  1401. {
  1402. HandleError("'.divHead' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  1403. }
  1404. oRule.style.top = upTop + "in";
  1405. if(g_fRTL)
  1406. {
  1407. oRule.style.direction = "rtl";
  1408. }
  1409. }
  1410. if (upBottom != g_nUnprintBottom)
  1411. {
  1412. g_nUnprintBottom= upBottom;
  1413. var oRule = GetRuleFromSelector(".divFoot");
  1414. if (oRule == null)
  1415. {
  1416. HandleError("'.divFoot' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  1417. }
  1418. oRule.style.bottom = upBottom + "in";
  1419. if(g_fRTL)
  1420. {
  1421. oRule.style.direction = "rtl";
  1422. }
  1423. }
  1424. if (top != g_nMarginTop ||
  1425. bottom != g_nMarginBottom ||
  1426. left != g_nMarginLeft ||
  1427. right != g_nMarginRight ||
  1428. pageWidth != g_nPageWidth ||
  1429. pageHeight != g_nPageHeight ||
  1430. header != g_strHeader ||
  1431. footer != g_strFooter ||
  1432. fForceRepaginate == true)
  1433. {
  1434. var conWidth = pageWidth - left - right;
  1435. var conHeight = pageHeight - top - bottom;
  1436. var oStyleSheet = document.styleSheets[0];
  1437. var oRule;
  1438. if (conWidth < 0)
  1439. {
  1440. conWidth = 0;
  1441. }
  1442. if (conHeight < 0)
  1443. {
  1444. conHeight = 0;
  1445. }
  1446. UndisplayPages();
  1447. g_nTotalPages = 0;
  1448. g_nDocsToCalc = 0;
  1449. for (i in g_aDocTree)
  1450. {
  1451. g_nDocsToCalc++;
  1452. g_aDocTree[i].ResetDocument();
  1453. }
  1454. g_ObsoleteBar++;
  1455. g_nMarginTop = top;
  1456. g_nMarginBottom = bottom;
  1457. g_nMarginLeft = left;
  1458. g_nMarginRight = right;
  1459. g_nPageWidth = pageWidth;
  1460. g_nPageHeight = pageHeight;
  1461. g_fTableofLinks = linktable;
  1462. g_strHeader = header;
  1463. g_strFooter = footer;
  1464. HeadFoot.textHead = g_strHeader;
  1465. HeadFoot.textFoot = g_strFooter;
  1466. oRule = GetRuleFromSelector(".page");
  1467. if (oRule == null)
  1468. {
  1469. HandleError("'.page' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  1470. }
  1471. oRule.style.width = pageWidth + "in";
  1472. oRule.style.height = pageHeight + "in";
  1473. oRule = GetRuleFromSelector(".mRect");
  1474. if (oRule == null)
  1475. {
  1476. HandleError("'.mRect' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  1477. }
  1478. oRule.style.marginLeft = left + "in";
  1479. oRule.style.marginRight = right + "in";
  1480. oRule.style.marginTop = top + "in";
  1481. oRule.style.marginBottom = bottom + "in";
  1482. oRule.style.width = (conWidth*100/g_nScalePercent) + "in";
  1483. oRule.style.height = (conHeight*100/g_nScalePercent) + "in";
  1484. oRule.style.zoom = g_nScalePercent + "%";
  1485. oRule = GetRuleFromSelector(".divHead");
  1486. if (oRule == null)
  1487. {
  1488. HandleError("'.divHead' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  1489. }
  1490. oRule.style.left = left + "in";
  1491. oRule.style.width = conWidth + "in";
  1492. oRule = GetRuleFromSelector(".divFoot");
  1493. if (oRule == null)
  1494. {
  1495. HandleError("'.divHead' rule does not exist!", document.URL, "CPrintDoc::EnsureDocuments");
  1496. }
  1497. oRule.style.left = left + "in";
  1498. oRule.style.width = conWidth + "in";
  1499. for (i in g_aDocTree)
  1500. {
  1501. g_aDocTree[i].InitDocument((g_aDocTree[i]._anMerge[1] == 1));
  1502. }
  1503. if (g_nFramesetLayout == 2)
  1504. {
  1505. ChangeFramesetLayout(g_nFramesetLayout, true);
  1506. }
  1507. PositionPages(g_nDispPage);
  1508. }
  1509. else if (linktable != g_fTableOfLinks)
  1510. {
  1511. g_fTableOfLinks = linktable;
  1512. for (i in g_aDocTree)
  1513. {
  1514. g_aDocTree[i].ResetTableOfLinks();
  1515. }
  1516. }
  1517. }
  1518. function CalcAutoFit()
  1519. {
  1520. var docWidthPx = 0;
  1521. var docWidthIn = 0;
  1522. var printerWidth = Printer.pageWidth / 100;
  1523. var scale = 100;
  1524. var docClientWidthPx = 0;
  1525. if (g_nScreenDPI == 0)
  1526. {
  1527. return scale;
  1528. }
  1529. printerWidth -= g_nMarginLeft;
  1530. printerWidth -= g_nMarginRight;
  1531. var nCount = TotalDisplayPages();
  1532. var i;
  1533. for(i = 1; i<=nCount; i++)
  1534. {
  1535. var oRect = DisplayPageLayoutRect(i);
  1536. if(oRect!=null)
  1537. {
  1538. if (oRect.scrollWidth > docWidthPx)
  1539. {
  1540. docWidthPx = oRect.scrollWidth;
  1541. }
  1542. if (oRect.clientWidth > docClientWidthPx)
  1543. {
  1544. docClientWidthPx = oRect.clientWidth;
  1545. }
  1546. }
  1547. }
  1548. docWidthIn = docWidthPx * (1/g_nScreenDPI);
  1549. if (docWidthPx == 0 || docClientWidthPx >= docWidthPx)
  1550. {
  1551. return scale;
  1552. }
  1553. scale = (printerWidth / docWidthIn) * 100;
  1554. scale = Math.floor(scale+0.05);
  1555. if (scale < 30)
  1556. {
  1557. scale = 30;
  1558. }
  1559. if (scale > 100)
  1560. {
  1561. scale = 100;
  1562. }
  1563. return scale;
  1564. }
  1565. function IsOrphaned()
  1566. {
  1567. if((g_nFramesetLayout!=0 && g_nFramesetLayout!=1) || TotalDisplayPages()!=2)
  1568. {
  1569. return false;
  1570. }
  1571. var printerHeight = Printer.pageHeight / 100;
  1572. printerHeight -= g_nMarginTop;
  1573. printerHeight -= g_nMarginBottom;
  1574. if(printerHeight <= 0) return false;
  1575. var oSecondRect = DisplayPageLayoutRect(2);
  1576. if(g_nScreenDPI==0) return false;
  1577. var layoutHeight = oSecondRect.scrollHeight/g_nScreenDPI;
  1578. var pageCoverage = layoutHeight * 100 / printerHeight;
  1579. return pageCoverage < 10;
  1580. }
  1581. function CalcOrphanRemovalScale()
  1582. {
  1583. var scale = 100;
  1584. var printerHeight = Printer.pageHeight / 100;
  1585. printerHeight -= g_nMarginTop;
  1586. printerHeight -= g_nMarginBottom;
  1587. if(printerHeight <= 0) return scale;
  1588. var oSecondRect = DisplayPageLayoutRect(2);
  1589. if(oSecondRect==null) return scale;
  1590. if(g_nScreenDPI==0) return false;
  1591. var totalHeight = oSecondRect.scrollHeight;
  1592. totalHeight = totalHeight / g_nScreenDPI;
  1593. totalHeight += printerHeight;
  1594. if(totalHeight <= 0) return scale;
  1595. scale = printerHeight*100/totalHeight;
  1596. scale = Math.floor(scale+0.05);
  1597. if(scale>100) scale = 100;
  1598. return scale;
  1599. }
  1600. function Close()
  1601. {
  1602. Printer.updatePageStatus(-1);
  1603. if (g_fDelayClose)
  1604. {
  1605. g_fDelayClose = false;
  1606. window.setTimeout("Close()", 120000);
  1607. return;
  1608. }
  1609. window.close();
  1610. }
  1611. function PrintAll()
  1612. {
  1613. var i;
  1614. var nFirstDoc;
  1615. if (g_nFramesLeft > 0 && Printer.framesetDocument && !Printer.frameAsShown)
  1616. {
  1617. window.setTimeout("PrintAll()", 100);
  1618. return;
  1619. }
  1620. EnsureDocuments(false);
  1621. if (Printer.copies <= 0)
  1622. {
  1623. Close();
  1624. }
  1625. else if (Printer.selectedPages && Printer.pageFrom > Printer.pageTo )
  1626. {
  1627. var L_PAGERANGE_ErrorMessage = "The 'From' value cannot be greater than the 'To' value.";
  1628. alert(L_PAGERANGE_ErrorMessage);
  1629. ;
  1630. if (!g_fPreview)
  1631. PrintNow(true);
  1632. }
  1633. else
  1634. {
  1635. g_cLeftToPrint = 1;
  1636. Printer.updatePageStatus(1);
  1637. var strSel;
  1638. if (Printer.selection)
  1639. {
  1640. strSel = "S";
  1641. }
  1642. else if (Printer.frameActive && !!g_strActiveFrame)
  1643. {
  1644. strSel = g_strActiveFrame;
  1645. }
  1646. else
  1647. {
  1648. strSel = "C";
  1649. }
  1650. PrintSentinel(strSel, true);
  1651. }
  1652. }
  1653. function PrintSentinel(strDoc, fRecursionOK)
  1654. {
  1655. if (g_fCheckAutoFit || g_fCheckOrphan || !g_aDocTree[strDoc] || !g_aDocTree[strDoc].ReadyToPrint())
  1656. {
  1657. window.setTimeout("PrintSentinel('" + strDoc + "'," + fRecursionOK + ");", 500);
  1658. return;
  1659. }
  1660. g_aDocTree[strDoc].Print(fRecursionOK);
  1661. }
  1662. function PrintDocumentComplete()
  1663. {
  1664. g_cLeftToPrint--;
  1665. if (g_cLeftToPrint <= 0)
  1666. {
  1667. Close();
  1668. }
  1669. }
  1670. function PrintNow(fWithPrompt)
  1671. {
  1672. if (!g_aDocTree["C"] ||
  1673. !g_aDocTree["C"]._aaRect[1][0] ||
  1674. !g_aDocTree["C"]._aaRect[1][0].contentDocument.body)
  1675. {
  1676. window.setTimeout("PrintNow('" + fWithPrompt + "');", 100);
  1677. return;
  1678. }
  1679. var oDoc = g_aDocTree["C"]._aaRect[1][0].contentDocument;
  1680. var fConfirmed;
  1681. var fFramesetDocument = (oDoc.body.tagName.toUpperCase() == "FRAMESET");
  1682. var fActiveFrame = (oDoc.getElementsByTagName("HTML").item(0).__IE_ActiveFrame != null);
  1683. Printer.framesetDocument = fFramesetDocument;
  1684. Printer.frameActiveEnabled = fActiveFrame;
  1685. if (g_fPreview)
  1686. {
  1687. Printer.frameActive = (g_nFramesetLayout == 1 || g_nFramesetLayout == 3);
  1688. Printer.frameAsShown = (g_nFramesetLayout == 0);
  1689. Printer.currentPageAvail = true;
  1690. }
  1691. else
  1692. {
  1693. Printer.frameActive = fActiveFrame;
  1694. Printer.frameAsShown = false;
  1695. Printer.currentPageAvail = false;
  1696. }
  1697. Printer.selectionEnabled = !!(dialogArguments.__IE_ContentSelectionUrl);
  1698. Printer.selection = Printer.selectionEnabled && (g_nFramesetLayout == 3);
  1699. fConfirmed = (eval(fWithPrompt)) ? Printer.showPrintDialog() : Printer.ensurePrintDialogDefaults();
  1700. if (fConfirmed)
  1701. {
  1702. if (Printer.selection && dialogArguments.__IE_ContentSelectionUrl && g_aDocTree["S"]==null)
  1703. {
  1704. CreateDocument(dialogArguments.__IE_ContentSelectionUrl, "S", true);
  1705. }
  1706. Printer.usePrinterCopyCollate =(Printer.deviceSupports("copies") >= Printer.copies &&
  1707. (!Printer.collate || Printer.deviceSupports("collate")) );
  1708. PrintAll();
  1709. }
  1710. else
  1711. {
  1712. if (!g_fPreview)
  1713. {
  1714. Close();
  1715. }
  1716. else
  1717. {
  1718. Printer.tableoflinks = false;
  1719. }
  1720. }
  1721. }
  1722. function CPrintDoc_ReadyToPrint()
  1723. {
  1724. if(g_fCheckAutoFit || g_fCheckOrphan) return false;
  1725. return (this._nStatus == 4 && this._aaRect[1][0].contentDocument.readyState == "complete");
  1726. }
  1727. function CPrintDoc_Print(fRecursionOK)
  1728. {
  1729. if (!this.ReadyToPrint())
  1730. {
  1731. HandleError("Printing when not ready!", document.URL, "CPrintDoc::Print");
  1732. return;
  1733. }
  1734. var nCount = (Printer.usePrinterCopyCollate) ? 1 : Printer.copies;
  1735. var nFrom;
  1736. var nTo;
  1737. ;
  1738. if (fRecursionOK)
  1739. {
  1740. var fFrameset = (this._aaRect[1][0].contentDocument.body.tagName.toUpperCase() == "FRAMESET");
  1741. if (Printer.frameActive)
  1742. {
  1743. var n = parseInt(this._aaRect[1][0].contentDocument.getElementsByTagName("HTML").item(0).__IE_ActiveFrame);
  1744. if (n >= 0)
  1745. {
  1746. var oTargetFrame = (fFrameset)
  1747. ? this._aaRect[1][0].contentDocument.getElementsByTagName("FRAME").item(n)
  1748. : this._aaRect[1][0].contentDocument.getElementsByTagName("IFRAME").item(n);
  1749. if (IsPersistedDoc() &&
  1750. (oTargetFrame.src == "res://IEFRAME.DLL/printnof.htm" ||
  1751. oTargetFrame.src == "about:blank"))
  1752. {
  1753. Printer.printNonNativeFrames(this._aaRect[1][0].contentDocument, true);
  1754. }
  1755. else
  1756. {
  1757. this.CreateSubDocument(oTargetFrame.src, true);
  1758. this.PrintAllSubDocuments(true);
  1759. }
  1760. PrintDocumentComplete();
  1761. return;
  1762. }
  1763. }
  1764. if (fFrameset)
  1765. {
  1766. if (!Printer.frameAsShown)
  1767. {
  1768. this.PrintAllSubDocuments(true);
  1769. if (IsPersistedDoc())
  1770. {
  1771. Printer.printNonNativeFrames(this._aaRect[1][0].contentDocument, false);
  1772. }
  1773. PrintDocumentComplete();
  1774. return;
  1775. }
  1776. else
  1777. {
  1778. Printer.printNonNativeFrames(this._aaRect[1][0].contentDocument, false);
  1779. }
  1780. }
  1781. else
  1782. {
  1783. if (Printer.allLinkedDocuments)
  1784. {
  1785. this.BuildAllLinkedDocuments();
  1786. this.PrintAllSubDocuments(false);
  1787. }
  1788. }
  1789. }
  1790. if (Printer.printNonNative(this._aaRect[1][0].contentDocument) )
  1791. {
  1792. g_fDelayClose = !g_fPreview;
  1793. PrintDocumentComplete();
  1794. return;
  1795. }
  1796. if (Printer.selectedPages)
  1797. {
  1798. nFrom = Printer.pageFrom;
  1799. nTo = Printer.pageTo;
  1800. if (nFrom < 1)
  1801. {
  1802. nFrom = 1;
  1803. }
  1804. if (nTo > this.Pages())
  1805. {
  1806. nTo = this.Pages();
  1807. }
  1808. }
  1809. else if ( Printer.currentPage
  1810. && this._strDoc == DisplayDocument())
  1811. {
  1812. nFrom = (this.Pages() >= g_nDispPage) ? g_nDispPage : this.Pages();
  1813. nTo = nFrom;
  1814. }
  1815. else
  1816. {
  1817. nFrom = 1;
  1818. nTo = this.Pages();
  1819. }
  1820. if (nTo < nFrom)
  1821. {
  1822. PrintDocumentComplete();
  1823. return;
  1824. }
  1825. ;
  1826. ;
  1827. ;
  1828. if (Printer.startDoc(this._aaRect[1][0].contentDocument.URL))
  1829. {
  1830. if (Printer.collate)
  1831. {
  1832. var fExtraPage = (Printer.duplex && ((nFrom - nTo) % 2 == 0));
  1833. var j;
  1834. for (j = 0; j < nCount; j++)
  1835. {
  1836. for (i = nFrom; i <= nTo; i++)
  1837. {
  1838. Printer.printPage(this.Page(i).children[0]);
  1839. }
  1840. if (fExtraPage)
  1841. {
  1842. Printer.printBlankPage();
  1843. }
  1844. }
  1845. }
  1846. else
  1847. {
  1848. var fDuplex = Printer.duplex;
  1849. for (i = nFrom; i <= nTo; i++)
  1850. {
  1851. for (j = 0; j < nCount; j++)
  1852. {
  1853. Printer.printPage(this.Page(i).children[0]);
  1854. if (fDuplex)
  1855. {
  1856. if (i < nTo)
  1857. {
  1858. Printer.printPage(this.Page(i+1));
  1859. }
  1860. else
  1861. {
  1862. Printer.printBlankPage();
  1863. }
  1864. }
  1865. }
  1866. if (fDuplex)
  1867. {
  1868. i++;
  1869. }
  1870. }
  1871. }
  1872. Printer.stopDoc();
  1873. }
  1874. PrintDocumentComplete();
  1875. }
  1876. function CPrintDoc_RectComplete(fOverflow, strElement)
  1877. {
  1878. var nStatus = parseInt(strElement.substr(5,1));
  1879. var nPage = parseInt(strElement.substr(strElement.lastIndexOf("p") + 1));
  1880. ;
  1881. ;
  1882. if (nStatus > this._nStatus)
  1883. {
  1884. return false;
  1885. }
  1886. if (nPage != this._acPage[nStatus] - 1 + this._anMerge[nStatus])
  1887. {
  1888. return false;
  1889. }
  1890. if (nStatus != this._nStatus)
  1891. {
  1892. if (!fOverflow)
  1893. {
  1894. return false;
  1895. }
  1896. this.StopFixupHF();
  1897. if (this._nStatus == 4)
  1898. {
  1899. g_nDocsToCalc++;
  1900. }
  1901. this._nStatus = nStatus;
  1902. }
  1903. if (fOverflow)
  1904. {
  1905. this.AddPage();
  1906. }
  1907. else
  1908. {
  1909. switch (this._nStatus)
  1910. {
  1911. case 0:
  1912. this._nStatus = 1;
  1913. this.AddFirstPage();
  1914. this._aaRect[this._nStatus][0].contentSrc = this._strDocURL;
  1915. break;
  1916. case 1:
  1917. this._nStatus = 2;
  1918. this.AddTableOfLinks();
  1919. break;
  1920. case 2:
  1921. this._nStatus = 3;
  1922. if (this._strDoc == DisplayDocument()) {
  1923. ChangeDispPage(g_nDispPage);
  1924. }
  1925. this.FixupHF();
  1926. break;
  1927. }
  1928. }
  1929. if (this._strDoc == DisplayDocument())
  1930. {
  1931. spanPageTotal.innerText = this.Pages();
  1932. updateNavButtons();
  1933. }
  1934. }
  1935. function CPrintDoc_AddPage()
  1936. {
  1937. var newHTM = "";
  1938. var aPage = this._aaPage[this._nStatus];
  1939. var aRect = this._aaRect[this._nStatus];
  1940. ;
  1941. (this._acPage[this._nStatus])++;
  1942. HeadFoot.URL = this.EnsureURL();
  1943. HeadFoot.title = this.EnsureTitle();
  1944. HeadFoot.pageTotal = this.Pages();
  1945. HeadFoot.page = HeadFoot.pageTotal;
  1946. if (this._acPage[this._nStatus] <= aPage.length)
  1947. {
  1948. var oPage = aPage[this._acPage[this._nStatus] - 1];
  1949. oPage.children("header").innerHTML = HeadFoot.HtmlHead;
  1950. oPage.children("footer").innerHTML = HeadFoot.HtmlFoot;
  1951. }
  1952. else
  1953. {
  1954. newHTM = "<DIV class=divPage><IE:DeviceRect media=\"print\" class=page id=mDiv" + this._nStatus + this._strDoc + "p" + aPage.length + ">";
  1955. newHTM += "<IE:LAYOUTRECT id=mRect" + this._nStatus + this._strDoc + "p" + aRect.length;
  1956. newHTM += " class=mRect nextRect=mRect" + this._nStatus + this._strDoc + "p" + (aRect.length + 1);
  1957. newHTM += " onlayoutcomplete=\"OnRectComplete('" + this._strDoc + "', " + g_ObsoleteBar + ")\"";
  1958. newHTM += " tabindex=-1 onbeforefocusenter='event.returnValue=false;' ";
  1959. newHTM += " />";
  1960. newHTM += "<DIV class=divHead id=header>";
  1961. newHTM += HeadFoot.HtmlHead;
  1962. newHTM += "</DIV><DIV class=divFoot id=footer>";
  1963. newHTM += HeadFoot.HtmlFoot;
  1964. newHTM += "</DIV>";
  1965. newHTM += "</IE:DeviceRect></DIV>";
  1966. MasterContainer.insertAdjacentHTML("beforeEnd", newHTM);
  1967. aPage[aPage.length] = eval("document.all.mDiv" + this._nStatus + this._strDoc + "p" + aPage.length);
  1968. aRect[aRect.length] = eval("document.all.mRect" + this._nStatus + this._strDoc + "p" + aRect.length);
  1969. }
  1970. }
  1971. function CPrintDoc_AddFirstPage()
  1972. {
  1973. this._acPage[this._nStatus] = 0;
  1974. if (this._anMerge[this._nStatus] == 0)
  1975. {
  1976. this.AddPage();
  1977. }
  1978. else
  1979. {
  1980. var aRect = this._aaRect[this._nStatus];
  1981. var oPage = this._aaPage[this._nStatus - 1][this._acPage[this._nStatus - 1] - 1];
  1982. var oTop = this._aaRect[this._nStatus - 1][this._acPage[this._nStatus - 1] + this._anMerge[this._nStatus - 1] - 1];
  1983. var nTop = oTop.offsetTop + oTop.scrollHeight*g_nScalePercent/100;
  1984. var nHeight = oTop.clientHeight - oTop.scrollHeight;
  1985. ;
  1986. ;
  1987. if (aRect.length > 0)
  1988. {
  1989. var oNode = aRect[0];
  1990. oNode.style.marginTop = nTop + "px";
  1991. oNode.style.pixelHeight = nHeight;
  1992. if (oNode.parentElement != oPage)
  1993. {
  1994. oPage.insertBefore(oNode);
  1995. }
  1996. }
  1997. else
  1998. {
  1999. var newHTM;
  2000. var oNode;
  2001. newHTM = "<IE:LAYOUTRECT id=mRect" + this._nStatus + this._strDoc + "p0";
  2002. newHTM += " class=mRect nextRect=mRect" + this._nStatus + this._strDoc + "p1";
  2003. newHTM += " onlayoutcomplete=\"OnRectComplete('" + this._strDoc + "', " + g_ObsoleteBar + ")\"";
  2004. newHTM += " tabindex=-1 onbeforefocus='event.returnValue=false;'";
  2005. newHTM += " />";
  2006. oPage.insertAdjacentHTML("beforeEnd", newHTM);
  2007. oNode = eval("document.all.mRect" + this._nStatus + this._strDoc + "p0");
  2008. aRect[0] = oNode;
  2009. oNode.style.marginTop = nTop + "px";
  2010. oNode.style.height = nHeight + "px";
  2011. }
  2012. }
  2013. }
  2014. function CPrintDoc_InitDocument(fUseStreamHeader)
  2015. {
  2016. var fReallyUseStreamHeader = (fUseStreamHeader && (dialogArguments.__IE_OutlookHeader != null));
  2017. this._anMerge[1] = (fReallyUseStreamHeader) ? 1 : 0;
  2018. this._nStatus = ((fReallyUseStreamHeader) ? 0 : 1);
  2019. this.AddFirstPage();
  2020. this._aaRect[this._nStatus][0].contentSrc = (fReallyUseStreamHeader)
  2021. ? dialogArguments.__IE_OutlookHeader
  2022. : this._strDocURL;
  2023. }
  2024. function CPrintDoc_PrintAllSubDocuments(fRecursionOK)
  2025. {
  2026. if (this._aDoc)
  2027. {
  2028. var nDocs = this._aDoc.length;
  2029. var i;
  2030. g_cLeftToPrint += nDocs;
  2031. for (i = 0; i < nDocs; i++)
  2032. {
  2033. PrintSentinel(this._aDoc[i]._strDoc, fRecursionOK);
  2034. }
  2035. }
  2036. }
  2037. function CPrintDoc_BuildAllLinkedDocuments()
  2038. {
  2039. var strURL = this._aaRect[1][0].contentDocument.URL;
  2040. var aLinks = this._aaRect[1][0].contentDocument.links;
  2041. var nLinks = aLinks.length;
  2042. var i;
  2043. var j;
  2044. var strLink;
  2045. for (i = 0; i < nLinks; i++)
  2046. {
  2047. strLink = aLinks[i].href;
  2048. if (strURL == strLink || UnprintableURL(strLink))
  2049. {
  2050. continue;
  2051. }
  2052. for (j = 0; j < i; j++)
  2053. {
  2054. if (strLink == aLinks[j].href)
  2055. {
  2056. break;
  2057. }
  2058. }
  2059. if (j < i)
  2060. {
  2061. continue;
  2062. }
  2063. this.CreateSubDocument(strLink, false);
  2064. }
  2065. }
  2066. function OnBuildAllFrames(strDoc)
  2067. {
  2068. if (!g_aDocTree[strDoc] ||
  2069. !g_aDocTree[strDoc]._aaRect[1][0] ||
  2070. !g_aDocTree[strDoc]._aaRect[1][0].contentDocument.body)
  2071. {
  2072. window.setTimeout("OnBuildAllFrames('" + strDoc + "');", 100);
  2073. return;
  2074. }
  2075. g_aDocTree[strDoc].BuildAllFrames();
  2076. }
  2077. function IsPersistedDoc()
  2078. {
  2079. return (!!g_aDocTree["C"]._aaRect[1][0].contentDocument.getElementsByTagName("HTML")[0].__IE_DisplayURL);
  2080. }
  2081. function CPrintDoc_BuildAllFrames()
  2082. {
  2083. var aFrames = this._aaRect[1][0].contentDocument.getElementsByTagName("FRAME");
  2084. var nFrames = aFrames.length;
  2085. var nActive = parseInt(this._aaRect[1][0].contentDocument.getElementsByTagName("HTML").item(0).__IE_ActiveFrame);
  2086. var i;
  2087. var strSrc;
  2088. var strDoc;
  2089. if (nFrames > 0)
  2090. {
  2091. this._fFrameset = true;
  2092. }
  2093. for (i = 0; i < nFrames; i++)
  2094. {
  2095. strSrc = aFrames[i].src;
  2096. if (strSrc == "res://IEFRAME.DLL/printnof.htm")
  2097. {
  2098. continue;
  2099. }
  2100. strDoc = this.CreateSubDocument(strSrc, true);
  2101. if (i == nActive)
  2102. {
  2103. g_strActiveFrame = strDoc;
  2104. }
  2105. g_nFramesLeft++;
  2106. OnBuildAllFrames(strDoc);
  2107. }
  2108. g_nFramesLeft--;
  2109. if (g_nFramesLeft <= 0)
  2110. {
  2111. BuildAllFramesComplete();
  2112. }
  2113. }
  2114. function CPrintDoc_CreateSubDocument( docURL, fUseStreamHeader )
  2115. {
  2116. if (!this._aDoc)
  2117. this._aDoc = new Array();
  2118. var nDoc = this._aDoc.length;
  2119. var strDoc = this._strDoc + "_" + nDoc;
  2120. CreateDocument(docURL, strDoc, fUseStreamHeader);
  2121. this._aDoc[nDoc] = g_aDocTree[strDoc];
  2122. return (strDoc);
  2123. }
  2124. function CPrintDoc_AddTableOfLinks()
  2125. {
  2126. ;
  2127. if (!g_fTableOfLinks)
  2128. {
  2129. this._nStatus = 3;
  2130. ChangeDispPage(g_nDispPage);
  2131. this.FixupHF();
  2132. }
  2133. else
  2134. {
  2135. var oTableOfLinks = BuildTableOfLinks(this._aaRect[1][0].contentDocument);
  2136. if (oTableOfLinks != null)
  2137. {
  2138. var oBody = oTableOfLinks.body;
  2139. this.AddFirstPage()
  2140. this._aaRect[this._nStatus][0].contentSrc = oBody.document;
  2141. }
  2142. else
  2143. {
  2144. this._nStatus = 3;
  2145. ChangeDispPage(g_nDispPage);
  2146. this.FixupHF();
  2147. }
  2148. }
  2149. }
  2150. function OnTickHF( strDoc )
  2151. {
  2152. if (!g_aDocTree[strDoc])
  2153. {
  2154. HandleError("Document " + strDoc + " does not exist.", document.URL, "OnRectComplete");
  2155. return;
  2156. }
  2157. g_aDocTree[strDoc].TickHF();
  2158. }
  2159. function CPrintDoc_TickHF()
  2160. {
  2161. var i, j;
  2162. var iTo, jTo;
  2163. var aTok;
  2164. var oTok;
  2165. var nStartPage = this._nNextHF;
  2166. var cPages = this.Pages();
  2167. iTo = nStartPage + 2;
  2168. if (iTo > cPages)
  2169. {
  2170. iTo = cPages;
  2171. }
  2172. for (i = nStartPage; i <= iTo; i++)
  2173. {
  2174. aTok = this.Page(i).children[0].getElementsByTagName("SPAN");
  2175. for (j=0, jTo = aTok.length; j < jTo; j++)
  2176. {
  2177. oTok = aTok[j];
  2178. if (oTok.className == "hfPageTotal")
  2179. {
  2180. oTok.innerText = cPages;
  2181. }
  2182. else if (oTok.className == "hfUrl" && oTok.innerText == "")
  2183. {
  2184. oTok.innerText = this.EnsureURL();
  2185. }
  2186. else if (oTok.className == "hfTitle" && oTok.innerText == "")
  2187. {
  2188. oTok.innerText = this.EnsureTitle();
  2189. }
  2190. }
  2191. }
  2192. this._nNextHF = i;
  2193. if (iTo == cPages)
  2194. {
  2195. this._nStatus = 4;
  2196. if (--g_nDocsToCalc == 0)
  2197. {
  2198. window.setTimeout("CalcDocsComplete()", 1);
  2199. }
  2200. }
  2201. else
  2202. {
  2203. this._nTimerHF = window.setTimeout("OnTickHF('" + this._strDoc + "');", 250);
  2204. }
  2205. }
  2206. function CPrintDoc_FixupHF()
  2207. {
  2208. ;
  2209. this.TickHF();
  2210. }
  2211. function CPrintDoc_Pages()
  2212. {
  2213. var i;
  2214. var c;
  2215. for (i = 0, c = 0; i < 3; i++)
  2216. {
  2217. c += this._acPage[i];
  2218. }
  2219. return c;
  2220. }
  2221. function CPrintDoc_Page(nPage)
  2222. {
  2223. var i;
  2224. var n = nPage;
  2225. if (n <= 0)
  2226. return null;
  2227. for (i = 0; i < 3; i++)
  2228. {
  2229. if (n <= this._acPage[i])
  2230. {
  2231. return this._aaPage[i][n - 1].parentElement;
  2232. }
  2233. n -= this._acPage[i];
  2234. }
  2235. return null;
  2236. }
  2237. function CPrintDoc_EnsureURL()
  2238. {
  2239. if (this._strURL == null)
  2240. {
  2241. if (this._aaRect[1][0] && this._aaRect[1][0].contentDocument)
  2242. {
  2243. this._strURL = this._aaRect[1][0].contentDocument.URL;
  2244. }
  2245. if (this._strURL == null)
  2246. {
  2247. return "";
  2248. }
  2249. }
  2250. return this._strURL;
  2251. }
  2252. function CPrintDoc_EnsureTitle()
  2253. {
  2254. if (this._strTitle == null)
  2255. {
  2256. if (this._aaRect[1][0] && this._aaRect[1][0].contentDocument)
  2257. {
  2258. this._strTitle = this._aaRect[1][0].contentDocument.title;
  2259. }
  2260. if (this._strTitle == null)
  2261. {
  2262. return "";
  2263. }
  2264. }
  2265. return this._strTitle;
  2266. }
  2267. function CPrintDoc_ResetDocument()
  2268. {
  2269. var i;
  2270. for (i=0; i<3; i++)
  2271. {
  2272. this._aaRect[i] = new Array();
  2273. this._aaPage[i] = new Array();
  2274. this._acPage[i] = 0;
  2275. }
  2276. MasterContainer.innerHTML = "<div id=\"EmptyPage\" class=\"divPage\" style=\"position:absolute; left:0px; top:0px; display:none;\"><div class=\"page\"> </div></div>";
  2277. this.StopFixupHF();
  2278. }
  2279. function CPrintDoc_ResetTableOfLinks()
  2280. {
  2281. if (this._nStatus <= 2)
  2282. return;
  2283. this.StopFixupHF();
  2284. this._nStatus = 2;
  2285. this.AddTableOfLinks();
  2286. }
  2287. function CPrintDoc_StopFixupHF()
  2288. {
  2289. if (this._nTimerHF != -1)
  2290. window.clearTimeout(this._nTimerHF);
  2291. this._nTimerHF = -1;
  2292. this._nNextHF = 1;
  2293. }
  2294. function CPrintDoc(nDocNum, strDocURL)
  2295. {
  2296. var i;
  2297. this._aDoc = null;
  2298. this._strDoc = nDocNum;
  2299. this._strDocURL = strDocURL;
  2300. this._nStatus = 0;
  2301. this._aaPage = new Array(3);
  2302. this._aaRect = new Array(3);
  2303. this._acPage = new Array(3);
  2304. this._anMerge = new Array(3);
  2305. for (i=0; i<3; i++)
  2306. {
  2307. this._aaPage[i] = new Array();
  2308. this._aaRect[i] = new Array();
  2309. this._acPage[i] = 0;
  2310. this._anMerge[i]= 0;
  2311. }
  2312. this._nNextHF = 1;
  2313. this._nTimerHF = -1;
  2314. this._strURL = null;
  2315. this._strTitle = null;
  2316. this._fFrameset = false;
  2317. this._nStartingPage = 0;
  2318. }
  2319. CPrintDoc.prototype.RectComplete = CPrintDoc_RectComplete;
  2320. CPrintDoc.prototype.AddPage = CPrintDoc_AddPage;
  2321. CPrintDoc.prototype.AddFirstPage = CPrintDoc_AddFirstPage;
  2322. CPrintDoc.prototype.AddTableOfLinks = CPrintDoc_AddTableOfLinks;
  2323. CPrintDoc.prototype.FixupHF = CPrintDoc_FixupHF;
  2324. CPrintDoc.prototype.StopFixupHF = CPrintDoc_StopFixupHF;
  2325. CPrintDoc.prototype.TickHF = CPrintDoc_TickHF;
  2326. CPrintDoc.prototype.InitDocument = CPrintDoc_InitDocument;
  2327. CPrintDoc.prototype.ResetDocument = CPrintDoc_ResetDocument;
  2328. CPrintDoc.prototype.ResetTableOfLinks = CPrintDoc_ResetTableOfLinks;
  2329. CPrintDoc.prototype.BuildAllLinkedDocuments = CPrintDoc_BuildAllLinkedDocuments;
  2330. CPrintDoc.prototype.BuildAllFrames = CPrintDoc_BuildAllFrames;
  2331. CPrintDoc.prototype.CreateSubDocument = CPrintDoc_CreateSubDocument;
  2332. CPrintDoc.prototype.Print = CPrintDoc_Print;
  2333. CPrintDoc.prototype.PrintAllSubDocuments = CPrintDoc_PrintAllSubDocuments;
  2334. CPrintDoc.prototype.ReadyToPrint = CPrintDoc_ReadyToPrint;
  2335. CPrintDoc.prototype.Page = CPrintDoc_Page;
  2336. CPrintDoc.prototype.Pages = CPrintDoc_Pages;
  2337. CPrintDoc.prototype.EnsureURL = CPrintDoc_EnsureURL;
  2338. CPrintDoc.prototype.EnsureTitle = CPrintDoc_EnsureTitle;
  2339.