/*++ Copyright (c) 1999-2000 Microsoft Corporation Module Name: RCScripts.js Abstract: Helper End javascript that drives the RCTOOL Author: Rajesh Soy 07/00 Revision History: --*/ var g_oSAFRemoteDesktopClient = null; var g_oSAFRemoteDesktopChannelMgr = null; var g_oChatChannel = null; var g_oControlChannel = null; var g_bChatBoxHidden = false; // // SetupLayers: Initializes the various layers // function SetupLayers() { ConnectionProgressLayer.style.visibility = "hidden"; RemoteControlLayer.style.visibility = "hidden"; RemoteControlObject.style.visibility = "hidden"; ChatServerLayer.style.visibility = "hidden"; Layer2.style.visibility = "visible"; } // // ParseIncident: Basic XML parse to parse the Incident // function ParseIncident() { var IncidentDoc = new ActiveXObject("microsoft.XMLDOM"); try { IncidentDoc.load( g_szIncidentFile ); if ( IncidentDoc.parseError.reason != "") { alert( IncidentDoc.parseError.reason); } // // Fetch the Upload data // var UploadData = IncidentDoc.documentElement.firstChild; // // Fetch the attributes of the upload data // var Attributes = UploadData.attributes; // // UserName // try { g_szUserName = Attributes.getNamedItem("USERNAME").nodeValue; } catch(error) { g_szUserName = "Unknown"; } // // ProblemDescription // try { g_szProblemDescription = Attributes.getNamedItem("PROBLEMDESCRIPTION").nodeValue; } catch(error) { g_szProblemDescription = ""; } // // SALEM ticket // try { g_szRCTicketEncrypted = Attributes.getNamedItem("SalemID").nodeValue; } catch(error) { g_szRCTicketEncrypted = null; } } catch(error) { alert("Failed to load: " + g_szIncidentFile + " Error: " + error); } } // // ValidateIncident: Validates the incident information loaded from XML // function ValidateIncident() { var bRetVal = true; if("" == g_oCurrentIncident.UserName) { alert( L_ERRLOADINGUSERNAME_MSG ); bRetVal = false; } if("" == g_oCurrentIncident.RCTicket) { alert( L_ERRLOADINGRCTICKET_MSG ); bRetVal = false; } return bRetVal; } // // InitializeRCTool: Stuff done when the RCTool page is loaded in the helpctr // function InitializeRCTool() { ConnectionProgressLayer.style.visibility = "hidden"; RemoteControlLayer.style.visibility = "hidden"; ChatServerLayer.style.visibility = "hidden"; Layer2.style.visibility = "visible"; try { //alert("CreateObject_Incident"); // // Create an instance of the SAF Incident Object // g_oCurrentIncident = oSAFClassFactory.CreateObject_Incident(); // // Create an instance of the SAF Encryption Object // g_oEncryption = oSAFClassFactory.CreateObject_Encryption(); } catch(error) { alert(error); // // Todo: Handle Error // } // // Parse the document URL to Get the location of the Incident file // // // Location the position of "?" // var i = document.URL.indexOf("?", 1); if (i > 0) { // // Go past "?" // var g_szIncidentFileURL = document.URL.slice(i+2); // // Go past "IncidentFile=" // var j = g_szIncidentFileURL.indexOf("=", 1); // // Split g_szIncidentFileURL to obtain the path to incident XML blob // g_szIncidentFile = g_szIncidentFileURL.slice(j+1); } else { alert ("Unable to locate Incident File"); // // Todo: Add code to handle this error here // } // // Populate the incident object from the XML // representation of the incident (call LoadXML) // try { // // Load the incident from the XML blob // g_oCurrentIncident.LoadFromXMLFile( g_szIncidentFile ); // // Validate the information loaded // if( false == ValidateIncident()) { alert(L_ERRLOADINGINCIDENT_MSG); // // If incident loaded from XML is invalid // Use my XML parser to load the incident data // ParseIncident(); } else { // // Incident loaded from XML blob is valid // // // Get the UserName of the person requesting support // g_szUserName = g_oCurrentIncident.UserName; // // Get the Description of the problem // g_szProblemDescription = g_oCurrentIncident.ProblemDescription; // // Get the RC Ticket // g_szRCTicketEncrypted = g_oCurrentIncident.RCTicket; // // Get the Misc Items // g_oDict = g_oCurrentIncident.Misc; // // Get the Expiry time. ToDo: Get the accurate Math // var DtStart = g_oDict.Item("DtStart"); var DtLength = g_oDict.Item("DtLength"); //alert( "DtStart: " + DtStart ); //alert( "DtLength: " + DtLength); var ms = DtStart*1000 + DtLength*60*1000; //alert (ms ); var ExpiryDate = new Date ( ms ); g_szExpiryTime = g_oDict.Item("DtLength") + " minutes ( " + ExpiryDate.toLocaleString() + " )"; g_szHelpeeIP = g_oDict.Item("IP"); //alert("Expiry " + g_szExpiryTime); //alert("IP " + g_szHelpeeIP); } } catch(error) { alert( L_UNABLETOLOAD_MSG + "\n" + error ); // // Use my XML parser to load the incident data // ParseIncident(); } // // Set the UI elements to be displayed from the data // contained in the incident object // window.InviteSent.innerHTML = "
" + g_szUserName + "
"; window.InviteExpires.innerHTML = "
" + g_szExpiryTime + "
"; // // Check to see if we need to ask for password // if(true == g_oCurrentIncident.RCTicketEncrypted) { // // RCTicket is encrypted. We need to ask for the password // PasswordTbl.disabled = false; //alert("Encrypted RCTicket: " + g_szRCTicketEncrypted); } else { // // RCTicket is not encrypted. Dont need to ask for the password // PasswordTbl.disabled = true; g_szRCTicket = g_szRCTicketEncrypted; } return; } // // DecryptRCTicket: Calls into the SAF Encryption/Decryption API to decrypt // RCTicket // function DecryptRCTicket() { try { if(false == g_bPasswordSet) { // // Get the password // g_szPassword = PasswordBox.value; // // Use g_szPassword to decrypt the g_szRCTicketEncrypted. // g_szRCTicket = g_oEncryption.DecryptString( g_szPassword, g_szRCTicketEncrypted ); //alert("Decrypted RCTicket: " + g_szRCTicket); // // Password has been set // g_bPasswordSet = true; } } catch(error) { alert( L_ERRPWD_MSG ); PasswordBox.value = ""; } return g_bPasswordSet; } // // PasswordSet: Use password as key to decrypt RCTicket on data entry. // function PasswordSet() { if (window.event.keyCode == 13) { // // Decrypt the RCTicket // DecryptRCTicket(); } return; } // // Display_Screen2: Launches the actual RCTool // function Display_Screen2() { // // Check if Password needs to be set // if(true == g_oCurrentIncident.RCTicketEncrypted) { // // Decrypt RCTicket // if(false == DecryptRCTicket()) { // // Invalid password. Re-enter // return; } } // // Go To HC Home Page // navigate(c_szHomePage); var vArgs = new Array(2); vArgs[0] = g_szRCTicket; // Remote Control Ticket vArgs[1] = g_szUserName; // UserName of Helpee // // Launch the actual RCTool in a seperate window // window.showModalDialog("RCToolScreen2.htm", vArgs, "dialogwidth:" + Screen2Width + "px;dialogHeight:" + Screen2Height + "px;status:no;resizable:yes"); } // // InitScreen2: Initializes Screen 2 // function InitScreen2() { // // Hide all the divs, except the one that displays connection status // RemoteControlLayer.style.visibility = "hidden"; RemoteControlObject.style.visibility = "visible"; ChatServerLayer.style.visibility = "hidden"; ConnectionProgressLayer.style.visibility = "visible"; Layer2.style.visibility = "hidden"; ConnectStarted = 0; g_bConnected = true; // // Decrypt RCTicket if necessary // if(true == g_oCurrentIncident.RCTicketEncrypted) { DecryptRCTicket(); } // // Check if the RemoteClientDesktopHost object is loaded // if loaded, connected // checkLoadx(); return; } // // This checks to see if the Remote desktop client host object is loaded. if not wait 3 sec and try again // function checkLoadx() { // // Check if DesktopClientHost object loaded // if(L_COMPLETE != RemoteDesktopClientHost.readyState) { // // Not loaded yet // setTimeout('checkLoadx()', 3000); } else { //alert("L_COMPLETE == RemoteDesktopClientHost.readyState"); // // Object loaded: Make a connection to the helpee's machine using SALEM API // setTimeout('RCConnect()', 1); // BUGBUG: THIS IS GROSS } } // // RCConnect connects to the user's terminal // function RCConnect() { //alert("RCTicket: " + g_szRCTicket); //..alert("UserName: " + g_szUserName); ConnectionProgressLayer.style.visibility = "visible"; RemoteControlObject.style.visibility = "hidden"; if(null != RemoteDesktopClientHost) { g_bNewBinaries = true; try { // // set screen up for the connect anouncement screen size. // //..setupFirstScreen(); Enunciator.innerText = L_ConnectTo; HelpeeName.innerText = g_szUserName; FirstProgressBox.bgColor="#F5F5F5"; //alert("Obtaining g_oSAFRemoteDesktopClient " + RemoteDesktopClientHost.readyState); // // Obtain the RDSClient object // g_oSAFRemoteDesktopClient = RemoteDesktopClientHost.GetRemoteDesktopClient(); if(null != g_oSAFRemoteDesktopClient) { // // Bind the event handlers for this object. // g_oSAFRemoteDesktopClient.OnConnected = function() { ConnectedHandler(); } g_oSAFRemoteDesktopClient.OnDisconnected = function(reason) { DisconnectedHandler(reason); } if (false == g_bNewBinaries) { // // Using the Old SALEM interfaces // g_oSAFRemoteDesktopClient.OnChannelDataReady = function(channelID) { ChannelDataReadyHandler(channelID); } g_oSAFRemoteDesktopClient.ConnectToServer(g_szRCTicket); } else { // // Using the NEW Salem interfaces // //g_oSAFRemoteDesktopClient.OnRemoteControlRequestComplete = function(status) // { RemoteControlRequestCompleteHandler( status ); } //alert("RCTicket: " + g_szRCTicket); g_oSAFRemoteDesktopClient.ConnectParms = g_szRCTicket; //alert("Calling ConnectToServer"); g_oSAFRemoteDesktopClient.ConnectToServer(); } // // ToDo: Handle connection failure conditions // } else { alert( L_ERRRDSCLIENT_MSG ); } } catch(error) { alert( L_ERRCONNECT_MSG + "\n" + error ); } } else { alert( L_ERRRDSCLIENTHOST_MSG ); } return; } // // RemoteControlRequestCompleteHandler: Fired when Remote Control request completes // function RemoteControlRequestCompleteHandler( status ) { alert("RCStatus: " + status); } // // HideChatBox: Toggles the chat box controls // function HideChatBox() { if(false == g_bChatBoxHidden) { // // Chatbox is visible. Hide it // //HideChatBoxId.value = L_SHOWCHAT; sendChatButton.style.visibility="hidden"; chatText.style.visibility="hidden"; incomingChatText.style.visibility="hidden"; g_bChatBoxHidden = true; } else { // // Chatbox is Hidden. Show it // sendChatButton.style.visibility="visible"; chatText.style.visibility="visible"; incomingChatText.style.visibility="visible"; g_bChatBoxHidden = false; //HideChatBoxId.value = L_HIDECHAT; } } // // ToggleConnection: Toggles between Quit Session and Connect // function ToggleConnection() { if(false == g_bConnected) { // // Establish Connection // RCConnect(); g_bConnected = true; //...ConnectionId.innerText = L_QUITSESSION; } else { // // Disconnect // RCDisconnect(); g_bConnected = false; //..ConnectionId.innerText = L_CONNECT; } return; } // // ResetHelpee: Routine to reset Helpee after RC // function ResetHelpee() { var Doc = null; var RCCommand = null; // // Create an XML document // Doc = new ActiveXObject("microsoft.XMLDOM"); // // Create the RCCOMMAND root node // RCCommand = Doc.createElement( c_szRCCommand ); // // Set the NAME attribute to REMOTECTRLEND // RCCommand.setAttribute( c_szRCCommandName, c_szRemoteCtrlEnd ); // // Send control message to other end to signal Remote control end // // // Wait for SALEM to allow data transfer on channels // //alert( L_RCSUCCESS_MSG ); g_oControlChannel.SendChannelData( RCCommand.xml ); return; } // // Routine to enable Remote Control // function ControlRemotePCHandler() { var Doc = null; var RCCommand = null; try { if(null != g_oSAFRemoteDesktopClient) { //alert("null != g_oSAFRemoteDesktopClient"); // // If RemoteControl is not ON already, Enable it // if( false == g_bRCEnabled ) { // // Disable chat controls on the screen incomingChatText.disabled=true; chatText.disabled=true; sendChatButton.disabled=true; SendFile.disabled=true; TakeControl.innerText = "Release"; // // // Create an XML document // Doc = new ActiveXObject("microsoft.XMLDOM"); // // Create the RCCOMMAND root node // RCCommand = Doc.createElement( c_szRCCommand ); // // Set the NAME attribute to REMOTECTRLSTART // RCCommand.setAttribute( c_szRCCommandName, c_szRemoteCtrlStart ); // // Send control message to other end to signal Remote control start // g_oControlChannel.SendChannelData( RCCommand.xml ); // // ToDo: We should wait for an ack from the helpee here // //XXX = g_oControlChannel.IsRemoteControlEnabled(abc); // // Resize the helper's screen using the helpee's screen // resolution obtained during connection handshake // /* if (UserWidth <= window.screen.availWidth) { window.dialogWidth = " " + (parseInt(UserWidth) + 20) + "px"; window.dialogHeight = " " + (parseInt(UserHeight)+145) + "px"; window.group1.style.width = " " + (parseInt(UserWidth)) + "px"; window.screen2.style.width = " " + (parseInt(UserWidth)) + "px"; window.RemoteDesktopClientHost.style.width = " " + (parseInt(UserWidth)) + "px"; window.RemoteDesktopClientHost.style.height = " " + (parseInt(UserHeight)) + "px"; } else { window.dialogWidth = window.screen.availWidth; window.dialogHeight = " " + parseInt(window.screen.availHeight) + "px"; window.group1.style.width = " " + (parseInt(window.screen.availWidth) - 20) + "px"; window.screen2.style.width = " " + (parseInt(window.screen.availWidth) - 20) + "px"; window.RemoteDesktopClientHost.style.width = " " + (parseInt(UserWidth)) + "px"; window.RemoteDesktopClientHost.style.height = " " + (parseInt(UserHeight)) + "px"; } */ // // Enable Remote Control // g_oSAFRemoteDesktopClient.ConnectRemoteDesktop(); // // Hide the Chat Boxes control button // //HideChatBox(); //HideChatBoxId.style.visibility = "hidden"; // // Hide the File XFer button // //FileXferId.disabled = true; // // Change Mode // //..StatusId.innerText = c_szRCMODE; g_bRCEnabled = true; //ControlRemotePC.value = L_ENDRC; } else { // // enable chat controls on the screen // incomingChatText.disabled=false; chatText.disabled=false; sendChatButton.disabled=false; TakeControl.innerText = "Take Control"; SendFile.disabled=false; // // Disable Remote Control // g_oSAFRemoteDesktopClient.DisConnectRemoteDesktop(); /* // // put screen size of 730 by 500 here // if (640 >= window.screen.availWidth) { window.group1.style.width = "640px"; window.screen2.style.width = "640px"; window.dialogWidth = "640px"; window.dialogHeight = "480px"; } else { window.group1.style.width = " 730px"; window.screen2.style.width = " 730px"; window.dialogWidth = " 730px"; window.dialogHeight = "500px"; } */ g_bRCEnabled = false; //..ControlRemotePC.value = L_STARTRC; setTimeout("ResetHelpee()", 1000); // BUGBUG: Another gross timing issue // // Change Mode // } } else { //alert("null == g_oSAFRemoteDesktopClient"); } } catch(error) { alert( L_ERRRCTOGGLEFAILED_MSG ); } } // // Routine to disable Remote Control // function CloseConnectionHandler() { if(null != g_oSAFRemoteDesktopClient) { g_oSAFRemoteDesktopClient.DisConnectRemoteDesktop(); } } // // ConnectedHandler: Triggered on connection establishment // function ConnectedHandler() { var x; //..StatusId.innerText = L_WAITFORHELPEE_MSG; Enunciator.innerText = L_WAITFORHELPEE_MSG + g_szUserName; SecondProgressBox.bgColor="#F5F5F5"; try { if (false == g_bNewBinaries) { // // Using Old interface // // // Add the chat channel // g_oSAFRemoteDesktopClient.AddChannels(c_szChatChannelID); // // Add the control channel // g_oSAFRemoteDesktopClient.AddChannels( c_szControlChannelID ); } else { // // Use new interface // // // Get the Channel Manager // //alert("Getting ChannelManager"); g_oSAFRemoteDesktopChannelMgr = g_oSAFRemoteDesktopClient.ChannelManager; // // Open the Chat channel // //alert("Opening channels"); g_oChatChannel = g_oSAFRemoteDesktopChannelMgr.OpenDataChannel( c_szChatChannelID ); // // Open the Control Channel // g_oControlChannel = g_oSAFRemoteDesktopChannelMgr.OpenDataChannel( c_szControlChannelID ); // // Setup the ChannelDataReady handlers // g_oChatChannel.OnChannelDataReady = function() { ChatChannelDataReadyHandler(); } g_oControlChannel.OnChannelDataReady = function() { ControlChannelDataReadyHandler(); } } } catch(x) { // // Todo: Add handler here // } } // // SendChatData sends chat data to remote machine // function SendChatData() { if (g_oSAFRemoteDesktopClient != null) { if (false == g_bNewBinaries) { // // Send chat data to user (using Old interfaces) // g_oSAFRemoteDesktopClient.SendChannelData(c_szChatChannelID, chatText.value); } else { // // Send chat data to user (using New interfaces) // g_oChatChannel.SendChannelData( chatText.value ); } // // Update chat history window // incomingChatText.value = incomingChatText.value + L_cszExpertID + chatText.value; // // Clear chat msg window // chatText.value=""; // // Scroll down // incomingChatText.doScroll("scrollbarPageDown"); } } // // RCDisconnect: Disconnects remote connection // function RCDisconnect() { if (g_oSAFRemoteDesktopClient != null) { if (false == g_bNewBinaries) { // // Using the old interface // // // Remove the chat channel // g_oSAFRemoteDesktopClient.RemoveChannels( c_szChatChannelID ); // // Remove the control channel // g_oSAFRemoteDesktopClient.RemoveChannels( c_szControlChannelID ); } if(false == g_bUserDisconnect) { // // Disconnect from Server (only if helper initiated) // g_oSAFRemoteDesktopClient.DisconnectFromServer(); } navigate( c_szHomePage ); //alert( L_DISCONNECTED_MSG ); } } // // DisconnectedHandler: Fired when Session disconnected // function DisconnectedHandler(reason) { // // Close down RC Connection // RCDisconnect(); } // // ParseControlData: Parse the data sent on the control channel // function ParseControlData ( str ) { var Doc = new ActiveXObject("microsoft.XMLDOM"); var RCCommand = null; var szCommandName = null; try { if( false == Doc.loadXML( str )) { alert ( L_ERRLOADXMLFAIL_MSG ); } if ( Doc.parseError.reason != "") { alert( Doc.parseError.reason); } // // Get the RCCOMMAND node // RCCommand = Doc.documentElement; // // Get the NAME of the command // szCommandName = RCCommand.getAttribute( c_szRCCommandName ); if( szCommandName == c_szScreenInfo ) { // // SCREENINFO: Contains width/height/colordepth of user's machine // UserWidth = RCCommand.getAttribute( c_szWidth ); UserHeight = RCCommand.getAttribute( c_szHeight ); UserColorDepth = RCCommand.getAttribute( c_szColorDepth ); // // put screen size of 730 by 500 here // /* if (640 >= window.screen.availWidth) { window.group1.style.width = "610px"; window.screen2.style.width = "610px"; window.dialogWidth = "640px"; window.dialogHeight = "480px"; } else { window.group1.style.width = "700px"; window.screen2.style.width = "700px"; window.dialogWidth = " 730px"; window.dialogHeight = "500px"; } BUGBUG: Need to fix this. This does not work since we are no longer a dialog. */ Enunciator.innerText = L_ConnectionSuccess; ThirdProgressBox.bgColor="#F5F5F5"; ConnectionProgressLayer.style.visibility = "hidden"; RemoteControlLayer.style.visibility = "visible"; RemoteControlObject.style.visibility = "visible"; ChatServerLayer.style.visibility = "visible"; // // enable chat controls on the screen incomingChatText.disabled=false; chatText.disabled=false; sendChatButton.disabled=false; TakeControl.innerText = "Take Control"; SendFile.disabled=false; // // Initialization // headerHelpeeName.innerHTML="   " + g_szUserName + ""; g_bNewBinaries = true; } else if( szCommandName == c_szDisconnectRC ) { // // DISCONNECTRC: Disconnect the connection // g_bUserDisconnect = true; RCDisconnect(); } else if( szCommandName == c_szFileXfer ) { // // File Transfer Initiation // var vArgs = new Array(6); var FileXferWidth = "600"; var FileXferHeight = "500"; vArgs[0] = 1; // Destination Mode vArgs[1] = g_oControlChannel; // Control Channel vArgs[2] = g_oSAFRemoteDesktopChannelMgr; // Channel Manager vArgs[3] = RCCommand.getAttribute( c_szFileName ); // FILENAME vArgs[4] = RCCommand.getAttribute( c_szFileSize ); // FILESIZE vArgs[5] = RCCommand.getAttribute( c_szChannelId ); // CHANNELID //alert("launching RCFileXfer.htm"); window.showModelessDialog("RCFileXfer.htm", vArgs, "dialogwidth:" + FileXferWidth + "px;dialogHeight:" + FileXferHeight + "px;status:no;resizable:yes"); } } catch(error) { alert( error ); } } // // ChannelDataReadyHandler: Fired when there is data available on any channel // function ChannelDataReadyHandler(channelID) { var str = null; if (channelID == c_szChatChannelID) { if (false == g_bNewBinaries) { // // Using the old interface // // // Incoming data on the chat channel // str = g_oSAFRemoteDesktopClient.ReceiveChannelData(channelID); } else { // // Using the new interface // str = g_oChatChannel.ReceiveChannelData(); } // // Update chat history window // incomingChatText.value = incomingChatText.value + L_cszUserID + str; incomingChatText.doScroll("scrollbarPageDown"); } else if (channelID == c_szControlChannelID) { // // Incoming data on the control channel. Data on this // channel will be in XML. // This channel will be used to support the following: // 1. Server side (user end) disconnect // 2. File transfer // if (false == g_bNewBinaries) { // // Using the old interface // str = g_oSAFRemoteDesktopClient.ReceiveChannelData(channelID); } else { // // Using the new interface // str = g_oControlChannel.ReceiveChannelData(); } // // Parse the data sent on the control channel // ParseControlData ( str ); } return; } // // ChatChannelDataReadyHandler: Fired when there is data available on Chat channel // function ChatChannelDataReadyHandler() { var str = null; // // Incoming data on the chat channel // str = g_oChatChannel.ReceiveChannelData(); // // Update chat history window // incomingChatText.value = incomingChatText.value + L_cszUserID + str; incomingChatText.doScroll("scrollbarPageDown"); return; } // // ControlChannelDataReadyHandler: Fired when there is data available on Control channel // function ControlChannelDataReadyHandler() { var str = null; // // Incoming data on the control channel. Data on this // channel will be in XML. // This channel will be used to support the following: // 1. Server side (user end) disconnect // 2. File transfer // str = g_oControlChannel.ReceiveChannelData(); // // Parse the data sent on the control channel // ParseControlData ( str ); return; } // // OnEnter: This is fired when Expert hits in the chat message window // function OnEnter() { if (window.event.keyCode == 13) { // // Send chat data to user // SendChatData(); } } var g_iChannelId = 1000; // // LaunchFileXfer: Launches the File Xfer UI // function LaunchFileXfer( mode ) { var vArgs = new Array(4); var FileXferWidth = "400"; var FileXferHeight = "140"; vArgs[0] = mode; // Source Mode vArgs[1] = g_oControlChannel; // Control Channel vArgs[2] = g_oSAFRemoteDesktopChannelMgr; // Channel Manager vArgs[3] = g_iChannelId++; window.showModelessDialog("RCFileXfer.htm", vArgs, "dialogwidth:" + FileXferWidth + "px;dialogHeight:" + FileXferHeight + "px;status:no;resizable:yes"); return; } function InitiateRCSessionxxx() { // // Initialization // idtogglechat.innerHTML = "
Hide Chat
"; g_bNewBinaries = true; // // To Do: File the Helper's name // //..idHelperName.innerText = "( Place Holder )"; idStatus.innerHTML = "
Status :Connected
"; return; if(null == g_oSAFRemoteDesktopSession) { alert( L_ERRNULLRCSESSION ); } else { var x; try { if (false == g_bNewBinaries) { // // Using Old interface // // // Add the chat channel // g_oSAFRemoteDesktopSession.AddChannels( c_szChatChannelID ); // // Add the control channel // g_oSAFRemoteDesktopSession.AddChannels( c_szControlChannelID ); // // Bind OnChannelDataReady callback // g_oSAFRemoteDesktopSession.OnChannelDataReady = function(channelID) { OnChannelDataReadyEvent(channelID); } } else { // // Use new interface // // // Get the Channel Manager // //alert("Getting ChannelManager"); g_oSAFRemoteDesktopChannelMgr = g_oSAFRemoteDesktopSession.ChannelManager; // // Open the Chat channel // //alert("Opening ChatChannel"); g_oChatChannel = g_oSAFRemoteDesktopChannelMgr.OpenDataChannel( c_szChatChannelID ); // // Open the Control Channel // //alert("Opening Control Channel"); g_oControlChannel = g_oSAFRemoteDesktopChannelMgr.OpenDataChannel( c_szControlChannelID ); // // Setup the ChannelDataReady handlers // g_oChatChannel.OnChannelDataReady = function() { ChatChannelDataReadyEvent(); } g_oControlChannel.OnChannelDataReady = function() { ControlChannelDataReadyEvent(); } HideChat.value = L_HIDECHAT; } } catch(x) { // no big deal ... it just means that the channel was added // by a previous instance. } // // Setup the OnDisconnected event callback // g_oSAFRemoteDesktopSession.OnDisconnected = function() { OnClientDisconnected(); } } try { // // Also, Enable Remote Control // EnableRemoteControl(); // // Transmit screen resolution to Expert, so that // he has the right screen size to see in the RC Tool // TransmitScreenInfo(); //..StatusID.innerText = c_szCHATMODE; } catch(error) { alert(error); } } function TakeControlMethod() { ControlRemotePCHandler(); } function SendFileMethod() { LaunchFileXfer(0); } function QuitMethod() { RCDisconnect(); } function HelpMethod() { }