// 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 = " " + 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 = ""; } } }