home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 November / Pcwk1197.iso / Microsft / ie40pl95 / ie4_s3.cab / IE4_3.CAB / MSHTML.DLL / 2110 / GOBOOK.DLG < prev    next >
Encoding:
Text File  |  1997-08-07  |  11.4 KB  |  474 lines

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML 3.2//EN">
  2. <HTML>
  3. <HEAD>
  4. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1250">
  5. <TITLE id=dialogTitle>
  6. Przejdƒ do zak│adki
  7. </TITLE>
  8. <!-- TO DO
  9. * Need robust method of determining whether the current selection contains
  10.  an anchor element. The current implementation in loadBdy() will
  11.  fail if text preceding the anchor tag in the document is selected. PM
  12.  (scotti) is working on providing a method to do this.
  13. * (TASK #2) Tab order
  14. * (TASK #5) No way to change button caption
  15. * (RAID #8892) Can't create Option object with new operator
  16.  Affects selBookmark_fill().
  17. * (RAID #9255) Can't use arrow keys to move between radio buttons
  18.  Affects usability.
  19. * (RAID #10031) Parent of <HTML> element is not null. Result is error
  20.  when parent of <HTML> is accessed. This will occur during initialization.
  21. * (RAID #10321) Wrong answer returned when comparing anchor href and name
  22.  properties to null.
  23.  Affects isLink(). Can't test bookmarkDelete() until it's fixed.
  24. -->
  25. <!-- NOTES
  26. * Expando properties
  27. * Object: selBookmark.option
  28.  * exAnchor: a reference to the anchor that corresponds to the entry.
  29.     This is used to access properties of a particular anchor
  30.     directly.
  31.  * exDocIndex: 0-based index corresponding to the order in which the
  32.     bookmark appears in the document. This property is used
  33.     when sorting the bookmarks by index. Reloading the
  34.     bookmarks from the document wasn't a viable solution
  35.     because it doesn't provide a way to remember which
  36.     bookmark(s) were selected.
  37. * Object: btnNext
  38.  * exState: Should the button execute the GoTo action or the Next
  39.     action?
  40. -->
  41. <SCRIPT LANGUAGE=JavaScript>
  42. var cmdDeleteBookmark  = "UnBookmark";
  43. function expandoOn()
  44. {
  45.  document.expando = true;
  46. function expandoOff()
  47. {
  48.  document.expando = false;
  49. function hasID(object)
  50. {
  51.  return null != object.id;
  52. function isLink (anchor)
  53. {
  54.  return null != anchor.href;
  55.  function selSortByName(sel)
  56.  {
  57.    var    index1;
  58.    var    index2;
  59.    var    textTemp;
  60.    var  selectedTemp;
  61.  var  anchorTemp;
  62.  var  docIndexTemp;
  63.  expandoOn();
  64.    for (index1 = 1; index1 < sel.options.length; index1++)
  65.    {
  66.   with (sel.options[index1])
  67.   {
  68.    textTemp  = text;
  69.    selectedTemp = selected;
  70.    anchorTemp = exAnchor;
  71.    docIndexTemp = exDocIndex;
  72.   }
  73.      for (index2 = index1 - 1;
  74.         index2 >= 0 && textTemp < sel.options[index2].text;
  75.         index2--)
  76.      {
  77.    with (sel.options[index2 + 1])
  78.    {
  79.     text  = sel.options[index2].text;
  80.     selected = sel.options[index2].selected;
  81.     exAnchor = sel.options[index2].exAnchor;
  82.     exDocIndex = sel.options[index2].exDocIndex;
  83.    }
  84.      }
  85.   with (sel.options[index2 + 1])
  86.   {
  87.    text  = textTemp;
  88.    selected = selectedTemp;
  89.    exAnchor = anchorTemp;
  90.    exDocIndex = docIndexTemp;
  91.   }
  92.    }
  93.  expandoOff();
  94.  }  
  95. function selSortByIndex(sel)
  96. {
  97.    var    index1;
  98.    var    index2;
  99.    var    textTemp;
  100.    var  selectedTemp;
  101.  var  anchorTemp;
  102.  var  docIndexTemp;
  103.  expandoOn();
  104.    for (index1 = 1; index1 < sel.options.length; index1++)
  105.    {
  106.   with (sel.options[index1])
  107.   {
  108.    textTemp  = text;
  109.    selectedTemp = selected;
  110.    anchorTemp = exAnchor;
  111.    docIndexTemp = exDocIndex;
  112.   }
  113.      for (index2 = index1 - 1;
  114.         index2 >= 0 && docIndexTemp < sel.options[index2].exDocIndex;
  115.         index2--)
  116.      {
  117.    with (sel.options[index2 + 1])
  118.    {
  119.     text  = sel.options[index2].text;
  120.     selected = sel.options[index2].selected;
  121.     exAnchor  = sel.options[index2].exAnchor;
  122.     exDocIndex = sel.options[index2].exDocIndex;
  123.    }
  124.      }
  125.   with (sel.options[index2 + 1])
  126.   {
  127.    text  = textTemp;
  128.    selected = selectedTemp;
  129.    exAnchor = anchorTemp;
  130.    exDocIndex = docIndexTemp;
  131.   }
  132.    }
  133.  expandoOff();
  134. function number(string)
  135. {
  136.  return parseFloat(string);
  137. </SCRIPT>
  138. <SCRIPT LANGUAGE=JavaScript>
  139. var L_GoToBookmark_DIALOG_Left_Number = number("50");
  140. var L_GoToBookmark_DIALOG_Top_Number = number("100");
  141. var L_GoToBookmark_DIALOG_Width_Number = number("450");
  142. var L_GoToBookmark_DIALOG_Height_Number = number("250");
  143. var L_BookmarkHasID_Text =
  144. "Ta zak│adka zawiera atrybut identyfikatora (ID). Czy na pewno chcesz j╣ usun╣µ?";
  145. </SCRIPT>
  146. <SCRIPT LANGUAGE="JavaScript">
  147. expandoOff();
  148. var STATE_GOTO    = 0; 
  149. var STATE_NEXT    = 1; 
  150. var htmlConfirmYes   = 6;
  151. var htmlConfirmNo   = 7;
  152. window.dialogLeft  = L_GoToBookmark_DIALOG_Left_Number;
  153. window.dialogTop   = L_GoToBookmark_DIALOG_Top_Number;
  154. window.dialogWidth  = L_GoToBookmark_DIALOG_Width_Number;
  155. window.dialogHeight  = L_GoToBookmark_DIALOG_Height_Number;
  156. gdoc = window.dialogArguments.document;
  157. function selBookmark_fill()
  158. {
  159.  var  index;
  160.  expandoOn();
  161.  for (index = 0; index < selBookmark.options.length; index++)
  162.  {
  163.   selBookmark.options[index].exAnchor  = gdoc.anchors[index];
  164.   selBookmark.options[index].exDocIndex = index;
  165.  }
  166.  expandoOff();
  167. function selCount(sel)
  168. {
  169.  var index;
  170.  var indexMax = sel.options.length;
  171.  var cSelected = 0;
  172.  for (index = 0; index < indexMax; index++)
  173.  {
  174.   if (sel.options[index].selected)
  175.   {
  176.    cSelected++;
  177.   }
  178.  }
  179.  return cSelected;
  180. function bookmarkDelete(opt)
  181. {
  182.  var  anchor  = opt.exAnchor;
  183.  if (isLink(anchor))
  184.  {
  185.   anchor.name = "";
  186.  }
  187.  else
  188.  {
  189.   if (hasID(anchor))  
  190.   {
  191.    var rc = confirm(L_BookmarkHasID_Text);
  192.    if (rc == htmlConfirmYes)
  193.    {
  194.     rng = gdoc.rangeFromElement(anchor);
  195.     rng.execCommand(cmdDeleteBookmark);
  196.    }
  197.    else
  198.    {
  199.     anchor.name = "";
  200.    }
  201.   }
  202.   else        
  203.   {
  204.    rng = gdoc.rangeFromElement(anchor);
  205.    rng.execCommand(cmdDeleteBookmark);
  206.   }
  207.  }
  208. function bookmarkScroll(opt)
  209. {
  210.  if (null == opt)
  211.  {
  212.   return;
  213.  }
  214.  opt.exAnchor.scrollIntoView(true);
  215. function btnNextSetState()
  216. {
  217.  if ((1 != selCount(selBookmark)) ||
  218.   ((STATE_NEXT == btnNext.exState) &&
  219.   (selBookmark.options.length - 1 == selBookmark.selectedIndex)))
  220.  {
  221.   btnNext.disabled = true;
  222.  }
  223.  else
  224.  {
  225.   btnNext.disabled = false;
  226.  }
  227. function btnPrevSetState()
  228. {
  229.  if ((0 == selBookmark.selectedIndex) || (1 < selCount(selBookmark))
  230.   || (0 == selBookmark.options.length))
  231.  {
  232.   btnPrev.disabled = true;
  233.  }
  234.  else
  235.  {
  236.   btnPrev.disabled = false;
  237.  }
  238. function btnDeleteSetState()
  239. {
  240.  if (0 == selCount(selBookmark))
  241.  {
  242.   btnDelete.disabled = true;
  243.  }
  244.  else
  245.  {
  246.   btnDelete.disabled = false;
  247.  }
  248. function loadBdy()
  249. {
  250.  var name;
  251.  expandoOn();
  252.  btnNext.exState = STATE_GOTO;
  253.  expandoOff();
  254.  btnNextSetState();
  255.  btnPrevSetState();
  256.  btnDeleteSetState();
  257.  selBookmark_fill();
  258.  name = "";
  259.  rng = gdoc.selection.createRange();
  260.  rng.collapse(true);
  261.  elm = rng.parentElement();
  262.  while(elm.tagName != "HTML")
  263.  {
  264.   if (elm.tagName == "A")
  265.   {
  266.    name = elm.name;
  267.    break;
  268.   }
  269.   elm = elm.parentElement;
  270.  }
  271.  if (name != "")
  272.  {
  273.   for (index = 0; index < selBookmark.options.length; index++)
  274.   {
  275.    if (selBookmark.options[index].text == name)
  276.    {
  277.     selBookmark.options[index].selected = true;
  278.     break;
  279.    }
  280.   }
  281.  }
  282. function onCmdGoto()
  283. {
  284.  bookmarkScroll(selBookmark.options[selBookmark.selectedIndex]);
  285.  btnPrevSetState();
  286.  btnNextSetState();
  287. function onCmdNext()
  288. {
  289.  selBookmark.selectedIndex++;
  290.  bookmarkScroll(selBookmark.options[selBookmark.selectedIndex]);
  291.  btnPrevSetState();
  292.  btnNextSetState();
  293. function onCmdPrevious()
  294. {
  295.  selBookmark.selectedIndex--;
  296.  bookmarkScroll(selBookmark.options[selBookmark.selectedIndex]);
  297.  btnNextSetState();
  298.  btnPrevSetState();
  299. function onCmdDelete()
  300. {
  301.  var  index;
  302.  var  indexMax;
  303.  for (index = selBookmark.selectedIndex, indexMax = selBookmark.options.length;
  304.    index < indexMax;
  305.    index++)
  306.  {
  307.   if (selBookmark.options[index].selected)
  308.   {
  309.    bookmarkDelete(selBookmark.options[index]);
  310.   }
  311.  }
  312.  window.close();
  313. function onCmdCancel()
  314. {
  315.  window.close();
  316. </SCRIPT>
  317. <SCRIPT LANGUAGE=JavaScript FOR=document EVENT="onkeypress()">
  318. var htmlKeyReturn = 13;
  319. var htmlKeyEscape = 27;
  320. if (event.keyCode == htmlKeyReturn)  
  321. {
  322.  if (btnNext.exState == STATE_GOTO)
  323.  {
  324.   onCmdGoto();
  325.  }
  326.  else
  327.  {
  328.   onCmdNext();
  329.  }
  330. }
  331. if (event.keyCode == htmlKeyEscape)  
  332. {
  333.  onCmdCancel();
  334. }
  335. </SCRIPT>
  336. <SCRIPT LANGUAGE=JavaScript FOR=selBookmark EVENT="dblClick()">
  337. {
  338.  onCmdGoto();
  339. </SCRIPT>
  340. <SCRIPT Language=JavaScript FOR=selBookmark Event="keyUp(shift)">
  341. {
  342.  btnPrevSetState();
  343.  btnNextSetState();
  344.  btnDeleteSetState();
  345. </SCRIPT>
  346. <SCRIPT Language=JavaScript FOR=selBookmark Event="onclick()">
  347. {
  348.  btnPrevSetState();
  349.  btnNextSetState();
  350.  btnDeleteSetState();
  351. </SCRIPT>
  352. <SCRIPT LANGUAGE=JavaScript FOR=radByLoc EVENT="onclick()">
  353. {
  354.    selSortByIndex(document.selBookmark);
  355.  btnPrevSetState();
  356.  btnNextSetState();
  357. </SCRIPT>
  358. <SCRIPT LANGUAGE=JavaScript FOR=radByName EVENT="onclick()">
  359. {
  360.    selSortByName(document.selBookmark);
  361.  btnPrevSetState();
  362.  btnNextSetState();
  363. </SCRIPT>
  364. <SCRIPT LANGUAGE=JavaScript FOR=btnNext EVENT="onclick()">
  365. {
  366.  if (btnNext.exState == STATE_GOTO)
  367.  {
  368.   onCmdGoto();
  369.   expandoOn();
  370.   btnNext.exState = STATE_NEXT;
  371.   expandoOff();
  372.  }
  373.  else
  374.  {
  375.   onCmdNext();
  376.  }
  377. </SCRIPT>
  378. <SCRIPT LANGUAGE=JavaScript FOR=btnPrev EVENT="onclick()">
  379. {
  380.  onCmdPrevious();
  381. </SCRIPT>
  382. <SCRIPT LANGUAGE=JavaScript FOR=btnDelete EVENT="onclick()">
  383. {
  384.  onCmdDelete();
  385. </SCRIPT>
  386. <SCRIPT LANGUAGE=JavaScript FOR=btnClose EVENT="onclick()">
  387. {
  388.  onCmdCancel();
  389. </SCRIPT>
  390. </HEAD>
  391. <BODY id=bodyBookmark onLoad="loadBdy()">
  392. <DIV style="position:absolute; LEFT: .5em; TOP: .5em; WIDTH: 8em; HEIGHT: 1em">
  393. <LABEL For=selBookmark id=lblBookmark>
  394. Wy<U>b</U>ierz zak│adkΩ:
  395. </LABEL>
  396. </DIV>
  397. <SCRIPT LANGUAGE=JavaScript>
  398. var index;
  399. var doc = window.dialogArguments.document;
  400. document.write('<SELECT id=selBookmark ACCESSKEY=e multiple style="position: absolute; LEFT: .5em; TOP: 2.5em; WIDTH: 22em; HEIGHT: 9em">');
  401. for (index = 0; index < doc.anchors.length; index++)
  402. {
  403. if (doc.anchors[index].name != "")
  404. {
  405.  document.write('<OPTION>' + doc.anchors[index].name);
  406. }
  407. }
  408. document.write('</SELECT>');
  409. </SCRIPT>
  410. <TABLE border=1 style="position: absolute; LEFT: .5em; TOP: 7.9em; WIDTH: 18em; HEIGHT: 2em">
  411. <TR>
  412. <TD>
  413. <DIV style="position: absolute; LEFT: .5em; TOP: .5em; WIDTH: 10em; HEIGHT: 1em"><LABEL id=lblSortedBy>Sortowane wed│ug:
  414. </LABEL></DIV>
  415. <INPUT id=radByName name=radSortBy style="position: absolute; LEFT: 8em; TOP: .5em; WIDTH: 1em; HEIGHT: 1em" type=radio
  416. ACCESSKEY="n">
  417. <DIV style="position: absolute; LEFT: 9.2em; TOP: .5em; WIDTH: 3em; HEIGHT: 1em">
  418. <LABEL For=radByName id=lblByName>
  419. <U>N</U>azwa
  420. </LABEL>
  421. </DIV>
  422. <INPUT id=radByLoc name=radSortBy style="position: absolute; LEFT: 12em; TOP: .5em; WIDTH: 1em; HEIGHT: 1em" type=radio
  423. CHECKED ACCESSKEY="l">
  424. <DIV style="position: absolute; LEFT: 13.2em; TOP: .5em; WIDTH: 6em; HEIGHT: 1em">
  425. <LABEL For=radByLoc id=lblByLoc>
  426. <U>L</U>okalizacja
  427. </LABEL>
  428. </DIV>
  429. </TD>
  430. </TR>
  431. </TABLE>
  432. <BUTTON id=btnNext style="position: absolute; LEFT:23.5em; TOP: 1.6em; WIDTH: 9.5em; HEIGHT: 2.5em" AccessKey="d">
  433. Przejdƒ <U>d</U>o
  434. </BUTTON>
  435. <BUTTON id=btnPrev style="position: absolute; LEFT:23.5em; TOP: 4.4em; WIDTH: 9.5em; HEIGHT: 2.5em" AccessKey="o">
  436. P<U>o</U>przednia
  437. </BUTTON>
  438. <BUTTON id=btnDelete style="position: absolute; LEFT:23.5em; TOP: 10.1em; WIDTH: 9.5em; HEIGHT: 2.5em" AccessKey="u">
  439. <U>U</U>su±
  440. </BUTTON>
  441. <BUTTON id=btnClose style="position: absolute; LEFT:23.5em; TOP: 12.9em; WIDTH: 9.5em; HEIGHT: 2.5em" AccessKey="z">
  442. <U>Z</U>amknij
  443. </BUTTON>
  444. </BODY>
  445. </HTML>
  446.