home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / WindowsServerTrial / server.iso / sources / install.wim / 1 / Windows / System32 / mshtmler.dll / HTML / EDLINK.JS < prev    next >
Text (UTF-16)  |  2006-11-02  |  10KB  |  222 lines

  1. var g_fOKEnabled = false;
  2. var g_fURLLoaded = false;
  3. function findAnchor(range)
  4. {
  5. var rangeWorking;
  6. var elmWorking;
  7. var index;
  8. elmWorking = range.parentElement()
  9. while ("HTML" != elmWorking.tagName)
  10. {
  11. if ("A" == elmWorking.tagName)
  12. {
  13. return elmWorking;
  14. }
  15. else
  16. {
  17. elmWorking = elmWorking.parentElement
  18. }
  19. }
  20. rangeWorking = range.duplicate();
  21. rangeWorking.collapse(true);
  22. rangeWorking.moveEnd("character", 1);
  23. while (rangeWorking.compareEndPoints("EndToEnd", range) < 0)
  24. {
  25. rangeWorking.move("Character");
  26. if (null != findAnchor(rangeWorking))
  27. {
  28. return findAnchor(rangeWorking);
  29. }
  30. }
  31. return null;
  32. }
  33. function getProtocolFromURL(strURL)
  34. {
  35. var index;
  36. return strURL.substring(0, strURL.indexOf(":") + 1);
  37. }
  38. function updateProtocolSel()
  39. {
  40. var index;
  41. var strProtocol = getProtocolFromURL(txtURL.value);
  42. selProtocol.value = strProtocol;
  43. if (selProtocol.value != strProtocol)
  44. {
  45. selProtocol.value = "";
  46. }
  47. }
  48. function updateProtocolTxt()
  49. {
  50. var strSlashProts = " file:ftp:gopher:http:https:";
  51. var strProtocolTxt = getProtocolFromURL(txtURL.value);
  52. var strProtocolSel = selProtocol.value;
  53. var strTempURL;
  54. if ("//" == (txtURL.value.substring(strProtocolTxt.length,
  55. strProtocolTxt.length + 2)))
  56. {
  57. strProtocolTxt = strProtocolTxt + "//";
  58. }
  59. strTempURL = txtURL.value.substring(strProtocolTxt.length);
  60. if (0 < strSlashProts.indexOf(strProtocolSel))
  61. {
  62. strProtocolSel = strProtocolSel + "//";
  63. }
  64. txtURL.value = strProtocolSel + strTempURL;
  65. }
  66. function setOKState()
  67. {
  68. var htmlKeyAlt = 18;
  69. if (!g_fURLLoaded)
  70. {
  71. if ((("" == txtURL.value) || (txtURL.value == selProtocol.value)
  72. ||(txtURL.value == selProtocol.value + "//"))
  73. == g_fOKEnabled)
  74. {
  75. btnOK.disabled = g_fOKEnabled
  76. g_fOKEnabled = !g_fOKEnabled;
  77. }
  78. }
  79. }
  80. function bdyLoad()
  81. {
  82. var globalDoc = window.dialogArguments;
  83. var rngMaster;
  84. var rngLink;
  85. var elmLink;
  86. document.onhelp = new
  87. Function("callHelp(window.event.srcElement)");
  88. document.onmouseup = new Function("mouseClick()");
  89. selProtocol.onchange = new Function("updateProtocolTxt()");
  90. btnOK.onclick = new Function("btnOKClick()");
  91. btnCancel.onclick = new Function("btnCancelClick()");
  92. txtURL.onfocus = new Function("txtURL.select()");
  93. txtURL.onpropertychange = new Function("if (event.propertyName == 'value') setOKState();");
  94. txtURL.onkeypress = new Function("txtDefaultESC()");
  95. if ("Control" == globalDoc.selection.type)
  96. {
  97. rngMaster = globalDoc.selection.createRange();
  98. if (1 == rngMaster.length)
  99. {
  100. rngMaster = getTextRange(rngMaster(0));
  101. rngMaster.select();
  102. }
  103. }
  104. if (("Text" == globalDoc.selection.type) ||
  105. ("None" == globalDoc.selection.type))
  106. {
  107. rngMaster = globalDoc.selection.createRange();
  108. globalDoc.execCommand("AutoDetect");
  109. elmLink = findAnchor(rngMaster);
  110. if (null != elmLink)
  111. {
  112. rngLink = getTextRange(elmLink);
  113. if (rngLink.compareEndPoints("StartToStart", rngMaster) < 0)
  114. {
  115. rngMaster.setEndPoint("StartToStart", rngLink);
  116. }
  117. if (rngLink.compareEndPoints("EndToEnd", rngMaster) > 0)
  118. {
  119. rngMaster.setEndPoint("EndToEnd", rngLink);
  120. }
  121. rngMaster.select();
  122. if ("" != elmLink.href)
  123. {
  124. txtURL.value = elmLink.href;
  125. txtURL.href = elmLink.href;
  126. g_fURLLoaded = true;
  127. btnOK.disabled = false;
  128. }
  129. updateProtocolSel();
  130. }
  131. txtURL.focus();
  132. txtURL.select();
  133. setOKState();
  134. }
  135. }
  136. function IsRangeEmpty( range )
  137. {
  138. var tempRange;
  139. tempRange = range.duplicate();
  140. result = tempRange.compareEndPoints( "StartToEnd", range );
  141. if ( result == 0 )
  142. {
  143. return true;
  144. }
  145. else
  146. {
  147. return false;
  148. }
  149. }
  150. function btnOKClick()
  151. {
  152. var globalDoc = window.dialogArguments;
  153. var cmdCreateLink = "CreateLink";
  154. var cmdUnlink = "Unlink";
  155. var range = globalDoc.selection.createRange();
  156. var strSlashProts = " file:ftp:gopher:http:https:";
  157. var strProtocol = selProtocol.value;
  158. var dupRange;
  159. var initialRange;
  160. var iRight;
  161. var fUseExecCommand = true;
  162. if ("" == txtURL.value)
  163. {
  164. range.execCommand(cmdUnlink, false);
  165. window.close();
  166. return;
  167. }
  168. if (g_fURLLoaded && (txtURL.value == txtURL.href))
  169. {
  170. window.close();
  171. return;
  172. }
  173. updateProtocolSel();
  174. if (0 < strSlashProts.indexOf(strProtocol))
  175. {
  176. strProtocol = strProtocol + "//";
  177. }
  178. initialRange = range.duplicate();
  179. if ( IsRangeEmpty( range ) )
  180. {
  181. range.text = txtURL.value;
  182. fUseExecCommand = false;
  183. }
  184. else
  185. {
  186. dupRange = range.duplicate();
  187. iRight = dupRange.moveEnd( "Character", 2 );
  188. if ( iRight < 2 && dupRange.htmlText == "" )
  189. {
  190. range.text = txtURL.value;
  191. fUseExecCommand = false;
  192. }
  193. }
  194. if ( fUseExecCommand )
  195. {
  196. range.execCommand(cmdCreateLink, false, txtURL.value);
  197. }
  198. else
  199. {
  200. dupRange = range.duplicate();
  201. dupRange.move( "Character", -1 );
  202. elmParent = dupRange.parentElement();
  203. if (elmParent.tagName == "A")
  204. {
  205. elmParent.href = txtURL.value;
  206. }
  207. else
  208. {
  209. range.setEndPoint( "StartToEnd", initialRange );
  210. dupRange = range.duplicate();
  211. dupRange.collapse(true);
  212. elmParent = dupRange.parentElement();
  213. if (elmParent.tagName == "A")
  214. {
  215. range.execCommand(cmdUnlink, false);
  216. }
  217. range.execCommand(cmdCreateLink, false, txtURL.value);
  218. }
  219. }
  220. window.close();
  221. }
  222.