Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 1920 → Rev 1921

/branches/livraison_aha/api/fckeditor/editor/fckdialog.html
1,322 → 1,812
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
* FCKeditor - The text editor for internet
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
*
* Licensed under the terms of the GNU Lesser General Public License:
* http://www.opensource.org/licenses/lgpl-license.php
*
* For further information visit:
* http://www.fckeditor.net/
*
* "Support Open Source software. What about a donation today?"
*
* File Name: fckdialog.html
* This page is used by all dialog box as the container.
*
* File Authors:
* Frederico Caldeira Knabben (fredck@fckeditor.net)
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
* Copyright (C) 2003-2008 Frederico Caldeira Knabben
*
* == BEGIN LICENSE ==
*
* Licensed under the terms of any of the following licenses at your
* choice:
*
* - GNU General Public License Version 2 or later (the "GPL")
* http://www.gnu.org/licenses/gpl.html
*
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
* http://www.gnu.org/licenses/lgpl.html
*
* - Mozilla Public License Version 1.1 or later (the "MPL")
* http://www.mozilla.org/MPL/MPL-1.1.html
*
* == END LICENSE ==
*
* This page is used by all dialog box as the container.
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex, nofollow" />
<script type="text/javascript">
// <![CDATA[
 
// On some Gecko browsers (probably over slow connections) the
// "dialogArguments" are not set so we must get it from the opener window.
if ( !window.dialogArguments )
window.dialogArguments = window.opener.FCKLastDialogInfo ;
// Domain relaxation logic.
(function()
{
var d = document.domain ;
 
// Sets the Skin CSS
document.write( '<link href="' + window.dialogArguments.Editor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
while ( true )
{
// Test if we can access a parent property.
try
{
var parentDomain = ( Args().TopWindow || E ).document.domain ;
 
// Sets the language direction.
window.document.dir = window.dialogArguments.Editor.FCKLang.Dir ;
if ( document.domain != parentDomain )
document.domain = parentDomain ;
 
var sTitle = window.dialogArguments.Title ;
document.write( '<title>' + sTitle + '<\/title>' ) ;
break ;
}
catch( e ) {}
 
function LoadInnerDialog()
{
// The following value is set, so the editor can check that the dialog has been correctly opened.
window.setTimeout( function() { window.returnValue = true ; }, 100 ) ;
// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
d = d.replace( /.*?(?:\.|$)/, '' ) ;
 
if ( window.onresize )
window.onresize() ;
if ( d.length == 0 )
break ; // It was not able to detect the domain.
 
// First of all, translate the dialog box contents.
window.dialogArguments.Editor.FCKLanguageManager.TranslatePage( document ) ;
document.domain = d ;
}
})() ;
 
window.frames["frmMain"].document.location.href = window.dialogArguments.Page ;
var E = frameElement._DialogArguments.Editor ;
 
// It seems referencing to frameElement._DialogArguments directly would lead to memory leaks in IE.
// So let's use functions to access its members instead.
function Args()
{
return frameElement._DialogArguments ;
}
 
function InnerDialogLoaded()
function ParentDialog( dialog )
{
var oInnerDoc = document.getElementById('frmMain').contentWindow.document ;
return dialog ? dialog._ParentDialog : frameElement._ParentDialog ;
}
 
// Set the language direction.
oInnerDoc.dir = window.dialogArguments.Editor.FCKLang.Dir ;
var FCK = E.FCK ;
var FCKTools = E.FCKTools ;
var FCKDomTools = E.FCKDomTools ;
var FCKDialog = E.FCKDialog ;
var FCKBrowserInfo = E.FCKBrowserInfo ;
var FCKConfig = E.FCKConfig ;
 
// Sets the Skin CSS.
oInnerDoc.write( '<link href="' + window.dialogArguments.Editor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
// Steal the focus so that the caret would no longer stay in the editor iframe.
window.focus() ;
 
SetOnKeyDown( oInnerDoc ) ;
DisableContextMenu( oInnerDoc ) ;
// Sets the Skin CSS
document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
 
return window.dialogArguments.Editor ;
}
// Sets the language direction.
var langDir = document.documentElement.dir = E.FCKLang.Dir ;
 
function SetOkButton( showIt )
{
document.getElementById('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
}
// For IE6-, the fck_dialog_ie6.js is loaded, used to fix limitations in the browser.
if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
document.write( '<' + 'script type="text/javascript" src="' + FCKConfig.SkinPath + 'fck_dialog_ie6.js"><' + '\/script>' ) ;
 
var bAutoSize = false ;
FCKTools.RegisterDollarFunction( window ) ;
 
function SetAutoSize( autoSize )
// Resize related functions.
var Sizer = function()
{
bAutoSize = autoSize ;
RefreshSize() ;
}
var bAutoSize = false ;
 
function RefreshSize()
{
if ( bAutoSize )
{
var oInnerDoc = document.getElementById('frmMain').contentWindow.document ;
var retval = {
// Sets whether the dialog should auto-resize according to its content's height.
SetAutoSize : function( autoSize )
{
bAutoSize = autoSize ;
this.RefreshSize() ;
},
 
var iFrameHeight ;
if ( document.all )
iFrameHeight = oInnerDoc.body.offsetHeight ;
else
iFrameHeight = document.getElementById('frmMain').contentWindow.innerHeight ;
// Fit the dialog container's layout to the inner iframe's external size.
RefreshContainerSize : function()
{
var frmMain = $( 'frmMain' ) ;
 
var iInnerHeight = oInnerDoc.body.scrollHeight ;
if ( frmMain )
{
// Get the container size.
var height = $( 'contents' ).offsetHeight ;
 
var iDiff = iInnerHeight - iFrameHeight ;
// Subtract the size of other elements.
height -= $( 'TitleArea' ).offsetHeight ;
height -= $( 'TabsRow' ).offsetHeight ;
height -= $( 'PopupButtons' ).offsetHeight ;
 
if ( iDiff > 0 )
frmMain.style.height = Math.max( height, 0 ) + 'px' ;
}
},
 
// Resize and re-layout the dialog.
// Triggers the onresize event for the layout logic.
ResizeDialog : function( width, height )
{
if ( document.all )
window.dialogHeight = ( parseInt( window.dialogHeight ) + iDiff ) + 'px' ;
else
window.resizeBy( 0, iDiff ) ;
FCKDomTools.SetElementStyles( window.frameElement,
{
'width' : width + 'px',
'height' : height + 'px'
} ) ;
 
// If the skin have defined a function for resize fixes, call it now.
if ( typeof window.DoResizeFixes == 'function' )
window.DoResizeFixes() ;
},
 
// if bAutoSize is true, automatically fit the dialog size and layout to
// accomodate the inner iframe's internal height.
// if bAutoSize is false, then only the layout logic for the dialog decorations
// is run to accomodate the inner iframe's external height.
RefreshSize : function()
{
if ( bAutoSize )
{
var frmMain = $( 'frmMain' ) ;
var innerDoc = frmMain.contentWindow.document ;
var isStrict = FCKTools.IsStrictMode( innerDoc ) ;
 
// Get the size of the frame contents.
var innerWidth = isStrict ? innerDoc.documentElement.scrollWidth : innerDoc.body.scrollWidth ;
var innerHeight = isStrict ? innerDoc.documentElement.scrollHeight : innerDoc.body.scrollHeight ;
 
// Get the current frame size.
var frameSize = FCKTools.GetViewPaneSize( frmMain.contentWindow ) ;
 
var deltaWidth = innerWidth - frameSize.Width ;
var deltaHeight = innerHeight - frameSize.Height ;
 
// If the contents fits the current size.
if ( deltaWidth <= 0 && deltaHeight <= 0 )
return ;
 
var dialogWidth = frameElement.offsetWidth + Math.max( deltaWidth, 0 ) ;
var dialogHeight = frameElement.offsetHeight + Math.max( deltaHeight, 0 ) ;
 
this.ResizeDialog( dialogWidth, dialogHeight ) ;
}
this.RefreshContainerSize() ;
}
}
}
 
function Ok()
{
if ( window.frames["frmMain"].Ok && window.frames["frmMain"].Ok() )
Cancel() ;
}
/**
* Safari seems to have a bug with the time when RefreshSize() is executed - it
* thinks frmMain's innerHeight is 0 if we query the value too soon after the
* page is loaded in some circumstances. (#1316)
* TODO : Maybe this is not needed anymore after #35.
*/
if ( FCKBrowserInfo.IsSafari )
{
var originalRefreshSize = retval.RefreshSize ;
 
function Cancel( dontFireChange )
{
if ( !dontFireChange )
retval.RefreshSize = function()
{
FCKTools.SetTimeout( originalRefreshSize, 1, retval ) ;
}
}
 
/**
* IE6 has a similar bug where it sometimes thinks $('contents') has an
* offsetHeight of 0 (#2114).
*/
if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
{
// All dialog windows, by default, will fire the "OnSelectionChange"
// event, no matter the Ok or Cancel button has been pressed.
window.dialogArguments.Editor.FCK.Events.FireEvent( 'OnSelectionChange' ) ;
var originalRefreshContainerSize = retval.RefreshContainerSize ;
retval.RefreshContainerSize = function()
{
FCKTools.SetTimeout( originalRefreshContainerSize, 1, retval ) ;
}
}
window.close() ;
}
 
// Object that holds all available tabs.
var oTabs = new Object() ;
window.onresize = function()
{
retval.RefreshContainerSize() ;
}
 
function TabDiv_OnClick()
{
SetSelectedTab( this.TabCode ) ;
}
window.SetAutoSize = FCKTools.Bind( retval, retval.SetAutoSize ) ;
 
function AddTab( tabCode, tabText, startHidden )
return retval ;
}() ;
 
// Manages the throbber image that appears if the inner part of dialog is taking too long to load.
var Throbber = function()
{
if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
return ;
var timer ;
 
var eTabsRow = document.getElementById( 'Tabs' ) ;
var updateThrobber = function()
{
var throbberParent = $( 'throbberBlock' ) ;
var throbberBlocks = throbberParent.childNodes ;
var lastClass = throbberParent.lastChild.className ;
 
var oCell = eTabsRow.insertCell( eTabsRow.cells.length - 1 ) ;
oCell.noWrap = true ;
// From the last to the second one, copy the class from the previous one.
for ( var i = throbberBlocks.length - 1 ; i > 0 ; i-- )
throbberBlocks[i].className = throbberBlocks[i-1].className ;
 
var oDiv = document.createElement( 'DIV' ) ;
oDiv.className = 'PopupTab' ;
oDiv.innerHTML = tabText ;
oDiv.TabCode = tabCode ;
oDiv.onclick = TabDiv_OnClick ;
// For the first one, copy the last class (rotation).
throbberBlocks[0].className = lastClass ;
}
 
if ( startHidden )
oDiv.style.display = 'none' ;
return {
Show : function( waitMilliseconds )
{
// Auto-setup the Show function to be called again after the
// requested amount of time.
if ( waitMilliseconds && waitMilliseconds > 0 )
{
timer = FCKTools.SetTimeout( this.Show, waitMilliseconds, this, null, window ) ;
return ;
}
 
eTabsRow = document.getElementById( 'TabsRow' ) ;
var throbberParent = $( 'throbberBlock' ) ;
 
oCell.appendChild( oDiv ) ;
if (throbberParent.childNodes.length == 0)
{
// Create the throbber blocks.
var classIds = [ 1,2,3,4,5,4,3,2 ] ;
while ( classIds.length > 0 )
throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
}
 
if ( eTabsRow.style.display == 'none' )
{
var eTitleArea = document.getElementById( 'TitleArea' ) ;
eTitleArea.className = 'PopupTitle' ;
// Center the throbber.
var frm = $( 'contents' ) ;
var frmCoords = FCKTools.GetDocumentPosition( window, frm ) ;
var x = frmCoords.x + ( frm.offsetWidth - throbberParent.offsetWidth ) / 2 ;
var y = frmCoords.y + ( frm.offsetHeight - throbberParent.offsetHeight ) / 2 ;
throbberParent.style.left = parseInt( x, 10 ) + 'px' ;
throbberParent.style.top = parseInt( y, 10 ) + 'px' ;
 
oDiv.className = 'PopupTabSelected' ;
eTabsRow.style.display = '' ;
// Show it.
throbberParent.style.visibility = '' ;
 
if ( ! window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
window.onresize() ;
}
// Hide tabs and buttons:
$( 'Tabs' ).style.visibility = 'hidden' ;
$( 'PopupButtons' ).style.visibility = 'hidden' ;
 
oTabs[ tabCode ] = oDiv ;
oTabs[ tabCode ].Index = oTabs.length - 1 ;
}
// Setup the animation interval.
timer = setInterval( updateThrobber, 100 ) ;
},
 
function SetSelectedTab( tabCode )
Hide : function()
{
if ( timer )
{
clearInterval( timer ) ;
timer = null ;
}
 
$( 'throbberBlock' ).style.visibility = 'hidden' ;
 
// Show tabs and buttons:
$( 'Tabs' ).style.visibility = '' ;
$( 'PopupButtons' ).style.visibility = '' ;
}
} ;
}() ;
 
// Drag and drop handlers.
var DragAndDrop = function()
{
for ( var sCode in oTabs )
var registeredWindows = [] ;
var lastCoords ;
var currentPos ;
 
var cleanUpHandlers = function()
{
if ( sCode == tabCode )
oTabs[sCode].className = 'PopupTabSelected' ;
for ( var i = 0 ; i < registeredWindows.length ; i++ )
{
FCKTools.RemoveEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
FCKTools.RemoveEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
}
}
 
var dragMouseMoveHandler = function( evt )
{
if ( !lastCoords )
return ;
 
if ( !evt )
evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
 
// Updated the last coordinates.
var currentCoords =
{
x : evt.screenX,
y : evt.screenY
} ;
 
currentPos =
{
x : currentPos.x + ( currentCoords.x - lastCoords.x ),
y : currentPos.y + ( currentCoords.y - lastCoords.y )
} ;
 
lastCoords = currentCoords ;
 
frameElement.style.left = currentPos.x + 'px' ;
frameElement.style.top = currentPos.y + 'px' ;
 
if ( evt.preventDefault )
evt.preventDefault() ;
else
oTabs[sCode].className = 'PopupTab' ;
evt.returnValue = false ;
}
 
if ( typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
}
var dragMouseUpHandler = function( evt )
{
if ( !lastCoords )
return ;
if ( !evt )
evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
cleanUpHandlers() ;
lastCoords = null ;
}
 
function SetTabVisibility( tabCode, isVisible )
{
var oTab = oTabs[ tabCode ] ;
oTab.style.display = isVisible ? '' : 'none' ;
return {
 
if ( ! isVisible && oTab.className == 'PopupTabSelected' )
{
for ( var sCode in oTabs )
MouseDownHandler : function( evt )
{
if ( oTabs[sCode].style.display != 'none' )
var view = null ;
if ( !evt )
{
SetSelectedTab( sCode ) ;
break ;
view = FCKTools.GetElementDocument( this ).parentWindow ;
evt = view.event ;
}
else
view = evt.view ;
 
var target = evt.srcElement || evt.target ;
if ( target.id == 'closeButton' || target.className == 'PopupTab' || target.className == 'PopupTabSelected' )
return ;
 
lastCoords =
{
x : evt.screenX,
y : evt.screenY
} ;
 
// Save the current IFRAME position.
currentPos =
{
x : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'left' ), 10 ),
y : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'top' ), 10 )
} ;
 
for ( var i = 0 ; i < registeredWindows.length ; i++ )
{
FCKTools.AddEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
FCKTools.AddEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
}
 
if ( evt.preventDefault )
evt.preventDefault() ;
else
evt.returnValue = false ;
},
 
RegisterHandlers : function( w )
{
registeredWindows.push( w ) ;
}
}
}() ;
 
// Selection related functions.
//(Became simple shortcuts after the fix for #1990)
var Selection =
{
/**
* Ensures that the editing area contains an active selection. This is a
* requirement for IE, as it looses the selection when the focus moves to other
* frames.
*/
EnsureSelection : function()
{
FCK.Selection.Restore() ;
},
 
/**
* Get the FCKSelection object for the editor instance.
*/
GetSelection : function()
{
return FCK.Selection ;
},
 
/**
* Get the selected element in the editing area (for object selections).
*/
GetSelectedElement : function()
{
return FCK.Selection.GetSelectedElement() ;
}
}
 
function SetOnKeyDown( targetDocument )
// Tab related functions.
var Tabs = function()
{
targetDocument.onkeydown = function ( e )
// Only element ids should be stored here instead of element references since setSelectedTab and TabDiv_OnClick
// would build circular references with the element references inside and cause memory leaks in IE6.
var oTabs = new Object() ;
 
var setSelectedTab = function( tabCode )
{
e = e || event || this.parentWindow.event ;
switch ( e.keyCode )
for ( var sCode in oTabs )
{
case 13 : // ENTER
var oTarget = e.srcElement || e.target ;
if ( oTarget.tagName == 'TEXTAREA' ) return ;
Ok() ;
return false ;
case 27 : // ESC
Cancel() ;
return false ;
break ;
if ( sCode == tabCode )
$( oTabs[sCode] ).className = 'PopupTabSelected' ;
else
$( oTabs[sCode] ).className = 'PopupTab' ;
}
return true ;
 
if ( typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
}
}
SetOnKeyDown( document ) ;
 
function DisableContextMenu( targetDocument )
function TabDiv_OnClick()
{
setSelectedTab( this.TabCode ) ;
}
 
window.AddTab = function( tabCode, tabText, startHidden )
{
if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
return ;
 
var eTabsRow = $( 'Tabs' ) ;
 
var oCell = eTabsRow.insertCell( eTabsRow.cells.length - 1 ) ;
oCell.noWrap = true ;
 
var oDiv = document.createElement( 'DIV' ) ;
oDiv.className = 'PopupTab' ;
oDiv.innerHTML = tabText ;
oDiv.TabCode = tabCode ;
oDiv.onclick = TabDiv_OnClick ;
oDiv.id = Math.random() ;
 
if ( startHidden )
oDiv.style.display = 'none' ;
 
eTabsRow = $( 'TabsRow' ) ;
 
oCell.appendChild( oDiv ) ;
 
if ( eTabsRow.style.display == 'none' )
{
var eTitleArea = $( 'TitleArea' ) ;
eTitleArea.className = 'PopupTitle' ;
 
oDiv.className = 'PopupTabSelected' ;
eTabsRow.style.display = '' ;
 
if ( window.onresize )
window.onresize() ;
}
 
oTabs[ tabCode ] = oDiv.id ;
 
FCKTools.DisableSelection( oDiv ) ;
} ;
 
window.SetSelectedTab = setSelectedTab ;
 
window.SetTabVisibility = function( tabCode, isVisible )
{
var oTab = $( oTabs[ tabCode ] ) ;
oTab.style.display = isVisible ? '' : 'none' ;
 
if ( ! isVisible && oTab.className == 'PopupTabSelected' )
{
for ( var sCode in oTabs )
{
if ( $( oTabs[sCode] ).style.display != 'none' )
{
setSelectedTab( sCode ) ;
break ;
}
}
}
} ;
}() ;
 
// readystatechange handler for registering drag and drop handlers in cover
// iframes, defined out here to avoid memory leak.
// Do NOT put this function as a private function as it will induce memory leak
// in IE and it's not detectable with Drip or sIEve and undetectable leaks are
// really nasty (sigh).
var onReadyRegister = function()
{
if ( window.dialogArguments.Editor.FCKBrowserInfo.IsIE ) return ;
if ( this.readyState != 'complete' )
return ;
DragAndDrop.RegisterHandlers( this.contentWindow ) ;
} ;
 
// Disable Right-Click
var oOnContextMenu = function( e )
// The business logic of the dialog, dealing with operational things like
// dialog open/dialog close/enable/disable/etc.
(function()
{
var setOnKeyDown = function( targetDocument )
{
targetDocument.onkeydown = function ( e )
{
e = e || event || this.parentWindow.event ;
switch ( e.keyCode )
{
case 13 : // ENTER
var oTarget = e.srcElement || e.target ;
if ( oTarget.tagName == 'TEXTAREA' )
return true ;
Ok() ;
return false ;
 
case 27 : // ESC
Cancel() ;
return false ;
}
return true ;
}
} ;
 
var contextMenuBlocker = function( e )
{
var sTagName = e.target.tagName ;
if ( ! ( ( sTagName == "INPUT" && e.target.type == "text" ) || sTagName == "TEXTAREA" ) )
e.preventDefault() ;
}
targetDocument.addEventListener( 'contextmenu', oOnContextMenu, true ) ;
}
DisableContextMenu( document ) ;
} ;
 
if ( ! window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
{
window.onresize = function()
var disableContextMenu = function( targetDocument )
{
var oFrame = document.getElementById("frmMain") ;
if ( FCKBrowserInfo.IsIE )
return ;
 
if ( ! oFrame )
return ;
targetDocument.addEventListener( 'contextmenu', contextMenuBlocker, true ) ;
} ;
 
oFrame.height = 0 ;
// Program entry point.
window.Init = function()
{
// Start the throbber timer.
Throbber.Show( 1000 ) ;
 
var oCell = document.getElementById("FrameCell") ;
var iHeight = oCell.offsetHeight ;
Sizer.RefreshContainerSize() ;
LoadInnerDialog() ;
 
oFrame.height = iHeight - 2 ;
}
}
FCKTools.DisableSelection( document.body ) ;
 
if ( window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
{
function Window_OnBeforeUnload()
// Make the title area draggable.
var titleElement = $( 'header' ) ;
titleElement.onmousedown = DragAndDrop.MouseDownHandler ;
 
// Connect mousemove and mouseup events from dialog frame and outer window to dialog dragging logic.
DragAndDrop.RegisterHandlers( window ) ;
DragAndDrop.RegisterHandlers( Args().TopWindow ) ;
 
// Disable the previous dialog if it exists.
if ( ParentDialog() )
{
ParentDialog().contentWindow.SetEnabled( false ) ;
if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
{
var currentParent = ParentDialog() ;
while ( currentParent )
{
var blockerFrame = currentParent.contentWindow.$( 'blocker' ) ;
if ( blockerFrame.readyState == 'complete' )
DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
else
blockerFrame.onreadystatechange = onReadyRegister ;
currentParent = ParentDialog( currentParent ) ;
}
}
else
{
var currentParent = ParentDialog() ;
while ( currentParent )
{
DragAndDrop.RegisterHandlers( currentParent.contentWindow ) ;
currentParent = ParentDialog( currentParent ) ;
}
}
}
 
// If this is the only dialog on screen, enable the background cover.
if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
{
var blockerFrame = FCKDialog.GetCover().firstChild ;
if ( blockerFrame.readyState == 'complete' )
DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
else
blockerFrame.onreadystatechange = onReadyRegister;
}
 
// Add Enter/Esc hotkeys and disable context menu for the dialog.
setOnKeyDown( document ) ;
disableContextMenu( document ) ;
} ;
 
window.LoadInnerDialog = function()
{
for ( var t in oTabs )
oTabs[t] = null ;
if ( window.onresize )
window.onresize() ;
 
window.dialogArguments.Editor = null ;
}
window.attachEvent( "onbeforeunload", Window_OnBeforeUnload ) ;
}
// First of all, translate the dialog box contents.
E.FCKLanguageManager.TranslatePage( document ) ;
 
function Window_OnClose()
{
window.dialogArguments.Editor.FCKFocusManager.Unlock() ;
}
// Create the IFRAME that holds the dialog contents.
$( 'innerContents' ).innerHTML = '<iframe id="frmMain" src="' + Args().Page + '" name="frmMain" frameborder="0" width="100%" height="100%" scrolling="auto" style="visibility: hidden;" allowtransparency="true"><\/iframe>' ;
} ;
 
if ( window.addEventListener )
window.addEventListener( 'unload', Window_OnClose, false ) ;
window.InnerDialogLoaded = function()
{
// If the dialog has been closed before the iframe is loaded, do nothing.
if ( !frameElement.parentNode )
return null ;
 
Throbber.Hide() ;
 
var frmMain = $('frmMain') ;
var innerWindow = frmMain.contentWindow ;
var innerDoc = innerWindow.document ;
 
// Show the loaded iframe.
frmMain.style.visibility = '' ;
 
// Set the language direction.
innerDoc.documentElement.dir = langDir ;
 
// Sets the Skin CSS.
innerDoc.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
 
setOnKeyDown( innerDoc ) ;
disableContextMenu( innerDoc ) ;
 
Sizer.RefreshContainerSize();
 
DragAndDrop.RegisterHandlers( innerWindow ) ;
 
innerWindow.focus() ;
 
return E ;
} ;
 
window.SetOkButton = function( showIt )
{
$('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
} ;
 
window.Ok = function()
{
Selection.EnsureSelection() ;
 
var frmMain = window.frames["frmMain"] ;
 
if ( frmMain.Ok && frmMain.Ok() )
CloseDialog() ;
else
frmMain.focus() ;
} ;
 
window.Cancel = function( dontFireChange )
{
Selection.EnsureSelection() ;
return CloseDialog( dontFireChange ) ;
} ;
 
window.CloseDialog = function( dontFireChange )
{
Throbber.Hide() ;
 
// Points the src to a non-existent location to avoid loading errors later, in case the dialog
// haven't been completed loaded at this point.
if ( $( 'frmMain' ) )
$( 'frmMain' ).src = FCKTools.GetVoidUrl() ;
 
if ( !dontFireChange && !FCK.EditMode )
{
// All dialog windows, by default, will fire the "OnSelectionChange"
// event, no matter the Ok or Cancel button has been pressed.
// It seems that OnSelectionChange may enter on a concurrency state
// on some situations (#1965), so we should put the event firing in
// the execution queue instead of executing it immediately.
setTimeout( function()
{
FCK.Events.FireEvent( 'OnSelectionChange' ) ;
}, 0 ) ;
}
 
FCKDialog.OnDialogClose( window ) ;
} ;
 
window.SetEnabled = function( isEnabled )
{
var cover = $( 'cover' ) ;
cover.style.display = isEnabled ? 'none' : '' ;
 
if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
{
if ( !isEnabled )
{
// Inser the blocker IFRAME before the cover.
var blocker = document.createElement( 'iframe' ) ;
blocker.src = FCKTools.GetVoidUrl() ;
blocker.hideFocus = true ;
blocker.frameBorder = 0 ;
blocker.id = blocker.className = 'blocker' ;
cover.appendChild( blocker ) ;
}
else
{
var blocker = $( 'blocker' ) ;
if ( blocker && blocker.parentNode )
blocker.parentNode.removeChild( blocker ) ;
}
}
} ;
})() ;
// ]]>
</script>
</head>
<body onload="LoadInnerDialog();" class="PopupBody">
<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td id="TitleArea" class="PopupTitle PopupTitleBorder">
<body onload="Init();" class="PopupBody">
<div class="contents" id="contents">
<div id="header">
<div id="TitleArea" class="PopupTitle PopupTitleBorder">
<script type="text/javascript">
document.write( sTitle ) ;
// <![CDATA[
document.write( Args().Title ) ;
// ]]>
</script>
</td>
</tr>
<tr id="TabsRow" style="DISPLAY: none">
<td class="PopupTabArea">
<div id="closeButton" onclick="Cancel();"></div>
</div>
<div id="TabsRow" class="PopupTabArea" style="display: none">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr id="Tabs" onselectstart="return false;">
<tr id="Tabs">
<td class="PopupTabEmptyArea">&nbsp;</td>
<td class="PopupTabEmptyArea" width="100%">&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="FrameCell" height="100%" valign="top">
<iframe id="frmMain" src="fckblank.html" name="frmMain" frameborder="0" height="100%" width="100%" scrolling="auto">
</iframe>
</td>
</tr>
<tr>
<td class="PopupButtons">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="100%">&nbsp;</td>
<td nowrap="nowrap">
<input id="btnOk" style="VISIBILITY: hidden; WIDTH: 100px" type="button" value="Ok" class="Button"
onclick="Ok();" fckLang="DlgBtnOK" />&nbsp; <input type="button" value="Cancel" class="Button" onclick="Cancel();" fckLang="DlgBtnCancel" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</div>
<div id="innerContents"></div>
<div id="PopupButtons" class="PopupButtons">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="100%">&nbsp;</td>
<td nowrap="nowrap">
<input id="btnOk" style="visibility: hidden;" type="button" value="Ok" class="Button" onclick="Ok();" fckLang="DlgBtnOK" />
&nbsp;
<input id="btnCancel" type="button" value="Cancel" class="Button" onclick="Cancel();" fckLang="DlgBtnCancel" />
</td>
</tr>
</table>
</div>
</div>
<div class="tl"></div>
<div class="tc"></div>
<div class="tr"></div>
<div class="ml"></div>
<div class="mr"></div>
<div class="bl"></div>
<div class="bc"></div>
<div class="br"></div>
<div class="cover" id="cover" style="display:none"></div>
<div id="throbberBlock" style="position: absolute; visibility: hidden"></div>
<script type="text/javascript">
// <![CDATA[
// Set the class name for language direction.
document.body.className += ' ' + langDir ;
 
var cover = $( 'cover' ) ;
cover.style.backgroundColor = FCKConfig.BackgroundBlockerColor ;
FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
// ]]>
</script>
</body>
</html>
</html>