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.

1597 lines
43 KiB

  1. <html>
  2. <head>
  3. #include "header.inc"
  4. #include "debug_js.inc"
  5. #include "constants.inc"
  6. <meta http-equiv="MSThemeCompatible" content="Yes">
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  8. <TITLE>Remote Assistance</TITLE>
  9. <LINK id="UI_StyleSheet" name="UI_StyleSheet" REL="stylesheet" TYPE="text/css" HREF="../../Css/rc.css">
  10. <LINK id="UI_StyleSheet1" REL="stylesheet" TYPE="text/css" HREF="hcp://system/css/shared.css">
  11. <script id="Script1" name="Script1" LANGUAGE="Javascript" SRC="../../Common/common.js"> </script>
  12. <script id="Script2" name="Script2" LANGUAGE="Javascript" SRC="../../Common/constants.js"> </script>
  13. <!--
  14. Scripts to handle UI
  15. -->
  16. <script>
  17. /*
  18. * Localizable constants, text and messages
  19. */
  20. var L_FILEXFERCANCELLEDBY_Text = "File transmission cancelled by ";
  21. var L_REJECTFILEXFER_Text = "Request for file transfer was denied by ";
  22. var L_ERRFAILEDTOCREATETMPFILE_Text = "Unable to create a file for writing. Please choose a new name for the file to be saved as.";
  23. var L_ERRMISSINGFILENAME_Text = "The file name is not valid. Please specify a valid file name.";
  24. var L_ERRINVALIDFILEHANDLE_Text = "Cannot transfer the file. Please wait and try again.";
  25. var L_ERRTEMPFILENAME_Text = "Temp Filename not defined";
  26. var L_HASBEENSENTTO_Text = " has been sent to ";
  27. var L_WAITINGFORRESPONSE_Text = "Waiting for response...";
  28. var L_SENDING_Text = "Sending ";
  29. var L_TO_Text = " to ";
  30. var L_CANCEL_Text = "Cancel";
  31. var L_OK_Text = "OK";
  32. var L_FILE_Text = "File ";
  33. var L_HASBEENSAVEDTO_Text = " has been saved to ";
  34. var L_DOUSAVE_Text = "Do you want to open this file now?";
  35. var L_SAVING_Text = "Saving ";
  36. var L_FROM_Text = " from ";
  37. var L_ERRACCESSDENIED_Text = "Directly launching this page is not allowed. ";
  38. var L_YESAccessKey_Text = "Y";
  39. var L_NOAccessKey_Text = "N";
  40. var L_YES_Text = "<U>Y</U>es";
  41. var L_NO_Text = "<U>N</U>o";
  42. var L_DOT_Text = ".";
  43. var vArgs = null;
  44. var g_oLogger = null;
  45. var Mode = null;
  46. var g_oControlChannel = null;
  47. var g_oDataChannel = null;
  48. var g_oSAFRemoteDesktopChannelMgr = null;
  49. var g_iFileSize = 0;
  50. var g_iSentCtr = 0;
  51. var g_iRecvdCtr = 0;
  52. var g_szFileName = null;
  53. var g_szChannelId = null;
  54. var g_oSAFRCDlgFileOpen = null;
  55. var fso = null;
  56. var fileHandle = null;
  57. var file = null;
  58. var tFileName = null;
  59. var oSaveDlg = null;
  60. var oSAFClassFactory = null;
  61. var szIPAddr = null;
  62. var g_DestnCnt = 0;
  63. var g_nStatusMsgId = 0;
  64. var EXECUTE_EXITFILEXFER = 1;
  65. var EXECUTE_WINDOWCLOSE = 2;
  66. var EXECUTE_SENDREJECT = 3;
  67. var g_index = 0;
  68. var g_ArrProgressBoxes;
  69. var progcount=0;
  70. var nTemp=0;
  71. var g_szSenderName = "Sender";
  72. var g_szReceiverName = "Receiver";
  73. var g_bXferComplete = false;
  74. var g_iTimer = null;
  75. var g_SourceFileName = "???";
  76. var g_SourceFileSize = "???";
  77. var szLocalUserName = "???";
  78. var szRemoteIP = "???";
  79. var szRemoteUserName = "???";
  80. function FatalError( szMsg, error )
  81. {
  82. if( szMsg.length )
  83. {
  84. alert( szMsg );
  85. }
  86. }
  87. //****Handles the Esc Key****//
  88. function document.onkeydown()
  89. {
  90. if(window.event.keyCode==27)
  91. {
  92. if (FileXFerSrc.className == "MaxLayout Display")
  93. {
  94. g_bXferComplete=true;
  95. window.close();
  96. }
  97. if (FileXFerDestn.className == "MaxLayout Display")
  98. {
  99. OnCancelFileXfer();
  100. }
  101. if (ProgressBoxesId.className == "MaxLayout Display")
  102. {
  103. SendReject();
  104. }
  105. if (StatusMsgId.className == "MaxLayout Display")
  106. {
  107. StatusMsgRoutine();
  108. }
  109. if (EndStatusMsgId.className == "MaxLayout Display")
  110. {
  111. StatusMsgRoutine();
  112. }
  113. window.event.returnValue=false;
  114. }
  115. }
  116. function onUnload()
  117. {
  118. TraceFunctEnter("onUnload");
  119. try
  120. {
  121. if( g_bXferComplete == false )
  122. {
  123. SendReject();
  124. }
  125. }
  126. catch(error)
  127. {
  128. FatalError( L_RCCTL_Text, error );
  129. }
  130. TraceFunctLeave();
  131. return;
  132. }
  133. function InitFileXfer()
  134. {
  135. TraceFunctEnter("InitFileXfer");
  136. try
  137. {
  138. vArgs = window.dialogArguments;
  139. Mode = vArgs[0]; // Mode=0: Source, Mode=1: Destination
  140. g_oControlChannel = vArgs[1];
  141. g_oSAFRemoteDesktopChannelMgr = vArgs[2];
  142. g_oLogger = vArgs[10];
  143. if( 0 == Mode)
  144. {
  145. //**** UI Update ****//
  146. FileXFerSrc.className = "MaxLayout Display";
  147. FileXFerDestn.className = "MaxLayout DisplayNone";
  148. ProgressBoxesId.className = "MaxLayout DisplayNone";
  149. StatusMsgId.className = "MaxLayout DisplayNone";
  150. EndStatusMsgId.className = "MaxLayout DisplayNone";
  151. szIPAddr = vArgs[3];
  152. fso = vArgs[4]; // File system object
  153. oSAFClassFactory = vArgs[5]; // SAF Class Factory
  154. g_szReceiverName = EscapedName( vArgs[6] ); // Receiver
  155. g_oSAFRCDlgFileOpen = vArgs[7]; // SAFRCDlg.FileOpen dialog object.
  156. var d = new Date();
  157. var szTimeAtInit = ".";
  158. szTimeAtInit += d.getMonth(); // Get Month
  159. szTimeAtInit += d.getDate(); // Get day
  160. szTimeAtInit += d.getYear();
  161. szTimeAtInit += d.getMilliseconds();
  162. g_szChannelId = szIPAddr + szTimeAtInit;
  163. szLocalUserName = EscapedName( vArgs[8]);
  164. szRemoteIP = vArgs[9];
  165. szRemoteUserName = g_szReceiverName;
  166. if (szRemoteIP == null)
  167. szRemoteIP = "???";
  168. if (szLocalUserName == null)
  169. szLocalUserName = "???";
  170. if (szRemoteUserName == null)
  171. szRemoteUserName = "???";
  172. DebugTrace( "g_szChannelId : " + g_szChannelId );
  173. attfile.focus();
  174. }
  175. else
  176. {
  177. DebugTrace( "Destination");
  178. //**** UI Update ****//
  179. FileXFerSrc.className = "MaxLayout DisplayNone";
  180. FileXFerDestn.className= "MaxLayout Display";
  181. ProgressBoxesId.className = "MaxLayout DisplayNone";
  182. StatusMsgId.className= "MaxLayout DisplayNone";
  183. EndStatusMsgId.className = "MaxLayout DisplayNone";
  184. g_szFileName = vArgs[3]; // FILENAME
  185. g_iFileSize = vArgs[4]; // FILESIZE
  186. g_szChannelId = vArgs[5]; // CHANNELID
  187. fso = vArgs[6]; // File system object
  188. oSaveDlg = vArgs[7]; // SaveAs dialog object
  189. oSAFClassFactory = vArgs[8]; // SAF Class Factory
  190. g_szSenderName = EscapedName( vArgs[9] ); // Sender of the file
  191. szLocalUserName = EscapedName( vArgs[12] ); // Local User Name
  192. szRemoteIP = vArgs[11]; // Remote IP Address
  193. szRemoteUserName = g_szSenderName; // Remote User Name
  194. if (szRemoteIP == null)
  195. szRemoteIP = "???";
  196. if (g_szSenderName == null)
  197. g_szSenderName = "???";
  198. if (szLocalUserName == null)
  199. szLocalUserName = "???";
  200. if (g_iFileSize == null)
  201. g_iFileSize = "???";
  202. if (g_szFileName == null)
  203. g_szFileName = "???";
  204. OkId.focus();
  205. FileNameId.innerText = "'"+g_szFileName +"'.";
  206. SenderNameId.innerText = g_szSenderName;
  207. idFileSize.innerText=g_iFileSize;
  208. DebugTrace( "Create data channel");
  209. try
  210. {
  211. if(null == g_oDataChannel)
  212. {
  213. g_oDataChannel = g_oSAFRemoteDesktopChannelMgr.OpenDataChannel( g_szChannelId );
  214. g_oDataChannel.OnChannelDataReady = function()
  215. { DestnDataChannelDataReadyHandler(); }
  216. }
  217. }
  218. catch(error)
  219. {
  220. FatalError( L_RCCTL_Text, error );
  221. return;
  222. }
  223. }
  224. }
  225. catch(error)
  226. {
  227. RCFileXferBody.style.visibility = "hidden";
  228. FatalError( L_ERRACCESSDENIED_Text );
  229. return;
  230. }
  231. TraceFunctLeave();
  232. return;
  233. }
  234. //*** onAcceptFileXfer: ***//
  235. // Purpose: Routine sets up file xfer on the Receiver side.
  236. // Functionality: Opens up a dialog for the user to select a folder and name for the file
  237. // to be received. Creates the file incase of user choosing to save the file
  238. // and send an ACK back to the sender for dumping the data on the channel.
  239. //
  240. function onAcceptFileXfer()
  241. {
  242. TraceFunctEnter( "onAcceptFileXfer" );
  243. try
  244. {
  245. oSaveDlg.FileName = g_szFileName;
  246. /* Disabling the fix for 446403 since it was not approved by WAR yet.
  247. var szFileName = g_szFileName;
  248. var i = szFileName.lastIndexOf( "." );
  249. if( i != -1 )
  250. {
  251. var szFileType = szFileName.slice( i + 1 );
  252. oSaveDlg.FileType = szFileType;
  253. }
  254. else
  255. {
  256. oSaveDlg.FileType = "";
  257. }
  258. */
  259. var bFileNmChosen = oSaveDlg.OpenFileSaveDlg();
  260. tFileName = oSaveDlg.FileName;
  261. /* Disabling the fix for 446403 since it was not approved by WAR yet.
  262. if( (i != -1 ) && ( oSaveDlg.FileName.lastIndexOf( ".") == -1) )
  263. {
  264. tFileName = oSaveDlg.FileName + "." + oSaveDlg.FileType;
  265. }
  266. else
  267. {
  268. tFileName = oSaveDlg.FileName;
  269. }
  270. */
  271. if(0 == bFileNmChosen)
  272. {
  273. OnCancelFileXfer();
  274. return;
  275. }
  276. if( EXECUTE_WINDOWCLOSE == g_nStatusMsgId )
  277. {
  278. //
  279. // Check if FileXfer was cancelled
  280. //
  281. return;
  282. }
  283. }
  284. catch(error)
  285. {
  286. FatalError( L_RCCTL_Text, error );
  287. return;
  288. }
  289. //**Create the File for writing**//
  290. try
  291. {
  292. fileHandle = oSAFClassFactory.CreateFileAsStream( tFileName );
  293. }
  294. catch(error)
  295. {
  296. FatalError( L_ERRFAILEDTOCREATETMPFILE_Text );
  297. onAcceptFileXfer();
  298. }
  299. //** Send ACK to source to make it begin pumping data on the data channel **//
  300. try
  301. {
  302. //**** UI Update ****//
  303. FileXFerDestn.className = "MaxLayout DisplayNone";
  304. FileXFerSrc.className="MaxLayout DisplayNone";
  305. ProgressBoxesId.className = "MaxLayout Display";
  306. StatusMsgId.className = "MaxLayout DisplayNone";
  307. EndStatusMsgId.className= "MaxLayout DisplayNone";
  308. ProgBarDetails.innerHTML = L_SAVING_Text +"'"+g_szFileName +"'"+ L_FROM_Text + g_szSenderName + '...';
  309. idFileSize.innerText=g_iFileSize;
  310. button1.focus();
  311. //** Sending ACK to the sender **//
  312. g_oDataChannel.SendChannelData( c_szFileXferACK );
  313. }
  314. catch(e)
  315. {
  316. FatalError(e.description);
  317. return;
  318. }
  319. TraceFunctLeave();
  320. return;
  321. }
  322. // OnCancelFileXfer:
  323. // Purpose: Sends rejection to source of file xfer
  324. // Functionality: Incase of the Receiver choosing to cancel the file transfer at
  325. // any stage of filexfer, this routine gets called. This routine
  326. // sends a flag to the other end to inform about the rejection and
  327. // closes the current window.
  328. //
  329. function OnCancelFileXfer()
  330. {
  331. TraceFunctEnter( "OnCancelFileXfer" );
  332. try
  333. {
  334. g_oDataChannel.SendChannelData( c_szFileXferREJECT );
  335. }
  336. catch(e)
  337. {
  338. FatalError(e.description);
  339. }
  340. TraceFunctLeave();
  341. window.close();
  342. }
  343. //** onSend: **//
  344. function onSend()
  345. {
  346. TraceFunctEnter("onSend");
  347. var fileName = attfile.value;
  348. fileName = trim(fileName);
  349. var Doc = null;
  350. var RCCommand = null;
  351. //** Open the File for reading**//
  352. try
  353. {
  354. try
  355. {
  356. if(fileName != "")
  357. {
  358. file = fso.GetFile(fileName);
  359. }
  360. else
  361. {
  362. FatalError( L_ERRMISSINGFILENAME_Text );
  363. btnSendFileId.disabled = true;
  364. attfile.value="";
  365. attfile.focus();
  366. return;
  367. }
  368. }
  369. catch(error)
  370. {
  371. FatalError( L_ERRMISSINGFILENAME_Text );
  372. btnSendFileId.disabled = true;
  373. attfile.value="";
  374. attfile.focus();
  375. return;
  376. }
  377. fileHandle = oSAFClassFactory.OpenFileAsStream(fileName);
  378. }
  379. catch(error)
  380. {
  381. FatalError( L_RCCTL_Text, error );
  382. btnSendFileId.disabled = true;
  383. return;
  384. }
  385. // Initiate File Xfer
  386. try
  387. {
  388. // Create an XML document
  389. Doc = new ActiveXObject("microsoft.XMLDOM");
  390. // Create the RCCOMMAND root node
  391. RCCommand = Doc.createElement( c_szRCCommand );
  392. // Set the NAME attribute to FILEXFER
  393. RCCommand.setAttribute( c_szRCCommandName, c_szFileXfer );
  394. // Set the FILENAME attribute
  395. RCCommand.setAttribute( c_szFileName, file.Name );
  396. // Set the FILESIZE attribute
  397. RCCommand.setAttribute( c_szFileSize, file.size );
  398. // Set the CHANNELID attribute
  399. RCCommand.setAttribute( c_szChannelId, g_szChannelId );
  400. // Send the XML across
  401. g_oControlChannel.SendChannelData( RCCommand.xml );
  402. }
  403. catch(error)
  404. {
  405. FatalError( L_RCCTL_Text, error );
  406. return;
  407. }
  408. // Create the data channel for Filetransfer
  409. try
  410. {
  411. if(null == g_oDataChannel)
  412. {
  413. g_oDataChannel = g_oSAFRemoteDesktopChannelMgr.OpenDataChannel( g_szChannelId );
  414. g_oDataChannel.OnChannelDataReady = function()
  415. { SrcDataChannelDataReadyHandler(); }
  416. }
  417. }
  418. catch(error)
  419. {
  420. FatalError( L_RCCTL_Text, error );
  421. return;
  422. }
  423. //**** UI Update ****//
  424. FileXFerSrc.className="MaxLayout DisplayNone";
  425. FileXFerDestn.className="MaxLayout DisplayNone";
  426. ProgressBoxesId.className = "MaxLayout DisplayNone";
  427. StatusMsgId.className = "MaxLayout Display";
  428. EndStatusMsgId.className= "MaxLayout DisplayNone";
  429. /*StatusMsgId.style.position = "absolute";
  430. StatusMsgId.style.top = "20px";
  431. StatusMsgId.style.left = "20px";*/
  432. Message.innerText = L_SENDING_Text +"'"+ file.name +"'"+ L_TO_Text + g_szReceiverName + "..." ;
  433. TD0TR1table0.innerText = L_WAITINGFORRESPONSE_Text;
  434. TD0TR0table0.align = "left";
  435. TD0TR1table0.align = "left";
  436. idBtn.align = "right";
  437. g_nStatusMsgId = EXECUTE_SENDREJECT;
  438. StatusMsgButton.value = L_CANCEL_Text;
  439. StatusMsgButton.focus();
  440. TraceFunctLeave();
  441. return;
  442. }
  443. var g_bFirstAck = false;
  444. var g_bRejected = false;
  445. //** SrcDataChannelDataReadyHandler() **//
  446. function SrcDataChannelDataReadyHandler()
  447. {
  448. TraceFunctEnter( "SrcDataChannelDataReadyHandler");
  449. try
  450. {
  451. try
  452. {
  453. var str = g_oDataChannel.ReceiveChannelData();
  454. }
  455. catch(error)
  456. {
  457. FatalError( L_RCCTL_Text, error );
  458. SendReject();
  459. }
  460. if(str == c_szFileXferACK)
  461. {
  462. UpdateStatusProgBar();
  463. #ifdef _FILEXFER_WITHACKS
  464. SendFileData();
  465. #else
  466. if( false == g_bFirstAck )
  467. {
  468. g_bFirstAck = true;
  469. SendFileData();
  470. }
  471. #endif
  472. }
  473. else if(str == c_szFileXferREJECT)
  474. {
  475. g_bRejected = true;
  476. if( null != g_iTimer )
  477. {
  478. clearTimeout( g_iTimer );
  479. g_iTimer = null;
  480. }
  481. if(null != fileHandle)
  482. {
  483. fileHandle.Close();
  484. fileHandle = null;
  485. }
  486. //**** UI Update ****//
  487. //Message.innerText = "";
  488. //table0.cellspacing = "0px";
  489. window.dialogHeight = "158px";
  490. FileXFerSrc.className="MaxLayout DisplayNone";
  491. FileXFerDestn.className="MaxLayout DisplayNone";
  492. ProgressBoxesId.className = "MaxLayout DisplayNone";
  493. StatusMsgId.className = "MaxLayout Display";
  494. EndStatusMsgId.className= "MaxLayout DisplayNone";
  495. /* StatusMsgId.style.position = "absolute";
  496. StatusMsgId.style.top = "10px";
  497. StatusMsgId.style.left = "20px";*/
  498. if (table0.rows.length==5)
  499. {
  500. table0.deleteRow(0);
  501. table0.deleteRow(0);
  502. }
  503. table0.rows(1).cells(0).className="height13";
  504. TD0TR1table0.innerHTML = '<img src="hcp://system/Remote%20Assistance/Interaction/Common/info.gif"></img><Span id="idblankSpace" name="idblankSpace" class="width8">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</Span><span id="idDeny" name="idDeny" class="VAlign Maxheight">' + L_REJECTFILEXFER_Text + g_szReceiverName + L_DOT_Text+ "</Span>";
  505. g_nStatusMsgId = EXECUTE_WINDOWCLOSE;
  506. idBtn.align = "middle";
  507. StatusMsgButton.value = L_OK_Text;
  508. StatusMsgButton.focus();
  509. }
  510. }
  511. catch(e)
  512. {
  513. FatalError(e.description);
  514. return;
  515. }
  516. TraceFunctLeave();
  517. return;
  518. }
  519. //** DestnDataChannelDataReadyHandler() **//
  520. function DestnDataChannelDataReadyHandler()
  521. {
  522. TraceFunctEnter("DestnDataChannelDataReadyHandler");
  523. var data = null;
  524. var idatalen = 0;
  525. try
  526. {
  527. data = g_oDataChannel.ReceiveChannelData();
  528. }
  529. catch(e)
  530. {
  531. FatalError(e.description);
  532. SendReject();
  533. }
  534. if ( c_szFileXferEND == data)
  535. {
  536. DebugTrace ("File received" );
  537. CompleteDestnProgress();
  538. // Close open temp file handle
  539. if(null != fileHandle)
  540. {
  541. fileHandle.Close();
  542. fileHandle = null;
  543. }
  544. //**** UI Update ****//
  545. FileXFerSrc.className="MaxLayout DisplayNone";
  546. FileXFerDestn.className="MaxLayout DisplayNone";
  547. ProgressBoxesId.className = "MaxLayout DisplayNone";
  548. StatusMsgId.className = "MaxLayout DisplayNone";
  549. EndStatusMsgId.className = "MaxLayout Display";
  550. // Log to the Event Log (event 1)
  551. try
  552. {
  553. var args = new Array(5);
  554. args[0] = tFileName;
  555. args[1] = g_iFileSize;
  556. args[2] = szRemoteUserName;
  557. args[3] = szRemoteIP;
  558. args[4] = szLocalUserName;
  559. g_oLogger.LogRemoteAssistanceEvent(0,1,args);
  560. }
  561. catch(e)
  562. {
  563. // do nothing
  564. }
  565. var tempstr = tFileName;
  566. var CompStr = new String("\\");
  567. var LastIndex = tempstr.lastIndexOf(CompStr);
  568. CompStr = tempstr.slice(0,LastIndex);
  569. StrongEndStatusMsg.innerText = L_FILE_Text +"'"+ g_szFileName +"'"+ L_HASBEENSAVEDTO_Text +"'"+ CompStr +"'.";
  570. EndStatusMsg.innerHTML = L_DOUSAVE_Text;
  571. g_nStatusMsgId = EXECUTE_WINDOWCLOSE;
  572. //**place holder**//
  573. //EndStatusMsg.innerHTML = "&nbsp;"
  574. idbtnEndStatus.innerHTML="<button class='styBtnWidth sys-font-body sys-color-body' onClick='OpenTempFile();' id='btnYes' name='btnYes' accesskey='" + L_YESAccessKey_Text + "'>" + L_YES_Text + "</button><Span id='idblankSpace' name='idblankSpace' class='width8'></Span><button class='styBtnWidth sys-font-body sys-color-body' onClick='StatusMsgRoutine()' id='btnNo' name='btnNo' accessKey='" + L_NOAccessKey_Text + "'>"+ L_NO_Text + "</button>";
  575. btnYes.focus();
  576. //**place holder**//
  577. //idbtnEndStatus.innerHTML="<button class='styButton' onClick='StatusMsgRoutine()' id='idOK' name='idOK'>OK</button>"
  578. //idOK.focus();
  579. //**place holder**//
  580. idbtnEndStatus.align="right";
  581. //idbtnEndStatus.align="center";
  582. g_bXferComplete = true;
  583. }
  584. else if ( c_szFileXferREJECT == data )
  585. {
  586. // Close open temp file handle
  587. if(null != fileHandle)
  588. {
  589. fileHandle.Close();
  590. fileHandle = null;
  591. }
  592. try
  593. {
  594. var f2=fso.GetFile(tFileName);
  595. f2.Delete();
  596. }
  597. catch(error)
  598. {
  599. }
  600. //**** UI Update ****//
  601. FileXFerSrc.className="MaxLayout DisplayNone";
  602. FileXFerDestn.className="MaxLayout DisplayNone";
  603. ProgressBoxesId.className = "MaxLayout DisplayNone";
  604. StatusMsgId.className = "MaxLayout Display";
  605. EndStatusMsgId.className = "MaxLayout DisplayNone";
  606. window.dialogHeight = "158px";
  607. Message.innerText = L_FILEXFERCANCELLEDBY_Text + g_szSenderName + ".";
  608. if (table0.rows.length==5)
  609. {
  610. table0.deleteRow(1);
  611. table0.deleteRow(1);
  612. }
  613. table0.rows(1).cells(0).className="height13";
  614. g_nStatusMsgId = EXECUTE_WINDOWCLOSE;
  615. StatusMsgButton.value = L_OK_Text;
  616. StatusMsgButton.focus();
  617. }
  618. else
  619. {
  620. try
  621. {
  622. // Update UI
  623. idatalen = (data.length/2);
  624. g_iRecvdCtr += idatalen;
  625. // Write str to open temp file
  626. DebugTrace("data.length: " + idatalen);
  627. if (fileHandle!=null)
  628. {
  629. try
  630. {
  631. fileHandle.WriteHex( idatalen, data );
  632. }
  633. catch(error)
  634. {
  635. SendReject();
  636. return;
  637. }
  638. }
  639. DebugTrace("Done writing...");
  640. // Create the Progress boxes and update them as and how much of data is received
  641. if (0 == g_index)
  642. {
  643. //**** UI Update ****//
  644. FileXFerSrc.className="MaxLayout DisplayNone";
  645. FileXFerDestn.className = "MaxLayout DisplayNone";
  646. ProgressBoxesId.className = "MaxLayout Display";
  647. StatusMsgId.className = "MaxLayout DisplayNone";
  648. EndStatusMsgId.className = "MaxLayout DisplayNone";
  649. idFileSize.innerText=g_iFileSize;
  650. button1.focus();
  651. ProgBarDetails.innerHTML = L_SAVING_Text +"'"+g_szFileName +"'"+ L_FROM_Text + g_szSenderName + '...';
  652. var value = document.all("ProgressBoxes").all.tags("td").length;
  653. var e = new Enumerator(document.all("ProgressBoxes").all.tags("td"));
  654. g_ArrProgressBoxes = new Array(value);
  655. var index=0;
  656. for(;!e.atEnd();e.moveNext())
  657. {
  658. g_ArrProgressBoxes[index] = e.item();
  659. index++;
  660. }
  661. g_index=(g_iFileSize/30);
  662. progcount+=c_MAXFILEXFERSIZE;
  663. idFileSize.innerText=g_iFileSize;
  664. }
  665. //** Files size less that c_MAXFILEXFERSIZE(data packet size)**//
  666. if(g_iFileSize<=c_MAXFILEXFERSIZE)
  667. {
  668. for(;nTemp<30;nTemp++)
  669. {
  670. g_ArrProgressBoxes[nTemp].bgColor="#0000FF";
  671. idProgPercent.innerText=Math.round(nTemp*3.2);
  672. idProgByte.innerText=g_iRecvdCtr;
  673. }
  674. }
  675. //** files size/30(no.of progressbar slots) is less than c_MAXFILEXFERSIZE(data packet size) **//
  676. else if(g_index<=c_MAXFILEXFERSIZE)
  677. {
  678. progcount=g_index;
  679. //while (progcount<=c_MAXFILEXFERSIZE)
  680. while (progcount<=idatalen)
  681. {
  682. g_ArrProgressBoxes[nTemp].bgColor="#0000FF";
  683. ++nTemp;
  684. progcount+=g_index;
  685. idProgPercent.innerText=Math.round(nTemp*3.2);
  686. idProgByte.innerText=g_iRecvdCtr;
  687. }
  688. g_oDataChannel.SendChannelData( c_szFileXferACK );
  689. }
  690. //** files size/30(no.of progressbar slots) is more than c_MAXFILEXFERSIZE(data packet size) **//
  691. else if(g_index>c_MAXFILEXFERSIZE)
  692. {
  693. if (progcount<g_index)
  694. {
  695. progcount+=c_MAXFILEXFERSIZE;
  696. idProgByte.innerText=g_iRecvdCtr;
  697. }
  698. else
  699. {
  700. g_ArrProgressBoxes[nTemp].bgColor="#0000FF";
  701. ++nTemp;
  702. idProgPercent.innerText=Math.round(nTemp*3.2);
  703. idProgByte.innerText=g_iRecvdCtr;
  704. progcount=0;
  705. progcount+=c_MAXFILEXFERSIZE;
  706. g_oDataChannel.SendChannelData( c_szFileXferACK );
  707. }
  708. }
  709. }
  710. catch(error)
  711. {
  712. FatalError( L_RCCTL_Text, error );
  713. SendReject();
  714. }
  715. }
  716. TraceFunctLeave();
  717. return;
  718. }
  719. //** UpdateStatusProgBar(): Fired when file Xfer Src sends data on the data channel **//
  720. function UpdateStatusProgBar()
  721. {
  722. if (g_index==0)
  723. {
  724. //** UI Update **//
  725. ProgressBoxesId.className = "MaxLayout Display";
  726. StatusMsgId.className = "MaxLayout DisplayNone";
  727. FileXFerSrc.className = "MaxLayout DisplayNone";
  728. FileXFerDestn.className = "MaxLayout DisplayNone";
  729. EndStatusMsgId.className = "MaxLayout DisplayNone";
  730. idFileSize.innerText=g_iFileSize;
  731. button1.focus();
  732. ProgBarDetails.innerText = L_SENDING_Text +"'"+ file.name +"'"+L_TO_Text + g_szReceiverName + "...";
  733. var value = document.all("ProgressBoxes").all.tags("td").length;
  734. var e = new Enumerator(document.all("ProgressBoxes").all.tags("td"));
  735. g_ArrProgressBoxes = new Array(value);
  736. var index=0;
  737. for(;!e.atEnd();e.moveNext())
  738. {
  739. g_ArrProgressBoxes[index] = e.item();
  740. index++;
  741. }
  742. g_index=(file.size/30);
  743. ProgBarDetails.innerText = L_SENDING_Text+"'"+ file.name +"'"+ L_TO_Text + g_szReceiverName + "...";
  744. idFileSize.innerText=file.size;
  745. }
  746. }
  747. //** SendFileData: Sends currently open file to destination **//
  748. function SendFileData()
  749. {
  750. TraceFunctEnter("SendFileData");
  751. var data = null;
  752. var idatalen = 0;
  753. g_iTimer = null;
  754. if ( fileHandle!= null )
  755. {
  756. if(file.size<=c_MAXFILEXFERSIZE)
  757. {
  758. //Read the file
  759. try
  760. {
  761. data = fileHandle.ReadHex( ComputeBlockSize(file.size, c_MAXFILEXFERSIZE, g_iSentCtr) );
  762. }
  763. catch(e)
  764. {
  765. FatalError(e.description);
  766. SendReject();
  767. return;
  768. }
  769. idatalen = (data.length)/2;
  770. g_iSentCtr+=idatalen;
  771. // Send data over the data channel
  772. g_oDataChannel.SendChannelData( data );
  773. for(;nTemp<30;++nTemp)
  774. {
  775. g_ArrProgressBoxes[nTemp].bgColor="#0000FF";
  776. idProgPercent.innerText=Math.round(nTemp*3.2);
  777. }
  778. idProgByte.innerText=g_iSentCtr;
  779. }
  780. else if(g_index<=c_MAXFILEXFERSIZE)
  781. {
  782. try
  783. {
  784. while(g_iSentCtr<file.size)
  785. {
  786. //Read the file
  787. try
  788. {
  789. if (fileHandle!=null)
  790. {
  791. data = fileHandle.ReadHex( ComputeBlockSize(file.size, c_MAXFILEXFERSIZE, g_iSentCtr) );
  792. }
  793. }
  794. catch(e)
  795. {
  796. //FatalError(e.description);
  797. if (fileHandle!=null)
  798. {
  799. SendReject();
  800. return;
  801. }
  802. }
  803. idatalen = (data.length)/2;
  804. progcount=g_index;
  805. do
  806. {
  807. g_ArrProgressBoxes[nTemp].bgColor="#0000FF";
  808. ++nTemp;
  809. progcount+=g_index;
  810. idProgPercent.innerText=Math.round(nTemp*3.2);
  811. }
  812. //while(progcount<=c_MAXFILEXFERSIZE)
  813. while(progcount<=idatalen)
  814. g_iSentCtr+=idatalen;
  815. idProgByte.innerText=g_iSentCtr;
  816. // Send data over the data channel
  817. g_oDataChannel.SendChannelData( data );
  818. #ifdef _FILEXFER_WITHACKS
  819. return;
  820. #else
  821. g_iTimer = setTimeout("SendFileData()", c_FILEXFERPKTGAP);
  822. return;
  823. #endif
  824. }
  825. }
  826. catch(error)
  827. {
  828. FatalError( L_RCCTL_Text, error );
  829. SendReject();
  830. return;
  831. }
  832. }
  833. else if(g_index>c_MAXFILEXFERSIZE)
  834. {
  835. try
  836. {
  837. while(g_iSentCtr<file.size)
  838. {
  839. progcount=0;
  840. do
  841. {
  842. //Read the file
  843. try
  844. {
  845. if (fileHandle!=null)
  846. {
  847. data = fileHandle.ReadHex( ComputeBlockSize(file.size, c_MAXFILEXFERSIZE, g_iSentCtr) );
  848. }
  849. }
  850. catch(e)
  851. {
  852. //FatalError(e.description);
  853. if (fileHandle!=null)
  854. {
  855. SendReject();
  856. return;
  857. }
  858. }
  859. // Send data over the data channel
  860. g_oDataChannel.SendChannelData( data );
  861. idatalen = (data.length)/2;
  862. progcount+=c_MAXFILEXFERSIZE;
  863. g_iSentCtr+=idatalen;
  864. idProgByte.innerText=g_iSentCtr;
  865. }
  866. while(progcount<g_index)
  867. g_ArrProgressBoxes[nTemp].bgColor="#0000FF";
  868. ++nTemp;
  869. idProgPercent.innerText=Math.round(nTemp*3.2);
  870. #ifdef _FILEXFER_WITHACKS
  871. return;
  872. #else
  873. g_iTimer = setTimeout("SendFileData()", c_FILEXFERPKTGAP);
  874. return;
  875. #endif
  876. }
  877. }
  878. catch(error)
  879. {
  880. FatalError( L_RCCTL_Text, error );
  881. SendReject();
  882. return;
  883. }
  884. }
  885. if( null != g_iTimer )
  886. {
  887. clearTimeout( g_iTimer );
  888. g_iTimer = null;
  889. }
  890. // Send End of filexfer ACK
  891. g_oDataChannel.SendChannelData( c_szFileXferEND );
  892. CompleteProgress();
  893. // Log to the Event log (event 0)
  894. try
  895. {
  896. //var oLogger = new ActiveXObject("RACplDlg.RAEventLog");
  897. //var oLogger = new ActiveXObject("RACplDlg.RARegSetting");
  898. var args = new Array(5);
  899. if (file)
  900. {
  901. args[0] = g_SourceFileName; // FileName
  902. args[1] = g_SourceFileSize; // FileSize
  903. args[2] = szLocalUserName;
  904. args[3] = szRemoteUserName;
  905. args[4] = szRemoteIP;
  906. g_oLogger.LogRemoteAssistanceEvent(0,0,args);
  907. }
  908. }
  909. catch(e)
  910. {
  911. // alert("Error : "+e.description);
  912. // do nothing
  913. }
  914. // ** UI Update ** //
  915. //window.dialogWidth = "405px";
  916. window.dialogHeight = "158px";
  917. FileXFerDestn.className = "MaxLayout DisplayNone";
  918. FileXFerSrc.className ="MaxLayout DisplayNone";
  919. ProgressBoxesId.className = "MaxLayout DisplayNone";
  920. StatusMsgId.className = "MaxLayout DisplayNone";
  921. EndStatusMsgId.className = "MaxLayout Display";
  922. table1.deleteRow(1);
  923. table1.deleteRow(1);
  924. table1.rows(0).cells(0).className="sys-font-body sys-color-body padding1";
  925. StrongEndStatusMsg.innerText ="'"+ file.name +"'"+ L_HASBEENSENTTO_Text + g_szReceiverName +"." ;
  926. //TD0TR1table1.innerHTML="<button class='styBtnWidth sys-font-body sys-color-body' onClick='StatusMsgRoutine()' id='idOK' name='idOK'>OK</button>"
  927. idbtnEndStatus.innerHTML="<button class='styBtnWidth sys-font-body sys-color-body' onClick='StatusMsgRoutine()' id='idOK' name='idOK'>OK</button>";
  928. idbtnEndStatus.align="center";
  929. idOK.focus();
  930. g_nStatusMsgId = EXECUTE_EXITFILEXFER;
  931. g_bXferComplete = true;
  932. }
  933. else
  934. {
  935. if( false == g_bRejected )
  936. {
  937. FatalError( L_ERRINVALIDFILEHANDLE_Text );
  938. SendReject();
  939. return;
  940. }
  941. }
  942. TraceFunctLeave();
  943. return;
  944. }
  945. //** ComputeBlockSize(): ** //
  946. function ComputeBlockSize( FileSize, MaxBlockSize, BytesSent )
  947. {
  948. var BlockSize = 0;
  949. if( (FileSize - BytesSent) > MaxBlockSize )
  950. {
  951. BlockSize = MaxBlockSize;
  952. }
  953. else
  954. {
  955. BlockSize = FileSize - BytesSent;
  956. }
  957. return BlockSize;
  958. }
  959. //** SendReject(): **//
  960. // Purpose: To update the UI and the Send a message about rejecting a filexFer to the Receiver.
  961. function SendReject()
  962. {
  963. try
  964. {
  965. if(null != fileHandle)
  966. {
  967. fileHandle.Close();
  968. fileHandle = null;
  969. }
  970. if (Mode==1)
  971. {
  972. try
  973. {
  974. var f2=fso.GetFile(tFileName);
  975. f2.Delete();
  976. }
  977. catch(error)
  978. {
  979. }
  980. }
  981. // Send the actual reject
  982. if( null != g_oDataChannel )
  983. {
  984. g_oDataChannel.SendChannelData( c_szFileXferREJECT );
  985. }
  986. }
  987. catch(e)
  988. {
  989. FatalError(e.description);
  990. }
  991. window.close();
  992. }
  993. //** ExitFileXfer: **//
  994. function ExitFileXfer()
  995. {
  996. TraceFunctEnter("ExitFileXfer");
  997. try
  998. {
  999. if(null != fileHandle)
  1000. {
  1001. fileHandle.Close();
  1002. fileHandle = null;
  1003. }
  1004. }
  1005. catch(e)
  1006. {
  1007. FatalError(e.description);
  1008. }
  1009. window.close();
  1010. }
  1011. // OpenTempFile: Opens the currently download temp file
  1012. function OpenTempFile()
  1013. {
  1014. TraceFunctEnter("OpenTempFile");
  1015. if(null != tFileName )
  1016. {
  1017. window.open( tFileName );
  1018. window.close();
  1019. }
  1020. else
  1021. {
  1022. FatalTrace( L_ERRTEMPFILENAME_Text );
  1023. }
  1024. TraceFunctLeave();
  1025. return;
  1026. }
  1027. // OnCancel:
  1028. function onCancel()
  1029. {
  1030. g_bXferComplete=true;
  1031. window.close();
  1032. }
  1033. // EnableFileXfer:
  1034. function EnableFileXfer()
  1035. {
  1036. if (attfile.value != "")
  1037. btnSendFileId.disabled = false;
  1038. if ((btnSendFileId.disabled == false) && (attfile.value == ""))
  1039. btnSendFileId.disabled = true;
  1040. if (window.event.keyCode == 13)
  1041. {
  1042. onSend();
  1043. window.event.returnValue=false;
  1044. }
  1045. }
  1046. function StatusMsgRoutine()
  1047. {
  1048. switch(g_nStatusMsgId)
  1049. {
  1050. case EXECUTE_SENDREJECT :
  1051. SendReject();
  1052. break;
  1053. case EXECUTE_EXITFILEXFER :
  1054. ExitFileXfer();
  1055. break;
  1056. case EXECUTE_WINDOWCLOSE :
  1057. window.close();
  1058. break;
  1059. default:
  1060. break;
  1061. }
  1062. }
  1063. function OnClickOpenAs()
  1064. {
  1065. var obj = g_oSAFRCDlgFileOpen;
  1066. var fileOpen ;
  1067. var x;
  1068. try
  1069. {
  1070. x=obj.OpenFileOpenDlg();
  1071. if (x)
  1072. {
  1073. attfile.value = obj.FileName;
  1074. g_SourceFileName = obj.FileName;
  1075. g_SourceFileSize = obj.FileSize;
  1076. btnSendFileId.disabled = false;
  1077. }
  1078. attfile.focus();
  1079. }
  1080. catch(error)
  1081. {
  1082. FatalError( L_RCCTL_Text, error );
  1083. }
  1084. }
  1085. function trim(strS)
  1086. {
  1087. try
  1088. {
  1089. if (strS.length == 0) {return "";}
  1090. while (strS.charAt(0) == " ")
  1091. {strS = strS.substring(1,strS.length);}
  1092. while (strS.charAt(strS.length-1)==" ")
  1093. {strS = strS.substring(0,strS.length-1);}
  1094. }
  1095. catch(error)
  1096. {
  1097. FatalError( L_RCCTL_Text, error );
  1098. }
  1099. return strS;
  1100. }
  1101. function fnPaste()
  1102. {
  1103. try
  1104. {
  1105. var sFromClipBoard;
  1106. event.returnvalue = false;
  1107. attfile.value = window.clipboardData.getData("TEXT",sFromClipBoard);
  1108. if (attfile.value != "")
  1109. btnSendFileId.disabled = false;
  1110. if ((btnSendFileId.disabled == false) && (attfile.value == ""))
  1111. {
  1112. btnSendFileId.disabled = true;
  1113. }
  1114. }
  1115. catch(error)
  1116. {
  1117. FatalError( L_RCCTL_Text, error );
  1118. }
  1119. }
  1120. function CompleteProgress()
  1121. {
  1122. try
  1123. {
  1124. for(;nTemp < 30; nTemp++)
  1125. {
  1126. g_ArrProgressBoxes[nTemp].bgColor="#0000FF";
  1127. progcount+=g_index;
  1128. }
  1129. idProgPercent.innerText=100;
  1130. }
  1131. catch(error)
  1132. {
  1133. FatalError( L_RCCTL_Text, error );
  1134. }
  1135. }
  1136. function CompleteDestnProgress()
  1137. {
  1138. try
  1139. {
  1140. for(;nTemp<30;nTemp++)
  1141. {
  1142. g_ArrProgressBoxes[nTemp].bgColor="#0000FF";
  1143. }
  1144. idProgPercent.innerText=100;
  1145. idProgByte.innerText=g_iRecvdCtr;
  1146. }
  1147. catch(error)
  1148. {
  1149. FatalError( L_RCCTL_Text, error );
  1150. }
  1151. }
  1152. </script>
  1153. <Style>
  1154. .height10
  1155. {
  1156. height:6px;
  1157. }
  1158. .height12
  1159. {
  1160. height:40px;
  1161. }
  1162. .height11
  1163. {
  1164. height:30px;
  1165. }
  1166. .width9
  1167. {
  1168. width:85%;
  1169. }
  1170. .width10
  1171. {
  1172. width:15%;
  1173. }
  1174. </style>
  1175. <body id="RCFileXferBody" name="RCFileXferBody" class="sys-inlineform-bgcolor1" onload=InitFileXfer() onunload=onUnload()>
  1176. <!--
  1177. File Transfer Source
  1178. -->
  1179. <div id="FileXFerSrc" name="FileXFerSrc" class="MaxLayout Display">
  1180. <table id="idMainTable" name="idMaintable" cellspacing=0 cellpadding="0" border=0 class="MaxLayout">
  1181. <TR>
  1182. <TD class="padding6 padding4 padding3">
  1183. <table id="table12" name="table12" border="0" class="MaxLayout" cellspacing="0px" cellpadding="0px">
  1184. <tr>
  1185. <td id="T0table12" name="T0table12" class="sys-font-body sys-color-body padding2 padding5" colspan=2>
  1186. <Span id="idScreen1txt" name="idScreen1txt">
  1187. Type the file path, or click <B>Browse</B> to look for the file:
  1188. </Span>
  1189. </td>
  1190. </tr>
  1191. <tr>
  1192. <td class="height5" colspan=2>
  1193. </td>
  1194. </Tr>
  1195. <tr>
  1196. <td class="width9 padding2 padding5">
  1197. <input id="attfile" name="attfile" type="Text" class="sys-font-body sys-color-body Maxwidth" onpaste="fnPaste()" onkeyup="EnableFileXfer()"></input>
  1198. </td>
  1199. <td id="idbtnBrowser" name="idbtnBrowser" align="right" class="width10 padding2">
  1200. <span id="S0T0table12" name="S0T0table12" class="valignbottom"><button class="styBtnWidth sys-font-body sys-color-body" id="BrowseButton" name="BrowseButton" onclick=OnClickOpenAs() accesskey="B"><u>B</u>rowse... </button></span>
  1201. </td>
  1202. </tr>
  1203. <tr>
  1204. <td class="height11" colspan=2>
  1205. </td>
  1206. </Tr>
  1207. <tr>
  1208. <td id="idbtn0" name="idbtn0" align="right" class="padding2 valignbottom" colspan=2>
  1209. <button class="styBtnWidth sys-font-body sys-color-body" id="btnSendFileId" disabled=true onclick=onSend() tabindex=1 accesskey="S">
  1210. <u>S</u>end File
  1211. </button>
  1212. <Span id="idblankSpace" name="idblankSpace" class="width8"></Span>
  1213. <button class="styBtnWidth sys-font-body sys-color-body" type="button" id="btnCancelFileId" tabindex=2 onclick="onCancel()">
  1214. Cancel
  1215. </button>
  1216. </td>
  1217. </tr>
  1218. </table><!-- End of table2 -->
  1219. </TD>
  1220. </TR>
  1221. </table>
  1222. </div><!-- End of FileXFerSrc div -->
  1223. <!--
  1224. File Transfer Destination
  1225. -->
  1226. <div id="FileXFerDestn" name="FileXFerDestn" class="DisplayNone MaxLayout">
  1227. <table id="idMainTable" name="idMaintable" cellspacing=0 cellpadding="0" border=0 class="MaxLayout">
  1228. <TR>
  1229. <TD class="padding6 padding4 padding3">
  1230. <table id="table11" name="table11" border="0" class="MaxLayout" cellpadding="0" cellspacing="0">
  1231. <tr>
  1232. <td id="T0table11" name="T0table11" class="padding2 padding5 sys-font-body sys-color-body">
  1233. <SPAN id="SenderNameId" name="SenderNameId">
  1234. &nbsp;
  1235. </SPAN>
  1236. <Span id="idScreen2txt1" name="idScreen2txt1">
  1237. &nbsp;is sending you
  1238. </Span>
  1239. <SPAN id="FileNameId" name="FileNameId">
  1240. &nbsp;
  1241. </SPAN>
  1242. </td>
  1243. </tr>
  1244. <tr>
  1245. <td class="height5">
  1246. </td>
  1247. </Tr>
  1248. <tr>
  1249. <td id="T1table11" name="T1table11" class="sys-font-body sys-color-body padding2 padding5">
  1250. <Span id="idScreen2txt2" name="idScreen2txt2">
  1251. To save this file to your computer, click <B>Save As.</B>
  1252. </Span>
  1253. </td>
  1254. </tr>
  1255. <tr>
  1256. <td class="height12">
  1257. </td>
  1258. </Tr>
  1259. <tr>
  1260. <td id="idbtn1" name="idbtn1" align="right" class="valignbottom padding2">
  1261. <button id="OkId" name="OkId" class="styBtnWidth sys-font-body sys-color-body" onClick="onAcceptFileXfer()" accesskey="S">
  1262. <U>S</U>ave As...
  1263. </button>
  1264. <Span id="idblankSpace" name="idblankSpace" class="width8"></Span>
  1265. <button id="CancelId" class="styBtnWidth sys-font-body sys-color-body" onClick="OnCancelFileXfer()">
  1266. Cancel
  1267. </button>
  1268. </td>
  1269. </tr>
  1270. </table>
  1271. </TD>
  1272. </TR>
  1273. </Table>
  1274. </div><!-- End of FileXferDestn div -->
  1275. <!--
  1276. ProgressBoxes
  1277. -->
  1278. <div class="MaxLayout DisplayNone" id="ProgressBoxesId" name="ProgressBoxesId" >
  1279. <table name="table10" id="table10" class="MaxLayout" cellpadding="0" cellspacing=0 border=0>
  1280. <tr>
  1281. <TD class="padding6 padding4 padding3">
  1282. <table id="T0" name="T0" border=0 class="MaxLayout" cellspacing=0 cellpadding=0>
  1283. <tr>
  1284. <td id="TD0T0" name="TD0T0" class="sys-font-body sys-color-body padding2 padding5">
  1285. <span id="ProgBarDetails" name="ProgBarDetails">
  1286. &nbsp;
  1287. </span>
  1288. </td>
  1289. </tr>
  1290. <TR>
  1291. <TD class="height10">
  1292. </TD>
  1293. </TR>
  1294. <tr>
  1295. <td id="TD1T0" name="TD1T0" class="sys-font-body sys-color-body padding2 padding5">
  1296. <table id="T1" name="T1" border="0" cellspacing=0 cellpadding=0 class="Border MaxWidth styCellBackgound" >
  1297. <tr>
  1298. <td>
  1299. <span id="ProgressBoxes" name="ProgressBoxes">
  1300. <table id="T2" name="T2" class="MaxWidth styCellBackgound" cellpadding=0 border=0>
  1301. <tr>
  1302. <td id="ProgressBox1">&nbsp;</td>
  1303. <td id="ProgressBox2">&nbsp;</td>
  1304. <td id="ProgressBox3">&nbsp;</td>
  1305. <td id="ProgressBox4">&nbsp;</td>
  1306. <td id="ProgressBox5">&nbsp;</td>
  1307. <td id="ProgressBox6">&nbsp;</td>
  1308. <td id="ProgressBox7">&nbsp;</td>
  1309. <td id="ProgressBox8">&nbsp;</td>
  1310. <td id="ProgressBox9">&nbsp;</td>
  1311. <td id="ProgressBox10">&nbsp;</td>
  1312. <td id="ProgressBox11">&nbsp;</td>
  1313. <td id="ProgressBox12">&nbsp;</td>
  1314. <td id="ProgressBox13">&nbsp;</td>
  1315. <td id="ProgressBox14">&nbsp;</td>
  1316. <td id="ProgressBox15">&nbsp;</td>
  1317. <td id="ProgressBox16">&nbsp;</td>
  1318. <td id="ProgressBox17">&nbsp;</td>
  1319. <td id="ProgressBox18">&nbsp;</td>
  1320. <td id="ProgressBox19">&nbsp;</td>
  1321. <td id="ProgressBox20">&nbsp;</td>
  1322. <td id="ProgressBox21">&nbsp;</td>
  1323. <td id="ProgressBox22">&nbsp;</td>
  1324. <td id="ProgressBox23">&nbsp;</td>
  1325. <td id="ProgressBox24">&nbsp;</td>
  1326. <td id="ProgressBox25">&nbsp;</td>
  1327. <td id="ProgressBox26">&nbsp;</td>
  1328. <td id="ProgressBox27">&nbsp;</td>
  1329. <td id="ProgressBox28">&nbsp;</td>
  1330. <td id="ProgressBox29">&nbsp;</td>
  1331. <td id="ProgressBox30">&nbsp;</td>
  1332. </tr>
  1333. </table>
  1334. </span>
  1335. </td>
  1336. </tr>
  1337. </table>
  1338. </td>
  1339. </tr>
  1340. <tr>
  1341. <TD id="idprogstatus" name="idProgStatus" class="sys-font-body sys-color-body padding2 padding5">
  1342. <Span id="ProgBarStatus" name="ProgBarStatus">
  1343. <Span id="idProgPercent" name="idProgPercent">
  1344. 0
  1345. </Span> % complete (<span id="idProgByte" name="idProgByte">0</span> of <span id="idFileSize" name="idFileSize">0</Span>bytes)
  1346. </Span>
  1347. </TD>
  1348. </TR>
  1349. <TR>
  1350. <TD class="height8">
  1351. </TD>
  1352. </TR>
  1353. <tr>
  1354. <td id="idbtn2" name="idbtn2" align="right" class="padding2 valignbottom">
  1355. <button class="styBtnWidth sys-font-body sys-color-body" onclick="SendReject();" id="button1" name="button1">Cancel</button>
  1356. </td>
  1357. </tr>
  1358. </table>
  1359. </TD>
  1360. </TR>
  1361. </table>
  1362. </div><!-- End of ProgressBoxes div -->
  1363. <!--
  1364. StatusMsgId
  1365. -->
  1366. <div class="MaxLayout DisplayNone" id="StatusMsgId" name="StatusMsgId">
  1367. <Table class="MaxLayout" id="idMainTable" name="idMainTable" cellpadding="0" cellspacing="0" border=0>
  1368. <TR>
  1369. <TD class="padding6 padding4 padding3">
  1370. <table class="MaxLayout" id="table0" name="table0" cellspacing="0px" cellpadding="0px" border=0>
  1371. <tr id="TR0table0" name="TR0table0">
  1372. <td align="middle" id="TD0TR0table0" name="TD0TR0table0" class="sys-font-body sys-color-body padding2 padding5">
  1373. <span id="Message" name="Message">
  1374. &nbsp;
  1375. </span>
  1376. </td>
  1377. </tr>
  1378. <tr>
  1379. <td class="height5">
  1380. </td>
  1381. </Tr>
  1382. <tr id="TR1table0" name="TR1table0">
  1383. <td id="TD0TR1table0" name="TD0TR1table0" class="sys-font-body sys-color-body padding2 padding5 VAlign">
  1384. &nbsp;
  1385. </td>
  1386. </tr>
  1387. <tr>
  1388. <td class="height12">
  1389. </td>
  1390. </Tr>
  1391. <tr>
  1392. <td id="idBtn" name="idBtn" align="middle" class="padding2 valignbottom">
  1393. <button class="styBtnWidth sys-font-body sys-color-body" onclick="StatusMsgRoutine();" id="StatusMsgButton" name="StatusMsgButton">
  1394. Cancel
  1395. </button>
  1396. </td>
  1397. </tr>
  1398. </table>
  1399. </TD>
  1400. </TR>
  1401. </Table>
  1402. </div>
  1403. <!--
  1404. EndStatusMsgId
  1405. -->
  1406. <div class="MaxLayout DisplayNone" id="EndStatusMsgId" name="EndStatusMsgId" >
  1407. <table class="MaxLayout" cellpadding="0" cellspacing="0" border=0 id="idMainTable" name="idMainTable">
  1408. <TR>
  1409. <TD class="padding6 padding4 padding3">
  1410. <table class="MaxLayout" cellspacing="0" cellpadding=0 border=0 id="table1" name="table1">
  1411. <tr id="TR0table1" name="TR0table1">
  1412. <td id="TD0TR0table1" name="TD0TR0table1" class="sys-font-body sys-color-body padding2 padding5">
  1413. <span id="StrongEndStatusMsg" name="StrongEndStatusMsg">
  1414. &nbsp;
  1415. </span>
  1416. </td>
  1417. </tr>
  1418. <tr>
  1419. <td class="height5">
  1420. </td>
  1421. </Tr>
  1422. <tr id="TR1table1" name="TR1table1">
  1423. <td id="TD0TR1table1" name="TD0TR1table1" class="sys-font-body sys-color-body padding2 padding5">
  1424. <span id="EndStatusMsg" name="EndStatusMsg">
  1425. &nbsp;
  1426. </span>
  1427. </td>
  1428. </tr>
  1429. <tr>
  1430. <td class="height12">
  1431. </td>
  1432. </Tr>
  1433. <tr id="TR2table1" name="TR2table1">
  1434. <td id="idbtnEndStatus" name="idbtnEndStatus" class="valignbottom padding2">
  1435. &nbsp;
  1436. </td>
  1437. </tr>
  1438. </table>
  1439. </TD>
  1440. </TR>
  1441. </Table>
  1442. </div>
  1443. </body>
  1444. </html>