Вход Регистрация
Файл: fckeditor/editor/fckdialog.html
Строк: 981
<?php
<!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 - 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[

// Domain relaxation logic.
(function()
{
    var 
d = document.domain ;

    while ( 
true )
    {
        
// Test if we can access a parent property.
        
try
        {
            var 
parentDomain = ( Args().TopWindow || E ).document.domain ;

            if ( 
document.domain != parentDomain )
                
document.domain = parentDomain ;

            break ;
        }
        catch( 
e ) {}

        
// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
        
d = d.replace( /.*?(?:.|$)/, '' ) ;

        if ( 
d.length == 0 )
            break ;        
// It was not able to detect the domain.

        
document.domain = d ;
    }
})() ;

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 
ParentDialog( dialog )
{
    return 
dialog ? dialog._ParentDialog : frameElement._ParentDialog ;
}

var 
FCK                = E.FCK ;
var 
FCKTools        = E.FCKTools ;
var 
FCKDomTools        = E.FCKDomTools ;
var 
FCKDialog        = E.FCKDialog ;
var 
FCKBrowserInfo    = E.FCKBrowserInfo ;
var 
FCKConfig        = E.FCKConfig ;

// Steal the focus so that the caret would no longer stay in the editor iframe.
window.focus() ;

// Sets the Skin CSS
document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;

// Sets the language direction.
var langDir = document.documentElement.dir = E.FCKLang.Dir ;

// 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>' ) ;

FCKTools.RegisterDollarFunction( window ) ;

// Resize related functions.
var Sizer = function()
{
    var 
bAutoSize = false ;

    var 
retval = {
        
// Sets whether the dialog should auto-resize according to its content's height.
        
SetAutoSize : function( autoSize )
        {
            
bAutoSize = autoSize ;
            
this.RefreshSize() ;
        },

        
// Fit the dialog container's layout to the inner iframe's external size.
        
RefreshContainerSize : function()
        {
            var 
frmMain = $( 'frmMain' ) ;

            if ( 
frmMain )
            {
                
// Get the container size.
                
var height = $( 'contents' ).offsetHeight ;

                
// Subtract the size of other elements.
                
height -= $( 'TitleArea' ).offsetHeight ;
                
height -= $( 'TabsRow' ).offsetHeight ;
                
height -= $( 'PopupButtons' ).offsetHeight ;

                
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 )
        {
            
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() ;
        }
    }

    
/**
     * 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 ;

        
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 )
    {
        var 
originalRefreshContainerSize = retval.RefreshContainerSize ;
        
retval.RefreshContainerSize = function()
        {
            
FCKTools.SetTimeout( originalRefreshContainerSize, 1, retval ) ;
        }
    }

    
window.onresize = function()
    {
        
retval.RefreshContainerSize() ;
    }

    
window.SetAutoSize = FCKTools.Bind( retval, retval.SetAutoSize ) ;

    return 
retval ;
}() ;

// Manages the throbber image that appears if the inner part of dialog is taking too long to load.
var Throbber = function()
{
    var 
timer ;

    var 
updateThrobber = function()
    {
        var 
throbberParent = $( 'throbberBlock' ) ;
        var 
throbberBlocks = throbberParent.childNodes ;
        var 
lastClass = throbberParent.lastChild.className ;

        
// 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 ;

        
// For the first one, copy the last class (rotation).
        
throbberBlocks[0].className = lastClass ;
    }

    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 ;
            }

            var 
throbberParent = $( 'throbberBlock' ) ;

            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() ;
            }

            
// 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' ;

            
// Show it.
            
throbberParent.style.visibility = ''  ;

            
// Hide tabs and buttons:
            
$( 'Tabs' ).style.visibility = 'hidden' ;
            $( 
'PopupButtons' ).style.visibility = 'hidden' ;

            
// Setup the animation interval.
            
timer = setInterval( updateThrobber, 100 ) ;
        },

        
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()
{
    var 
registeredWindows = [] ;
    var 
lastCoords ;
    var 
currentPos ;

    var 
cleanUpHandlers = function()
    {
        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
            
evt.returnValue = false ;
    }

    var 
dragMouseUpHandler = function( evt )
    {
        if ( !
lastCoords )
            return ;
        if ( !
evt )
            
evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
        
cleanUpHandlers() ;
        
lastCoords = null ;
    }

    return {

        
MouseDownHandler : function( evt )
        {
            var 
view = null ;
            if ( !
evt )
            {
                
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() ;
    }
}

// Tab related functions.
var Tabs = function()
{
    
// 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 )
    {
        for ( var 
sCode in oTabs )
        {
            if ( 
sCode == tabCode )
                $( 
oTabs[sCode] ).className = 'PopupTabSelected' ;
            else
                $( 
oTabs[sCode] ).className = 'PopupTab' ;
        }

        if ( 
typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
            
window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
    }

    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 ( 
this.readyState != 'complete' )
        return ;
    
DragAndDrop.RegisterHandlers( this.contentWindow ) ;
} ;

// 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() ;
    } ;

    var 
disableContextMenu = function( targetDocument )
    {
        if ( 
FCKBrowserInfo.IsIE )
            return ;

        
targetDocument.addEventListener( 'contextmenu', contextMenuBlocker, true ) ;
    } ;

    
// Program entry point.
    
window.Init = function()
    {
        
// Start the throbber timer.
        
Throbber.Show( 1000 ) ;

        
Sizer.RefreshContainerSize() ;
        
LoadInnerDialog() ;

        
FCKTools.DisableSelection( document.body ) ;

        
// 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()
    {
        if ( 
window.onresize )
            
window.onresize() ;

        
// First of all, translate the dialog box contents.
        
E.FCKLanguageManager.TranslatePage( document ) ;

        
// 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>' ;
    } ;

    
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="Init();" class="PopupBody">
        <
div class="contents" id="contents">
            <
div id="header">
                <
div id="TitleArea" class="PopupTitle PopupTitleBorder">
                    <
script type="text/javascript">
// <![CDATA[
document.write( Args().Title ) ;
// ]]>
                    
</script>
                    <
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">
                            <
td class="PopupTabEmptyArea">&nbsp;</td>
                            <
td class="PopupTabEmptyArea" width="100%">&nbsp;</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>
?>
Онлайн: 2
Реклама