| // 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 |
| // |
| // A free WYSIWYG editor replacement for <textarea> fields. |
| // For full source code and docs, visit http://www.interactivetools.com/ |
| // |
| // Version 3.0 developed by Mihai Bazon. |
| // http://dynarch.com/mishoo |
| // |
| // $Id: dialog.js,v 1.1 2004/02/06 10:10:07 ugo Exp $ |
| |
| // Though "Dialog" looks like an object, it isn't really an object. Instead |
| // it's just namespace for protecting global symbols. |
| |
| function Dialog(url, action, init) { |
| if (typeof init == "undefined") { |
| init = window; // pass this window object by default |
| } |
| Dialog._geckoOpenModal(url, action, init); |
| }; |
| |
| Dialog._parentEvent = function(ev) { |
| if (Dialog._modal && !Dialog._modal.closed) { |
| Dialog._modal.focus(); |
| HTMLArea._stopEvent(ev); |
| } |
| }; |
| |
| // should be a function, the return handler of the currently opened dialog. |
| Dialog._return = null; |
| |
| // constant, the currently opened dialog |
| Dialog._modal = null; |
| |
| // the dialog will read it's args from this variable |
| Dialog._arguments = null; |
| |
| Dialog._geckoOpenModal = function(url, action, init) { |
| var dlg = window.open(url, "hadialog", |
| "toolbar=no,menubar=no,personalbar=no,width=10,height=10," + |
| "scrollbars=no,resizable=yes"); |
| Dialog._modal = dlg; |
| Dialog._arguments = init; |
| |
| // capture some window's events |
| function capwin(w) { |
| HTMLArea._addEvent(w, "click", Dialog._parentEvent); |
| HTMLArea._addEvent(w, "mousedown", Dialog._parentEvent); |
| HTMLArea._addEvent(w, "focus", Dialog._parentEvent); |
| }; |
| // release the captured events |
| function relwin(w) { |
| HTMLArea._removeEvent(w, "click", Dialog._parentEvent); |
| HTMLArea._removeEvent(w, "mousedown", Dialog._parentEvent); |
| HTMLArea._removeEvent(w, "focus", Dialog._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. |
| Dialog._return = function (val) { |
| if (val && action) { |
| action(val); |
| } |
| relwin(window); |
| // capture other frames |
| for (var i = 0; i < window.frames.length; relwin(window.frames[i++])); |
| Dialog._modal = null; |
| }; |
| }; |