Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following examples are the HTML document and the JavaScript code that the Join Manager sends back to the client in response to the HTTP request sent on the simple join URL.
The following example is the main HTML document:
-
<html xmlns="http://www.w3.org/1999/xhtml" class="reachJoinHtml"> <head> <title>Microsoft Lync 2010</title> <script type="text/javascript"> var reachURL = "https://fabrikam.com/Reach/Client/WebPages/ReachJoin.aspx?xml=PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48Y29uZi1pbmZvIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3J0Yy8yMDA5LzA1L3NpbXBsZWpvaW5jb25mZG9jIj48Y29uZi11cmk-c2lwOnN0ZXZlY2hAbWljcm9zb2Z0LmNvbTtncnV1O29wYXF1ZT1hcHA6Y29uZjpmb2N1czppZDpJQlVCU0s3VzwvY29uZi11cmk-PHNlcnZlci10aW1lPjE8L3NlcnZlci10aW1lPjxvcmlnaW5hbC1pbmNvbWluZy11cmw-aHR0cHM6Ly9sc2xtODQubWVldC5taWNyb3NvZnQuY29tL21lZXQvc3RldmVjaC9JQlVCU0s3Vzwvb3JpZ2luYWwtaW5jb21pbmctdXJsPjxjb25mLWtleT5JQlVCU0s3VzwvY29uZi1rZXk-PC9jb25mLWluZm8-"; /* Escaped ocsmeet XML document Body */ var escapedXML = "<?xml version="1.0" encoding="utf-8"?><conf-info xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/rtc/2009/05/simplejoinconfdoc"><conf-uri>sip:bob@fabricam.com;gruu;opaque=app:conf:focus:id:IBUBSK7W</conf-uri><server-time>1</server-time><original-incoming-url> https://fabrikam.com/meet/bob/IBUBSK7W </original-incoming-url><conf-key>IBUBSK7W</conf-key></conf-info>"; var showJoinUsingLegacyClientLink = "True"; var urlCrackingError = "False"; var currentLanguage = "en-US"; </script> /* Including JavaScript code */ /* Utilities.js - Contains other methods such methods that verify if the browser version is supported*/ <script type="text/javascript" src="/meet/JavaScript/Utilities.js"></script> /* PluginLoader.js - Contains classes and methods that contain configuration and loading of ActiveX control or Firefox Plug-in */ <script type="text/javascript" src="/meet/JavaScript/PluginLoader.js"></script> /* Launch.js - Contains the OnLoad() method and the related code that invokes utility functions, does supported browser checks, loads available ActiveX Control or Firefox plug-ins, shortlists the candidate and invokes Launch API on it. It would also contain fall back code to launch the web offering, provide links to alternate clients, and provide a help link. It will also close the browser window in case of a successful launch. */ <script type="text/javascript" src="/meet/JavaScript/Launch.js"></script> <link rel="Stylesheet" type="text/css" href="/meet/Resources/ReachClient.css" /> </head> <body onload="mainWindow.OnLoad();" class="reachJoinBody"> /* HTML BODY goes here, typically there is an IFrame here and JavaScript populates the content */ </body> </html>
The following example is PluginLoader.js:
-
var InstalledClient = new Object( ); InstalledClient.OC = 0; InstalledClient.Samara = 1; InstalledClient.AOC = 2; // // Name = Registered name of the Plugin // PluginConfigOC = { IE: { Version_Name: "CommunicatorMeetingJoinAx.JoinManager" }, FF: { Version_CLSID: "application/vnd.microsoft.communicator.ocsmeeting" } } PluginConfigSamara = { IE: { Version_Name: "AttendantConsoleMeetingJoinAx.JoinManager" }, FF: { Version_CLSID: "application/vnd.microsoft.attendantconsole.ocsmeeting" } } PluginConfigAOC = { IE: { Version_Name: "CommunicatorAttendeeMeetingJoinAx.JoinManager" }, FF: { Version_CLSID: "application/vnd.microsoft.communicatorattendee.ocsmeeting" } } // Format the string function StringFormat() { var argumentList = StringFormat.arguments; var argsLen = argumentList.length; if(!argsLen) { return ""; } else { var newString = argumentList[0]; var tmp = argsLen - 1; for(var i = 0; i < tmp; ++i) { // '$' is a sepcial character in regular expression // if there is '$_' in string, it will break this function in IE // Replace it with '$$' newString = newString.replace(new RegExp("%" + i, "g"), (argumentList[i + 1] + "").replace(/\$/g, "$$$$")); } return newString; } } function CreateNodeOutside(nodeType, nodeId) { var node = document.createElement(nodeType || "DIV"); document.body.appendChild(node); node.style.position = "absolute"; node.style.width = "1px"; node.style.height = "1px"; node.style.left = "-100px"; node.style.top = "0px"; node.style.overflow = "hidden"; node.style.visibility = "hidden"; if (nodeId != null) node.id = nodeId; return node; } function GetBrowserTag() { var browserTag = ""; if (isIE()) { browserTag = "IE"; } else { // Treat all non-IE browsers the same as Firefox // the reason being, Opera/Chrome/Safari all look // for plugins in the Mozilla folder and load them // even if they were not installed for this browser. browserTag = "FF"; } return browserTag; } function GetConfigForClient(installedClient, configTag) { var config; switch (installedClient) { case InstalledClient.OC: config = PluginConfigOC[configTag]; break; case InstalledClient.Samara: config = PluginConfigSamara[configTag]; break; case InstalledClient.AOC: config = PluginConfigAOC[configTag]; break; default: break; } return config; } // // A general component used to load any plugin into browser (IE & Firefox) // function PluginLoader() { this._isIE = null; this._name = null; this._clsname = null; this._clsid = null; this._initProps = null; // the loaded plugin object this._pluginInstance = new Object(); } PluginLoader.IdPrefix = "_ucclient_plugin_"; PluginLoader.TagHtmlTemplateIE = "<object classid='%0'%1></object>"; PluginLoader.TagHtmlTemplateFF = "<embed type='%0'%1></embed>"; // // Initialize it with plugin information, such as name and id. // PluginLoader.prototype.Initialize = function(name, clsname, clsid, initProps) { if (this._pluginInstance.object) { return; } this._isIE = (document.all != null); this._name = name; this._clsname = clsname; this._clsid = clsid; this._initProps = initProps; } // // Load plugin // PluginLoader.prototype.LoadPlugin = function() { if (this._pluginInstance.object) { return this._pluginInstance; } this._CreatePlugin(); return this._pluginInstance; } // // UnLoad plugin // PluginLoader.prototype.UnloadPlugin = function() { if (!this._pluginInstance.object) { return; } //if it created a dom object, remove it. if ((this._clsname == null) && (this._clsid != null)) { try { var createdContainerNode = this._pluginInstance.object.parentNode; Assert(createdContainerNode != null && createdContainerNode.parentNode == document.body, "Plugin parent node is not correct"); document.body.removeChild(createdContainerNode); } catch( ex ) { // Error in removing DOM object. return; } } this._pluginInstance.object = null; return; } PluginLoader.prototype._IsPluginAvailable = function() { var isAvailable = false; // Check for the availability of the Plugin // before actually trying to load the Plugin // in case of non-IE browsers: this prevents // the "gold bar" indicating "Additional plugins // are required to display all the media on the // page" that comes in Firefox and other browsers. if (!this._isIE) { var mimetype = navigator.mimeTypes[this._clsid]; if (mimetype) { var enabled = mimetype.enabledPlugin; if (enabled != null) { isAvailable = true; } } } return isAvailable; } // // Create the plugin object // PluginLoader.prototype._CreatePlugin = function() { if (this._clsname) { try { if (this._isIE) { this._pluginInstance.object = new ActiveXObject(this._clsname); } else { this._pluginInstance.object = null; } } catch( ex ) { // Error creating ActiveX object. } } else if (this._clsid) { if (!this._IsPluginAvailable()) { return; } var propStr = ""; if (this._initProps) { var props = this._initProps; for (var key in props) { propStr += " " + key + "='" + props[key] + "'"; } } var tagHtml = StringFormat(this._isIE ? PluginLoader.TagHtmlTemplateIE : PluginLoader.TagHtmlTemplateFF, this._clsid, propStr); try { var containerNode = CreateNodeOutside("DIV"); containerNode.innerHTML = tagHtml; var node = containerNode.firstChild; node.id = PluginLoader.IdPrefix + this._name; this._pluginInstance.object = node; } catch( ex ) { // Error creating DOM object. } } }
The following example is Launch.js:
-
// Constants var MINIMUM_CLIENT_VERSION = 14; var REDIRECT_TO_REACH_SL_OVERRIDE = 'sl='; // This is CU2_HF3 build # as this is when OC / AOC plugin dlls were updated in the build. var MINOR_CLIENT_VERSION_FOR_CU2 = "7577.280"; // Plugin Loaders for each client var pluginLoaderOC = null; var pluginLoaderSamara = null; var pluginLoaderAOC = null; // Plugin Objects for each client var pluginObjectOC = null; var pluginObjectSamara = null; var pluginObjectAOC = null; // Version info for each client var majorVersionOC = null; var majorVersionSamara = null; var majorVersionAOC = null; var minorVersionOC = null; var minorVersionAOC = null; var minorVersionSamara = null; var majorVersionOCCapability = null; var majorVersionAOCCapability = null; var majorVersionSamaraCapability = null; var defaultExperienceVersion = "1400"; var newExperienceVersion = "1500"; var serverBusyErrorCode = "7"; var ResourceURL = ""; var isMobileDevice = false; var isNokiaDevice = false; var isAndroidDevice = false; var isWinPhoneDevice = false; var isIPhoneDevice = false; var isIPadDevice = false; // Initialize with some default values var lyncJoinConferenceUrl = "lync://"; var lync15JoinConferenceUrl = "lync15:"; var lync15DesktopJoinConfUrl = "lync15classic:"; var lync15MobileJoinConfUrl = "lync15://"; var mlxJoinConfUrl = "lync15mlx:"; var confJoinParams = "confjoin?url="; var isImmersiveIE = false; var noAppTimeout = 1500; var loading = "true"; // // Initialize resource strings before we try to use them. // var txt_languageSettingsLabel = ""; var txt_launchRichClientHeaderLabel = ""; var txt_launchRichClientTextLabel = ""; var txt_unableToJoinLabel = ""; var txt_onlineHelpLink = ""; var txt_copyRightTextLabel = ""; var textDirection=""; var txt_joinUsingReachLink = ""; var txt_connecting = ""; var txt_unableToLaunchLyncMobile = ""; var txt_unableToLaunchLyncMobile2 = ""; var txt_unsupportedMobileDevice = ""; var txt_immersiveIESwitch = "In Internet Explorer, click on the Page Tools button on the address bar, and then click on Use desktop view. Lync will then connect you to the meeting."; var txt_64bitbrowserUnsupportedLabel = ""; var txt_64bitUnsupportedText1 = ""; var txt_64bitUnsupportedOption1 = ""; var txt_64bitJoinUsingLync = ""; var txt_64bitUnsupportedOption2 = ""; // Add any new resource strings here. var requestArray = new Array(10); function MainForm() { this.connection = new ConnectionObject(); } MainForm.prototype.GetMinorVersion = function (fullVersion) { if (fullVersion == null) { return null; } var minorVersion = 0.0; // Full version number string format: "4.0.1234.5678" // Minor version number string format: "1234.5678" // Ignore any non-numeric characters preceding the version number start if (/(\D*)(\d\.\d\.)(\d{4}\.\d+)/.test(fullVersion)) { var minorVersionString = RegExp.$3; minorVersion = parseFloat(minorVersionString); } return minorVersion; } MainForm.prototype.GetMajorVersion = function(fullVersion) { if (fullVersion == null) { return null; } var majorVersion = ""; // Full version number string format: "4.0.1234.5678" // Major version number string format: "4.0" // Ignore any non-numeric characters preceding the version number start if (/(\D*)(\d\.\d)(\.\d{4}\.\d+)/.test(fullVersion)) { majorVersion = RegExp.$2; } return majorVersion; } MainForm.prototype.GetClientBasedOnCapability = function(capabilities) { if (capabilities == null) { return null; } //assign it as 14 by default majorVersionCapability = 14; var clientVersion = ""; if (/(([a-z\-]*):(\d+\.\d+)(,*))*/.test(capabilities)) { majorVersionEncoded = RegExp.$2; minorVersionEncoded = RegExp.$3; // We dont look at the minorVersion yet since we dont need to block any CUs in 15 yet. if (majorVersionEncoded == "ms-launch-lync") { majorVersionCapability = 15; } if (majorVersionEncoded == "ms-launch-ocsmeet") { majorVersionCapability = 14; } if (majorVersionEncoded == "ms-launch-conf") { majorVersionCapability = 13; } } return majorVersionCapability; } MainForm.prototype.OnLoad = function () { // Javascript is enabled, if (document.URL.indexOf("closeme") >= 0) { this.ClosePage(); return; } // un-hide the Language dropdown. // hide the 15 experience table for now document.getElementById("mainTable15").style.display = "none"; document.getElementById("languageSettingsDiv").style.display = "block"; document.getElementById("languageSettingsDiv15").style.display = "block"; document.getElementById("languageSettingsDivMobile").style.display = "block"; document.getElementById("errorLogo").style.display = "none"; document.getElementById("officeImageError").style.display = "none"; document.getElementById("footer").className = ""; this.UpdateSelectedLanguage(currentLanguage); // Fetch the current language resources. this.GetUpdatedResources(currentLanguage); } MainForm.prototype.OnLoadComplete = function () { loading = "false"; lyncJoinConferenceUrl = mobileW1ProtocolHandler.toLowerCase() + confJoinParams; lync15MobileJoinConfUrl = mobileW2ProtocolHandler.toLowerCase() + confJoinParams; lync15DesktopJoinConfUrl = lync15ClassicProtocolHandler.toLowerCase() + confJoinParams; lync15JoinConferenceUrl = lync15CommonProtocolHandler.toLowerCase() + confJoinParams; mlxJoinConfUrl = mlxProtocolHandler.toLowerCase() + confJoinParams; var unsupportedDevice = isUnsupported.toLowerCase(); if (unsupportedDevice == "true") { if (userExperience.toLowerCase() != defaultExperienceVersion) { document.getElementById("UnknownMobileDeviceDiv15").style.display = "block"; document.getElementById("unknownMobileDeviceLabel15").innerHTML = txt_unsupportedMobileDevice; } else { document.getElementById("UnknownMobileDeviceDiv").style.display = "block"; document.getElementById("unknownMobileDeviceLabel").innerHTML = txt_unsupportedMobileDevice; } document.getElementById("launchReachLink").style.display = "none"; return; } // // Make sure Meeting is valid // var valid = validMeeting.toLowerCase(); if (valid == "false") { this.ShowError(); return; } var fwdurl = domainOwnerJoinLauncherUrl.toLowerCase(); if (fwdurl != "") { domainOwnerJoinLauncherUrl = domainOwnerJoinLauncherUrl + "&url=" + document.URL; // Redirect the user to the correct join launcher this.RedirectToReach(domainOwnerJoinLauncherUrl); return; } // // Initialize version info of all clients // this.InitializeVersionInformationOfAllClients(); // // Do something here as cracking was received // var reachRequested = reachClientRequested.toLowerCase(); if (reachRequested == "true") { this.RedirectToReach(reachURL); return; } var lwaRequested = htmlLwaClientRequested.toLowerCase(); if (lwaRequested == "true") { var resp = confirm("Welcome! You are participating in Lync 15 Technical Preview and today is Lync Web App day (LWA Day).\n\n" + "Every LWA Day, you'll be joining meetings using Lync Web App by default instead of the installed Lync client. " + "Please take this opportunity to put our web client through its paces 'cause we want to know what you think.\n\n " + "If you need to, you can switch to the installed Lync client by clicking Cancel button."); if (resp) { this.RedirectToReach(reachURL); return; } } isMobileDevice = isMobile.toLowerCase(); if (isMobileDevice == "true") { isNokiaDevice = isNokia.toLowerCase(); isAndroidDevice = isAndroid.toLowerCase(); isWinPhoneDevice = isWinPhone.toLowerCase(); isIPhoneDevice = isIPhone.toLowerCase(); isIPadDevice = isIPad.toLowerCase(); lyncJoinConferenceUrl = lyncJoinConferenceUrl + document.URL; lync15MobileJoinConfUrl = lync15MobileJoinConfUrl + document.URL; if (isNokiaDevice == "true" || isIPhoneDevice == "true" || isIPadDevice == "true" || isWinPhoneDevice == "true" || isAndroidDevice == "true") { var lyncDownloadFromOviUrl = ""; if (isNokiaDevice == "true") { lyncDownloadFromOviUrl = "http://go.microsoft.com/fwlink/?LinkId=217188"; } if (isIPhoneDevice == "true") { lyncDownloadFromOviUrl = "http://go.microsoft.com/fwlink/?LinkId=217185"; } if (isIPadDevice == "true") { lyncDownloadFromOviUrl = "http://go.microsoft.com/fwlink/?LinkId=217187"; } if (isWinPhoneDevice == "true") { lyncDownloadFromOviUrl = "http://go.microsoft.com/fwlink/?LinkId=217184"; } if (isAndroidDevice == "true") { lyncDownloadFromOviUrl = "http://go.microsoft.com/fwlink/?LinkId=217189"; } // Try to launch lync with the lyncJoinLaunchUrl. Start the timeout in parallel, // After timeout, redirect to install page. document.getElementById("launchReachLink").style.display = "none"; if (userExperience.toLowerCase() != defaultExperienceVersion) { document.getElementById("mobileinterimDiv15").style.display = "block"; document.getElementById("connectingLabel15").innerHTML = txt_connecting; } else { document.getElementById("mobileinterimDiv").style.display = "block"; document.getElementById("connectingLabel").innerHTML = txt_connecting; } if (isIPhoneDevice == "true" || isIPadDevice == "true") { window.frames["launchReachFrame"].location = lync15MobileJoinConfUrl; setTimeout(function () { window.frames["launchReachFrame"].location = lyncJoinConferenceUrl; setTimeout(function () { if (userExperience.toLowerCase() != defaultExperienceVersion) { document.getElementById("mobileappstoreDiv15").style.display = "block"; //document.getElementById("copyRightInfoDiv").style.display = "block"; document.getElementById("mobileinterimDiv15").style.display = "none"; document.getElementById("mobileappstoreLabel15").innerHTML = txt_unableToLaunchLyncMobile; document.getElementById("mobileappstoreLabel315").innerHTML = txt_unableToLaunchLyncMobile3; document.getElementById("mobileappstoreLabel215").setAttribute('href', lyncDownloadFromOviUrl); document.getElementById("mobileappstoreLabel215").innerHTML = txt_unableToLaunchLyncMobile2; } else { document.getElementById("mobileappstoreDiv").style.display = "block"; document.getElementById("mobileinterimDiv").style.display = "none"; document.getElementById("mobileappstoreLabel").innerHTML = txt_unableToLaunchLyncMobile; document.getElementById("mobileappstoreLabel2").setAttribute('href', lyncDownloadFromOviUrl); document.getElementById("mobileappstoreLabel2").innerHTML = txt_unableToLaunchLyncMobile2; } }, noAppTimeout); }, noAppTimeout); } // For all the other devices (android, WinPhone, Nokia?) continue to launch using the same technique else { window.frames["launchReachFrame"].location = lyncJoinConferenceUrl; setTimeout(function () { if (userExperience.toLowerCase() != defaultExperienceVersion) { document.getElementById("mobileappstoreDiv15").style.display = "block"; //document.getElementById("copyRightInfoDiv").style.display = "block"; document.getElementById("mobileinterimDiv15").style.display = "none"; document.getElementById("mobileappstoreLabel15").innerHTML = txt_unableToLaunchLyncMobile; document.getElementById("mobileappstoreLabel315").innerHTML = txt_unableToLaunchLyncMobile3; document.getElementById("mobileappstoreLabel215").setAttribute('href', lyncDownloadFromOviUrl); document.getElementById("mobileappstoreLabel215").innerHTML = txt_unableToLaunchLyncMobile2; } else { document.getElementById("mobileappstoreDiv").style.display = "block"; document.getElementById("mobileinterimDiv").style.display = "none"; document.getElementById("mobileappstoreLabel").innerHTML = txt_unableToLaunchLyncMobile; document.getElementById("mobileappstoreLabel2").setAttribute('href', lyncDownloadFromOviUrl); document.getElementById("mobileappstoreLabel2").innerHTML = txt_unableToLaunchLyncMobile2; } }, noAppTimeout); } } return; } // // Initialize version info of all clients // this.InitializeVersionInformationOfAllClients(); // MLX DCR: Check if MLX has requested an escalation to Lync desktop. var desktopescalate = escalateToDesktop.toLowerCase(); // Before checking for the plugin, now we should look for the Lync15:// protocol handler // only on Win8 or ARM devices if (isWin8() || isArm()) { // Check if the new API msLaunchUri is available or not. if (navigator.msLaunchUri) { // If its available, look if Escalation is ON from MLX if (desktopescalate == "true") { // Yes, launch using Lync15Desktop to ensure to NOT launch MLX // if the detection/launch was successful, close the page. // if it was unsuccessful, try to launch a client usig Active X next. navigator.msLaunchUri(lync15DesktopJoinConfUrl + document.URL, this.PrepareToClosePage, this.LaunchUsingActiveX); } else { // No, launch using common Lync15:// to ensure we launch whichever is default MLX, W15 or W14 CU7 navigator.msLaunchUri(lync15JoinConferenceUrl + document.URL, this.PrepareToClosePage, this.LaunchUsingActiveX); } return; } if (navigator.msProtocols) { // This means the protocol hanlder detection API is available. // we must be on IE10 or mo-bro or higher // if (lync15mlx:// not found) { // if (can use ActiveX) // IE 10 classic // use ActiveX to launch // else // IE 10 metro // use Protocol Handler // } // References:http://msdn.microsoft.com/en-us/library/hh772146(v=vs.85).aspx if (navigator.msProtocols["lync15mlx"] == undefined || desktopescalate == "true") { // => This means MLX is NOT installed or is installed but we have to pretend as if it isn't (desktopescalation scenario) // Check if conf: is Registered if (navigator.msProtocols["conf"] != undefined) { // => Conf: is registered so W14 or above client is installed. // Check if the plugin can be loaded. if (majorVersionAOC == null && majorVersionOC == null && majorVersionSamara == null) { // => Plugin info can not be found/loaded //References: http://blogs.msdn.com/b/ie/archive/2011/05/02/activex-filtering-for-developers.aspx if (typeof window.external.msActiveXFilteringEnabled != "undefined") { if (window.external.msActiveXFilteringEnabled() == false) { // => We're in immersive mode as activeXFiltering is false but plugin is NOT found. // Check if Lync 15 is installed using the Lync15 specific protocol handler if (navigator.msProtocols["lync15desktop"] != undefined) { window.frames["launchReachFrame"].location = lync15DesktopJoinConfUrl + encodeURIComponent(document.URL); return; } } // msActiveXFilteringCheck } } // Plugin can be loaded or not } // conf check } else { // MLX is installed and desktop escalation is false // Launch Lync15:// blindly as MLX and all other clients are expected to register for Lync15:// window.frames["launchReachFrame"].location = lync15JoinConferenceUrl + encodeURIComponent(document.URL); return; } } if (isArm()) { this.RedirectToReach(reachURL); return; } } this.LaunchUsingActiveX(); } MainForm.prototype.LaunchUsingActiveX = function() { var isHtmlLwaEnabled = isLwaEnabled.toLowerCase(); // Treat MAC OS separately. We need to take the users to LWA only if the 15 HTML LWA is enabled. if (isMacOS() && isHtmlLwaEnabled == "true") { MainForm.prototype.RedirectToReach(reachURL); return; } // // Now that we have the installed clients and // their version info, figure out which client // to launch and try to launch it. // var launched = "false"; var blockprecu2clients = blockPreCU2Clients.toLowerCase(); try { if ((majorVersionOC != null) && (majorVersionOCCapability >= MINIMUM_CLIENT_VERSION)) { if (blockprecu2clients == "true" && minorVersionOC < MINOR_CLIENT_VERSION_FOR_CU2) { // do not launch OC here as we need to block these. // instead show error message and an option to launch LWA MainForm.prototype.ShowClientBlockScreen(); return; } else { // Launch using OC plugin // Note: OC Plugin launches whichever client ran last (OC/Samara) pluginObjectOC.object.LaunchUCClient(escapedXML); launched = "true"; MainForm.prototype.DisplayInstalledClientLaunchedPage("oc"); } } else if ((majorVersionSamara != null) && (majorVersionSamaraCapability >= MINIMUM_CLIENT_VERSION)) { // Launch using Samara plugin // Note: Samara Plugin launches whichever client ran last (OC/Samara) pluginObjectSamara.object.LaunchUCClient(escapedXML); launched = "true"; MainForm.prototype.DisplayInstalledClientLaunchedPage("oc"); } // make sure to launch AOC only when HTML LWA is NOT enabled else if ((isHtmlLwaEnabled == "false") && ((majorVersionAOC != null) && (majorVersionAOCCapability >= MINIMUM_CLIENT_VERSION))) { if (blockprecu2clients == "true" && minorVersionAOC < MINOR_CLIENT_VERSION_FOR_CU2) { // do not launch OC here as we need to block these. // instead show error message and an option to launch LWA MainForm.prototype.ShowClientBlockScreen(); return; } else { // Launch using AOC plugin // Note: AOC Plugin launches only AOC pluginObjectAOC.object.LaunchUCClient(escapedXML); launched = "true"; MainForm.prototype.DisplayInstalledClientLaunchedPage("aoc"); } } } catch (ex) { // Failed to launch client launched = "false"; } // // Unload all Plugins // MainForm.prototype.UnloadAllPlugins(); if (launched == "false") { // Either we failed to detect an installed client OR // the installed client is not the right version OR // launching the installed client failed. // Redirect to Reach. MainForm.prototype.RedirectToReach(reachURL); } else { // We managed to successfully launch the client to join // the meeting, try to close the browser window on the // browsers that support closing it silently MainForm.prototype.PrepareToClosePage(); } } MainForm.prototype.PrepareToClosePage = function () { // We only close the page on selected IE browsers. // We dont do it on FF/Chrome etc other browsers. // So, if we're not on IE, lets not reload the page with ?closeme=1 in the first place if (!isIE()) { return; } var currentUrl = window.location.href; if (currentUrl.indexOf("&url=") < 0) { MainForm.prototype.ClosePage(); return; } else { var newUrl = currentUrl.substring(currentUrl.indexOf("&url=") + 5); if (newUrl.indexOf("?") >= 0) { newUrl = newUrl + "&"; } else { newUrl = newUrl + "?"; } newUrl = newUrl + "closeme=1"; window.location.href = newUrl; } } MainForm.prototype.InitializeVersionInformationOfAllClients = function() { try { navigator.plugins.refresh(); } catch (ex) { // no need to do anything here } // First determine the browser tag // needed to look up the config for // the clients var configTag = GetBrowserTag(); this.InitializeVersionInformationForOC(configTag); this.InitializeVersionInformationForSamara(configTag); this.InitializeVersionInformationForAOC(configTag); } MainForm.prototype.InitializeVersionInformationForOC = function(configTag) { var pluginConfig = GetConfigForClient(InstalledClient.OC, configTag); if (!pluginConfig) { return; } pluginLoaderOC = new PluginLoader(); pluginLoaderOC.Initialize( "OC", pluginConfig.Version_Name, pluginConfig.Version_CLSID, null); pluginObjectOC = pluginLoaderOC.LoadPlugin(); if (!pluginObjectOC.object) { return; } try { var fullVersionOC = pluginObjectOC.object.GetVersionString(); majorVersionOC = this.GetMajorVersion(fullVersionOC); minorVersionOC = this.GetMinorVersion(fullVersionOC); var clientCapabilities = pluginObjectOC.object.GetSupportedProtocolVersionString(); majorVersionOCCapability = this.GetClientBasedOnCapability(clientCapabilities); } catch (ex) { // Unable to get version details, continue anyway } } MainForm.prototype.InitializeVersionInformationForSamara = function(configTag) { var pluginConfig = GetConfigForClient(InstalledClient.Samara, configTag); if (!pluginConfig) { return; } pluginLoaderSamara = new PluginLoader(); pluginLoaderSamara.Initialize( "Samara", pluginConfig.Version_Name, pluginConfig.Version_CLSID, null); pluginObjectSamara = pluginLoaderSamara.LoadPlugin(); if (!pluginObjectSamara.object) { return; } try { var fullVersionSamara = pluginObjectSamara.object.GetVersionString(); majorVersionSamara = this.GetMajorVersion(fullVersionSamara); var clientCapabilities = pluginObjectSamara.object.GetSupportedProtocolVersionString(); majorVersionSamaraCapability = this.GetClientBasedOnCapability(clientCapabilities); } catch (ex) { // Unable to get version details, continue anyway } } MainForm.prototype.InitializeVersionInformationForAOC = function(configTag) { var pluginConfig = GetConfigForClient(InstalledClient.AOC, configTag); if (!pluginConfig) { return; } pluginLoaderAOC = new PluginLoader(); pluginLoaderAOC.Initialize( "AOC", pluginConfig.Version_Name, pluginConfig.Version_CLSID, null); pluginObjectAOC = pluginLoaderAOC.LoadPlugin(); if (!pluginObjectAOC.object) { return; } try { var fullVersionAOC = pluginObjectAOC.object.GetVersionString(); majorVersionAOC = this.GetMajorVersion(fullVersionAOC); minorVersionAOC = this.GetMinorVersion(fullVersionAOC); var clientCapabilities = pluginObjectAOC.object.GetSupportedProtocolVersionString(); majorVersionAOCCapability = this.GetClientBasedOnCapability(clientCapabilities); } catch (ex) { // Unable to get version details, continue anyway } } MainForm.prototype.UnloadAllPlugins = function() { // Unload all Plugins so that references to the DLLs are released // Unload OC Plugin if (pluginLoaderOC != null) { pluginLoaderOC.UnloadPlugin(); } // Unload Samara Plugin if (pluginLoaderSamara != null) { pluginLoaderSamara.UnloadPlugin(); } // Unload AOC Plugin if (pluginLoaderAOC != null) { pluginLoaderAOC.UnloadPlugin(); } } MainForm.prototype.ShowClientBlockScreen = function () { if (userExperience.toLowerCase() != defaultExperienceVersion) { document.getElementById("UnsupportedClientBlockDiv15").style.display = "block"; document.getElementById("UnsupportedClientBlockMessageLabel15").innerHTML = txt_UnsupportedLyncVersion1; document.getElementById("JoinUsingLWAOption115").innerHTML = txt_UnsupportedLyncVersion2; document.getElementById("JoinMeetingUsingLWA_Link15").innerHTML = txt_UnsupportedLyncVersion3; document.getElementById("JoinMeetingUsingLWA_Link15").href = reachURL; } else { document.getElementById("UnsupportedClientBlockDiv").style.display = "block"; document.getElementById("UnsupportedClientBlockMessageLabel").innerHTML = txt_UnsupportedLyncVersion1; document.getElementById("JoinUsingLWAOption1").innerHTML = txt_UnsupportedLyncVersion2; document.getElementById("JoinMeetingUsingLWA_Link").innerHTML = txt_UnsupportedLyncVersion3; document.getElementById("JoinMeetingUsingLWA_Link").href = reachURL; } } MainForm.prototype.ShowError = function () { if (userExperience.toLowerCase() != defaultExperienceVersion) { document.getElementById("joinLauncherErrorDiv15").style.display = "block"; if (errorCode == serverBusyErrorCode) { document.getElementById("errorTextLabel15").innerHTML = conferenceErrorServerBusy1; document.getElementById("checkUrlLabel15").innerHTML = conferenceErrorServerBusy2; } else { document.getElementById("errorTextLabel15").innerHTML = conferenceError1; document.getElementById("checkUrlLabel15").innerHTML = conferenceError2; } document.getElementById("errorTextLabel15").style.display = "block"; document.getElementById("checkUrlLabel15").style.display = "block"; document.getElementById("diagLabel15").innerHTML = diag; document.getElementById("diagLabel15").style.display = "block"; var diagInfoTextString = diagInfo.toString(); document.getElementById("diagInfoText15").value = diagInfoTextString; document.getElementById("diagInfoText15").style.display = "none"; } else { // 1400 if (isMobileDevice == "true") { document.getElementById("joinLauncherErrorDivMobile").style.display = "block"; if (errorCode == serverBusyErrorCode) { document.getElementById("errorTextLabelMobile").innerHTML = conferenceErrorServerBusy1; document.getElementById("checkUrlLabelMobile").innerHTML = conferenceErrorServerBusy2; } else { document.getElementById("errorTextLabelMobile").innerHTML = conferenceError1; document.getElementById("checkUrlLabelMobile").innerHTML = conferenceError2; } document.getElementById("checkUrlLabelMobile").style.display = "block"; document.getElementById("errorTextLabelMobile").style.display = "block"; document.getElementById("diagLabelMobile").innerHTML = diag; document.getElementById("diagLabelMobile").style.display = "block"; var diagInfoTextString = diagInfo.toString(); document.getElementById("diagInfoTextMobile").value = diagInfoTextString; document.getElementById("diagInfoTextMobile").style.display = "none"; } else { // non-mobile document.getElementById("joinLauncherErrorDiv").style.display = "block"; if (errorCode == serverBusyErrorCode) { document.getElementById("errorTextLabel").innerHTML = conferenceErrorServerBusy1; document.getElementById("checkUrlLabel").innerHTML = conferenceErrorServerBusy2; } else { document.getElementById("errorTextLabel").innerHTML = conferenceError1; document.getElementById("checkUrlLabel").innerHTML = conferenceError2; } document.getElementById("errorTextLabel").style.display = "block"; document.getElementById("checkUrlLabel").style.display = "block"; document.getElementById("diagLabel").innerHTML = diag; document.getElementById("diagLabel").style.display = "block"; var diagInfoTextString = diagInfo.toString(); document.getElementById("diagInfoText").value = diagInfoTextString; document.getElementById("diagInfoText").style.display = "none"; } } } MainForm.prototype.DisplayInstalledClientLaunchedPage = function (launchedClient) { if (userExperience.toLowerCase() != defaultExperienceVersion) { // Show the Rich client launched text, etc. document.getElementById("launchRichClientDiv15").style.display = "block"; // Tell Reach which client was launched so the Reach Landing // Page can be more intelligent about the links it displays // to the user. var fullReachURL = reachURL + "&launched=" + launchedClient; document.getElementById("JoinUsingLWAOptionHelp115").innerHTML = txt_UnsupportedLyncVersion2; document.getElementById("JoinMeetingUsingLWA2_Link15").innerHTML = txt_UnsupportedLyncVersion3; // Update the link for launching Reach. document.getElementById("JoinMeetingUsingLWA2_Link15").href = fullReachURL; } else { // Show the Rich client launched text, etc. document.getElementById("launchRichClientDiv").style.display = "block"; // Show the Contact Support text with Reach option as well as the link to // launch Reach. document.getElementById("contactSupportLabelWithReachOption").style.display = "block"; document.getElementById("launchReachLink").style.display = "block"; // Tell Reach which client was launched so the Reach Landing // Page can be more intelligent about the links it displays // to the user. var fullReachURL = reachURL + "&launched=" + launchedClient; // Update the link for launching Reach. document.getElementById("launchReachLink").href = fullReachURL; } // Hide the iFrame we use to launch Reach and expand it to 100% // so it occupies the entire area of the page. document.getElementById("launchReachDiv").style.display = "none"; document.getElementById("launchReachFrame").style.width = "0px"; document.getElementById("launchReachFrame").style.height = "0px"; document.getElementById("launchReachFrame").style.display = ""; } MainForm.prototype.RedirectToReach = function (url) { // Launch Reach from an iFrame, so that the // URL does not change in the Browser window. // Hide the main table that has all the page content. document.getElementById("mainTable").style.display = "none"; document.getElementById("mainTable15").style.display = "none"; document.getElementById("mainTablemobile").style.display = "none"; // Un-hide the iFrame we use to launch Reach. document.getElementById("launchReachDiv").style.display = "block"; document.getElementById("launchReachFrame").style.width = "100%"; document.getElementById("launchReachFrame").style.height = "100%"; document.getElementById("launchReachFrame").style.display = "block"; // Hide the scrollbar for the main window, since the iFrame // will have its own scrollbar and that is the only one that // is relevant. window.document.body.style.overflow = "hidden"; window.document.title = reachClientTitleString; // Launch Reach by updating the src of the iFrame. document.getElementById("launchReachFrame").src = url; } MainForm.prototype.ClosePage = function () { // Inspect browser version and take appropriate close action if (top == self) { if (isIE10TridentVersion() || isIE9TridentVersion() || isIE8TridentVersion() || isIE7()) { // set opener as self by invoking open - for IE7,IE8,IE9 & IE10 browsers window.open("", "_self"); // close the browser window window.close(); } else if (isIE6()) { // set the opener as self by directly setting the value of // self.opener - for IE6 browser only self.opener = this; // close the browser window window.close(); } } else { if (isIE10TridentVersion() || isIE9TridentVersion() || isIE8TridentVersion() || isIE7() || isIE6()) { // set opener as self by invoking open - for IE7,IE8 and IE9 browsers top.window.opener = top; top.window.open("", "_parent"); // close the browser window top.window.close(); } } } MainForm.prototype.LanguageSelectionChanged = function () { var languageSelector; isMobileDevice = isMobile.toLowerCase(); if (userExperience.toLowerCase() != defaultExperienceVersion) { languageSelector = document.getElementById("languageSelectCmb15"); } else { if (isMobileDevice == "true") { languageSelector = document.getElementById("languageSelectCmbMobile"); } else { languageSelector = document.getElementById("languageSelectCmb"); } } if (languageSelector.selectedIndex != -1) { var newLanguage = languageSelector.options[languageSelector.selectedIndex].value; if (newLanguage.toLowerCase() != currentLanguage.toLowerCase()) { this.UpdateSelectedLanguage(newLanguage); this.GetUpdatedResources(newLanguage); currentLanguage = newLanguage; } } } MainForm.prototype.UpdateSelectedLanguage = function (language) { var languageSelector; isMobileDevice = isMobile.toLowerCase(); if (userExperience.toLowerCase() != defaultExperienceVersion) { var languageSelector = document.getElementById("languageSelectCmb15"); } else { if (isMobileDevice == "true") { languageSelector = document.getElementById("languageSelectCmbMobile"); } else { var languageSelector = document.getElementById("languageSelectCmb"); } } var index = -1; for (i = 0; i < languageSelector.options.length; i++) { if (languageSelector.options[i].value.toLowerCase() == language.toLowerCase()) { index = i; break; } } languageSelector.selectedIndex = index; } MainForm.prototype.GetUpdatedResources = function (language) { ResourceURL = resourceUrl.toLowerCase(); var url = ResourceURL + language; var languageSelector; try { window.setTimeout(TimerHandler(this.connection, this.connection.SendHttpRequest, "GET", url), 0); // Disable the language selector (so the user cannot keep changing // the language) until we receive the response with language resources // for the currently selected language. isMobileDevice = isMobile.toLowerCase(); if (userExperience.toLowerCase() != defaultExperienceVersion) { languageSelector = document.getElementById("languageSelectCmb15"); } else { if (isMobileDevice == "true") { languageSelector = document.getElementById("languageSelectCmbMobile"); } else { languageSelector = document.getElementById("languageSelectCmb"); } } languageSelector.disabled = true; } catch (e) { // Ignore language related failures } } MainForm.prototype.OnUpdatedResourcesCallback = function () { var XMLHTTPREQUEST_COMPLETE = 4; var XMLHTTPREQUEST_OK = 200; var currentState = null; var httpCode = null; try { currentState = this.connection._httpRequest.readyState; } catch (e) { // Ignore language related failures return; } try { // For Safari 10.1.3 the end status is 0 if (currentState == 0 || currentState == XMLHTTPREQUEST_COMPLETE) { // Enable the language selector again. var languageSelector; isMobileDevice = isMobile.toLowerCase(); if (userExperience.toLowerCase() != defaultExperienceVersion) { languageSelector = document.getElementById("languageSelectCmb15"); } else { if (isMobileDevice == "true") { languageSelector = document.getElementById("languageSelectCmbMobile"); } else { languageSelector = document.getElementById("languageSelectCmb"); } } languageSelector.disabled = false; var httpCode = this.connection._httpRequest.status; if (httpCode == XMLHTTPREQUEST_OK) { // Get the text that the Server sent back // for the request we made. var text = this.connection._httpRequest.responseText; eval(text); this.UpdateUI(); if (loading == "true") { this.OnLoadComplete(); } } else if (currentState != 0) { //Safari cannot get httpcode if network is down. // Ignore language related failures } } } catch (e) { // Ignore language related failures } } MainForm.prototype.UpdateUI = function () { isMobileDevice = isMobile.toLowerCase(); if (textDirection) { window.document.dir = textDirection; } if (window.document.dir == "rtl") { document.getElementById("Img1").className = "bulletImageFlip"; document.getElementById("Img3").className = "bulletimagemobileFlip"; document.getElementById("Img4").className = "bulletImageErrorFlip"; document.getElementById("Img6").className = "bulletImageErrorFlip"; } else { document.getElementById("Img1").className = "bulletImage"; document.getElementById("Img3").className = "bulletimagemobile"; document.getElementById("Img4").className = "bulletImageError"; document.getElementById("Img6").className = "bulletImageError"; } if (userExperience.toLowerCase() != defaultExperienceVersion) { document.getElementById("mainTablemobile").style.display = "none"; document.getElementById("mainTable").style.display = "none"; document.getElementById("mainTable15").style.display = "block"; document.getElementById("mainTable15").style.backgroundImage = "url(/meet/Resources/Gradient.png)"; if (screen.width >= 1280) { document.getElementById("content").className = "help1280"; } if (isMobileDevice == "true") { document.getElementById("content").className = "helpMobile"; document.getElementById("languageSettingsLabel15").style.display = "none"; document.getElementById("languageSelectCmb15").style.width = "100px"; document.getElementById("errorTextLabel15").className = "errorregularMobile"; document.getElementById("checkUrlLabel15").className = "errorlowMobile"; document.getElementById("errorHeader2").className = "errorHeader2Mobile"; document.getElementById("diagLabel15").className = "bulletpointMobile"; document.getElementById("errorBullet").className = "bulletImageErrorMobile"; document.getElementById("errorBulletText").className = "bulletTextErrorMobile"; document.getElementById("diagLabel215").className = "errorverylowMobile"; document.getElementById("diagInfoText15").style.width = "60%"; if (errorCode == "-1") { document.getElementById("copyright").innerText = txt_copyRightTextLabel15; document.getElementById("copyright").style.display = "block"; document.getElementById("copyright").className = "copyrightMobile"; document.getElementById("lynclogo").style.display = "block"; document.getElementById("lynclogo").className = "logospaceMobile"; document.getElementById("officeLogoColumn").className = "officelogoColumnSuccessMobile"; document.getElementById("contentRow15").className = "contentClassSuccessMobile"; document.getElementById("successLogoMobile").style.display = "block"; //document.getElementById("spacer").className = "spacerSuccess"; //document.getElementById("firstRow").className = "firstRowSuccess"; document.getElementById("officeImageSuccess").style.display = "none"; document.getElementById("officeImageError").style.display = "none"; document.getElementById("footer").className = "footerSuccessMobile"; document.getElementById("errorLogoMobile").style.display = "none"; } else { document.getElementById("lynclogo").style.display = "none"; document.getElementById("officeLogoColumn").className = "officelogoColumnErrorMobile"; document.getElementById("contentRow15").className = "contentClassErrorMobile"; document.getElementById("errorLogoMobile").style.display = "block"; //document.getElementById("spacer").className = "spacerError"; //document.getElementById("firstRow").className = "firstRowError"; document.getElementById("officeImageError").style.display = "block"; document.getElementById("officeImageError").className = "officeImageMobile"; document.getElementById("officeImageSuccess").style.display = "none"; document.getElementById("footer").className = "footerErrorMobile"; } } else { if (errorCode == "-1") { document.getElementById("lynclogo").style.display = "block"; document.getElementById("officeLogoColumn").className = "officelogoColumnSuccess"; document.getElementById("contentRow15").className = "contentClassSuccess"; document.getElementById("successLogo").style.display = "block"; //document.getElementById("spacer").className = "spacerSuccess"; document.getElementById("firstRow").className = "firstRowSuccess"; document.getElementById("officeImageSuccess").style.display = "block"; document.getElementById("footer").className = "footerSuccess"; document.getElementById("copyright").style.display = "block"; document.getElementById("copyright").innerText = txt_copyRightTextLabel15; document.getElementById("errorLogo").style.display = "none"; document.getElementById("officeImageError").style.display = "none"; } else { document.getElementById("lynclogo").style.display = "none"; document.getElementById("officeLogoColumn").className = "officelogoColumnError"; document.getElementById("contentRow15").className = "contentClassError"; document.getElementById("errorLogo").style.display = "block"; //document.getElementById("spacer").className = "spacerError"; document.getElementById("firstRow").className = "firstRowError"; document.getElementById("officeImageError").style.display = "block"; document.getElementById("footer").className = "footerError"; document.getElementById("copyright").style.display = "none"; } } document.getElementById("languageSettingsLabel15").innerHTML = txt_languageSettingsLabel; document.getElementById("launchRichClientHeaderLabel15").innerHTML = txt_launchRichClientHeaderLabel; document.getElementById("launchRichClientTextLabel15").innerHTML = txt_launchRichClientTextLabel; document.getElementById("contactSupportLabelWithReachOption").innerHTML = txt_unableToJoinLabel; document.getElementById("JoinUsingLWAOptionHelp115").innerHTML = txt_UnsupportedLyncVersion2; document.getElementById("JoinMeetingUsingLWA2_Link15").innerHTML = txt_UnsupportedLyncVersion3; var launchReachText = txt_joinUsingReachLink.replace(/%0/g, reachClientProductName); document.getElementById("launchReachLink").innerHTML = launchReachText; document.getElementById("launchReachLink").title = launchReachText; document.getElementById("errorTextLabel15").innerHTML = conferenceError1; document.getElementById("checkUrlLabel15").innerHTML = conferenceError2; document.getElementById("diagLabel15").innerHTML = diag; var diagInfoTextString = diagInfo.toString(); document.getElementById("diagInfoText15").value = diagInfoTextString; document.getElementById("diagInfoText15").style.display = "none"; document.getElementById("diagLabel215").style.display = "none"; document.getElementById("diagLabel215").innerHTML = diag2; document.getElementById("onlineHelpLink").innerHTML = txt_onlineHelpLink; document.getElementById("onlineHelpLink").title = txt_onlineHelpLink; document.getElementById("helpImage15").title = txt_onlineHelpLink; //document.getElementById("copyRightTextLabel15").innerHTML = txt_copyRightTextLabel15; document.getElementById("UnsupportedClientBlockMessageLabel15").innerHTML = txt_UnsupportedLyncVersion1; document.getElementById("JoinUsingLWAOption115").innerHTML = txt_UnsupportedLyncVersion2; document.getElementById("JoinMeetingUsingLWA_Link15").innerHTML = txt_UnsupportedLyncVersion3; document.getElementById("connectingLabel15").innerHTML = txt_connecting; document.getElementById("mobileappstoreLabel15").innerHTML = txt_unableToLaunchLyncMobile; document.getElementById("mobileappstoreLabel215").innerHTML = txt_unableToLaunchLyncMobile2; document.getElementById("mobileappstoreLabel315").innerHTML = txt_unableToLaunchLyncMobile3; document.getElementById("unknownMobileDeviceLabel15").innerHTML = txt_unsupportedMobileDevice; } else { if (isMobileDevice == "true") { document.getElementById("mainTable").style.display = "none"; document.getElementById("mainTable15").style.display = "none"; document.getElementById("mainTablemobile").style.display = "block"; document.getElementById("languageSettingsLabelMobile").innerHTML = txt_languageSettingsLabel; document.getElementById("errorTextLabelMobile").innerHTML = conferenceError1; document.getElementById("checkUrlLabelMobile").innerHTML = conferenceError2; document.getElementById("diagLabelMobile").innerHTML = diag; var diagInfoTextString = diagInfo.toString(); document.getElementById("diagInfoTextMobile").value = diagInfoTextString; document.getElementById("diagInfoTextMobile").style.display = "none"; document.getElementById("diagLabel2Mobile").style.display = "none"; document.getElementById("diagLabel2Mobile").innerHTML = diag2; document.getElementById("onlineHelpLinkMobile").innerHTML = txt_onlineHelpLink; document.getElementById("copyRightTextLabelMobile").innerHTML = txt_copyRightTextLabel; document.getElementById("connectingLabel").innerHTML = txt_connecting; document.getElementById("mobileappstoreLabel").innerHTML = txt_unableToLaunchLyncMobile; document.getElementById("mobileappstoreLabel2").innerHTML = txt_unableToLaunchLyncMobile2; document.getElementById("unknownMobileDeviceLabel").innerHTML = txt_unsupportedMobileDevice; return; } // non-mobile document.getElementById("mainTable15").style.display = "none"; document.getElementById("mainTablemobile").style.display = "none"; document.getElementById("mainTable").style.display = "block"; document.getElementById("languageSettingsLabel").innerHTML = txt_languageSettingsLabel; document.getElementById("launchRichClientHeaderLabel").innerHTML = txt_launchRichClientHeaderLabel; document.getElementById("launchRichClientTextLabel").innerHTML = txt_launchRichClientTextLabel; document.getElementById("contactSupportLabelWithReachOption").innerHTML = txt_unableToJoinLabel; var launchReachText = txt_joinUsingReachLink.replace(/%0/g, reachClientProductName); document.getElementById("launchReachLink").innerHTML = launchReachText; document.getElementById("launchReachLink").title = launchReachText; document.getElementById("errorTextLabel").innerHTML = conferenceError1; document.getElementById("checkUrlLabel").innerHTML = conferenceError2; document.getElementById("diagLabel").innerHTML = diag; var diagInfoTextString = diagInfo.toString(); document.getElementById("diagInfoText").value = diagInfoTextString; document.getElementById("diagInfoText").style.display = "none"; document.getElementById("diagLabel2").style.display = "none"; document.getElementById("diagLabel2").innerHTML = diag2; document.getElementById("onlineHelpLink").innerHTML = txt_onlineHelpLink; document.getElementById("copyRightTextLabel").innerHTML = txt_copyRightTextLabel; document.getElementById("64bitUnSupportedMessage").innerHTML = txt_64bitUnsupportedText1; document.getElementById("64bitUnSupportedOption1").innerHTML = txt_64bitUnsupportedOption1; document.getElementById("JoinMeetingUsingLync_Link").innerHTML = txt_64bitJoinUsingLync; document.getElementById("64bitUnSupportedOption2").innerHTML = txt_64bitUnsupportedOption2; document.getElementById("64bitUnSupportedMessageLabel").innerHTML = txt_64bitbrowserUnsupportedLabel; document.getElementById("UnsupportedClientBlockMessageLabel").innerHTML = txt_UnsupportedLyncVersion1; document.getElementById("JoinUsingLWAOption1").innerHTML = txt_UnsupportedLyncVersion2; document.getElementById("JoinMeetingUsingLWA_Link").innerHTML = txt_UnsupportedLyncVersion3; } } // // Connection object - BEGIN // function ConnectionObject() { // Properties of the object this._httpRequest = this._CreateXMLHttpRequestObject( ); } ConnectionObject.prototype._CreateXMLHttpRequestObject = function() { var httpRequest = null; try { if( window.XMLHttpRequest ) // for none IE browsers { httpRequest = new XMLHttpRequest(); } else if( window.ActiveXObject ) // for IE { var MSXML_XMLHTTP_PROGIDS = new Array( 'Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP' ); for (var i=0; i < MSXML_XMLHTTP_PROGIDS.length; i++) { httpRequest = new ActiveXObject(MSXML_XMLHTTP_PROGIDS[i]); if( httpRequest != null ) { break; } } } } catch (e) { // Ignore any exception since // we are just initializing. } return httpRequest; } ConnectionObject.prototype.SendHttpRequest = function(type, url) { try { // Set up a new request to the Server. // Request is async. this._httpRequest.open(type, url, true); this._httpRequest.onreadystatechange = Delegate(mainWindow, mainWindow.OnUpdatedResourcesCallback); // Send the request to the Server. // No data to send, so pass null. this._httpRequest.send(null); } catch (e) { // Ignore language related failures } } // // Connection object - END