This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
MatritumCantat_Web/www/components/com_docman/assets/js/dldialog.js
2012-09-18 20:02:43 +00:00

146 lines
4.2 KiB
JavaScript

/**
* DOCLink 1.4.x
* @version $Id: dldialog.js 765 2009-01-05 20:55:57Z mathias $
* @package DOCLink_1.4
* @copyright (C) 2003-2009 Joomlatools
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.joomlatools.eu/ Official website
**/
// Based on htmlArea3 dialog.js
// htmlArea v3.0 - Copyright (c) 2003-2004 interactivetools.com, inc.
// This copyright notice MUST stay intact for use (see license.txt).
// Portions (c) dynarch.com, 2003-2004
// should be a function, the return handler of the currently opened dialog.
DLDialog._return = null;
// constant, the currently opened dialog
DLDialog._modal = null;
// the dialog will read it's args from this variable
DLDialog._arguments = null;
// the dialog will read it's args from this variable
DLDialog._features = null;
function DLDialog(url, action, arguments, features)
{
if (typeof arguments == "undefined") {
arguments = window; // pass this window object by default
}
DLDialog._arguments = arguments;
DLDialog._features = features;
//open dialog
if(Browser.is_ie)
DLDialog._ieOpenDialog(url, action, features['modal'], features);
else
DLDialog._geckoOpenModal(url, action, features['modal'], features);
};
DLDialog._geckoOpenModal = function(url, action, modal, features) {
//center dialog
if(features.center == 'yes') {
var x = (screen.availWidth - features.width ) / 2;
var y = (screen.availHeight - features.height) / 2;
features.screenX = x;
features.screenY = y;
}
//convert to string
sfeatures = features.toString();
var dlg = window.open(url, "hadialog", sfeatures);
DLDialog._modal = dlg;
// capture some window's events
function capwin(w) {
DLDialog._addEvent(w, "click", DLDialog._parentEvent);
DLDialog._addEvent(w, "mousedown", DLDialog._parentEvent);
DLDialog._addEvent(w, "focus", DLDialog._parentEvent);
};
// release the captured events
function relwin(w) {
DLDialog._removeEvent(w, "click", DLDialog._parentEvent);
DLDialog._removeEvent(w, "mousedown", DLDialog._parentEvent);
DLDialog._removeEvent(w, "focus", DLDialog._parentEvent);
};
capwin(window);
// capture other frames
for (var i = 0; i < window.frames.length; capwin(window.frames[i++]));
// make up a function to be called when the Dialog ends.
DLDialog._return = function (val) {
//release capture
relwin(window);
if(action && val) {
action(val);
}
// capture other frames
for (var i = 0; i < window.frames.length; relwin(window.frames[i++]));
DLDialog._modal = null;
};
};
DLDialog._ieOpenDialog = function(url, action, modal, features) {
features.width = features.width + 'px';
features.height = features.height + 'px';
//convert to string
sfeatures = features.toString();
sfeatures = sfeatures.replace(/\,/gi, ';')
sfeatures = sfeatures.replace(/\=/gi, ':')
sfeatures = sfeatures.replace(/scrollbars/gi, 'scroll')
sfeatures = sfeatures.replace(/left/gi, 'dialogLeft')
sfeatures = sfeatures.replace(/top/gi, 'dialogTop')
sfeatures = sfeatures.replace(/width/gi, 'dialogWidth')
sfeatures = sfeatures.replace(/height/gi, 'dialogHeight')
if ((sfeatures.search('scroll')) == -1) {
sfeatures += ";scroll:no"
}
if (sfeatures.search('status') == -1) {
sfeatures += ";status:no"
}
if (sfeatures.search('help') == -1) {
sfeatures += ";help:no"
}
if (modal == 'no') {
var val = window.showModelessDialog(url, DLDialog._arguments, sfeatures)
} else {
var val = window.showModalDialog(url, DLDialog._arguments, sfeatures)
}
if(action && val) {
action(val);
}
}
//Events
DLDialog._addEvent = function(el, evname, event) {
if (Browser.is_ie) {
el.attachEvent("on" + evname, event);
} else {
el.addEventListener(evname, event, true);
}
};
DLDialog._removeEvent = function(el, evname, event) {
if (Browser.is_ie) {
el.detachEvent("on" + evname, event);
} else {
el.removeEventListener(evname, event, true);
}
};
DLDialog._parentEvent = function(ev) {
setTimeout( function() { if (DLDialog._modal && !DLDialog._modal.closed) { DLDialog._modal.focus() } }, 50);
if (DLDialog._modal && !DLDialog._modal.closed) {
DOCLink._stopEvent(ev);
}
};