[ Index ] |
PHP Cross Reference of osCMax 2.0.4 |
[Summary view] [Print] [Text view]
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"> </td> 772 <td class="PopupTabEmptyArea" width="100%"> </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%"> </td> 782 <td nowrap="nowrap"> 783 <input id="btnOk" style="visibility: hidden;" type="button" value="Ok" class="Button" onclick="Ok();" fckLang="DlgBtnOK" /> 784 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>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Jan 1 13:43:16 2010 | Cross-referenced by PHPXref 0.7 |