// Licensed Materials - Property of IBM // // IBM Cognos Products: cpscrn // // (C) Copyright IBM Corp. 2005, 2014 // // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. // // (function() { // define namespace if (!window.com_ibm_cognos_cps){ com_ibm_cognos_cps = {} } if (com_ibm_cognos_cps.ApplicationContext){ // Stop if the ApplicationContext is alread defined. return; } // Helper object used to create the xmlHttpRequest based on the current browser var CPSConfig = { browser: 'unknown', browserVersion: 'unknown', OS: 'unknown', xmlHttpDefault: null, initialize: function() { this.browser = this.lookup(this.browsers).toLowerCase() || 'unknown'; this.browserVersion = this.parseVersion(navigator.userAgent) || this.parseVersion(navigator.appVersion) || 'unknown'; this.OS = this.lookup(this.systems) || 'unknown'; this.xmlHttpDefault = this.findXMLHttpActiveXVersion(); }, lookup: function(data) { var i, l = data.length; for (i = 0; i < l; i++) { this.versionKey = data[i].partialKey || data[i].identity; var agent = data[i].agent; if (agent) { if (agent.indexOf(data[i].key) != -1) return data[i].identity; } else if (data[i].prop) return data[i].identity; } }, parseVersion: function(s) { var index = s.indexOf(this.versionKey); if (index == -1) return; return parseFloat(s.substring(index + this.versionKey.length + 1).replace(/[^\d\.\-\+]/g, '_')); //sanitize before parse to avoid XSS vulnerability! }, findXMLHttpActiveXVersion: function() { if (window.ActiveXObject) { var i, l = this.xmlHttpVersions.length; for (i = 0; i < l; i++) { try { // Try and create the ActiveXObject for Internet Explorer, if it doesn't work, try again. var xmlhttp = new ActiveXObject(this.xmlHttpVersions[i]); if (xmlhttp) return this.xmlHttpVersions[i]; } catch (e) { // this ActiveX is not there, continue with next one in list } } } return null; }, browsers: [ { agent: navigator.userAgent, key: 'MSIE', identity: 'Explorer', partialKey: 'MSIE' }, { agent: navigator.userAgent, key: 'Firefox', identity: 'Firefox' }, { agent: navigator.userAgent, key: 'Gecko', identity: 'Mozilla', partialKey: 'rv' }, { agent: navigator.userAgent, key: 'Mozilla', identity: 'Netscape', partialKey: 'Mozilla' }, { agent: navigator.userAgent, key: 'Netscape', identity: 'Netscape' }, { prop: window.opera, identity: 'Opera' }, { agent: navigator.vendor, key: 'Apple', identity: 'Safari' } ], systems: [ { agent: navigator.platform, key: 'Win', identity: 'Windows' }, { agent: navigator.platform, key: 'Mac', identity: 'Mac' }, { agent: navigator.platform, key: 'Linux', identity: 'Linux' } ], xmlHttpVersions: [ 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ] } CPSConfig.initialize(); /* Helper DOM utils. */ com_ibm_cognos_cps._F_DOM = { selectNodes: function(node, xpath) { if (document.all) { var arr = new Array(); var nodes = node.selectNodes(xpath); var i, l = nodes.length; for (i=0; i