A Qcodo based CMS/ecommerce framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

208 lines
6.6 KiB

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