|
/////////////////////////////////////////////
|
|
// 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;
|