// Licensed Materials - Property of IBM // // IBM Cognos Products: cpscrn // // (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 ULC, an IBM Company. All rights reserved. // Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated). // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Toolbar Button hilites function caption(fragmentID, layoutID) { this.fragmentID = fragmentID; this.captionID = fragmentID + "caption"; this.layoutID = layoutID; this.containerTag = null; this.nextTag = null; this.windowState = fragments[this.fragmentID].windowState; this.currentViewWindowState = null; var frag = fragments[this.fragmentID]; frag.addEventListener("fragment.title.change", _F_Document.associate(null, this, "processEvent"), false); frag.addEventListener("fragment.windowstate.change", _F_Document.associate(null, this, "processEvent"), false); frag.addEventListener("fragment.mode.change", _F_Document.associate(null, this, "processEvent"), false); if (xIE4Up) { var handler = _F_Document.associate(null, this, "fixIEScrollBar"); frag.addEventListener("fragment.load", handler, true); frag.addEventListener("fragment.visibility.change", handler, true); _F_Document.addEventListener(window, "resize", handler, true); } if ($(this.captionID + "_refresh")) { frag.addEventListener("fragment.retrieve.before", _F_Document.associate(null, this, "processBusyIndicator"), false); frag.addEventListener("fragment.retrieve.after", _F_Document.associate(null, this, "processBusyIndicator"), false); } var listenerList = ["help","refresh","reset","edit","view","minimize","restore","maximize"]; for (var i=0; i < listenerList.length; i++) { var listener = listenerList[i]; var elem = $(this.captionID + "_" + listener); if (elem) { xAddEventListener(elem, "click", _F_Document.associate(listener, this, "doclick")); xAddEventListener(elem, "keypress", _F_Document.associate(listener, this, "dokeypress")); } } } caption.prototype = { action: function (action) { var frag = fragments[this.fragmentID]; if (frag) { switch (action) { case "refresh": /* * raise a fragment.refresh event */ frag.raiseEvent("fragment.refresh", "", "", false, true); break; case "edit": this.currentViewWindowState = frag.windowState; frag.setMode("edit"); break; case "view": frag.setMode("view"); break; case "help": ui_fragment_help(frag); break; case "reset": if (!window.confirm(PFM.JS.IDS_JS_PROMPT_REVERT)) { return; } frag.raiseEvent("fragment.reset", null, "", false, false); frag.setMode("view", "internal"); frag.performAction("frag-action=reset"); break; case "restore": this.mouseOut($(this.captionID + "_" + action)); frag.setWindowState("normal"); break; case "minimize": this.mouseOut($(this.captionID + "_" + action)); frag.setWindowState("minimized"); break; case "maximize": this.mouseOut($(this.captionID + "_" + action)); frag.setWindowState("maximized"); break; } } else { window.alert("DEBUG: unknown fragment id: '"+this.fragmentID+"'"); } }, mouseOver: function (e) { e.className = "cogstyle-portlet-action-hover"; }, mouseOut: function (e) { e.className = "cogstyle-portlet-action"; }, doclick: function (e, tag) { this.action(tag); }, dokeypress: function (e, tag) { if (e.keyCode==9) {return true;} this.action(tag); }, showHideButtons: function (show, hide) { var hideTag = $(this.captionID + "_" + hide); var showTag = $(this.captionID + "_" + show); if (hideTag != null) { hideTag.style.display = "none"; } if (showTag != null) { showTag.style.display = ""; } }, changeWindowState: function (newWinState) { var frag = fragments[this.fragmentID]; switch (this.windowState) { case "normal": default: switch (newWinState) { case "minimized": this.showHideButtons("restore", "minimize"); $(frag.div).style.display = "none"; this.windowState = newWinState; break; case "maximized": this.maximize(true); this.showHideButtons("restore", "maximize"); this.windowState = newWinState; break; } break; case "minimized": switch (newWinState) { case "normal": this.showHideButtons("minimize", "restore"); $(frag.div).style.display = "block"; this.windowState = newWinState; break; case "maximized": $(frag.div).style.display = "block"; this.maximize(true); this.showHideButtons("minimize", "maximize"); this.windowState = newWinState; break; } break; case "maximized": switch (newWinState) { case "minimized": this.maximize(false); $(frag.div).style.display = "none"; this.showHideButtons("maximize", "minimize"); this.windowState = newWinState; break; case "normal": this.maximize(false); this.showHideButtons("maximize", "restore"); this.windowState = newWinState; break; } break; } }, changeMode: function (newMode) { switch (newMode) { case "edit": fragments[this.fragmentID].setWindowState("normal","internal"); this.changeWindowState("maximized"); this.showHideButtons("view", "edit"); this.showHideButtons("reset", null); this.showHideButtons(null, "maximize"); this.showHideButtons(null, "minimize"); this.showHideButtons(null, "restore"); break; case "view": fragments[this.fragmentID].setWindowState("normal","internal"); this.changeWindowState("normal"); this.showHideButtons("edit", "view"); this.showHideButtons(null, "reset"); this.showHideButtons(null, "restore"); this.showHideButtons("maximize", null); this.showHideButtons("minimize", null); break; } }, maximize: function (maximized) { var frag = fragments[this.fragmentID]; var divNorm = $(this.layoutID + "normal"); var divMax = $(this.layoutID + "maximized"); var markup = $(frag.id + "frame"); var banner = $( (frag.getPageFragment() ? frag.getPageFragment().id : "") + "bannerframe"); if (maximized) { divMax.style.display = "block"; if (banner != null) { this.bannerContainerTag = banner.parentNode; this.bannerNextTag = banner.nextSibling; divMax.appendChild(banner); } this.containerTag = markup.parentNode; this.nextTag = markup.nextSibling; divMax.appendChild(markup); _F_resetIFrames(markup); //divNorm.style.display = "none"; // We use the line below to fix 584962 setTimeout("$("+this.layoutID+"normal).style.display = \"none\";",0); this.fixIEScrollBar(); } else { divNorm.style.display = "block"; if (banner != null) { this.bannerContainerTag.insertBefore(banner, this.bannerNextTag); } this.containerTag.insertBefore(markup, this.nextTag); _F_resetIFrames(markup); this.containerTag = null; this.nextTag = null; divMax.style.display = "none"; this.fixIEScrollBar(); } }, updateTitle: function (title) { var capTag = $(this.captionID); // make sure that a blank title is always displayed if (capTag != null) { var frag = fragments[this.fragmentID]; if (frag.mode == "edit") { capTag.innerHTML = _F_Strings.htmlEncode(PFM.formatString(PFM.JS.IDS_JS_LAYOUT_EDITMODE_TITLE, "title", frag.info.title)||"") + "
"; } else { capTag.innerHTML = _F_Strings.htmlEncode(title||"") + "
"; } } }, processEvent: function (evt) { if (evt.source.id == this.fragmentID) { evt.stopPropagation(); switch(evt.name) { case "fragment.windowstate.change": this.changeWindowState(evt.payload.newWindowState); break; case "fragment.mode.change": this.changeMode(evt.payload.newMode); break; case "fragment.title.change": this.updateTitle(evt.payload.newTitle); break; } } }, showBusyIndicator: function (bShow) { var refreshTD = $(this.captionID + "_refresh"); if (refreshTD) { var img = refreshTD.getElementsByTagName('IMG').item(0); if (img) { if (bShow) { img.src = _F_Config.webContent + "/fragments/portlet/images/portlet_action_refresh_ani.gif"; } else { img.src = _F_Config.webContent + "/fragments/portlet/images/portlet_action_refresh.gif"; } } } }, processBusyIndicator: function (evt) { switch(evt.name) { case "fragment.retrieve.before": this.showBusyIndicator(true); break; case "fragment.retrieve.after": this.showBusyIndicator(false); break; } }, fixIEScrollBar: function () { var fragment = fragments[this.fragmentID]; if (xIE4Up && fragment.parent && fragment.parent.page) { var container = $(fragment.div); if (container && container.style.display != "none") { // IE shows the horizontal scrollbar inside the content area, this will cause a vertical scrollbar to showup. // To remove, we increase the bottom padding. var fixScrollbar = function () { if (container.scrollHeight > container.clientHeight ) { if (!container.ieScrollFix) { container.style.paddingBottom = "20px"; container.ieScrollFix = true; } } else if (container.ieScrollFix) { container.style.paddingBottom = ""; container.ieScrollFix = false; } }; window.setTimeout(fixScrollbar, 1); } } } }; function _F_resetIFrames(markup) { var iframes = markup.getElementsByTagName("iframe"); if (iframes) { for (i=0; i < iframes.length; i++) { iframes[i].setAttribute("src", iframes[i].getAttribute("src")); } } }