[ Index ]

PHP Cross Reference of osCMax 2.0.4

title

Body

[close]

/FCKeditor/editor/ -> fckdialog.html (source)

   1  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   2  <!--
   3   * FCKeditor - The text editor for Internet - http://www.fckeditor.net
   4   * Copyright (C) 2003-2008 Frederico Caldeira Knabben
   5   *
   6   * == BEGIN LICENSE ==
   7   *
   8   * Licensed under the terms of any of the following licenses at your
   9   * choice:
  10   *
  11   *  - GNU General Public License Version 2 or later (the "GPL")
  12   *    http://www.gnu.org/licenses/gpl.html
  13   *
  14   *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  15   *    http://www.gnu.org/licenses/lgpl.html
  16   *
  17   *  - Mozilla Public License Version 1.1 or later (the "MPL")
  18   *    http://www.mozilla.org/MPL/MPL-1.1.html
  19   *
  20   * == END LICENSE ==
  21   *
  22   * This page is used by all dialog box as the container.
  23  -->
  24  <html xmlns="http://www.w3.org/1999/xhtml">
  25      <head>
  26          <title></title>
  27          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  28          <meta name="robots" content="noindex, nofollow" />
  29          <script type="text/javascript">
  30  // <![CDATA[

  31  
  32  // Domain relaxation logic.

  33  (function()
  34  {
  35      var d = document.domain ;
  36  
  37      while ( true )
  38      {
  39          // Test if we can access a parent property.

  40          try
  41          {
  42              var parentDomain = ( Args().TopWindow || E ).document.domain ;
  43  
  44              if ( document.domain != parentDomain )
  45                  document.domain = parentDomain ;
  46  
  47              break ;
  48          }
  49          catch( e ) {}
  50  
  51          // Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...

  52          d = d.replace( /.*?(?:\.|$)/, '' ) ;
  53  
  54          if ( d.length == 0 )
  55              break ;        // It was not able to detect the domain.

  56  
  57          document.domain = d ;
  58      }
  59  })() ;
  60  
  61  var E = frameElement._DialogArguments.Editor ;
  62  
  63  // It seems referencing to frameElement._DialogArguments directly would lead to memory leaks in IE.

  64  // So let's use functions to access its members instead.

  65  function Args()
  66  {
  67      return frameElement._DialogArguments ;
  68  }
  69  
  70  function ParentDialog( dialog )
  71  {
  72      return dialog ? dialog._ParentDialog : frameElement._ParentDialog ;
  73  }
  74  
  75  var FCK                = E.FCK ;
  76  var FCKTools        = E.FCKTools ;
  77  var FCKDomTools        = E.FCKDomTools ;
  78  var FCKDialog        = E.FCKDialog ;
  79  var FCKBrowserInfo    = E.FCKBrowserInfo ;
  80  var FCKConfig        = E.FCKConfig ;
  81  
  82  // Steal the focus so that the caret would no longer stay in the editor iframe.

  83  window.focus() ;
  84  
  85  // Sets the Skin CSS

  86  document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
  87  
  88  // Sets the language direction.

  89  var langDir = document.documentElement.dir = E.FCKLang.Dir ;
  90  
  91  // For IE6-, the fck_dialog_ie6.js is loaded, used to fix limitations in the browser.

  92  if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
  93      document.write( '<' + 'script type="text/javascript" src="' + FCKConfig.SkinPath + 'fck_dialog_ie6.js"><' + '\/script>' ) ;
  94  
  95  FCKTools.RegisterDollarFunction( window ) ;
  96  
  97  // Resize related functions.

  98  var Sizer = function()
  99  {
 100      var bAutoSize = false ;
 101  
 102      var retval = {
 103          // Sets whether the dialog should auto-resize according to its content's height.

 104          SetAutoSize : function( autoSize )
 105          {
 106              bAutoSize = autoSize ;
 107              this.RefreshSize() ;
 108          },
 109  
 110          // Fit the dialog container's layout to the inner iframe's external size.

 111          RefreshContainerSize : function()
 112          {
 113              var frmMain = $( 'frmMain' ) ;
 114  
 115              if ( frmMain )
 116              {
 117                  // Get the container size.

 118                  var height = $( 'contents' ).offsetHeight ;
 119  
 120                  // Subtract the size of other elements.

 121                  height -= $( 'TitleArea' ).offsetHeight ;
 122                  height -= $( 'TabsRow' ).offsetHeight ;
 123                  height -= $( 'PopupButtons' ).offsetHeight ;
 124  
 125                  frmMain.style.height = Math.max( height, 0 ) + 'px' ;
 126              }
 127          },
 128  
 129          // Resize and re-layout the dialog.

 130          // Triggers the onresize event for the layout logic.

 131          ResizeDialog : function( width, height )
 132          {
 133              FCKDomTools.SetElementStyles( window.frameElement,
 134                      {
 135                          'width' : width + 'px',
 136                          'height' : height + 'px'
 137                      } ) ;
 138  
 139              // If the skin have defined a function for resize fixes, call it now.

 140              if ( typeof window.DoResizeFixes == 'function' )
 141                  window.DoResizeFixes() ;
 142          },
 143  
 144          // if bAutoSize is true, automatically fit the dialog size and layout to

 145          // accomodate the inner iframe's internal height.

 146          // if bAutoSize is false, then only the layout logic for the dialog decorations

 147          // is run to accomodate the inner iframe's external height.

 148          RefreshSize : function()
 149          {
 150              if ( bAutoSize )
 151              {
 152                  var frmMain        = $( 'frmMain' ) ;
 153                  var innerDoc    = frmMain.contentWindow.document ;
 154                  var isStrict    = FCKTools.IsStrictMode( innerDoc ) ;
 155  
 156                  // Get the size of the frame contents.

 157                  var innerWidth    = isStrict ? innerDoc.documentElement.scrollWidth : innerDoc.body.scrollWidth ;
 158                  var innerHeight    = isStrict ? innerDoc.documentElement.scrollHeight : innerDoc.body.scrollHeight ;
 159  
 160                  // Get the current frame size.

 161                  var frameSize = FCKTools.GetViewPaneSize( frmMain.contentWindow ) ;
 162  
 163                  var deltaWidth    = innerWidth - frameSize.Width ;
 164                  var deltaHeight    = innerHeight - frameSize.Height ;
 165  
 166                  // If the contents fits the current size.

 167                  if ( deltaWidth <= 0 && deltaHeight <= 0 )
 168                      return ;
 169  
 170                  var dialogWidth        = frameElement.offsetWidth + Math.max( deltaWidth, 0 ) ;
 171                  var dialogHeight    = frameElement.offsetHeight + Math.max( deltaHeight, 0 ) ;
 172  
 173                  this.ResizeDialog( dialogWidth, dialogHeight ) ;
 174              }
 175              this.RefreshContainerSize() ;
 176          }
 177      }
 178  
 179      /**

 180       * Safari seems to have a bug with the time when RefreshSize() is executed - it

 181       * thinks frmMain's innerHeight is 0 if we query the value too soon after the

 182       * page is loaded in some circumstances. (#1316)

 183       * TODO : Maybe this is not needed anymore after #35.

 184       */
 185      if ( FCKBrowserInfo.IsSafari )
 186      {
 187          var originalRefreshSize = retval.RefreshSize ;
 188  
 189          retval.RefreshSize = function()
 190          {
 191              FCKTools.SetTimeout( originalRefreshSize, 1, retval ) ;
 192          }
 193      }
 194  
 195      /**

 196       * IE6 has a similar bug where it sometimes thinks $('contents') has an

 197       * offsetHeight of 0 (#2114).

 198       */
 199      if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
 200      {
 201          var originalRefreshContainerSize = retval.RefreshContainerSize ;
 202          retval.RefreshContainerSize = function()
 203          {
 204              FCKTools.SetTimeout( originalRefreshContainerSize, 1, retval ) ;
 205          }
 206      }
 207  
 208      window.onresize = function()
 209      {
 210          retval.RefreshContainerSize() ;
 211      }
 212  
 213      window.SetAutoSize = FCKTools.Bind( retval, retval.SetAutoSize ) ;
 214  
 215      return retval ;
 216  }() ;
 217  
 218  // Manages the throbber image that appears if the inner part of dialog is taking too long to load.

 219  var Throbber = function()
 220  {
 221      var timer ;
 222  
 223      var updateThrobber = function()
 224      {
 225          var throbberParent = $( 'throbberBlock' ) ;
 226          var throbberBlocks = throbberParent.childNodes ;
 227          var lastClass = throbberParent.lastChild.className ;
 228  
 229          // From the last to the second one, copy the class from the previous one.

 230          for ( var i = throbberBlocks.length - 1 ; i > 0 ; i-- )
 231              throbberBlocks[i].className = throbberBlocks[i-1].className ;
 232  
 233          // For the first one, copy the last class (rotation).

 234          throbberBlocks[0].className = lastClass ;
 235      }
 236  
 237      return {
 238          Show : function( waitMilliseconds )
 239          {
 240              // Auto-setup the Show function to be called again after the

 241              // requested amount of time.

 242              if ( waitMilliseconds && waitMilliseconds > 0 )
 243              {
 244                  timer = FCKTools.SetTimeout( this.Show, waitMilliseconds, this, null, window ) ;
 245                  return ;
 246              }
 247  
 248              var throbberParent = $( 'throbberBlock' ) ;
 249  
 250              if (throbberParent.childNodes.length == 0)
 251              {
 252                  // Create the throbber blocks.

 253                  var classIds = [ 1,2,3,4,5,4,3,2 ] ;
 254                  while ( classIds.length > 0 )
 255                      throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
 256              }
 257  
 258              // Center the throbber.

 259              var frm = $( 'contents' ) ;
 260              var frmCoords = FCKTools.GetDocumentPosition( window, frm ) ;
 261              var x = frmCoords.x + ( frm.offsetWidth - throbberParent.offsetWidth ) / 2 ;
 262              var y = frmCoords.y + ( frm.offsetHeight - throbberParent.offsetHeight ) / 2 ;
 263              throbberParent.style.left = parseInt( x, 10 ) + 'px' ;
 264              throbberParent.style.top = parseInt( y, 10 ) + 'px' ;
 265  
 266              // Show it.

 267              throbberParent.style.visibility = ''  ;
 268  
 269              // Hide tabs and buttons:

 270              $( 'Tabs' ).style.visibility = 'hidden' ;
 271              $( 'PopupButtons' ).style.visibility = 'hidden' ;
 272  
 273              // Setup the animation interval.

 274              timer = setInterval( updateThrobber, 100 ) ;
 275          },
 276  
 277          Hide : function()
 278          {
 279              if ( timer )
 280              {
 281                  clearInterval( timer ) ;
 282                  timer = null ;
 283              }
 284  
 285              $( 'throbberBlock' ).style.visibility = 'hidden' ;
 286  
 287              // Show tabs and buttons:

 288              $( 'Tabs' ).style.visibility = '' ;
 289              $( 'PopupButtons' ).style.visibility = '' ;
 290          }
 291      } ;
 292  }() ;
 293  
 294  // Drag and drop handlers.

 295  var DragAndDrop = function()
 296  {
 297      var registeredWindows = [] ;
 298      var lastCoords ;
 299      var currentPos ;
 300  
 301      var cleanUpHandlers = function()
 302      {
 303          for ( var i = 0 ; i < registeredWindows.length ; i++ )
 304          {
 305              FCKTools.RemoveEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
 306              FCKTools.RemoveEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
 307          }
 308      }
 309  
 310      var dragMouseMoveHandler = function( evt )
 311      {
 312          if ( !lastCoords )
 313              return ;
 314  
 315          if ( !evt )
 316              evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
 317  
 318          // Updated the last coordinates.

 319          var currentCoords =
 320          {
 321              x : evt.screenX,
 322              y : evt.screenY
 323          } ;
 324  
 325          currentPos =
 326          {
 327              x : currentPos.x + ( currentCoords.x - lastCoords.x ),
 328              y : currentPos.y + ( currentCoords.y - lastCoords.y )
 329          } ;
 330  
 331          lastCoords = currentCoords ;
 332  
 333          frameElement.style.left    = currentPos.x + 'px' ;
 334          frameElement.style.top    = currentPos.y + 'px' ;
 335  
 336          if ( evt.preventDefault )
 337              evt.preventDefault() ;
 338          else
 339              evt.returnValue = false ;
 340      }
 341  
 342      var dragMouseUpHandler = function( evt )
 343      {
 344          if ( !lastCoords )
 345              return ;
 346          if ( !evt )
 347              evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
 348          cleanUpHandlers() ;
 349          lastCoords = null ;
 350      }
 351  
 352      return {
 353  
 354          MouseDownHandler : function( evt )
 355          {
 356              var view = null ;
 357              if ( !evt )
 358              {
 359                  view = FCKTools.GetElementDocument( this ).parentWindow ;
 360                  evt = view.event ;
 361              }
 362              else
 363                  view = evt.view ;
 364  
 365              var target = evt.srcElement || evt.target ;
 366              if ( target.id == 'closeButton' || target.className == 'PopupTab' || target.className == 'PopupTabSelected' )
 367                  return ;
 368  
 369              lastCoords =
 370              {
 371                  x : evt.screenX,
 372                  y : evt.screenY
 373              } ;
 374  
 375              // Save the current IFRAME position.

 376              currentPos =
 377              {
 378                  x : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'left' ), 10 ),
 379                  y : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'top' ), 10 )
 380              } ;
 381  
 382              for ( var i = 0 ; i < registeredWindows.length ; i++ )
 383              {
 384                  FCKTools.AddEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
 385                  FCKTools.AddEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
 386              }
 387  
 388              if ( evt.preventDefault )
 389                  evt.preventDefault() ;
 390              else
 391                  evt.returnValue = false ;
 392          },
 393  
 394          RegisterHandlers : function( w )
 395          {
 396              registeredWindows.push( w ) ;
 397          }
 398      }
 399  }() ;
 400  
 401  // Selection related functions.

 402  //(Became simple shortcuts after the fix for #1990)

 403  var Selection =
 404  {
 405      /**

 406       * Ensures that the editing area contains an active selection. This is a

 407       * requirement for IE, as it looses the selection when the focus moves to other

 408       * frames.

 409       */
 410      EnsureSelection : function()
 411      {
 412          FCK.Selection.Restore() ;
 413      },
 414  
 415      /**

 416       * Get the FCKSelection object for the editor instance.

 417       */
 418      GetSelection : function()
 419      {
 420          return FCK.Selection ;
 421      },
 422  
 423      /**

 424       * Get the selected element in the editing area (for object selections).

 425       */
 426      GetSelectedElement : function()
 427      {
 428          return FCK.Selection.GetSelectedElement() ;
 429      }
 430  }
 431  
 432  // Tab related functions.

 433  var Tabs = function()
 434  {
 435      // Only element ids should be stored here instead of element references since setSelectedTab and TabDiv_OnClick

 436      // would build circular references with the element references inside and cause memory leaks in IE6.

 437      var oTabs = new Object() ;
 438  
 439      var setSelectedTab = function( tabCode )
 440      {
 441          for ( var sCode in oTabs )
 442          {
 443              if ( sCode == tabCode )
 444                  $( oTabs[sCode] ).className = 'PopupTabSelected' ;
 445              else
 446                  $( oTabs[sCode] ).className = 'PopupTab' ;
 447          }
 448  
 449          if ( typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
 450              window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
 451      }
 452  
 453  	function TabDiv_OnClick()
 454      {
 455          setSelectedTab( this.TabCode ) ;
 456      }
 457  
 458      window.AddTab = function( tabCode, tabText, startHidden )
 459      {
 460          if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
 461              return ;
 462  
 463          var eTabsRow = $( 'Tabs' ) ;
 464  
 465          var oCell = eTabsRow.insertCell(  eTabsRow.cells.length - 1 ) ;
 466          oCell.noWrap = true ;
 467  
 468          var oDiv = document.createElement( 'DIV' ) ;
 469          oDiv.className = 'PopupTab' ;
 470          oDiv.innerHTML = tabText ;
 471          oDiv.TabCode = tabCode ;
 472          oDiv.onclick = TabDiv_OnClick ;
 473          oDiv.id = Math.random() ;
 474  
 475          if ( startHidden )
 476              oDiv.style.display = 'none' ;
 477  
 478          eTabsRow = $( 'TabsRow' ) ;
 479  
 480          oCell.appendChild( oDiv ) ;
 481  
 482          if ( eTabsRow.style.display == 'none' )
 483          {
 484              var eTitleArea = $( 'TitleArea' ) ;
 485              eTitleArea.className = 'PopupTitle' ;
 486  
 487              oDiv.className = 'PopupTabSelected' ;
 488              eTabsRow.style.display = '' ;
 489  
 490              if ( window.onresize )
 491                  window.onresize() ;
 492          }
 493  
 494          oTabs[ tabCode ] = oDiv.id ;
 495  
 496          FCKTools.DisableSelection( oDiv ) ;
 497      } ;
 498  
 499      window.SetSelectedTab = setSelectedTab ;
 500  
 501      window.SetTabVisibility = function( tabCode, isVisible )
 502      {
 503          var oTab = $( oTabs[ tabCode ] ) ;
 504          oTab.style.display = isVisible ? '' : 'none' ;
 505  
 506          if ( ! isVisible && oTab.className == 'PopupTabSelected' )
 507          {
 508              for ( var sCode in oTabs )
 509              {
 510                  if ( $( oTabs[sCode] ).style.display != 'none' )
 511                  {
 512                      setSelectedTab( sCode ) ;
 513                      break ;
 514                  }
 515              }
 516          }
 517      } ;
 518  }() ;
 519  
 520  // readystatechange handler for registering drag and drop handlers in cover

 521  // iframes, defined out here to avoid memory leak.

 522  // Do NOT put this function as a private function as it will induce memory leak

 523  // in IE and it's not detectable with Drip or sIEve and undetectable leaks are

 524  // really nasty (sigh).

 525  var onReadyRegister = function()
 526  {
 527      if ( this.readyState != 'complete' )
 528          return ;
 529      DragAndDrop.RegisterHandlers( this.contentWindow ) ;
 530  } ;
 531  
 532  // The business logic of the dialog, dealing with operational things like

 533  // dialog open/dialog close/enable/disable/etc.

 534  (function()
 535  {
 536      var setOnKeyDown = function( targetDocument )
 537      {
 538          targetDocument.onkeydown = function ( e )
 539          {
 540              e = e || event || this.parentWindow.event ;
 541              switch ( e.keyCode )
 542              {
 543                  case 13 :        // ENTER
 544                      var oTarget = e.srcElement || e.target ;
 545                      if ( oTarget.tagName == 'TEXTAREA' )
 546                          return true ;
 547                      Ok() ;
 548                      return false ;
 549  
 550                  case 27 :        // ESC
 551                      Cancel() ;
 552                      return false ;
 553              }
 554              return true ;
 555          }
 556      } ;
 557  
 558      var contextMenuBlocker = function( e )
 559      {
 560          var sTagName = e.target.tagName ;
 561          if ( ! ( ( sTagName == "INPUT" && e.target.type == "text" ) || sTagName == "TEXTAREA" ) )
 562              e.preventDefault() ;
 563      } ;
 564  
 565      var disableContextMenu = function( targetDocument )
 566      {
 567          if ( FCKBrowserInfo.IsIE )
 568              return ;
 569  
 570          targetDocument.addEventListener( 'contextmenu', contextMenuBlocker, true ) ;
 571      } ;
 572  
 573      // Program entry point.

 574      window.Init = function()
 575      {
 576          // Start the throbber timer.

 577          Throbber.Show( 1000 ) ;
 578  
 579          Sizer.RefreshContainerSize() ;
 580          LoadInnerDialog() ;
 581  
 582          FCKTools.DisableSelection( document.body ) ;
 583  
 584          // Make the title area draggable.

 585          var titleElement = $( 'header' ) ;
 586          titleElement.onmousedown = DragAndDrop.MouseDownHandler ;
 587  
 588          // Connect mousemove and mouseup events from dialog frame and outer window to dialog dragging logic.

 589          DragAndDrop.RegisterHandlers( window ) ;
 590          DragAndDrop.RegisterHandlers( Args().TopWindow ) ;
 591  
 592          // Disable the previous dialog if it exists.

 593          if ( ParentDialog() )
 594          {
 595              ParentDialog().contentWindow.SetEnabled( false ) ;
 596              if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
 597              {
 598                  var currentParent = ParentDialog() ;
 599                  while ( currentParent )
 600                  {
 601                      var blockerFrame = currentParent.contentWindow.$( 'blocker' ) ;
 602                      if ( blockerFrame.readyState == 'complete' )
 603                          DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
 604                      else
 605                          blockerFrame.onreadystatechange = onReadyRegister ;
 606                      currentParent = ParentDialog( currentParent ) ;
 607                  }
 608              }
 609              else
 610              {
 611                  var currentParent = ParentDialog() ;
 612                  while ( currentParent )
 613                  {
 614                      DragAndDrop.RegisterHandlers( currentParent.contentWindow ) ;
 615                      currentParent = ParentDialog( currentParent ) ;
 616                  }
 617              }
 618          }
 619  
 620          // If this is the only dialog on screen, enable the background cover.

 621          if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
 622          {
 623              var blockerFrame = FCKDialog.GetCover().firstChild ;
 624              if ( blockerFrame.readyState == 'complete' )
 625                  DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
 626              else
 627                  blockerFrame.onreadystatechange = onReadyRegister;
 628          }
 629  
 630          // Add Enter/Esc hotkeys and disable context menu for the dialog.

 631          setOnKeyDown( document ) ;
 632          disableContextMenu( document ) ;
 633      } ;
 634  
 635      window.LoadInnerDialog = function()
 636      {
 637          if ( window.onresize )
 638              window.onresize() ;
 639  
 640          // First of all, translate the dialog box contents.

 641          E.FCKLanguageManager.TranslatePage( document ) ;
 642  
 643          // Create the IFRAME that holds the dialog contents.

 644          $( 'innerContents' ).innerHTML = '<iframe id="frmMain" src="' + Args().Page + '" name="frmMain" frameborder="0" width="100%" height="100%" scrolling="auto" style="visibility: hidden;" allowtransparency="true"><\/iframe>' ;
 645      } ;
 646  
 647      window.InnerDialogLoaded = function()
 648      {
 649          // If the dialog has been closed before the iframe is loaded, do nothing.

 650          if ( !frameElement.parentNode )
 651              return null ;
 652  
 653          Throbber.Hide() ;
 654  
 655          var frmMain = $('frmMain') ;
 656          var innerWindow = frmMain.contentWindow ;
 657          var innerDoc = innerWindow.document ;
 658  
 659          // Show the loaded iframe.

 660          frmMain.style.visibility = '' ;
 661  
 662          // Set the language direction.

 663          innerDoc.documentElement.dir = langDir ;
 664  
 665          // Sets the Skin CSS.

 666          innerDoc.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
 667  
 668          setOnKeyDown( innerDoc ) ;
 669          disableContextMenu( innerDoc ) ;
 670  
 671          Sizer.RefreshContainerSize();
 672  
 673          DragAndDrop.RegisterHandlers( innerWindow ) ;
 674  
 675          innerWindow.focus() ;
 676  
 677          return E ;
 678      } ;
 679  
 680      window.SetOkButton = function( showIt )
 681      {
 682          $('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
 683      } ;
 684  
 685      window.Ok = function()
 686      {
 687          Selection.EnsureSelection() ;
 688  
 689          var frmMain = window.frames["frmMain"] ;
 690  
 691          if ( frmMain.Ok && frmMain.Ok() )
 692              CloseDialog() ;
 693          else
 694              frmMain.focus() ;
 695      } ;
 696  
 697      window.Cancel = function( dontFireChange )
 698      {
 699          Selection.EnsureSelection() ;
 700          return CloseDialog( dontFireChange ) ;
 701      } ;
 702  
 703      window.CloseDialog = function( dontFireChange )
 704      {
 705          Throbber.Hide() ;
 706  
 707          // Points the src to a non-existent location to avoid loading errors later, in case the dialog

 708          // haven't been completed loaded at this point.

 709          if ( $( 'frmMain' ) )
 710              $( 'frmMain' ).src = FCKTools.GetVoidUrl() ;
 711  
 712          if ( !dontFireChange && !FCK.EditMode )
 713          {
 714              // All dialog windows, by default, will fire the "OnSelectionChange"

 715              // event, no matter the Ok or Cancel button has been pressed.

 716              // It seems that OnSelectionChange may enter on a concurrency state

 717              // on some situations (#1965), so we should put the event firing in

 718              // the execution queue instead of executing it immediately.

 719              setTimeout( function()
 720                  {
 721                      FCK.Events.FireEvent( 'OnSelectionChange' ) ;
 722                  }, 0 ) ;
 723          }
 724  
 725          FCKDialog.OnDialogClose( window ) ;
 726      } ;
 727  
 728      window.SetEnabled = function( isEnabled )
 729      {
 730          var cover = $( 'cover' ) ;
 731          cover.style.display = isEnabled ? 'none' : '' ;
 732  
 733          if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
 734          {
 735              if ( !isEnabled )
 736              {
 737                  // Inser the blocker IFRAME before the cover.

 738                  var blocker = document.createElement( 'iframe' ) ;
 739                  blocker.src = FCKTools.GetVoidUrl() ;
 740                  blocker.hideFocus = true ;
 741                  blocker.frameBorder = 0 ;
 742                  blocker.id = blocker.className = 'blocker' ;
 743                  cover.appendChild( blocker ) ;
 744              }
 745              else
 746              {
 747                  var blocker = $( 'blocker' ) ;
 748                  if ( blocker && blocker.parentNode )
 749                      blocker.parentNode.removeChild( blocker ) ;
 750              }
 751          }
 752      } ;
 753  })() ;
 754  // ]]>

 755          </script>
 756      </head>
 757      <body onload="Init();" class="PopupBody">
 758          <div class="contents" id="contents">
 759              <div id="header">
 760                  <div id="TitleArea" class="PopupTitle PopupTitleBorder">
 761                      <script type="text/javascript">
 762  // <![CDATA[

 763  document.write( Args().Title ) ;
 764  // ]]>

 765                      </script>
 766                      <div id="closeButton" onclick="Cancel();"></div>
 767                  </div>
 768                  <div id="TabsRow" class="PopupTabArea" style="display: none">
 769                      <table border="0" cellpadding="0" cellspacing="0" width="100%">
 770                          <tr id="Tabs">
 771                              <td class="PopupTabEmptyArea">&nbsp;</td>
 772                              <td class="PopupTabEmptyArea" width="100%">&nbsp;</td>
 773                          </tr>
 774                      </table>
 775                  </div>
 776              </div>
 777              <div id="innerContents"></div>
 778              <div id="PopupButtons" class="PopupButtons">
 779                  <table border="0" cellpadding="0" cellspacing="0">
 780                      <tr>
 781                          <td width="100%">&nbsp;</td>
 782                          <td nowrap="nowrap">
 783                              <input id="btnOk" style="visibility: hidden;" type="button" value="Ok" class="Button" onclick="Ok();" fckLang="DlgBtnOK" />
 784                              &nbsp;
 785                              <input id="btnCancel" type="button" value="Cancel" class="Button" onclick="Cancel();" fckLang="DlgBtnCancel" />
 786                          </td>
 787                      </tr>
 788                  </table>
 789              </div>
 790          </div>
 791          <div class="tl"></div>
 792          <div class="tc"></div>
 793          <div class="tr"></div>
 794          <div class="ml"></div>
 795          <div class="mr"></div>
 796          <div class="bl"></div>
 797          <div class="bc"></div>
 798          <div class="br"></div>
 799          <div class="cover" id="cover" style="display:none"></div>
 800          <div id="throbberBlock" style="position: absolute; visibility: hidden"></div>
 801          <script type="text/javascript">
 802  // <![CDATA[

 803              // Set the class name for language direction.

 804              document.body.className += ' ' + langDir ;
 805  
 806              var cover = $( 'cover' ) ;
 807              cover.style.backgroundColor = FCKConfig.BackgroundBlockerColor ;
 808              FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
 809  // ]]>

 810          </script>
 811      </body>
 812  </html>


Generated: Fri Jan 1 13:43:16 2010 Cross-referenced by PHPXref 0.7