home *** CD-ROM | disk | FTP | other *** search
/ PC World Plus! (NZ) 2000 October / PCWORLDPLUS_OCTO.BIN / browsers / Ie505 / WIN32 / EN / IEMIL_3.CAB / SHDOCLC.DLL / HTML / FINDINC.DLG < prev    next >
Text File  |  2000-06-06  |  8KB  |  389 lines

  1. //<SCRIPT LANGUAGE="JavaScript">
  2. function callHelp(elm)
  3. {
  4. if (null != elm.helpid)
  5. {
  6.  window.showHelp(elm.helpfile, "" + parseInt(elm.helpid),
  7.   "popup");
  8. }
  9. else
  10. {
  11.  if ("BODY" != elm.tagName)
  12.  {
  13.   callHelp(elm.parentElement);
  14.  }
  15. }
  16. function btnCancelClick()
  17. {
  18. window.close();
  19. function getTextRange(elm)
  20. {
  21. var r = elm.parentTextEdit.createTextRange();
  22. r.moveToElementText(elm);
  23. return r;
  24. function mouseClick()
  25. {
  26. if (window.event.srcElement.id.substring(0,3)
  27.  == "txt")
  28. {
  29.  return;
  30. }
  31. if (window.event.button == 2)
  32. {
  33.  callHelp(window.event.srcElement);
  34. }
  35. function txtDefaultESC()
  36. {
  37. if (event.keyCode == 27)
  38. {
  39.  window.close();
  40.  return;
  41. }
  42. window.onerror = HandleError
  43. var L_Dialog_ErrorMessage = "An error has occurred in this dialog.";
  44. var L_ErrorNumber_Text = "Error: ";
  45. function HandleError(message, url, line)
  46. {
  47. var str = L_Dialog_ErrorMessage + "\n\n" 
  48.  + L_ErrorNumber_Text + line + "\n"
  49.  + message;
  50. alert (str);
  51. window.close();
  52. return true;
  53. }
  54. function setFindState(fEvent) { if (fEvent && (event.propertyName != "value")) { return; } if (("" == txtFindText.value) == g_fFindEnabled) { btnFind.disabled = g_fFindEnabled; g_fFindEnabled = !g_fFindEnabled; } } var g_fFindEnabled = false;
  55. var g_docLastFound; 
  56. var g_fFrameset = false; 
  57. var g_arrFrames = new Array(); 
  58. var g_fSearchTopFrame = false; 
  59. var g_fFollowIframes = true;  
  60. var g_fError = false; 
  61. var g_docSearch ; 
  62. var g_rngWorking;   
  63. var g_rngFoundText;  
  64. var g_fFoundText = false; 
  65. var g_intDirection;  
  66. function FindHandleError(message, url, line)
  67. {
  68. var L_Find_DIALOG_NoAction_ErrorMessage = "Object doesn't support this action";
  69. var L_Find_DIALOG_NoProperty_ErrorMessage = "Object doesn't support this property or method";
  70. if (message != L_Find_DIALOG_NoProperty_ErrorMessage)
  71. {
  72.  if (message != L_Find_DIALOG_NoAction_ErrorMessage)
  73.  {
  74.   var str = L_Dialog_ErrorMessage + "\n\n" 
  75.    + L_ErrorNumber_Text + line + "\n"
  76.    + message;
  77.   alert (str);
  78.   window.close();
  79.  }
  80.  else 
  81.  {
  82.   g_fError = true;
  83.   g_fFrameset = false;
  84.  }
  85. }
  86. return true;
  87. }
  88. function CrawlPath()
  89. {
  90. var win = window.dialogArguments.unsecuredWindowOfDocument;
  91. var i = 0;
  92. if (g_fSearchTopFrame)
  93. {
  94.  return win;
  95. }
  96. while (g_arrFrames[i] >= 0)
  97. {
  98.  win = win.frames[g_arrFrames[i]];
  99.  i++;
  100. }
  101. return win;
  102. function AtFrameset()
  103. {
  104. var win = CrawlPath();
  105. return win.frames.length;
  106. function AtIframe()
  107. {
  108. var win = CrawlPath();
  109. return win.document.all.tags("IFRAME").length;
  110. function IsLegalPage(win)
  111. {
  112. var arrBadFileTypes = new Array(".doc", ".xls", ".pdf");
  113. var strHref = win.location.href;
  114. for (i=0; i < arrBadFileTypes.length; i++)
  115. {
  116.  if (strHref.lastIndexOf(arrBadFileTypes[i]) == (strHref.length - 4))
  117.  {
  118.   return false;
  119.  }
  120. }
  121. return true;
  122. }
  123. function GetCurrentPos()
  124. {
  125. var i = GetCurrentDepth();
  126. return g_arrFrames[i];
  127. function GetCurrentDepth()
  128. {
  129. var i = 0;
  130. while (g_arrFrames[i] >= 0)
  131. {
  132.  i++;
  133. }
  134. return i-1;
  135. function MovePossible(fForward)
  136. {
  137. var intCurPos = GetCurrentPos();
  138. var win = CrawlPath();
  139. var winParent = win.parent;
  140. if (fForward)
  141. {
  142.  if ((winParent.frames.length - intCurPos - 1)
  143.   && (IsLegalPage(winParent.frames[intCurPos + 1])))
  144.  {
  145.   return true;
  146.  }
  147.  else
  148.  {
  149.   return false;
  150.  }
  151. }
  152. else
  153. {
  154.  return (intCurPos != 0);
  155. }
  156. function MoveUpFrameset()
  157. {
  158. var i = GetCurrentDepth();
  159. g_arrFrames[i] = -1;
  160. function MoveDownFrameset(fForward)
  161. {
  162. var i = GetCurrentDepth();
  163. var win = CrawlPath();
  164. g_arrFrames[i+1] = fForward ? 0 : win.frames.length - 1;
  165. g_arrFrames[i+2] = -1;
  166. function MoveWin(fForward)
  167. {
  168. var intDepth = GetCurrentDepth();
  169. var intPos = GetCurrentPos();
  170. g_arrFrames[intDepth] = fForward ? ++intPos : --intPos;
  171. function MoveDoc(fForward)
  172. {
  173. if (g_fSearchTopFrame) 
  174.  if (fForward)
  175.  {
  176.   g_fSearchTopFrame = false;
  177.   return true;
  178.  }
  179.  else
  180.  {
  181.   return false;
  182.  }
  183. }
  184. if (!fForward && (g_arrFrames[0] == 0) && (g_arrFrames[1] < 0)
  185.  && window.dialogArguments.document.all.tags("IFRAME").length)
  186. {
  187.  g_fSearchTopFrame = true;
  188.  return true;
  189. }
  190. if (g_fFollowIframes && AtIframe())
  191. {
  192.  MoveDownFrameset(fForward);
  193.  while (!AtIframe() && AtFrameset())
  194.  {
  195.   MoveDownFrameset(fForward);
  196.   return true;
  197.  }
  198.  return false;
  199. }
  200. if (MovePossible(fForward))
  201. {
  202.  MoveWin(fForward);
  203.  g_fFollowIframes = true;
  204.  while (!AtIframe() && AtFrameset())
  205.  {
  206.   MoveDownFrameset(fForward);
  207.  }
  208.  return true;
  209. }
  210. else
  211. {
  212.  if (GetCurrentDepth() > 0)
  213.  {
  214.   MoveUpFrameset();
  215.   while (AtIframe() && !MovePossible(fForward)
  216.    && (GetCurrentDepth() >= 0))
  217.   {
  218.    MoveUpFrameset();
  219.   }
  220.   if (AtIframe() && MovePossible(fForward))
  221.   {
  222.    g_fFollowIframes = false;
  223.   }
  224.   return MoveDoc(fForward);
  225.  }
  226. }
  227. return false;
  228. function GetFirstDoc()
  229. {
  230. var win;
  231. var doc = window.dialogArguments.document;
  232. if (doc.all.tags("IFRAME").length)
  233. {
  234.  g_fSearchTopFrame = true;
  235.  return doc;
  236. }
  237. while (!AtIframe() && AtFrameset())
  238. {
  239.  MoveDownFrameset(true);
  240. }
  241. win = CrawlPath();
  242. return win.document;
  243. function setInitSearchRng()
  244. {
  245. findStartPoint();
  246. if (g_fFrameset)
  247. {
  248.  var win;
  249.  if (!AtIframe() && AtFrameset())
  250.  {
  251.   MoveDownFrameset(!radDirection[0].checked);
  252.   while (!AtIframe() && AtFrameset())
  253.   {
  254.    MoveDownFrameset(!radDirection[0].checked);
  255.   }
  256.  }
  257.  win = CrawlPath();
  258.  g_docSearch = win.document;
  259. }
  260. else
  261. {
  262.  g_docSearch = window.dialogArguments.document;
  263. }
  264. if (g_docSearch .queryCommandState("BrowseMode")
  265.  && g_docSearch .selection.type != "Text")
  266. {
  267.  if (g_docSearch .body == null)
  268.   return;
  269.  g_rngWorking = g_docSearch .body.createTextRange();
  270. }
  271. else
  272. {
  273.  g_rngWorking = g_docSearch .selection.createRange();
  274. }
  275. function directionAdjust()
  276. {
  277. g_fFoundText = (g_docSearch .selection.type == "Text");
  278. if (radDirection[0].checked) 
  279. {
  280.  if (g_fFoundText)
  281.  {
  282.   g_rngWorking.moveEnd("character" , -1);
  283.  }
  284.  while (0 != g_rngWorking.moveStart("textedit", -10000))
  285.  {
  286.  }
  287.  g_intDirection = -1000000000;
  288. }
  289. else       
  290. {
  291.  if (g_fFoundText)
  292.  {
  293.   g_rngWorking.moveStart("character", 1);
  294.  }
  295.  while (0 != g_rngWorking.moveEnd("textedit", 10000))
  296.  {
  297.  }
  298.  g_intDirection = 1000000000; 
  299. }
  300. }
  301. function btnFindClick()
  302. {
  303. var fDone = false;
  304. var L_FinishedDocument_Text = "Finished searching the document.";
  305. var index;
  306. setInitSearchRng();
  307. directionAdjust();
  308. g_rngFoundText = g_rngWorking.duplicate();
  309. success = g_rngFoundText.findText(txtFindText.value, 
  310.          g_intDirection, 
  311.          findFlags());
  312. while ((!fDone) && success)
  313. {
  314.  fDone = true;
  315.  try
  316.  {
  317.   g_rngFoundText.select();
  318.  }
  319.  catch (exception)
  320.  {  
  321.   if (g_intDirection == 1000000000) 
  322.   {
  323.    g_rngFoundText.moveStart("character" , 1);
  324.    while (0 != g_rngFoundText.moveEnd("textedit", 10000))
  325.    {
  326.                 }           
  327.   }
  328.   else
  329.   {
  330.    g_rngFoundText.moveEnd("character" , -1);
  331.    while (0 != g_rngFoundText.moveStart("textedit", -10000))
  332.    {
  333.                 }
  334.   }
  335.   fDone = false;
  336.   success = g_rngFoundText.findText(txtFindText.value, 
  337.            g_intDirection, 
  338.            findFlags());
  339.  }
  340. }
  341. if (!success) 
  342. {
  343.  if (g_fFrameset)
  344.  {
  345.   if (MoveDoc(!radDirection[0].checked))
  346.   {
  347.    btnFindClick();
  348.    return;
  349.   }
  350.  }
  351.  alert(L_FinishedDocument_Text);
  352.  txtFindText.focus();
  353. }
  354. else      
  355. {
  356.  if (g_fFrameset)
  357.  {
  358.   g_docLastFound.execCommand("Unselect", false);
  359.   g_docLastFound = g_docSearch ;
  360.  }
  361.  g_rngFoundText.select();
  362.  g_rngFoundText.scrollIntoView(true);
  363. }
  364. function btnCancelClick2()
  365. {
  366. window.dialogArguments.findText = txtFindText.value;
  367. window.close();
  368. //</SCRIPT>
  369.