/* *+------------------------------------------------------------------------+ *| Licensed Materials - Property of IBM *| IBM Cognos Products: Viewer *| (C) Copyright IBM Corp. 2001, 2011 *| *| US Government Users Restricted Rights - Use, duplication or *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp. *| *+------------------------------------------------------------------------+ */ /** Class: CModal Description: @param title String to show in the header. [Mandatory] @param sCloseToolTip String to use as tooltip for close button. [Madatory] @param parent The container of this dialog. [Optional] @param t Top coordinate. [Optional] By Default the dialog is centered. @param l Left coordinate. [Optional] By Default the dialog is centered. @param h Height of the dialog. [Optional] By Default the dialog is centered. @param w Width of the dialog. [Optional] By Default the dialog is centered. */ function CModal(title, sCloseToolTip, parent, t, l, h, w) { this.m_title = title; this.m_sCloseToolTip = sCloseToolTip; if (parent) { this.m_parent = parent; } else { this.m_parent = (document.all ? document.body : document.documentElement); } var oBL = document.getElementById(CMODAL_BACKGROUND_LAYER_ID); if (!oBL) { oBL = document.createElement('div'); oBL.id = CMODAL_BACKGROUND_LAYER_ID; oBL.style.display = 'none'; oBL.style.position = 'absolute'; oBL.style.top = '0px'; oBL.style.left = '0px'; oBL.style.zIndex = (CMODAL_ZINDEX - 2); oBL.style.width = '100%'; oBL.style.height = '100%'; oBL.innerHTML = '
'; this.m_parent.appendChild(oBL); } this.m_backLayer = oBL; this.m_top = (t == null ? 0 : t); this.m_left = (l == null ? 0 : l); this.m_height = (h == null ? 0 : h); this.m_width = (w == null ? 0 : w); var f = document.getElementById(CMODAL_ID); if (!f) { f = document.createElement('span'); f.id = CMODAL_ID; f.CModal = this; f.className = 'CModal_frame'; f.style.zIndex = CMODAL_ZINDEX; this.m_parent.appendChild(f); } this.m_back_iframe = document.getElementById(CMODAL_BACK_IFRAME_ID); if (!this.m_back_iframe) { this.m_back_iframe = document.createElement('iframe'); this.m_back_iframe.id = CMODAL_BACK_IFRAME_ID; this.m_back_iframe.frameBorder = 0; this.m_back_iframe.src = "../common/blank.html"; this.m_back_iframe.style.position = 'absolute'; this.m_back_iframe.style.zIndex = CMODAL_ZINDEX - 1; this.m_parent.appendChild(this.m_back_iframe); } // render framework of the modal dialog f.innerHTML = this.renderDialogFrame(); this.m_frame = f; } function CModal_hide() { this.m_top = parseInt(this.m_frame.offsetTop,10); this.m_left = parseInt(this.m_frame.offsetLeft,10); this.m_height = parseInt(this.m_frame.offsetHeight,10); this.m_width = parseInt(this.m_frame.offsetWidth,10); this.m_backLayer.style.display = 'none'; this.m_frame.style.display = 'none'; if (this.m_back_iframe) { this.m_back_iframe.style.display = 'none'; } } function CModal_reCenter() { this.m_left = (this.m_backLayer.offsetWidth - this.m_width)/2; this.m_top = (this.m_backLayer.offsetHeight - this.m_height)/2; } function CModal_renderDialogFrame() { var sTableAttrs = 'summary="" cellpadding="0" cellspacing="0" border="0"'; var out = '' + '
' + '' + '
' + getConfigFrame().htmlencode(this.m_title) + '' + '' + '' + '' + '
' + '
' + '' + '
' + '' + '' + '' + '' + '' + '
' + '' + '' + '' + '' + '' + '' + '
' + CModal_renderButton(msgQS['OK'], 'okCModal()') + '' + CModal_renderButton(msgQS['CANCEL'], 'cancelCModal()') + '
' + '
 ' + '' + '
'; return out; } function CModal_renderButton(label, jsFct) { var out = '' + '' + '

' + '' + label + '
'; return out; } function CModal_show() { this.m_backLayer.style.display = 'block'; this.reCenter(); this.m_frame.style.top = this.m_top; this.m_frame.style.left = this.m_left; this.m_frame.style.height = this.m_height; this.m_frame.style.width = this.m_width; this.m_frame.style.display = 'inline'; if (this.m_back_iframe) { this.m_back_iframe.style.top = this.m_frame.offsetTop; this.m_back_iframe.style.left = this.m_frame.offsetLeft; this.m_back_iframe.style.height = this.m_frame.offsetHeight; this.m_back_iframe.style.width = this.m_frame.offsetWidth; this.m_back_iframe.style.display = "block"; } } CModal.prototype.hide = CModal_hide; CModal.prototype.reCenter = CModal_reCenter; CModal.prototype.renderDialogFrame = CModal_renderDialogFrame; CModal.prototype.show = CModal_show; /* Constants */ var CMODAL_ID = 'CMODAL_FRAME'; var CMODAL_CONTENT_ID = 'CMODAL_CONTENT'; var CMODAL_HEADER = 'CMODAL_HEADER'; var CMODAL_BACKGROUND_LAYER_ID = 'CMODAL_BK'; var CMODAL_BACK_IFRAME_ID = 'CMODAL_BK_IFRAME'; var CMODAL_ZINDEX = 111; /* Global variables */ var CMODAL_dragEnabled = false; var CMODAL_resizeDirection = null; var CMODAL_startLeft = null; var CMODAL_startTop = null; var CMODAL_startWidth = null; var CMODAL_startHeight = null; var CMODAL_deltaX = null; var CMODAL_deltaY = null; /* Event handlers for CModal (global functions) */ function hideCModal() { var cdlg = document.getElementById(CMODAL_ID); if (cdlg && cdlg.CModal) { cdlg.CModal.hide(); } } function cancelCModal() { var iframe = document.getElementById(CMODAL_CONTENT_ID); if (iframe && iframe.contentWindow && typeof iframe.contentWindow.cancelDialog == 'function') { iframe.contentWindow.cancelDialog(); } else { hideCModal(); } } function okCModal() { var iframe = document.getElementById(CMODAL_CONTENT_ID); if (iframe && iframe.contentWindow && typeof iframe.contentWindow.execute == 'function') { iframe.contentWindow.execute(); } else { hideCModal(); } } function CModalEvent_mousemoving(e) { var oDlg = null; var oIFrame = null; if (CMODAL_dragEnabled) { if (e == null && (typeof event == 'object') && event.clientX != null) { e = event; } oDlg = document.getElementById(CMODAL_ID); if (CMODAL_startLeft == null) { CMODAL_startLeft = parseInt(oDlg.style.left,10) - e.clientX; CMODAL_startTop = parseInt(oDlg.style.top,10) - e.clientY; } oDlg.style.left = CMODAL_startLeft + e.clientX; oDlg.style.top = CMODAL_startTop + e.clientY; oIFrame = document.getElementById(CMODAL_BACK_IFRAME_ID); if (oIFrame) { oIFrame.style.left = oDlg.style.left; oIFrame.style.top = oDlg.style.top; } } if (CMODAL_resizeDirection) { if (e == null && (typeof event == 'object') && event.clientX != null) { e = event; } oDlg = document.getElementById(CMODAL_ID); if (CMODAL_startLeft == null) { CMODAL_startLeft = parseInt(oDlg.style.left,10); CMODAL_startTop = parseInt(oDlg.style.top,10); CMODAL_startHeight = parseInt(oDlg.style.height,10); CMODAL_startWidth = parseInt(oDlg.style.width,10); } var h = 0, w = 0; switch (CMODAL_resizeDirection) { case 'NE': case 'E': case 'SE': w = (e.clientX - CMODAL_startLeft + CMODAL_deltaX); if (w < 100) { w = 100; } oDlg.style.width = w + "px"; } switch (CMODAL_resizeDirection) { case 'SW': case 'S': case 'SE': h = (e.clientY - CMODAL_startTop + CMODAL_deltaY); if (h < 100) { h = 100; } oDlg.style.height = h + "px"; } switch (CMODAL_resizeDirection) { case 'NW': case 'N': case 'NE': oDlg.style.top = e.clientY; h = (CMODAL_startHeight + (CMODAL_startTop - e.clientY) + CMODAL_deltaY); if (h < 100) { h = 100; } oDlg.style.height = h + "px"; } switch (CMODAL_resizeDirection) { case 'NW': case 'W': case 'SW': oDlg.style.left = e.clientX; w = (CMODAL_startWidth + (CMODAL_startLeft - e.clientX) + CMODAL_deltaX); if (w < 100) { w = 100; } oDlg.style.width = w + "px"; } oIFrame = document.getElementById(CMODAL_BACK_IFRAME_ID); if (oIFrame) { oIFrame.style.left = oDlg.offsetLeft; oIFrame.style.top = oDlg.offsetTop; oIFrame.style.height = oDlg.offsetHeight; oIFrame.style.width = oDlg.offsetWidth; } } if (e.returnValue) { e.returnValue = false; } else if (e.preventDefault) { e.preventDefault(); } else { return false; } } function CModalEvent_disableDrag(e) { CMODAL_dragEnabled = false; CMODAL_resizeDirection = null; CMODAL_startLeft = null; CMODAL_startTop = null; CMODAL_deltaX = 0; CMODAL_deltaY = 0; // remove dragging style var cn = document.getElementById(CMODAL_ID).className; document.getElementById(CMODAL_HEADER).style.cursor = 'default'; document.getElementById(CMODAL_ID).className = cn.replace(/\s*\bCModal_dragging\b/g, ''); // show content frame document.getElementById(CMODAL_CONTENT_ID).style.visibility = "visible"; if (typeof document.getElementById(CMODAL_CONTENT_ID).contentWindow.refreshContent == "function") { document.getElementById(CMODAL_CONTENT_ID).contentWindow.refreshContent(); } if (e.returnValue) { e.returnValue = false; } else if (e.preventDefault) { e.preventDefault(); } else { return false; } } function CModalEvent_enableDrag(e) { CMODAL_dragEnabled = true; CMODAL_startLeft = null; CMODAL_startTop = null; if (e == null && (typeof event == 'object') && event.clientX != null) { e = event; } // apply dragging style to frame document.getElementById(CMODAL_ID).className += " CModal_dragging"; document.getElementById(CMODAL_HEADER).style.cursor = 'move'; // hide content frame document.getElementById(CMODAL_CONTENT_ID).style.visibility = "hidden"; if (e.returnValue) { e.returnValue = false; } else if (e.preventDefault) { e.preventDefault(); } else { return false; } } function CModalEvent_enableResize(e) { CMODAL_startLeft = null; CMODAL_startTop = null; CMODAL_startWidth = null; CMODAL_startHeight = null; CMODAL_deltaX = 0; CMODAL_deltaY = 0; if (e == null && (typeof event == 'object') && event.clientX != null) { e = event; } var oDlg = document.getElementById(CMODAL_ID); CMODAL_startLeft = parseInt(oDlg.style.left,10); CMODAL_startTop = parseInt(oDlg.style.top,10); CMODAL_startHeight = parseInt(oDlg.style.height,10); CMODAL_startWidth = parseInt(oDlg.style.width,10); CMODAL_deltaX = (CMODAL_startLeft + CMODAL_startWidth - e.clientX); CMODAL_deltaY = (CMODAL_startTop + CMODAL_startHeight - e.clientY); var src = (e.srcElement ? e.srcElement : e.target); if ( (/\bCModal_side(\w+)\b/).test(src.className) ) { // set resize direction using className CMODAL_resizeDirection = RegExp.$1; // apply dragging style to frame document.getElementById(CMODAL_ID).className += " CModal_dragging"; // hide content frame document.getElementById(CMODAL_CONTENT_ID).style.visibility = "hidden"; } if (e.returnValue) { e.returnValue = false; } else if (e.preventDefault) { e.preventDefault(); } else { return false; } }