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 / IEERROR.JS < prev    next >
Text File  |  2008-01-19  |  10KB  |  402 lines

  1. ∩╗┐window.onerror = HandleError
  2. document.ondragstart = NoDragging
  3.  
  4. function NoDragging()
  5. {
  6.     window.event.returnValue = false;
  7. }
  8.  
  9. var g_errList;
  10. var g_detailsPaneOpen;
  11.  
  12. //+-------------------------------------------------------------------
  13. //
  14. //  Synopsis:   Turns off error messages in dialogs
  15. //
  16. //  Arguments:  none
  17. //
  18. //  returns:    true (tells browser not to handle message)
  19. //
  20. //--------------------------------------------------------------------
  21.  
  22. function HandleError(message, url, line)
  23. {
  24.     var str = L_Dialog_ErrorMessage + "\n\n"
  25.         + L_ErrorNumber_Text + line + "\n"
  26.         + message;
  27.  
  28.     alert (str);
  29.     window.close();
  30.  
  31.     return true;
  32. }
  33.  
  34. //+----------------------------------------------------------------------
  35. //
  36. //  Synopsis:   Binds events to controls and do some last minute
  37. //              dialog formatting
  38. //
  39. //  Arguments:  none.
  40. //
  41. //  Returns:    nothing.
  42. //
  43. //-----------------------------------------------------------------------
  44.  
  45. function updateTabIndices()
  46. {
  47.     if (g_detailsPaneOpen)
  48.     {
  49.         var nextIndex = 3;
  50.  
  51.         if (!btnPrevErr.disabled)
  52.         {
  53.             btnPrevErr.tabindex = nextIndex++;
  54.         }
  55.  
  56.         if (!btnNextErr.disabled)
  57.         {
  58.             btnNextErr.tabindex = nextIndex++;
  59.         }
  60.  
  61.         chkAlwaysShowErrs.tabindex = nextIndex;
  62.     }
  63.     else
  64.     {
  65.         btnPrevErr.tabindex = -1;
  66.         btnNextErr.tabindex = -1;
  67.         chkAlwaysShowErrs.tabindex = 3;
  68.     }
  69. }
  70.  
  71. function loadBdy()
  72. {
  73.     g_errList = window.dialogArguments;
  74.     chkAlwaysShowErrs.checked = g_errList.getPerErrorDisplay();
  75.  
  76.     // if the key didn't exist we got a default. if we took a
  77.     // default, it needs to become a real setting (non-default)
  78.     // because the nonexistence of the key indicates to us that
  79.     // we need to display the dialog but default to having
  80.     // "never show me again" checked. obviously we only want
  81.     // this behavioral exception to happen once. to make it
  82.     // become a non-default value, just write it out...
  83.  
  84.     g_errList.setPerErrorDisplay(chkAlwaysShowErrs.checked);
  85.  
  86.     // if the IEAK has locked the advanced options settings,
  87.     // then disable the checkbox so that people can't change
  88.     // the "Always present script error notifications" setting
  89.     // via the checkbox
  90.  
  91.     chkAlwaysShowErrs.disabled = g_errList.getAlwaysShowLockState();
  92.  
  93.     //
  94.     // set the details pane to be open or closed
  95.     // the easiest way to make sure all controls
  96.     // are set to their proper state is to just
  97.     // call the click function
  98.     //
  99.  
  100.     g_detailsPaneOpen = g_errList.getDetailsPaneOpen();
  101.     assureControlState();
  102.  
  103.     //
  104.     //  Bind event to controls
  105.     //
  106.  
  107.     btnOK.onclick  = new Function("btnOKClick()");
  108.     btnOK.onkeydown  = new Function("SwitchFocus()");
  109.     btnDetails.onclick = new Function("btnDetailsClick()");
  110.     btnDetails.onkeydown = new Function("SwitchFocus()");
  111.  
  112.     btnNextErr.onclick = new Function("btnNextErrClick()");
  113.     btnNextErr.onkeydown = new Function("SwitchFocus()");
  114.     btnPrevErr.onclick = new Function("btnPrevErrClick()");
  115.     btnPrevErr.onkeydown = new Function("SwitchFocus()");
  116.  
  117.     //
  118.     //  Fill the dialog with error information
  119.     //
  120.  
  121.     updateErrorInfo();
  122.  
  123.     //
  124.     // set prev and next button's disabled state
  125.     //
  126.  
  127.     if (!g_errList.canRetreatError())
  128.     {
  129.         btnPrevErr.disabled = true;
  130.     }
  131.     if (!g_errList.canAdvanceError())
  132.     {
  133.         btnNextErr.disabled = true;
  134.     }
  135.  
  136.     btnOK.focus();
  137. }   // loadBdy
  138.  
  139. //+-----------------------------------------------------------------------
  140. //
  141. //  Sysopsis:   sets all the error specific controls to be in sync with
  142. //              the current error index
  143. //
  144. //  Arguments:  none
  145. //
  146. //  Returns:    nothing
  147. //
  148. //------------------------------------------------------------------------
  149.  
  150. function updateErrorInfo()
  151. {
  152.     spnLine.innerText       = g_errList.getErrorLine();
  153.     spnCharacter.innerText  = g_errList.getErrorChar();
  154.     spnCode.innerText       = g_errList.getErrorCode();
  155.     divError.innerText      = g_errList.getErrorMsg();
  156.     divURL.innerText        = g_errList.getErrorUrl();
  157. }
  158.  
  159. //+-----------------------------------------------------------------------
  160. //
  161. //  Synopsis:   Handles keyboard-related shifting of focus among the
  162. //              varioud dialog controls.
  163. //
  164. //  Notes:      We're trying to pretend to be just like a normal dialog.
  165. //              Therefore, we need tab groups within which up/left
  166. //              shifts focus in the shift-tab diection, and right/down
  167. //              shifts focus in the tab direction. And we need a global
  168. //              tab order for tab and shift-tab to follow.
  169. //
  170. //  Arguments:  none
  171. //
  172. //  Returns:    nothing
  173. //
  174. //------------------------------------------------------------------------
  175.  
  176. function SwitchFocus()
  177. {
  178.     var HTML_KEY_ARROWLEFT  = 37;
  179.     var HTML_KEY_ARROWUP    = 38;
  180.     var HTML_KEY_ARROWRIGHT = 39;
  181.     var HTML_KEY_ARROWDOWN  = 40;
  182.  
  183.     var iCode = event.keyCode;
  184.     var strSourceID = event.srcElement.id;
  185.     var fTabForward;
  186.  
  187.     if (iCode < HTML_KEY_ARROWLEFT || iCode > HTML_KEY_ARROWDOWN)
  188.     {
  189.         return;
  190.     }
  191.  
  192.     var fTabForward = iCode == HTML_KEY_ARROWRIGHT ||
  193.                       iCode == HTML_KEY_ARROWDOWN;
  194.  
  195.     if (g_detailsPaneOpen)
  196.     {
  197.         // arrow keys move back and forth between:
  198.         // 1) ok - details
  199.         // 2) previous - next
  200.  
  201.         if (fTabForward)
  202.         {
  203.             if (strSourceID == "btnPrevErr")
  204.             {
  205.                 if (!btnNextErr.disabled)
  206.                 {
  207.                     btnNextErr.focus();
  208.                 }
  209.             }
  210.             else if (strSourceID == "btnOK")
  211.             {
  212.                 btnDetails.focus();
  213.             }
  214.             else if (strSourceID == "chkAlwaysShowErrs")
  215.             {
  216.                 btnOK.focus();
  217.             }
  218.         }
  219.         else
  220.         {
  221.             if (strSourceID == "btnNextErr")
  222.             {
  223.                 if (!btnPrevErr.disabled)
  224.                 {
  225.                     btnPrevErr.focus();
  226.                 }
  227.             }
  228.             else if (strSourceID == "btnDetails")
  229.             {
  230.                 btnOK.focus();
  231.             }
  232.             else if (strSourceID == "btnOK")
  233.             {
  234.                 chkAlwaysShowErrs.focus();
  235.             }
  236.         }
  237.     }
  238. }
  239.  
  240. //+-------------------------------------------------------------------
  241. //
  242. //  Synopsis:   Closes the dialog
  243. //
  244. //  Arguments:  none
  245. //
  246. //  Returns:    nothing
  247. //
  248. //---------------------------------------------------------------------
  249.  
  250. function btnOKClick()
  251. {
  252.     g_errList.setPerErrorDisplay(chkAlwaysShowErrs.checked);
  253.     g_errList.setDetailsPaneOpen(g_detailsPaneOpen);
  254.     window.close();
  255. }
  256.  
  257. //+-------------------------------------------------------------------
  258. //
  259. //  Synopsis:   make sure things which are affected by the state
  260. //              of the details pane are in sync with the current
  261. //              state of the details pane
  262. //
  263. //  Arguments:  none
  264. //
  265. //  Returns:    nothing
  266. //
  267. //--------------------------------------------------------------------
  268.  
  269. function assureControlState()
  270. {
  271.     if (g_detailsPaneOpen)
  272.     {
  273.         // update the button text
  274.         btnDetails.innerHTML = L_DetailsCollapse_Text;
  275.  
  276.         // enlarge the window to show the error info
  277.         window.dialogHeight = 24.2;
  278.  
  279.         // assure details info is visible
  280.         divDetails.style.display = "";
  281.         divButtons2.style.display = "";
  282.         trHR.style.display = "";
  283.     }
  284.     else
  285.     {
  286.         // update the button text
  287.         btnDetails.innerHTML = L_DetailsExpand_Text;
  288.  
  289.         // assure details info is hidden
  290.         divDetails.style.display = "none";
  291.         divButtons2.style.display = "none";
  292.         trHR.style.display = "none";
  293.  
  294.         // shrink the window to hide the error info
  295.         window.dialogHeight = 10.7;
  296.     }
  297. }
  298.  
  299. //+-------------------------------------------------------------------
  300. //
  301. //  Synopsis:   provides user with details about accumulated script
  302. //              errors
  303. //
  304. //  Arguments:  none
  305. //
  306. //  Returns:    nothing
  307. //
  308. //--------------------------------------------------------------------
  309.  
  310. function btnDetailsClick()
  311. {
  312.     g_detailsPaneOpen = !g_detailsPaneOpen;
  313.  
  314.     assureControlState();
  315.  
  316.     if (g_detailsPaneOpen)
  317.     {
  318.         // give focus to the "next" button if possible,
  319.         // otherwise try "previous", finally "ok"
  320.         if (!btnNextErr.disabled)
  321.         {
  322.             btnNextErr.focus();
  323.         }
  324.         else if (!btnPrevErr.disabled)
  325.         {
  326.             btnPrevErr.focus();
  327.         }
  328.         else
  329.         {
  330.             btnOK.focus();
  331.         }
  332.     }
  333.     else
  334.     {
  335.         // give focus to the "details" button
  336.         btnDetails.focus();
  337.     }
  338.  
  339.     updateTabIndices();
  340. }
  341.  
  342. //+-------------------------------------------------------------------
  343. //
  344. //  Synopsis:   updates error info to correspond to the next error
  345. //
  346. //  Arguments:  none
  347. //
  348. //  Returns:    nothing
  349. //
  350. //--------------------------------------------------------------------
  351.  
  352. function btnNextErrClick()
  353. {
  354.     g_errList.advanceError();
  355.     updateErrorInfo();
  356.  
  357.     if (btnPrevErr.disabled)
  358.     {
  359.         // no longer at beginning of error list
  360.         btnPrevErr.disabled = false;
  361.     }
  362.  
  363.     if (!g_errList.canAdvanceError())
  364.     {
  365.         // at end of error list
  366.         btnNextErr.disabled = true;
  367.         btnPrevErr.focus();
  368.     }
  369.  
  370.     updateTabIndices();
  371. }
  372.  
  373. function btnPrevErrClick()
  374. {
  375.     g_errList.retreatError();
  376.     updateErrorInfo();
  377.  
  378.     if (btnNextErr.disabled)
  379.     {
  380.         // no longer at end of error list
  381.         btnNextErr.disabled = false;
  382.     }
  383.  
  384.     if (!g_errList.canRetreatError())
  385.     {
  386.         // at beginning of error list
  387.         btnPrevErr.disabled = true;
  388.         btnNextErr.focus();
  389.     }
  390.  
  391.     updateTabIndices();
  392. }
  393.  
  394. function BodyOnKeyPress(nCode)
  395. {
  396.     if (nCode == 27)    //ESC
  397.     {
  398.         window.close();
  399.         return;
  400.     }
  401. }
  402.