Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

798 lines
20 KiB

  1. <HTML XMLNS:helpcenter>
  2. <HEAD>
  3. #include "header.inc"
  4. #include "debug_js.inc"
  5. #include "common.inc"
  6. #include "constants.inc"
  7. <TITLE>Remote Assistance</TITLE>
  8. <meta http-equiv="MSThemeCompatible" content="Yes">
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  10. <LINK id="UI_StyleSheet" REL="stylesheet" TYPE="text/css" HREF="../../Css/rc.css">
  11. <LINK ID=Stylesheet_Ref4 href="hcp://system/css/shared.css" rel=STYLESHEET type=text/css>
  12. #ifdef _OLDTOOLBAR
  13. <LINK ID=Stylesheet_Ref1 href="hcp://system/css/Behaviors.css" rel=STYLESHEET type=text/css>
  14. <LINK ID=Stylesheet_Ref2 href="hcp://system/css/Layout.css" rel=STYLESHEET type=text/css>
  15. <LINK ID=Stylesheet_Ref3 href="hcp://system/css/NavBar.css" rel=STYLESHEET type=text/css>
  16. #else
  17. <SCRIPT LANGUAGE="Javascript" EVENT="onCommand( tb, id )" FOR="idTB">
  18. switch ( id ) {
  19. case "btnTakeControl":
  20. case "btnReleaseControl":
  21. Helper_TakeControl();
  22. break;
  23. case "btnSendFile_1":
  24. Helper_LaunchFileXfer( 0 );
  25. break;
  26. case "btnVoice":
  27. case "btnVoiceStop":
  28. Helper_SendVoice();
  29. break;
  30. case "btnOptions":
  31. Helper_HandleOptions();
  32. break;
  33. case "btnQuit_1":
  34. Helper_QuitMethod();
  35. break;
  36. case "btnHelp":
  37. Help();
  38. break;
  39. }
  40. </SCRIPT>
  41. #endif
  42. <script LANGUAGE="Javascript" >
  43. var g_oSAFRemoteAssistanceHelper = null;
  44. var oSAFClassFactory = parent.oSAFClassFactory;
  45. #ifndef _OLDTOOLBAR
  46. var g_bTakeControlDisabled = false;
  47. #endif
  48. /*
  49. * Localizable constants, text and messages
  50. */
  51. var L_STOPTALKING_Text = "&nbsp;&nbsp;Stop <U>T</U>alking";
  52. var L_STARTTALKING_Text = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Start <u>T</u>alking";
  53. var L_ERRRCTOGGLEFAILED_Text = "The 'Take Control' feature is not responding. Please try again or restart the session.";
  54. var L_WAITINGFOR_Text = "Requesting control...";
  55. var L_TORESPOND_Text = " to respond to the remote control request.";
  56. //
  57. // VOIP Messages
  58. //
  59. var L_ERRVOIP2_Text = c_szVoiceError;
  60. function DisableToolbar()
  61. {
  62. TraceFunctEnter("DisableToolbar");
  63. try
  64. {
  65. try
  66. {
  67. idTB.SetState( "btnTakeControl", false );
  68. }
  69. catch(error)
  70. {
  71. // ignore
  72. }
  73. try
  74. {
  75. idTB.SetState( "btnReleaseControl", false );
  76. }
  77. catch(error)
  78. {
  79. // ignore
  80. }
  81. idTB.SetState( "btnSendFile_1", false );
  82. try
  83. {
  84. idTB.SetState( "btnVoice", false );
  85. }
  86. catch(error)
  87. {
  88. // ignore
  89. }
  90. try
  91. {
  92. idTB.SetState( "btnVoiceStop", false );
  93. }
  94. catch(error)
  95. {
  96. // ignore
  97. }
  98. idTB.SetState( "btnOptions", false );
  99. idTB.SetState( "btnQuit_1", false );
  100. }
  101. catch(error)
  102. {
  103. parent.FatalError( parent.L_RCCTL_Text, error );
  104. }
  105. TraceFunctLeave();
  106. }
  107. /*++
  108. Control handling routines
  109. --*/
  110. //
  111. // Security Check
  112. //
  113. function DoLoad()
  114. {
  115. var L_ERRACCESSDENIED_Text = "Directly launching this page is not allowed. ";
  116. MAC_IF_DIRECTLAUNCH_CLIENT
  117. {
  118. idBody.style.visibility = "hidden";
  119. alert( L_ERRACCESSDENIED_Text );
  120. return;
  121. }
  122. // Set the mode of the Toolbar object specifically for RA.
  123. idTB.Mode = 1;
  124. }
  125. //
  126. // Helper_InitializeTools: Stuff done when the RCControl page is loaded
  127. //
  128. function Helper_InitializeTools()
  129. {
  130. TraceFunctEnter("Helper_InitializeTools");
  131. try
  132. {
  133. InitTrace();
  134. // Start with the button enabled
  135. #ifdef _OLDTOOLBAR
  136. btnVoice.disabled = false;
  137. #else
  138. idTB.SetState( "btnVoice", true );
  139. #endif
  140. //
  141. // Point to the parent Helper object
  142. //
  143. if (parent.g_oSAFRemoteAssistanceHelper != null)
  144. {
  145. g_oSAFRemoteAssistanceHelper = parent.g_oSAFRemoteAssistanceHelper;
  146. }
  147. //
  148. // Setup the control
  149. //
  150. parent.Helper_SetupControlChannel();
  151. //
  152. // Initialization
  153. //
  154. g_oSAFRemoteAssistanceHelper.m_bConnected = true;
  155. //
  156. // See the remote screen
  157. //
  158. g_oSAFRemoteAssistanceHelper.m_oSAFRemoteDesktopClient.ConnectRemoteDesktop();
  159. //
  160. // If VoIP is enabled
  161. //
  162. if(true == parent.g_bVoIPEnabled )
  163. {
  164. //
  165. // Create the m_oSAFIntercomClient
  166. // NOTE: call connect in ListenSuccess Message
  167. // alert("Creating m_oSAFIntercomClient...");
  168. g_oSAFRemoteAssistanceHelper.m_oSAFIntercomClient = oSAFClassFactory.CreateObject_IntercomClient();
  169. if( null == g_oSAFRemoteAssistanceHelper.m_oSAFIntercomClient )
  170. {
  171. parent.FatalError(parent.L_RCCTL_Text);
  172. }
  173. g_oSAFRemoteAssistanceHelper.m_oSAFIntercomClient.onVoiceDisconnected = Helper_onVoiceDisconnected;
  174. g_oSAFRemoteAssistanceHelper.m_oSAFIntercomClient.onVoiceConnected = Helper_onVoiceConnected;
  175. g_oSAFRemoteAssistanceHelper.m_oSAFIntercomClient.onVoiceDisabled = Helper_onVoiceDisabled;
  176. }
  177. }
  178. catch(error)
  179. {
  180. parent.FatalError( parent.L_RCCTL_Text, error );
  181. }
  182. TraceFunctLeave();
  183. return;
  184. }
  185. //
  186. // Routine to enable Remote Control
  187. //
  188. function Helper_TakeControl()
  189. {
  190. TraceFunctEnter("Helper_TakeControl");
  191. try
  192. {
  193. if( parent.frames.idFrameScreen.g_oSAFRemoteAssistanceHelper.m_bConnected == false )
  194. {
  195. //
  196. // Disconnected
  197. //
  198. TraceFunctLeave();
  199. return;
  200. }
  201. #ifdef _OLDTOOLBAR
  202. if((null != g_oSAFRemoteAssistanceHelper.m_oSAFRemoteDesktopClient) && (false == btnTakeControl_1.disabled))
  203. {
  204. #else
  205. if(null != g_oSAFRemoteAssistanceHelper.m_oSAFRemoteDesktopClient)
  206. {
  207. #endif
  208. //
  209. // If RemoteControl is not ON already, Enable it
  210. //
  211. if( (false == g_oSAFRemoteAssistanceHelper.m_bRCEnabled )&& (false == g_bTakeControlDisabled))
  212. {
  213. parent.Helper_SendControlCommand( c_szRemoteCtrlStart );
  214. //
  215. // Disable Take Control button
  216. //
  217. #ifdef _OLDTOOLBAR
  218. btnTakeControl_1.disabled = true;
  219. #else
  220. idTB.SetState( "btnTakeControl", false );
  221. g_bTakeControlDisabled = true;
  222. #endif
  223. var sMsg = L_WAITINGFOR_Text;
  224. parent.frames.idFrameStatus.Helper_UpdateStatus( sMsg );
  225. idTB.SetState( "btnReleaseControl", true );
  226. }
  227. else
  228. {
  229. #ifdef _OLDTOOLBAR
  230. btnTakeControl_1.innerHTML = parent.L_TAKECONTROL_Text;
  231. #else
  232. idTB.SetVisibility( "btnTakeControl", true);
  233. idTB.SetState( "btnTakeControl", true );
  234. idTB.SetVisibility( "btnReleaseControl", false);
  235. #endif
  236. g_oSAFRemoteAssistanceHelper.m_bRCEnabled = false;
  237. g_bTakeControlDisabled = false;
  238. parent.Helper_ResetHelpee();
  239. // Log event log (event 4)
  240. try
  241. {
  242. var oLogger = new ActiveXObject("RACplDlg.RAEventLog");
  243. var args = new Array(2);
  244. args[0] = g_oSAFRemoteAssistanceHelper.m_szLocalUser;
  245. args[1] = g_oSAFRemoteAssistanceHelper.m_szUserName;
  246. // expert
  247. oLogger.LogRemoteAssistanceEvent(0,6,args);
  248. }
  249. catch(e)
  250. {
  251. // do nothing
  252. }
  253. //
  254. // Change Mode
  255. //
  256. parent.frames.idFrameStatus.Helper_UpdateStatus( parent.L_SCREENVIEWONLY_Text );
  257. }
  258. }
  259. }
  260. catch(error)
  261. {
  262. parent.FatalError( L_ERRRCTOGGLEFAILED_Text, error );
  263. }
  264. TraceFunctLeave();
  265. return;
  266. }
  267. //
  268. // Helper_LaunchFileXfer: Launches the File Xfer UI
  269. //
  270. function Helper_LaunchFileXfer( mode )
  271. {
  272. TraceFunctEnter("Helper_LaunchFileXfer");
  273. var vArgs = new Array(11);
  274. try
  275. {
  276. if( parent.frames.idFrameScreen.g_oSAFRemoteAssistanceHelper.m_bConnected == false )
  277. {
  278. //
  279. // Disconnected
  280. //
  281. TraceFunctLeave();
  282. return;
  283. }
  284. vArgs[0] = mode; // Source Mode
  285. vArgs[1] = g_oSAFRemoteAssistanceHelper.m_oControlChannel; // Control Channel
  286. vArgs[2] = g_oSAFRemoteAssistanceHelper.m_oSAFRemoteDesktopChannelMgr; // Channel Manager
  287. vArgs[3] = g_oSAFRemoteAssistanceHelper.m_iChannelId;
  288. vArgs[4] = g_oSAFRemoteAssistanceHelper.m_oFso; // File system object
  289. vArgs[5] = g_oSAFRemoteAssistanceHelper.m_oSAFClassFactory; // File SaveAs dialog object
  290. vArgs[6] = g_oSAFRemoteAssistanceHelper.m_szUserName; // Receiver - Remote Username
  291. vArgs[7] = new ActiveXObject("SAFRCFileDlg.FileOpen");
  292. // Logging DCR - Sending in a reference to the RAEventLog object
  293. //
  294. vArgs[8] = g_oSAFRemoteAssistanceHelper.m_szLocalUser; // Local Username
  295. vArgs[9] = parent.frames.idFrameScreen.g_oSAFRemoteAssistanceHelper.m_szHelpeeIP; // Remote IP
  296. vArgs[10] = new ActiveXObject("RACplDlg.RAEventLog");
  297. var subWin = window.showModelessDialog( c_szFileXferURL, vArgs, "dialogwidth:" + c_FileXferWidth + "px;dialogHeight:" + c_FileXferHeight + "px;status:no;resizable:no;help:no");
  298. parent.AddOpenSubWin( subWin );
  299. }
  300. catch(error)
  301. {
  302. parent.FatalError( parent.L_RCCTL_Text, error );
  303. }
  304. TraceFunctLeave();
  305. return;
  306. }
  307. //
  308. // Helper_QuitMethod: Quit the UI
  309. //
  310. function Helper_QuitMethod()
  311. {
  312. MAC_IF_DIRECTLAUNCH_CLIENT
  313. {
  314. return;
  315. }
  316. TraceFunctEnter("Helper_QuitMethod");
  317. try
  318. {
  319. if( false == parent.g_ExpertDisconnected )
  320. {
  321. parent.g_ExpertDisconnected = true;
  322. }
  323. // Call Exit on the Voice object to release reference in RTC
  324. if ((null != g_oSAFRemoteAssistanceHelper) && (null != g_oSAFRemoteAssistanceHelper.m_oSAFIntercomClient))
  325. {
  326. try
  327. {
  328. DebugTrace("Calling g_oSAFRemoteAssistanceHelper.m_oSAFIntercomClient.Exit");
  329. g_oSAFRemoteAssistanceHelper.m_oSAFIntercomClient.Exit();
  330. DebugTrace("g_oSAFRemoteAssistanceHelper.m_oSAFIntercomClient.Exit completed sucessfully");
  331. }
  332. catch(error)
  333. {
  334. DebugTrace( "Error: " + error.description + " Number: " + error.number);
  335. }
  336. }
  337. if( parent.frames.idFrameScreen.g_oSAFRemoteAssistanceHelper.m_bConnected == false )
  338. {
  339. //
  340. // Disconnected
  341. //
  342. #ifndef _ONCONNECT_INIT
  343. if( null != parent.oSAFClassFactory )
  344. {
  345. parent.oSAFClassFactory.Close();
  346. }
  347. #endif
  348. TraceFunctLeave();
  349. return;
  350. }
  351. //
  352. // Disconnect RC
  353. //
  354. DebugTrace("Disabling controls...");
  355. idBody.disabled = true;
  356. parent.frames.idFrameStatus.btnActual.disabled=true;
  357. parent.frames.idFrameStatus.btnScale.disabled=true;
  358. parent.frames.idFrameStatus.Helper_UpdateStatus( parent.L_DISCONNECTION_Text );
  359. DebugTrace("Calling parent.RCDisconnect");
  360. parent.RCDisconnect();
  361. }
  362. catch(error)
  363. {
  364. parent.FatalError( parent.L_RCCTL_Text, error );
  365. }
  366. return;
  367. }
  368. //
  369. // Helper_SendVoice: Send voice across
  370. //
  371. function Helper_SendVoice()
  372. {
  373. TraceFunctEnter("Helper_SendVoice");
  374. try
  375. {
  376. //
  377. // Check if VoIP is enabled
  378. //
  379. if(false == parent.g_bVoIPEnabled )
  380. {
  381. //
  382. // VoIP is disabled
  383. //
  384. TraceFunctLeave();
  385. return;
  386. }
  387. if( parent.frames.idFrameScreen.g_oSAFRemoteAssistanceHelper.m_bConnected == false )
  388. {
  389. //
  390. // Disconnected
  391. //
  392. TraceFunctLeave();
  393. return;
  394. }
  395. // Gray button
  396. #ifdef _OLDTOOLBAR
  397. btnVoice.disabled = true;
  398. #else
  399. idTB.SetState( "btnVoice", false );
  400. #endif
  401. // Disable incoming 'PreStart' requests
  402. parent.g_bStartEnabled = false;
  403. // Send the Helpee/Client a PreStart message
  404. parent.Helper_SendControlCommand( c_szVoipPreStart );
  405. }
  406. catch(error)
  407. {
  408. parent.FatalError( parent.L_RCCTL_Text, error );
  409. }
  410. TraceFunctLeave();
  411. return;
  412. }
  413. //
  414. // Helper_HandleOptions: Set Options
  415. //
  416. function Helper_HandleOptions()
  417. {
  418. TraceFunctEnter("Helper_HandleOptions");
  419. try
  420. {
  421. if( parent.frames.idFrameScreen.g_oSAFRemoteAssistanceHelper.m_bConnected == false )
  422. {
  423. //
  424. // Disconnected
  425. //
  426. TraceFunctLeave();
  427. return;
  428. }
  429. var obj=new ActiveXObject( szProgIDSetting );
  430. var vArgs=new Array(3);
  431. vArgs[0]=parent;
  432. vArgs[1]=obj;
  433. vArgs[2]="";
  434. var ret=window.showModalDialog("Setting.htm",vArgs,"dialogWidth:405px;dialogHeight:330px;dialogTop:200px;dialogLeft:400px;edge:raised;status:no;help:no;");
  435. }
  436. catch(error)
  437. {
  438. parent.FatalError( parent.L_RCCTL_Text, error );
  439. }
  440. TraceFunctLeave();
  441. return;
  442. }
  443. //
  444. // Helper_onVoiceDisconnected : This callback is called when the onVoiceDisconnected event is fired (on the helper/client)
  445. //
  446. function Helper_onVoiceDisconnected()
  447. {
  448. TraceFunctEnter("Helper_onVoiceDisconnected");
  449. try
  450. {
  451. if (true == g_oSAFRemoteAssistanceHelper.m_bConnected)
  452. {
  453. // alert("in onVoiceDisconnected!");
  454. // Persist state for VoIP connection
  455. parent.g_bVoipConnected = false;
  456. // Ungray the voice button, only if we are enabled.
  457. if (parent.g_bVoIPEnabled == true)
  458. {
  459. #ifdef _OLDTOOLBAR
  460. // Ungray the Voice Button
  461. btnVoice.disabled = false;
  462. // Set the not connected image
  463. imgVoicePic.src = "../Common/SendVoice.gif";
  464. txtVoice.innerHTML = L_STARTTALKING_Text;
  465. #else
  466. idTB.SetVisibility( "btnVoice", true );
  467. idTB.SetState( "btnVoice", true );
  468. idTB.SetVisibility( "btnVoiceStop", false );
  469. #endif
  470. }
  471. parent.g_bStartEnabled = true;
  472. }
  473. }
  474. catch (error)
  475. {
  476. parent.FatalError( parent.L_RCCTL_Text, error );
  477. }
  478. TraceFunctLeave();
  479. }
  480. //
  481. // Helper_onVoiceConnected() : This callback is called when the onVoiceConnected event is fired on the helper/client
  482. //
  483. function Helper_onVoiceConnected()
  484. {
  485. TraceFunctEnter("Helper_onVoiceConnected");
  486. try
  487. {
  488. // alert("in onVoiceConnected!");
  489. // Persist state for VoIP connection
  490. parent.g_bVoipConnected = true;
  491. parent.g_bStartEnabled = true;
  492. #ifdef _OLDTOOLBAR
  493. // Ungray the Voice Button
  494. btnVoice.disabled = false;
  495. imgVoicePic.src = "../Common/SendVoiceOn.gif";
  496. txtVoice.innerHTML = L_STOPTALKING_Text;
  497. #else
  498. idTB.SetVisibility( "btnVoice", false );
  499. idTB.SetVisibility( "btnVoiceStop", true );
  500. idTB.SetState( "btnVoiceStop", true );
  501. #endif
  502. }
  503. catch (error)
  504. {
  505. parent.FatalError( parent.L_RCCTL_Text, error );
  506. }
  507. TraceFunctLeave();
  508. }
  509. //
  510. // Helper_onVoiceDisabled() : This callback is called when the onVoiceDisabled event is fired on the helper/client
  511. //
  512. function Helper_onVoiceDisabled()
  513. {
  514. TraceFunctEnter("Helper_onVoiceDisabled");
  515. try
  516. {
  517. if (parent.g_bVoIPEnabled == true)
  518. {
  519. // Disable the voice on this machine
  520. parent.g_bVoIPEnabled = false;
  521. parent.g_bVoipConnected = false;
  522. parent.DisplayMessage( L_ERRVOIP2_Text );
  523. // Gray out the voice button
  524. #ifdef _OLDTOOLBAR
  525. btnVoice.disabled = true;
  526. #else
  527. idTB.SetState( "btnVoice", false );
  528. #endif
  529. // set me to bad
  530. parent.g_stateVoipMe = 2;
  531. // Send a message to the Helper to disable it's voice also
  532. parent.Helper_SendControlCommand( c_szVoipDisable );
  533. }
  534. }
  535. catch(error)
  536. {
  537. parent.FatalError( parent.L_RCCTL_Text, error );
  538. }
  539. TraceFunctLeave();
  540. }
  541. function Help()
  542. {
  543. TraceFunctEnter("Help");
  544. try
  545. {
  546. parent.LaunchHelpEx(0);
  547. }
  548. catch( error )
  549. {
  550. parent.FatalError( parent.L_ERRFATAL_Text, error );
  551. }
  552. TraceFunctLeave();
  553. }
  554. function document.onkeydown()
  555. {
  556. try
  557. {
  558. parent.iKeyCode[ parent.iKeyCnt ] = window.event.keyCode;
  559. parent.iKeyCnt = (parent.iKeyCnt+1)%3;
  560. switch( parent.iKeyCode[ parent.iKeyCnt ] ) {
  561. case 0x8:
  562. window.event.returnValue = false;
  563. break;
  564. }
  565. }
  566. catch(error)
  567. {
  568. SetFocus();
  569. window.event.returnValue = false;
  570. }
  571. }
  572. function SetFocus()
  573. {
  574. try
  575. {
  576. idTB.focus();
  577. }
  578. catch(error)
  579. {
  580. idBody.focus();
  581. }
  582. }
  583. </script>
  584. <STYLE>
  585. .styRAToolBarTable
  586. {
  587. visibility:visible;
  588. margin-Left:1mm;
  589. margin-top:1mm;
  590. margin-bottom:1mm;
  591. Height:80%;
  592. }
  593. </STYLE>
  594. </head>
  595. <body id="idBody" onFocus="SetFocus()" onLoad="DoLoad()" tabindex=-1 onunload="Helper_QuitMethod()" scroll=no>
  596. #ifdef _OLDTOOLBAR
  597. <Table id="idControlPanel" name="idControlPanel" border=0 class="styRAToolBarTable" cellpadding=0 cellspacing=0 >
  598. <tr>
  599. <td class="vAlign" style="width:20%">
  600. <helpcenter:button id="btnTakeControl" onaction="Helper_TakeControl();" tabindex=1 accesskey="C" style="width:100%"
  601. title="Take Control" body='<img class="vAlign" src="TakeControl.gif" id="imgTakeControl_1">
  602. <Span style="visibility:visible" class="styText styBlack vAlign" id="btnTakeControl_1">
  603. &nbsp;&nbsp;Take <U>C</U>ontrol
  604. </Span>'
  605. />
  606. </td>
  607. <td class="vAlign" align="center" id="imgHdrBrk1"> <img src="combobox_line.gif"> </td>
  608. <td class="vAlign" style="width:16%">
  609. <helpcenter:button id="btnSendFile_1" onaction="Helper_LaunchFileXfer(0);" tabindex=2 accesskey="F" style="width:100%"
  610. title="Send a File" body='<img class="vAlign" src="../Common/SendFile.gif" id="imgSendFile">
  611. <Span class="styText styBlack vAlign" id="txtSendFile">
  612. &nbsp;&nbsp;Send a <u>F</u>ile
  613. </Span>'
  614. />
  615. </td>
  616. <td class="vAlign" align="center" id="imgHdrBrk2"> <img src="combobox_line.gif"> </td>
  617. <td class="vAlign" style="width:16%">
  618. <helpcenter:button id="btnVoice" onaction="Helper_SendVoice();" tabindex=3 accesskey="T" style="width:100%"
  619. title="Voice" body='<img class="vAlign" id="imgVoicePic" src="../Common/SendVoice.gif" >
  620. <Span class="styText styBlack vAlign" id="txtVoice">
  621. &nbsp;&nbsp;Start <u>T</u>alking
  622. </Span>'
  623. />
  624. </td>
  625. <td class="vAlign" align="center" id="imgHdrBrk3"> <img src="combobox_line.gif"> </td>
  626. <td class="vAlign" style="width:16%">
  627. <helpcenter:button id="btnOptions" onaction="Helper_HandleOptions();" tabindex=4 accesskey="S" style="width:100%"
  628. title="Settings" body='<img class="vAlign" src="../Common/Options.gif" id="imgSettings">
  629. <Span class="styText styBlack vAlign" id="txtSettings">
  630. &nbsp;&nbsp;<u>S</u>ettings
  631. </Span>'
  632. />
  633. </td>
  634. <td class="vAlign" align="center" id="imgHdrBrk4"> <img src="combobox_line.gif"> </td>
  635. <td class="vAlign" style="width:16%">
  636. <helpcenter:button id="btnQuit_1" onaction="Helper_QuitMethod();" tabindex=5 accesskey="D" style="width:100%"
  637. title="Disconnect" body='<img class="vAlign" src="../Common/Quit.gif" id="imgQuit">
  638. <Span class="styText styBlack vAlign" id="txtDisconnect">
  639. &nbsp;&nbsp;<u>D</u>isconnect
  640. </Span>'
  641. />
  642. </td>
  643. <td class="vAlign" align="center" id="imgHdrBrk5"> <img src="combobox_line.gif"> </td>
  644. <td class="vAlign">
  645. <helpcenter:button id='btnHelp' onaction="Help();" tabindex=6 style="width:100%"
  646. title="Help" body='<img class="vAlign" src="../Common/HelpCenter.gif" id="imgHelpCenter">
  647. <Span class="styText styBlack vAlign" id="txtHelp">
  648. &nbsp;&nbsp;Help
  649. </Span>'
  650. />
  651. </td>
  652. </tr>
  653. </table>
  654. #else // _OLDTOOLBAR
  655. <OBJECT id="idTB" name="idTB" CLASSID="CLSID:FC7D9E08-3F9E-11d3-93C0-00C04F72DAF7" WIDTH=100% HEIGHT=100% >
  656. <PARAM id=NoLoc1 name="Definition" value="RAToolbar.xml">
  657. </OBJECT>
  658. #endif
  659. </body>
  660. </html>