| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- // Licensed Materials - Property of IBM
- //
- // IBM Cognos Products: ps
- //
- // (C) Copyright IBM Corp. 2005, 2011
- //
- // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- // Copyright (C) 2008 Cognos Incorporated. All rights reserved.
- // Cognos and the Cognos logo are trademarks of Cognos Incorporated.
- function getLocale() {
- return cl_locale;
- }
- function executeOKCommand() {
- processCommand('ok');
- }
- function executeCancelCommand() {
- processCommand('cancel');
- }
- function executeCloseCommand() {
- processCommand('close');
- }
- function executeHelpCommand() {
- processCommand('help');
- }
- var USE_RUNTIME_LOCALE = 0;
- var USE_DEFAULT = 1;
- var deleteArray = null;
- function doCustomization() {
- deleteArray = new Array();
-
- var templateContent = readTemplate(USE_RUNTIME_LOCALE);
-
- if (templateContent != null) {
- insertTemplateContent(templateContent);
-
- //Perform customization
- doLayoutCustomization();
- doMessageReplacement();
-
- cleanup();
-
- //Finally, invoke customer-supplied javascript function, if specified
- if (typeof customize == 'function') {
- customize();
- }
- } else {
- // template could not be located and/or read - just degrade gracefully
- doRenderDefault();
- }
- }
- function doLayoutCustomization() {
- // Layout
- for (i = 0; i < clLayoutArray.length; i++) {
- doReplace("%" + clLayoutArray[i] + "%", clLayoutArray[i], true);
- }
- }
- function doMessageReplacement() {
- // Content replacement
- for (i = 0; i < clMessageReplaceArray.length; i++) {
- doReplace(clMessageReplaceArray[i], "%" + clMessageReplaceArray[i] + "%");
- }
- }
- function doReplace(tgt_id, src_id, replaceId) {
- var tgt = document.getElementById(tgt_id);
- var src = document.getElementById(src_id);
- if (tgt && src) {
- tgt.innerHTML = '';
- while (src.firstChild) {
- tgt.appendChild(src.removeChild(src.firstChild));
- }
- if (replaceId) {
- tgt.id = src.id;
- }
- }
- if (src) {
- src.deleted = false;
- deleteArray[deleteArray.length] = src;
- }
- }
- function cleanup() {
- for(i = 0; i < deleteArray.length; i++) {
- var e = deleteArray[i];
- if (e != null && e.parentNode != null && !e.deleted) {
- e.parentNode.removeChild(e);
- e.deleted = true;
- }
- }
- }
- function insertTemplateContent(templateContent) {
- function addScripts(scriptsText) {
- try {
- var head = document.getElementsByTagName('HEAD').item(0);
- var script = document.createElement("script");
- script.type = 'text/javascript';
- script.text = scriptsText;
- head.appendChild(script);
- } catch (e) {}
- }
-
- function addStyles(stylesText) {
- try {
- var head = document.getElementsByTagName('HEAD').item(0);
- var style = document.createElement("style");
- style.type = 'text/css';
- if (style.styleSheet) {
- style.styleSheet.cssText = stylesText;
- }
- else {
- var domText = document.createTextNode(stylesText);
- style.appendChild(domText);
- }
- head.appendChild(style);
- } catch (e) {}
- }
-
- function addLinks(href) {
- try {
- var head = document.getElementsByTagName('HEAD').item(0);
- var node = document.createElement("link");
- node.type = 'text/css';
- node.rel = "stylesheet";
- node.href = href;
- head.appendChild(node);
- } catch (e) {
- }
- }
-
- var customDiv = document.createElement("div");
- var clInsertTarget = document.getElementById(clLayoutArray[0]);
- clInsertTarget.parentNode.insertBefore(customDiv, clInsertTarget);
-
- var templateNode = document.createElement("div");
- templateNode.innerHTML = "<span style='display:none'> </span>" + templateContent;
- templateNode.removeChild(templateNode.firstChild);
-
- // extract and insert style text
- var stylesText = "";
- var styleElements = templateNode.getElementsByTagName("style");
- var length = styleElements.length;
- for (var i = length - 1; i >= 0; i--) {
- stylesText += styleElements[i].innerHTML;
- if (styleElements[i].parentNode) {
- styleElements[i].parentNode.removeChild(styleElements[i]);
- }
- }
- addStyles(stylesText);
-
- // extract and insert script text
- var scriptsText = "";
- var scriptElements = templateNode.getElementsByTagName("SCRIPT");
- var length = scriptElements.length;
- for (var i = length - 1; i >= 0; i--) {
- scriptsText += scriptElements[i].text;
- if (scriptElements[i].parentNode) {
- scriptElements[i].parentNode.removeChild(scriptElements[i]);
- }
- }
- addScripts(scriptsText);
-
- // add links
- if (templateNode.getElementsByTagName("link") != null) {
- var nodes = templateNode.getElementsByTagName("link");
- var l = nodes.length;
- for (var i = 0; i < l; i++) {
- var attrs = nodes[i].attributes;
- for (var j = 0; j < attrs.length; j++) {
- if (attrs[j].nodeName == "href") {
- addLinks(attrs[j].nodeValue);
- break;
- }
- }
- }
- }
-
- // add rest of the template contents
- if (templateNode.childNodes) {
- var bHasHtml = false;
- var nodesLength = templateNode.childNodes.length;
- for (var i = nodesLength - 1 ; i >= 0; i--) {
- if ((templateNode.childNodes[i].nodeType != 3) ||
- (templateNode.childNodes[i].nodeType == 3 && templateNode.childNodes[i].nodeValue.replace(/^\s*|\s*$/g,"") != "")){
- if (!bHasHtml) {
- customDiv.innerHTML = "";
- customDiv.appendChild(templateNode.childNodes[i]);
- bHasHtml = true;
- } else {
- customDiv.insertBefore(templateNode.childNodes[i], customDiv.firstChild);
- }
- }
- }
- }
- }
- function readTemplate(useLocale) {
- var asynch = false;
- var request = getXMLHttpRequest();
- if (request) {
- var template = getTemplateURL(useLocale);
- request.open("GET", template, asynch);
- request.send(null);
-
- if (request.status >= 200 && request.status < 300) {
- return request.responseText;
- } else if (useLocale != USE_DEFAULT) {
- return readTemplate(USE_DEFAULT);
- }
- }
- return null;
- }
- function getTemplateURL(useLocale) {
- var fullTemplatePath = cl_templatePath + "/" + cl_baseTemplateName;
- if (useLocale != USE_DEFAULT) {
- fullTemplatePath += "_" + getLocale();
- }
- fullTemplatePath += cl_templateDefaultExtension;
- return fullTemplatePath;
- }
- function doRenderDefault() {
- for (i = 0; i < clLayoutArray.length; i++) {
- var div = document.getElementById(clLayoutArray[i]);
- if (div) {
- div.style.display = "";
- }
- }
- }
|