// Licensed Materials - Property of IBM // // IBM Cognos Products: pps // // (C) Copyright IBM Corp. 2005, 2019 // // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. var bResultStillLoading = true; var xtabHeight = "50%"; var chartHeight = "50%"; var loadedFrames = new Array(); var initializedFrames = new Array(); var NUM_FRAME_INITIALIZE_RETRIES = 3; var FRAME_INTIALIZE_RETRY_TIMEOUT = 50; var initializeFrameCtr = 0; var lastInitializeFrameCtr; var frameRows; //synchronization functions function registerFrameLoaded( name ) { loadedFrames[name] = true; initializedFrames[name] = false; initAllFrames(); } function deregisterFrame( name ) { var isSplit = getGlobal("isSplitView"); if (name == "DimTree") { getDimTreeFrame().cleanupDimTree(); } if (!isSplit && name == "Data") { if (getGlobal("isChart")) getChartFrame().clearFlyouts(); else getXtabFrame().clearFlyouts(); } if (isSplit && name == "Crosstab") { getXtabFrame().clearFlyouts(); } if (isSplit && name == "Chart") { getChartFrame().clearFlyouts(); } loadedFrames[name] = false; initializedFrames[name] = false; } function isFrameStillLoading( name ) {return (loadedFrames[name] == null); }; function isToolbarStillLoading() { return (loadedFrames["Toolbar"] == null); }; function isXtabStillLoading() { if (getGlobal("isSplitView")) { if (self.Data.Crosstab) return (!loadedFrames["Crosstab"]); else return (!loadedFrames["Chart"]); } else { return (!loadedFrames["Data"]); } } function XtabUnload(name) { loadedFrames[name] = null; }; function isResultStillLoading() { return bResultStillLoading; }; function ResultFinished() { bResultStillLoading = false; }; function ResultUnload() { bResultStillLoading = true; }; function ToolbarUnload() { (loadedFrames["Toolbar"] = null); }; function TopFSUnload() { globalsLoaded = false; }; function initAllFrames() { // Check to make sure that all the frames that exist are loaded bfore initializing them if (getGlobal("isSplitView")) { if ( (self.Data.Crosstab || self.Data.Chart) && //Make sure that we have at least a crosstab or a chart frame. (!self.Data.Crosstab || loadedFrames["Crosstab"]) && (!self.Data.Chart || loadedFrames["Chart"]) && loadedFrames["DimTree"] && loadedFrames["Toolbar"] && loadedFrames["TreeToolBar"] && (!isActionPaneOpen() || loadedFrames["ActionPane"])) { performInits(); } } else { if ( loadedFrames["Data"] && loadedFrames["DimTree"] && loadedFrames["Toolbar"] && loadedFrames["TreeToolBar"] && (!isActionPaneOpen() || loadedFrames["ActionPane"])) { performInits(); } } } function performInits() { //Perform each frames loading here. //We load each frame on a separate javascript thread to ensure that the content //of the frame is properly initialized by the browser for that frame. //We then return. var isSplit = getGlobal("isSplitView"); if (!initializedFrames["Toolbar"]) { callInitFunction(self.Toolbar, "InitializeToolbar(" + (initializeFrameCtr == NUM_FRAME_INITIALIZE_RETRIES) + ");"); } else if (!initializedFrames["TreeToolBar"]) { callInitFunction(self.TreeToolBar, "initDimToolbar();"); } else if (!isSplit && self.Data && !initializedFrames["Data"]) { callInitFunction(self.Data, "initialize();"); } else if (isSplit && self.Data.Chart && !initializedFrames["Chart"]) { callInitFunction(self.Data.Chart, "initialize();"); } else if (isSplit && self.Data.Crosstab && !initializedFrames["Crosstab"]) { callInitFunction(self.Data.Crosstab, "initialize();"); } else if (!initializedFrames["DimTree"]) { callInitFunction(self.DimTree, "initDimtree();"); } else if (isActionPaneOpen() && !initializedFrames["ActionPane"]) { //call initialize if the action pane contains the error redirect, normal behaviour otherwise if (self.ActionPane.ppesRedirectPage) { callInitFunction(self.ActionPane, "initialize();"); } else { callInitFunction(self.ActionPane, "commonActionPaneInit();init();topparent.tweakActionPaneSize();"); } } } function allFramesInitialized() { if (getGlobal("isSplitView")) return (initializedFrames["Toolbar"] && initializedFrames["TreeToolBar"] && initializedFrames["DimTree"] && (!self.Data.Chart || initializedFrames["Chart"]) && (!self.Data.Crosstab || initializedFrames["Crosstab"]) && (!isActionPaneOpen() || initializedFrames["ActionPane"])); else return (initializedFrames["Toolbar"] && initializedFrames["TreeToolBar"] && initializedFrames["DimTree"] && (!self.Data || initializedFrames["Data"]) && (!isActionPaneOpen() || initializedFrames["ActionPane"])); } function callInitFunction(frame,func) { lastInitializeFrameCtr = initializeFrameCtr; frame.setTimeout("document.body.style.display = '';" + func + "topparent.setFrameInitialized(window.name);", 1); } function setFrameInitialized(name) { if (initializeFrameCtr == lastInitializeFrameCtr) { initializedFrames[name] = true; initializeFrameCtr = 0; //Initialize next frame performInits(); } else { //Frame signaled that it had not been properly loaded yet, //so give the browser a few cycles, to properly initialize its data. setTimeout("performInits();",FRAME_INTIALIZE_RETRY_TIMEOUT); } } function notifyFrameNotYetLoaded() { initializeFrameCtr++; } //query functions function getXtabFrame() { if (getGlobal("isSplitView")) { return self.Data.Crosstab; } else return self.Data; } function getChartFrame() { if (getGlobal("isSplitView")) { return self.Data.Chart; } else if (getGlobal("isChart")) return self.Data; } function getActionFrame() { return self.ActionPane; } function getToolbarFrame() { return self.Toolbar; } function getDimTreeFrame() { return self.DimTree; } function getConfigFrame() { return self.configurationVariablesFrame; } function getDimCacheFrame() { return self.DimCacheResult; } function getMainFrameset() { return document.getElementById("main"); } function getTreeMessageFrame() { return self.TreeMessagePane; } function getDimTreeToolbarFrame() { return self.TreeToolBar; } //resize event handlers function xtabResize(event) { var eventM = new eventManager(event); if (isActionPaneOpen() || isChartPaneOpen()) return true; eventM.cancelBubble(); } function chartResize(event) { var eventM = new eventManager(event); if (isChartPaneOpen()) return true; if (getGlobal("isSplitView") && self.Data.document.getElementById("dataArea")) self.Data.document.getElementById("dataArea").rows = "0%,100%"; eventM.cancelBubble(); } function actPaneResize(event) { var eventM = new eventManager(event); if (isActionPaneOpen()) return true; maintainToolBarSize(); eventM.cancelBubble(); } function dimtreetoolBarResize(event) { var eventM = new eventManager(event); eventM.cancelBubble(); } function toolBarResize(event) { var eventM = new eventManager(event); maintainToolBarSize(); eventM.cancelBubble(); } function maintainToolBarSize() { if (!getGlobal("displayDataOnly")) { var rightFrameset = document.getElementById("rightFrameset"); rightFrameset.rows = rightFrameset.rows.substr(0,rightFrameset.rows.lastIndexOf(",")) + ",27"; } } //frame resizing/closing function closeActionPane() { if (isXtabStillLoading()) { setTimeout("closeActionPane()", 50); return; } if (getActionFrame().cleanup) getActionFrame().cleanup(); clearActionPane(); } function clearActionPane() { var xtabFrame = getXtabFrame().document; if ( typeof xtabFrame.fhidden != "undefined" && typeof xtabFrame.fhidden.ACTPANE != "undefined" && typeof xtabFrame.fhidden.ACTPANE.value != "undefined" ) { xtabFrame.fhidden.ACTPANE.value = 0; } if (isChartPaneOpen()) { var chartFrame = getChartFrame().document; if ( typeof chartFrame.fhidden != "undefined" && typeof chartFrame.fhidden.ACTPANE != "undefined" && typeof chartFrame.fhidden.ACTPANE.value != "undefined" ) { chartFrame.fhidden.ACTPANE.value = 0; } } closeActionFrame(); } function closeActionFrame() { if (nn7) { if (getGlobal("displayDataOnly")) { document.getElementById("rightFrameset").rows = "*,1,0"; setTimeout('document.getElementById("rightFrameset").rows = "*,0,0"', 5); } else { document.getElementById("rightFrameset").rows = "*,1,27"; setTimeout('document.getElementById("rightFrameset").rows = "*,0,27"', 5); } if (getGlobal("isSplitView") && isChartPaneOpen()) { frameRows = self.Data.document.getElementById("dataArea").rows; self.Data.document.getElementById("dataArea").rows="49%,51%"; setTimeout('self.Data.document.getElementById("dataArea").rows=frameRows', 5); } } else { if (getGlobal("displayDataOnly")) document.getElementById("rightFrameset").rows = "*,0,0"; else document.getElementById("rightFrameset").rows = "*,0,27"; } getToolbarFrame().clearToggleButton(); } function openActionPane() { var xtabFrame = getXtabFrame().document; if (actionPaneHasValue(xtabFrame)) { if (getGlobal("displayDataOnly")) document.getElementById("rightFrameset").rows = "*,225,0"; else document.getElementById("rightFrameset").rows = "*,225,27"; //Netscape 7 sometimes doesent refresh its presentational information //The Action Pane is there, but it is invisible, so we simply add and a last node //And therefore force the browser to handle the presentation. getActionFrame().scrollTo(0,0); } } function actionPaneHasValue(xtabFrame) { return ((typeof xtabFrame.fhidden != "undefined") && (typeof xtabFrame.fhidden.ACTPANE != "undefined") && (typeof xtabFrame.fhidden.ACTPANE.value != "undefined")); } function setActionPaneHeight(actionPaneHeight) { if (getGlobal("displayDataOnly")) document.getElementById("rightFrameset").rows = "*," + actionPaneHeight + ",0"; else document.getElementById("rightFrameset").rows = "*," + actionPaneHeight + ",27"; } function tweakActionPaneSize() { if (nn7) { var rightFrameSet = document.getElementById("rightFrameset"); var oldRows = rightFrameSet.rows; var rows = rightFrameSet.rows.split(","); rows[1] = parseInt(rows[1]) + 1; var newRows = rows[0]; for (var i = 1; i < rows.length; i++) newRows += "," + rows[i]; document.getElementById("rightFrameset").rows = newRows; window.setTimeout("document.getElementById('rightFrameset').rows = \"" + oldRows + "\"", 10); } } function openTreeMessageFrame() { document.getElementById("leftFrameset").rows = "*,185,27"; getTreeMessageFrame().document.body.appendChild(getTreeMessageFrame().document.createTextNode(" ")); } function closeTreeMessageFrame() { document.getElementById("leftFrameset").rows = "*,0,27"; } function openTreeToolbarFrame() { document.getElementById("leftFrameset").rows = "*,0,27"; setCookie("DimTreeToolbarVisible","True",(10*365),getGlobal("cookieSecure")); dimTreeToolbarOpen = true; } function closeTreeToolbarFrame() { //Do not allow for Netscape 7 if (!nn7) { document.getElementById("leftFrameset").rows = "*,0,0"; if (getCookie("DimTreeToolbarVisible")) deleteCookie("DimTreeToolbarVisible"); dimTreeToolbarOpen = false; } } function openTreeFrame() { getMainFrameset().cols = parentTopframeCols; treeVisible = true; if (getCookie("DimTreeVisible")) deleteCookie("DimTreeVisible"); if (getXtabFrame().isSplitDisplay() ) getChartFrame().setToggleTreeIconOpen(); else getXtabFrame().setToggleTreeIconOpen(); //Netscape 7 sometimes doesent refresh its presentational information //The tree frame is there, but the browser doesen't show it. //So we use a trick. if (nn7) { var dimtree = getDimTreeFrame().document; var textNode = dimtree.createTextNode(" "); dimtree.body.appendChild(textNode); dimtree.body.removeChild(textNode); } } function closeTreeFrame() { parentTopframeCols = getMainFrameset().cols; getMainFrameset().cols = "0,*"; treeVisible = false; setCookie("DimTreeVisible","False",(10*365),getGlobal("cookieSecure")); if (getXtabFrame().isSplitDisplay() ) getChartFrame().setToggleTreeIconClosed(); else getXtabFrame().setToggleTreeIconClosed(); } function isActionPaneOpen() { if (!getXtabFrame()) return false; var xtab = getXtabFrame().document; if (xtab.fhidden && xtab.fhidden.ACTPANE && xtab.fhidden.ACTPANE.value != 0) return true; return false; } function closeChartPane() { if (getGlobal("isSplitView") && self.Data.document.getElementById("dataArea")) { self.Data.document.getElementById("dataArea").rows = "0%,100%"; var bod = Chart.document.body; bod.innerHTML = ""; } } function openChartPane() { if (getGlobal("isSplitView") && self.Data.document.getElementById("dataArea")) if (chartHeight.toString().indexOf("%") >= 0) self.Data.document.getElementById("dataArea").rows = chartHeight + ',' + xtabHeight; else self.Data.document.getElementById("dataArea").rows = chartHeight + 'px,' + xtabHeight + 'px'; } function isChartPaneOpen() { if (!self.Data.document.getElementById("dataArea")) return false; var rows = self.Data.document.getElementById("dataArea").rows; if (rows.indexOf(",") >= 0) return true; return false; } function getXtabFrameOffsetLeft() { var cols = getMainFrameset().cols; var offsetLeft = 0; var offset = 0; do { offset = parseInt(cols); if (offset) offsetLeft += offset; cols = cols.substr(cols.indexOf(',') + 1); } while (cols.indexOf(',') >= 0); return offsetLeft; } function executeCrossFrameFunction( funcname, excludeFrame, passDocument) { var targetFrames = new Array(); if (getGlobal("isSplitView")) { if (excludeFrame != "Crosstab" && getXtabFrame()) targetFrames[targetFrames.length++] = getXtabFrame(); if (excludeFrame != "Chart" && isChartPaneOpen()) targetFrames[targetFrames.length++] = getChartFrame(); } else { if (excludeFrame != "Data" && getXtabFrame()) targetFrames[targetFrames.length++] = getXtabFrame(); } if (excludeFrame != "Toolbar" && getToolbarFrame()) targetFrames[targetFrames.length++] = getToolbarFrame(); if (excludeFrame != "ActionPane" && getActionFrame()) targetFrames[targetFrames.length++] = getActionFrame(); if (excludeFrame != "DimTree" && getDimTreeFrame()) targetFrames[targetFrames.length++] = getDimTreeFrame(); for (var i = 0; i < targetFrames.length; i++) { var f = targetFrames[i]; if (f[funcname]) { var funcref = f[funcname]; if (passDocument) funcref.call(null, f.document); else funcref.call(); } } } if (typeof document.createDocumentFragment == "undefined") { document._createDocumentFragment = function() { var ele = document.createElement("html"); return ele; } } else document._createDocumentFragment = document.createDocumentFragment; function getDocumentFragmentDocument(docFrag) { if (!docFrag.document) return docFrag; else return docFrag.document; } function getGlobal(name) { if( !globalsLoaded ) { setTimeout("getGlobal(" + name + ")", 20); return; } return eval("self." + name); } function setGlobal(name, value) { if(!globalsLoaded) { setTimeout("setGlobal(" + name + "," + value + ")", 20); return; } eval("self." + name + "= value"); } function gotoLocation(loc, isRTS) { var doc = getXtabFrame().document; var form = doc.createElement("FORM"); form.method = "POST"; form.target = getGlobal("PPESTopTarget"); if (loc.indexOf("?") != -1) { form.action = loc.substr(0,loc.indexOf("?")); loc = loc.substr(loc.indexOf("?") + 1); //split on & and create a hidden element for each entry var parms = loc.split('&'); for (var i = 0; i < parms.length; i++) { var input = doc.createElement("INPUT"); input.type = "hidden"; input.name = parms[i].substr(0,parms[i].indexOf('=')); input.value = unescape(parms[i].substr(parms[i].indexOf('=') + 1)); form.appendChild(input); } if (isRTS) { // pass the current state to the "ppcancel" form var lkgs = doc.createElement("INPUT"); lkgs.type = "hidden"; lkgs.name = "LKGS"; lkgs.value = doc.fhidden.LKGS.value; form.appendChild(lkgs); } } else if (loc == "javascript:window.close()") { window.close(); } else if (loc.search("/cps4/portlets/common/close.html") != -1) { window.close(); } else { form.action = location.pathname; } //Submit the form doc.body.appendChild(form); form.submit(); } function setWasRedirected(wasRedirected) { self.configurationVariablesFrame.document.configform.wasredirected.value = wasRedirected; } function wasRedirected() { return (self.configurationVariablesFrame.document.configform.wasredirected.value == "1"); }