Subversion Repositories Applications.papyrus

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1075 ddelon 1
/*
2
 * FCKeditor - The text editor for internet
3
 * Copyright (C) 2003-2006 Frederico Caldeira Knabben
4
 *
5
 * Licensed under the terms of the GNU Lesser General Public License:
6
 * 		http://www.opensource.org/licenses/lgpl-license.php
7
 *
8
 * For further information visit:
9
 * 		http://www.fckeditor.net/
10
 *
11
 * "Support Open Source software. What about a donation today?"
12
 *
13
 * File Name: fckdialog_gecko.js
14
 * 	Dialog windows operations. (Gecko specific implementations)
15
 *
16
 * File Authors:
17
 * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
18
 */
19
 
20
FCKDialog.Show = function( dialogInfo, dialogName, pageUrl, dialogWidth, dialogHeight, parentWindow, resizable )
21
{
22
	var iTop  = (FCKConfig.ScreenHeight - dialogHeight) / 2 ;
23
	var iLeft = (FCKConfig.ScreenWidth  - dialogWidth)  / 2 ;
24
 
25
	var sOption  = "location=no,menubar=no,toolbar=no,dependent=yes,dialog=yes,minimizable=no,modal=yes,alwaysRaised=yes" +
26
		",resizable="  + ( resizable ? 'yes' : 'no' ) +
27
		",width="  + dialogWidth +
28
		",height=" + dialogHeight +
29
		",top="  + iTop +
30
		",left=" + iLeft ;
31
 
32
	if ( !parentWindow )
33
		parentWindow = window ;
34
 
35
	FCKFocusManager.Lock() ;
36
 
37
	var oWindow = parentWindow.open( '', 'FCKeditorDialog_' + dialogName, sOption, true ) ;
38
 
39
	if ( !oWindow )
40
	{
41
		alert( FCKLang.DialogBlocked ) ;
42
		FCKFocusManager.Unlock() ;
43
		return ;
44
	}
45
 
46
	oWindow.moveTo( iLeft, iTop ) ;
47
	oWindow.resizeTo( dialogWidth, dialogHeight ) ;
48
	oWindow.focus() ;
49
	oWindow.location.href = pageUrl ;
50
 
51
	oWindow.dialogArguments = dialogInfo ;
52
 
53
	// On some Gecko browsers (probably over slow connections) the
54
	// "dialogArguments" are not set to the target window so we must
55
	// put it in the opener window so it can be used by the target one.
56
	parentWindow.FCKLastDialogInfo = dialogInfo ;
57
 
58
	this.Window = oWindow ;
59
 
60
	// Try/Catch must be used to avoit an error when using a frameset
61
	// on a different domain:
62
	// "Permission denied to get property Window.releaseEvents".
63
	try
64
	{
65
		window.top.captureEvents( Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS ) ;
66
		window.top.parent.addEventListener( 'mousedown', this.CheckFocus, true ) ;
67
		window.top.parent.addEventListener( 'mouseup', this.CheckFocus, true ) ;
68
		window.top.parent.addEventListener( 'click', this.CheckFocus, true ) ;
69
		window.top.parent.addEventListener( 'focus', this.CheckFocus, true ) ;
70
	}
71
	catch (e)
72
	{}
73
}
74
 
75
FCKDialog.CheckFocus = function()
76
{
77
	// It is strange, but we have to check the FCKDialog existence to avoid a
78
	// random error: "FCKDialog is not defined".
79
	if ( typeof( FCKDialog ) != "object" )
80
		return false ;
81
 
82
	if ( FCKDialog.Window && !FCKDialog.Window.closed )
83
		FCKDialog.Window.focus() ;
84
	else
85
	{
86
		// Try/Catch must be used to avoit an error when using a frameset
87
		// on a different domain:
88
		// "Permission denied to get property Window.releaseEvents".
89
		try
90
		{
91
			window.top.releaseEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS) ;
92
			window.top.parent.removeEventListener( 'onmousedown', FCKDialog.CheckFocus, true ) ;
93
			window.top.parent.removeEventListener( 'mouseup', FCKDialog.CheckFocus, true ) ;
94
			window.top.parent.removeEventListener( 'click', FCKDialog.CheckFocus, true ) ;
95
			window.top.parent.removeEventListener( 'onfocus', FCKDialog.CheckFocus, true ) ;
96
		}
97
		catch (e)
98
		{}
99
	}
100
	return false ;
101
}