///////////////////////////////////////////// // Control: Dialog Box functionality ///////////////////////////////////////////// qcodo.registerDialogBox = function(mixControl, strMatteColor, intMatteOpacity, blnMatteClickable, blnAnyKeyCloses) { // Initialize the Event Handler qcodo.handleEvent(); // Get Control/Wrapper var objControl; if (!(objControl = qcodo.getControl(mixControl))) return; var objWrapper = objControl.wrapper; // DialogBox MUST be at the "top level" in the DOM, a direct child of the FORM document.getElementById(document.getElementById("Qform__FormId").value).appendChild(objWrapper); // Setup the DialogBoxBackground (DbBg) if applicable objWrapper.dbBg = document.getElementById(objWrapper.id + "dbbg"); var objDbBg = objWrapper.dbBg; if (!objDbBg) { var objDbBg = document.createElement("div"); objDbBg.id = objWrapper.id + "dbbg"; document.getElementById(document.getElementById("Qform__FormId").value).appendChild(objDbBg); // Setup the Object Links objWrapper.dbBg = objDbBg; objDbBg.wrapper = objWrapper; if (qcodo.isBrowser(qcodo.IE)) { var objIframe = document.createElement("iframe"); objIframe.id = objWrapper.id + "dbbgframe"; objIframe.style.left = "0px"; objIframe.style.top = "0px"; objIframe.style.position = "absolute"; objIframe.style.filter = "alpha(opacity=0)"; objIframe.src = "javascript: false;"; objIframe.frameBorder = 0; objIframe.scrolling = "no"; objIframe.style.zIndex = 990; objIframe.display = "none"; document.getElementById(document.getElementById("Qform__FormId").value).appendChild(objIframe); objWrapper.dbBgFrame = objIframe; }; }; objWrapper.handleResize = function(objEvent) { objEvent = qcodo.handleEvent(objEvent); if (objEvent.target) { if ((objEvent.target.nodeName.toLowerCase() == 'div') || (objEvent.target.nodeName.toLowerCase() == 'span')) return; }; // Restore from Link var objWrapper = qcodo.activeDialogBox; var objDbBg = objWrapper.dbBg; var objDbBgFrame = objWrapper.dbBgFrame; // Hide Everything objWrapper.style.display = "none"; objDbBg.style.display = "none"; if (objDbBgFrame) objDbBgFrame.style.display = "none"; // Setup Events qcodo.handleEvent(objEvent); // Show Everything objWrapper.style.display = "inline"; objDbBg.style.display = "block"; if (objDbBgFrame) objDbBgFrame.style.display = "block"; // DbBg Re-Setup objDbBg.style.width = Math.max(qcodo.page.width, qcodo.client.width) + "px"; objDbBg.style.height = Math.max(qcodo.page.height, qcodo.client.height) + "px"; if (objDbBgFrame) { objDbBgFrame.style.width = Math.max(qcodo.page.width, qcodo.client.width) + "px"; objDbBgFrame.style.height = Math.max(qcodo.page.height, qcodo.client.height) + "px"; }; // Wrapper Re-Setup var intWidth = objWrapper.offsetWidth; var intHeight = objWrapper.offsetHeight; var intTop = Math.round((qcodo.client.height - intHeight) / 2) + qcodo.scroll.y; var intLeft = Math.round((qcodo.client.width - intWidth) / 2) + qcodo.scroll.x; objWrapper.setAbsolutePosition(intLeft, intTop); return true; }; objWrapper.handleKeyPress = function(objEvent) { objEvent = qcodo.handleEvent(objEvent); qcodo.terminateEvent(objEvent); var objWrapper = qcodo.activeDialogBox; objWrapper.hideDialogBox(); return false; }; objWrapper.showDialogBox = function() { // Restore from Object Link var objDbBg = this.dbBg; var objDbBgFrame = this.dbBgFrame; // Hide Everything objWrapper.style.display = "none"; objDbBg.style.display = "none"; if (objDbBgFrame) objDbBgFrame.style.display = "none"; // Setup Events qcodo.handleEvent(); // Show Everything objDbBg.style.display = "block"; if (objDbBgFrame) objDbBgFrame.style.display = "block"; this.toggleDisplay("show"); // DbBg Re-Setup objDbBg.style.width = Math.max(qcodo.page.width, qcodo.client.width) + "px"; objDbBg.style.height = Math.max(qcodo.page.height, qcodo.client.height) + "px"; if (objDbBgFrame) { objDbBgFrame.style.width = Math.max(qcodo.page.width, qcodo.client.width) + "px"; objDbBgFrame.style.height = Math.max(qcodo.page.height, qcodo.client.height) + "px"; }; // Wrapper Re-Setup var intWidth = objWrapper.offsetWidth; var intHeight = objWrapper.offsetHeight; var intTop = Math.round((qcodo.client.height - intHeight) / 2) + qcodo.scroll.y; var intLeft = Math.round((qcodo.client.width - intWidth) / 2) + qcodo.scroll.x; objWrapper.setAbsolutePosition(intLeft, intTop); // Set Window OnResize Handling window.onresize = this.handleResize; window.onscroll = this.handleResize; qcodo.activeDialogBox = this; // If we have blnMatteClickable and blnAnyKeyCloses if (objWrapper.anyKeyCloses) { document.body.onkeypress = this.handleKeyPress; objWrapper.control.focus(); }; }; objWrapper.hideDialogBox = function() { var objWrapper = this; if (this.id.indexOf("_ctldbbg") > 0) objWrapper = this.wrapper; objWrapper.dbBg.style.display = "none"; if (objWrapper.dbBgFrame) objWrapper.dbBgFrame.style.display = "none"; objWrapper.toggleDisplay("hide"); // Unsetup OnResize Handling window.onresize = null; window.onscroll = null; // Unsetup KeyPress Closing document.body.onkeypress = null; // Unsetup ActiveDialogBox qcodo.activeDialogBox = null; }; // Initial Wrapper Setup objWrapper.style.zIndex = 999; objWrapper.position = "absolute"; objWrapper.anyKeyCloses = blnAnyKeyCloses; // Initial DbBg Setup objDbBg.style.position = "absolute"; objDbBg.style.zIndex = 998; objDbBg.style.top = "0px"; objDbBg.style.left = "0px"; if (qcodo.isBrowser(qcodo.IE)) objDbBg.style.overflow = "auto"; else objDbBg.style.overflow = "hide"; if (blnMatteClickable) { objDbBg.style.cursor = "pointer"; objDbBg.onclick = objWrapper.hideDialogBox; } else { objDbBg.style.cursor = "url(" + qc.imageAssets + "/_core/move_nodrop.cur), auto"; objDbBg.onclick = null; }; // Background Color and Opacity objDbBg.style.backgroundColor = strMatteColor; if (qcodo.isBrowser(qcodo.IE)) objDbBg.style.filter = "alpha(opacity=" + intMatteOpacity + ")"; else objDbBg.style.opacity = intMatteOpacity / 100.0; // Other Random Stuff objDbBg.style.fontSize = "1px"; objDbBg.innerHTML = " "; // Perform a Show or Hide (depending on state) if (objWrapper.style.display == 'none') objWrapper.hideDialogBox(); else objWrapper.showDialogBox(); }; ////////////////// // Qcodo Shortcuts ////////////////// qc.regDB = qcodo.registerDialogBox;