1 // Dialog v3.0 - Copyright (c) 2003-2004 interactivetools.com, inc.
2 // This copyright notice MUST stay intact for use (see license.txt).
4 // Portions (c) dynarch.com, 2003-2004
6 // A free WYSIWYG editor replacement for <textarea> fields.
7 // For full source code and docs, visit http://www.interactivetools.com/
9 // Version 3.0 developed by Mihai Bazon.
10 // http://dynarch.com/mishoo
12 // $Id: dialog.js,v 1.1 2006-10-02 05:37:17 shizuki Exp $
14 // Though "Dialog" looks like an object, it isn't really an object. Instead
15 // it's just namespace for protecting global symbols.
17 function Dialog(url, action, init) {
18 if (typeof init == "undefined") {
19 init = window; // pass this window object by default
21 Dialog._geckoOpenModal(url, action, init);
24 Dialog._parentEvent = function(ev) {
25 setTimeout( function() { if (Dialog._modal && !Dialog._modal.closed) { Dialog._modal.focus() } }, 50);
26 if (Dialog._modal && !Dialog._modal.closed) {
27 Dialog._stopEvent(ev);
32 // should be a function, the return handler of the currently opened dialog.
33 Dialog._return = null;
35 // constant, the currently opened dialog
38 // the dialog will read it's args from this variable
39 Dialog._arguments = null;
41 Dialog._geckoOpenModal = function(url, action, init) {
42 //var urlLink = "hadialog"+url.toString();
43 var myURL = "hadialog"+url;
45 myURL = myURL.replace(regObj,'_');
46 var dlg = window.open(url, myURL,
47 "toolbar=no,menubar=no,personalbar=no,width=10,height=10," +
48 "scrollbars=no,resizable=yes,modal=yes,dependable=yes");
50 Dialog._arguments = init;
52 // capture some window's events
54 Dialog._addEvent(w, "click", Dialog._parentEvent);
55 Dialog._addEvent(w, "mousedown", Dialog._parentEvent);
56 Dialog._addEvent(w, "focus", Dialog._parentEvent);
58 // release the captured events
60 Dialog._removeEvent(w, "click", Dialog._parentEvent);
61 Dialog._removeEvent(w, "mousedown", Dialog._parentEvent);
62 Dialog._removeEvent(w, "focus", Dialog._parentEvent);
65 // capture other frames
66 for (var i = 0; i < window.frames.length; capwin(window.frames[i++]));
67 // make up a function to be called when the Dialog ends.
68 Dialog._return = function (val) {
73 // capture other frames
74 for (var i = 0; i < window.frames.length; relwin(window.frames[i++]));
82 Dialog._addEvent = function(el, evname, func) {
84 el.attachEvent("on" + evname, func);
86 el.addEventListener(evname, func, true);
91 Dialog._removeEvent = function(el, evname, func) {
93 el.detachEvent("on" + evname, func);
95 el.removeEventListener(evname, func, true);
100 Dialog._stopEvent = function(ev) {
102 ev.cancelBubble = true;
103 ev.returnValue = false;
106 ev.stopPropagation();
110 Dialog.agt = navigator.userAgent.toLowerCase();
111 Dialog.is_ie = ((Dialog.agt.indexOf("msie") != -1) && (Dialog.agt.indexOf("opera") == -1));