JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-4.0_full
[ckeditor.git] / _source / plugins / image / dialogs / image.js
diff --git a/_source/plugins/image/dialogs/image.js b/_source/plugins/image/dialogs/image.js
deleted file mode 100644 (file)
index 3c24d2f..0000000
+++ /dev/null
@@ -1,1402 +0,0 @@
-/*\r
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\r
-For licensing, see LICENSE.html or http://ckeditor.com/license\r
-*/\r
-\r
-(function()\r
-{\r
-       var imageDialog = function( editor, dialogType )\r
-       {\r
-               // Load image preview.\r
-               var IMAGE = 1,\r
-                       LINK = 2,\r
-                       PREVIEW = 4,\r
-                       CLEANUP = 8,\r
-                       regexGetSize = /^\s*(\d+)((px)|\%)?\s*$/i,\r
-                       regexGetSizeOrEmpty = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i,\r
-                       pxLengthRegex = /^\d+px$/;\r
-\r
-               var onSizeChange = function()\r
-               {\r
-                       var value = this.getValue(),    // This = input element.\r
-                               dialog = this.getDialog(),\r
-                               aMatch  =  value.match( regexGetSize ); // Check value\r
-                       if ( aMatch )\r
-                       {\r
-                               if ( aMatch[2] == '%' )                 // % is allowed - > unlock ratio.\r
-                                       switchLockRatio( dialog, false );       // Unlock.\r
-                               value = aMatch[1];\r
-                       }\r
-\r
-                       // Only if ratio is locked\r
-                       if ( dialog.lockRatio )\r
-                       {\r
-                               var oImageOriginal = dialog.originalElement;\r
-                               if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )\r
-                               {\r
-                                       if ( this.id == 'txtHeight' )\r
-                                       {\r
-                                               if ( value && value != '0' )\r
-                                                       value = Math.round( oImageOriginal.$.width * ( value  / oImageOriginal.$.height ) );\r
-                                               if ( !isNaN( value ) )\r
-                                                       dialog.setValueOf( 'info', 'txtWidth', value );\r
-                                       }\r
-                                       else            //this.id = txtWidth.\r
-                                       {\r
-                                               if ( value && value != '0' )\r
-                                                       value = Math.round( oImageOriginal.$.height * ( value  / oImageOriginal.$.width ) );\r
-                                               if ( !isNaN( value ) )\r
-                                                       dialog.setValueOf( 'info', 'txtHeight', value );\r
-                                       }\r
-                               }\r
-                       }\r
-                       updatePreview( dialog );\r
-               };\r
-\r
-               var updatePreview = function( dialog )\r
-               {\r
-                       //Don't load before onShow.\r
-                       if ( !dialog.originalElement || !dialog.preview )\r
-                               return 1;\r
-\r
-                       // Read attributes and update imagePreview;\r
-                       dialog.commitContent( PREVIEW, dialog.preview );\r
-                       return 0;\r
-               };\r
-\r
-               // Custom commit dialog logic, where we're intended to give inline style\r
-               // field (txtdlgGenStyle) higher priority to avoid overwriting styles contribute\r
-               // by other fields.\r
-               function commitContent()\r
-               {\r
-                       var args = arguments;\r
-                       var inlineStyleField = this.getContentElement( 'advanced', 'txtdlgGenStyle' );\r
-                       inlineStyleField && inlineStyleField.commit.apply( inlineStyleField, args );\r
-\r
-                       this.foreach( function( widget )\r
-                       {\r
-                               if ( widget.commit &&  widget.id != 'txtdlgGenStyle' )\r
-                                       widget.commit.apply( widget, args );\r
-                       });\r
-               }\r
-\r
-               // Avoid recursions.\r
-               var incommit;\r
-\r
-               // Synchronous field values to other impacted fields is required, e.g. border\r
-               // size change should alter inline-style text as well.\r
-               function commitInternally( targetFields )\r
-               {\r
-                       if ( incommit )\r
-                               return;\r
-\r
-                       incommit = 1;\r
-\r
-                       var dialog = this.getDialog(),\r
-                               element = dialog.imageElement;\r
-                       if ( element )\r
-                       {\r
-                               // Commit this field and broadcast to target fields.\r
-                               this.commit( IMAGE, element );\r
-\r
-                               targetFields = [].concat( targetFields );\r
-                               var length = targetFields.length,\r
-                                       field;\r
-                               for ( var i = 0; i < length; i++ )\r
-                               {\r
-                                       field = dialog.getContentElement.apply( dialog, targetFields[ i ].split( ':' ) );\r
-                                       // May cause recursion.\r
-                                       field && field.setup( IMAGE, element );\r
-                               }\r
-                       }\r
-\r
-                       incommit = 0;\r
-               }\r
-\r
-               var switchLockRatio = function( dialog, value )\r
-               {\r
-                       if ( !dialog.getContentElement( 'info', 'ratioLock' ) )\r
-                               return null;\r
-\r
-                       var oImageOriginal = dialog.originalElement;\r
-\r
-                       // Dialog may already closed. (#5505)\r
-                       if( !oImageOriginal )\r
-                               return null;\r
-\r
-                       // Check image ratio and original image ratio, but respecting user's preference.\r
-                       if ( value == 'check' )\r
-                       {\r
-                               if ( !dialog.userlockRatio && oImageOriginal.getCustomData( 'isReady' ) == 'true'  )\r
-                               {\r
-                                       var width = dialog.getValueOf( 'info', 'txtWidth' ),\r
-                                               height = dialog.getValueOf( 'info', 'txtHeight' ),\r
-                                               originalRatio = oImageOriginal.$.width * 1000 / oImageOriginal.$.height,\r
-                                               thisRatio = width * 1000 / height;\r
-                                       dialog.lockRatio  = false;              // Default: unlock ratio\r
-\r
-                                       if ( !width && !height )\r
-                                               dialog.lockRatio = true;\r
-                                       else if ( !isNaN( originalRatio ) && !isNaN( thisRatio ) )\r
-                                       {\r
-                                               if ( Math.round( originalRatio ) == Math.round( thisRatio ) )\r
-                                                       dialog.lockRatio = true;\r
-                                       }\r
-                               }\r
-                       }\r
-                       else if ( value != undefined )\r
-                               dialog.lockRatio = value;\r
-                       else\r
-                       {\r
-                               dialog.userlockRatio = 1;\r
-                               dialog.lockRatio = !dialog.lockRatio;\r
-                       }\r
-\r
-                       var ratioButton = CKEDITOR.document.getById( btnLockSizesId );\r
-                       if ( dialog.lockRatio )\r
-                               ratioButton.removeClass( 'cke_btn_unlocked' );\r
-                       else\r
-                               ratioButton.addClass( 'cke_btn_unlocked' );\r
-\r
-                       ratioButton.setAttribute( 'aria-checked', dialog.lockRatio );\r
-\r
-                       // Ratio button hc presentation - WHITE SQUARE / BLACK SQUARE\r
-                       if ( CKEDITOR.env.hc )\r
-                       {\r
-                               var icon = ratioButton.getChild( 0 );\r
-                               icon.setHtml(  dialog.lockRatio ? CKEDITOR.env.ie ? '\u25A0': '\u25A3' : CKEDITOR.env.ie ? '\u25A1' : '\u25A2' );\r
-                       }\r
-\r
-                       return dialog.lockRatio;\r
-               };\r
-\r
-               var resetSize = function( dialog )\r
-               {\r
-                       var oImageOriginal = dialog.originalElement;\r
-                       if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )\r
-                       {\r
-                               var widthField = dialog.getContentElement( 'info', 'txtWidth' ),\r
-                                       heightField = dialog.getContentElement( 'info', 'txtHeight' );\r
-                               widthField && widthField.setValue( oImageOriginal.$.width );\r
-                               heightField && heightField.setValue( oImageOriginal.$.height );\r
-                       }\r
-                       updatePreview( dialog );\r
-               };\r
-\r
-               var setupDimension = function( type, element )\r
-               {\r
-                       if ( type != IMAGE )\r
-                               return;\r
-\r
-                       function checkDimension( size, defaultValue )\r
-                       {\r
-                               var aMatch  =  size.match( regexGetSize );\r
-                               if ( aMatch )\r
-                               {\r
-                                       if ( aMatch[2] == '%' )                         // % is allowed.\r
-                                       {\r
-                                               aMatch[1] += '%';\r
-                                               switchLockRatio( dialog, false );       // Unlock ratio\r
-                                       }\r
-                                       return aMatch[1];\r
-                               }\r
-                               return defaultValue;\r
-                       }\r
-\r
-                       var dialog = this.getDialog(),\r
-                               value = '',\r
-                               dimension = this.id == 'txtWidth' ? 'width' : 'height',\r
-                               size = element.getAttribute( dimension );\r
-\r
-                       if ( size )\r
-                               value = checkDimension( size, value );\r
-                       value = checkDimension( element.getStyle( dimension ), value );\r
-\r
-                       this.setValue( value );\r
-               };\r
-\r
-               var previewPreloader;\r
-\r
-               var onImgLoadEvent = function()\r
-               {\r
-                       // Image is ready.\r
-                       var original = this.originalElement;\r
-                       original.setCustomData( 'isReady', 'true' );\r
-                       original.removeListener( 'load', onImgLoadEvent );\r
-                       original.removeListener( 'error', onImgLoadErrorEvent );\r
-                       original.removeListener( 'abort', onImgLoadErrorEvent );\r
-\r
-                       // Hide loader\r
-                       CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );\r
-\r
-                       // New image -> new domensions\r
-                       if ( !this.dontResetSize )\r
-                               resetSize( this );\r
-\r
-                       if ( this.firstLoad )\r
-                               CKEDITOR.tools.setTimeout( function(){ switchLockRatio( this, 'check' ); }, 0, this );\r
-\r
-                       this.firstLoad = false;\r
-                       this.dontResetSize = false;\r
-               };\r
-\r
-               var onImgLoadErrorEvent = function()\r
-               {\r
-                       // Error. Image is not loaded.\r
-                       var original = this.originalElement;\r
-                       original.removeListener( 'load', onImgLoadEvent );\r
-                       original.removeListener( 'error', onImgLoadErrorEvent );\r
-                       original.removeListener( 'abort', onImgLoadErrorEvent );\r
-\r
-                       // Set Error image.\r
-                       var noimage = CKEDITOR.getUrl( editor.skinPath + 'images/noimage.png' );\r
-\r
-                       if ( this.preview )\r
-                               this.preview.setAttribute( 'src', noimage );\r
-\r
-                       // Hide loader\r
-                       CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );\r
-                       switchLockRatio( this, false ); // Unlock.\r
-               };\r
-\r
-               var numbering = function( id )\r
-                       {\r
-                               return CKEDITOR.tools.getNextId() + '_' + id;\r
-                       },\r
-                       btnLockSizesId = numbering( 'btnLockSizes' ),\r
-                       btnResetSizeId = numbering( 'btnResetSize' ),\r
-                       imagePreviewLoaderId = numbering( 'ImagePreviewLoader' ),\r
-                       previewLinkId = numbering( 'previewLink' ),\r
-                       previewImageId = numbering( 'previewImage' );\r
-\r
-               return {\r
-                       title : editor.lang.image[ dialogType == 'image' ? 'title' : 'titleButton' ],\r
-                       minWidth : 420,\r
-                       minHeight : 360,\r
-                       onShow : function()\r
-                       {\r
-                               this.imageElement = false;\r
-                               this.linkElement = false;\r
-\r
-                               // Default: create a new element.\r
-                               this.imageEditMode = false;\r
-                               this.linkEditMode = false;\r
-\r
-                               this.lockRatio = true;\r
-                               this.userlockRatio = 0;\r
-                               this.dontResetSize = false;\r
-                               this.firstLoad = true;\r
-                               this.addLink = false;\r
-\r
-                               var editor = this.getParentEditor(),\r
-                                       sel = editor.getSelection(),\r
-                                       element = sel && sel.getSelectedElement(),\r
-                                       link = element && element.getAscendant( 'a' );\r
-\r
-                               //Hide loader.\r
-                               CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );\r
-                               // Create the preview before setup the dialog contents.\r
-                               previewPreloader = new CKEDITOR.dom.element( 'img', editor.document );\r
-                               this.preview = CKEDITOR.document.getById( previewImageId );\r
-\r
-                               // Copy of the image\r
-                               this.originalElement = editor.document.createElement( 'img' );\r
-                               this.originalElement.setAttribute( 'alt', '' );\r
-                               this.originalElement.setCustomData( 'isReady', 'false' );\r
-\r
-                               if ( link )\r
-                               {\r
-                                       this.linkElement = link;\r
-                                       this.linkEditMode = true;\r
-\r
-                                       // Look for Image element.\r
-                                       var linkChildren = link.getChildren();\r
-                                       if ( linkChildren.count() == 1 )                        // 1 child.\r
-                                       {\r
-                                               var childTagName = linkChildren.getItem( 0 ).getName();\r
-                                               if ( childTagName == 'img' || childTagName == 'input' )\r
-                                               {\r
-                                                       this.imageElement = linkChildren.getItem( 0 );\r
-                                                       if ( this.imageElement.getName() == 'img' )\r
-                                                               this.imageEditMode = 'img';\r
-                                                       else if ( this.imageElement.getName() == 'input' )\r
-                                                               this.imageEditMode = 'input';\r
-                                               }\r
-                                       }\r
-                                       // Fill out all fields.\r
-                                       if ( dialogType == 'image' )\r
-                                               this.setupContent( LINK, link );\r
-                               }\r
-\r
-                               if ( element && element.getName() == 'img' && !element.data( 'cke-realelement' )\r
-                                       || element && element.getName() == 'input' && element.getAttribute( 'type' ) == 'image' )\r
-                               {\r
-                                       this.imageEditMode = element.getName();\r
-                                       this.imageElement = element;\r
-                               }\r
-\r
-                               if ( this.imageEditMode )\r
-                               {\r
-                                       // Use the original element as a buffer from  since we don't want\r
-                                       // temporary changes to be committed, e.g. if the dialog is canceled.\r
-                                       this.cleanImageElement = this.imageElement;\r
-                                       this.imageElement = this.cleanImageElement.clone( true, true );\r
-\r
-                                       // Fill out all fields.\r
-                                       this.setupContent( IMAGE, this.imageElement );\r
-                               }\r
-                               else\r
-                                       this.imageElement =  editor.document.createElement( 'img' );\r
-\r
-                               // Refresh LockRatio button\r
-                               switchLockRatio ( this, true );\r
-\r
-                               // Dont show preview if no URL given.\r
-                               if ( !CKEDITOR.tools.trim( this.getValueOf( 'info', 'txtUrl' ) ) )\r
-                               {\r
-                                       this.preview.removeAttribute( 'src' );\r
-                                       this.preview.setStyle( 'display', 'none' );\r
-                               }\r
-                       },\r
-                       onOk : function()\r
-                       {\r
-                               // Edit existing Image.\r
-                               if ( this.imageEditMode )\r
-                               {\r
-                                       var imgTagName = this.imageEditMode;\r
-\r
-                                       // Image dialog and Input element.\r
-                                       if ( dialogType == 'image' && imgTagName == 'input' && confirm( editor.lang.image.button2Img ) )\r
-                                       {\r
-                                               // Replace INPUT-> IMG\r
-                                               imgTagName = 'img';\r
-                                               this.imageElement = editor.document.createElement( 'img' );\r
-                                               this.imageElement.setAttribute( 'alt', '' );\r
-                                               editor.insertElement( this.imageElement );\r
-                                       }\r
-                                       // ImageButton dialog and Image element.\r
-                                       else if ( dialogType != 'image' && imgTagName == 'img' && confirm( editor.lang.image.img2Button ))\r
-                                       {\r
-                                               // Replace IMG -> INPUT\r
-                                               imgTagName = 'input';\r
-                                               this.imageElement = editor.document.createElement( 'input' );\r
-                                               this.imageElement.setAttributes(\r
-                                                       {\r
-                                                               type : 'image',\r
-                                                               alt : ''\r
-                                                       }\r
-                                               );\r
-                                               editor.insertElement( this.imageElement );\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               // Restore the original element before all commits.\r
-                                               this.imageElement = this.cleanImageElement;\r
-                                               delete this.cleanImageElement;\r
-                                       }\r
-                               }\r
-                               else    // Create a new image.\r
-                               {\r
-                                       // Image dialog -> create IMG element.\r
-                                       if ( dialogType == 'image' )\r
-                                               this.imageElement = editor.document.createElement( 'img' );\r
-                                       else\r
-                                       {\r
-                                               this.imageElement = editor.document.createElement( 'input' );\r
-                                               this.imageElement.setAttribute ( 'type' ,'image' );\r
-                                       }\r
-                                       this.imageElement.setAttribute( 'alt', '' );\r
-                               }\r
-\r
-                               // Create a new link.\r
-                               if ( !this.linkEditMode )\r
-                                       this.linkElement = editor.document.createElement( 'a' );\r
-\r
-                               // Set attributes.\r
-                               this.commitContent( IMAGE, this.imageElement );\r
-                               this.commitContent( LINK, this.linkElement );\r
-\r
-                               // Remove empty style attribute.\r
-                               if ( !this.imageElement.getAttribute( 'style' ) )\r
-                                       this.imageElement.removeAttribute( 'style' );\r
-\r
-                               // Insert a new Image.\r
-                               if ( !this.imageEditMode )\r
-                               {\r
-                                       if ( this.addLink )\r
-                                       {\r
-                                               //Insert a new Link.\r
-                                               if ( !this.linkEditMode )\r
-                                               {\r
-                                                       editor.insertElement( this.linkElement );\r
-                                                       this.linkElement.append( this.imageElement, false );\r
-                                               }\r
-                                               else     //Link already exists, image not.\r
-                                                       editor.insertElement( this.imageElement );\r
-                                       }\r
-                                       else\r
-                                               editor.insertElement( this.imageElement );\r
-                               }\r
-                               else            // Image already exists.\r
-                               {\r
-                                       //Add a new link element.\r
-                                       if ( !this.linkEditMode && this.addLink )\r
-                                       {\r
-                                               editor.insertElement( this.linkElement );\r
-                                               this.imageElement.appendTo( this.linkElement );\r
-                                       }\r
-                                       //Remove Link, Image exists.\r
-                                       else if ( this.linkEditMode && !this.addLink )\r
-                                       {\r
-                                               editor.getSelection().selectElement( this.linkElement );\r
-                                               editor.insertElement( this.imageElement );\r
-                                       }\r
-                               }\r
-                       },\r
-                       onLoad : function()\r
-                       {\r
-                               if ( dialogType != 'image' )\r
-                                       this.hidePage( 'Link' );                //Hide Link tab.\r
-                               var doc = this._.element.getDocument();\r
-\r
-                               if ( this.getContentElement( 'info', 'ratioLock' ) )\r
-                               {\r
-                                       this.addFocusable( doc.getById( btnResetSizeId ), 5 );\r
-                                       this.addFocusable( doc.getById( btnLockSizesId ), 5 );\r
-                               }\r
-\r
-                               this.commitContent = commitContent;\r
-                       },\r
-                       onHide : function()\r
-                       {\r
-                               if ( this.preview )\r
-                                       this.commitContent( CLEANUP, this.preview );\r
-\r
-                               if ( this.originalElement )\r
-                               {\r
-                                       this.originalElement.removeListener( 'load', onImgLoadEvent );\r
-                                       this.originalElement.removeListener( 'error', onImgLoadErrorEvent );\r
-                                       this.originalElement.removeListener( 'abort', onImgLoadErrorEvent );\r
-                                       this.originalElement.remove();\r
-                                       this.originalElement = false;           // Dialog is closed.\r
-                               }\r
-\r
-                               delete this.imageElement;\r
-                       },\r
-                       contents : [\r
-                               {\r
-                                       id : 'info',\r
-                                       label : editor.lang.image.infoTab,\r
-                                       accessKey : 'I',\r
-                                       elements :\r
-                                       [\r
-                                               {\r
-                                                       type : 'vbox',\r
-                                                       padding : 0,\r
-                                                       children :\r
-                                                       [\r
-                                                               {\r
-                                                                       type : 'hbox',\r
-                                                                       widths : [ '280px', '110px' ],\r
-                                                                       align : 'right',\r
-                                                                       children :\r
-                                                                       [\r
-                                                                               {\r
-                                                                                       id : 'txtUrl',\r
-                                                                                       type : 'text',\r
-                                                                                       label : editor.lang.common.url,\r
-                                                                                       required: true,\r
-                                                                                       onChange : function()\r
-                                                                                       {\r
-                                                                                               var dialog = this.getDialog(),\r
-                                                                                                       newUrl = this.getValue();\r
-\r
-                                                                                               //Update original image\r
-                                                                                               if ( newUrl.length > 0 )        //Prevent from load before onShow\r
-                                                                                               {\r
-                                                                                                       dialog = this.getDialog();\r
-                                                                                                       var original = dialog.originalElement;\r
-\r
-                                                                                                       dialog.preview.removeStyle( 'display' );\r
-\r
-                                                                                                       original.setCustomData( 'isReady', 'false' );\r
-                                                                                                       // Show loader\r
-                                                                                                       var loader = CKEDITOR.document.getById( imagePreviewLoaderId );\r
-                                                                                                       if ( loader )\r
-                                                                                                               loader.setStyle( 'display', '' );\r
-\r
-                                                                                                       original.on( 'load', onImgLoadEvent, dialog );\r
-                                                                                                       original.on( 'error', onImgLoadErrorEvent, dialog );\r
-                                                                                                       original.on( 'abort', onImgLoadErrorEvent, dialog );\r
-                                                                                                       original.setAttribute( 'src', newUrl );\r
-\r
-                                                                                                       // Query the preloader to figure out the url impacted by based href.\r
-                                                                                                       previewPreloader.setAttribute( 'src', newUrl );\r
-                                                                                                       dialog.preview.setAttribute( 'src', previewPreloader.$.src );\r
-                                                                                                       updatePreview( dialog );\r
-                                                                                               }\r
-                                                                                               // Dont show preview if no URL given.\r
-                                                                                               else if ( dialog.preview )\r
-                                                                                               {\r
-                                                                                                       dialog.preview.removeAttribute( 'src' );\r
-                                                                                                       dialog.preview.setStyle( 'display', 'none' );\r
-                                                                                               }\r
-                                                                                       },\r
-                                                                                       setup : function( type, element )\r
-                                                                                       {\r
-                                                                                               if ( type == IMAGE )\r
-                                                                                               {\r
-                                                                                                       var url = element.data( 'cke-saved-src' ) || element.getAttribute( 'src' );\r
-                                                                                                       var field = this;\r
-\r
-                                                                                                       this.getDialog().dontResetSize = true;\r
-\r
-                                                                                                       field.setValue( url );          // And call this.onChange()\r
-                                                                                                       // Manually set the initial value.(#4191)\r
-                                                                                                       field.setInitValue();\r
-                                                                                               }\r
-                                                                                       },\r
-                                                                                       commit : function( type, element )\r
-                                                                                       {\r
-                                                                                               if ( type == IMAGE && ( this.getValue() || this.isChanged() ) )\r
-                                                                                               {\r
-                                                                                                       element.data( 'cke-saved-src', this.getValue() );\r
-                                                                                                       element.setAttribute( 'src', this.getValue() );\r
-                                                                                               }\r
-                                                                                               else if ( type == CLEANUP )\r
-                                                                                               {\r
-                                                                                                       element.setAttribute( 'src', '' );      // If removeAttribute doesn't work.\r
-                                                                                                       element.removeAttribute( 'src' );\r
-                                                                                               }\r
-                                                                                       },\r
-                                                                                       validate : CKEDITOR.dialog.validate.notEmpty( editor.lang.image.urlMissing )\r
-                                                                               },\r
-                                                                               {\r
-                                                                                       type : 'button',\r
-                                                                                       id : 'browse',\r
-                                                                                       // v-align with the 'txtUrl' field.\r
-                                                                                       // TODO: We need something better than a fixed size here.\r
-                                                                                       style : 'display:inline-block;margin-top:10px;',\r
-                                                                                       align : 'center',\r
-                                                                                       label : editor.lang.common.browseServer,\r
-                                                                                       hidden : true,\r
-                                                                                       filebrowser : 'info:txtUrl'\r
-                                                                               }\r
-                                                                       ]\r
-                                                               }\r
-                                                       ]\r
-                                               },\r
-                                               {\r
-                                                       id : 'txtAlt',\r
-                                                       type : 'text',\r
-                                                       label : editor.lang.image.alt,\r
-                                                       accessKey : 'T',\r
-                                                       'default' : '',\r
-                                                       onChange : function()\r
-                                                       {\r
-                                                               updatePreview( this.getDialog() );\r
-                                                       },\r
-                                                       setup : function( type, element )\r
-                                                       {\r
-                                                               if ( type == IMAGE )\r
-                                                                       this.setValue( element.getAttribute( 'alt' ) );\r
-                                                       },\r
-                                                       commit : function( type, element )\r
-                                                       {\r
-                                                               if ( type == IMAGE )\r
-                                                               {\r
-                                                                       if ( this.getValue() || this.isChanged() )\r
-                                                                               element.setAttribute( 'alt', this.getValue() );\r
-                                                               }\r
-                                                               else if ( type == PREVIEW )\r
-                                                               {\r
-                                                                       element.setAttribute( 'alt', this.getValue() );\r
-                                                               }\r
-                                                               else if ( type == CLEANUP )\r
-                                                               {\r
-                                                                       element.removeAttribute( 'alt' );\r
-                                                               }\r
-                                                       }\r
-                                               },\r
-                                               {\r
-                                                       type : 'hbox',\r
-                                                       children :\r
-                                                       [\r
-                                                               {\r
-                                                                       id : 'basic',\r
-                                                                       type : 'vbox',\r
-                                                                       children :\r
-                                                                       [\r
-                                                                               {\r
-                                                                                       type : 'hbox',\r
-                                                                                       widths : [ '50%', '50%' ],\r
-                                                                                       children :\r
-                                                                                       [\r
-                                                                                               {\r
-                                                                                                       type : 'vbox',\r
-                                                                                                       padding : 1,\r
-                                                                                                       children :\r
-                                                                                                       [\r
-                                                                                                               {\r
-                                                                                                                       type : 'text',\r
-                                                                                                                       width: '40px',\r
-                                                                                                                       id : 'txtWidth',\r
-                                                                                                                       label : editor.lang.common.width,\r
-                                                                                                                       onKeyUp : onSizeChange,\r
-                                                                                                                       onChange : function()\r
-                                                                                                                       {\r
-                                                                                                                               commitInternally.call( this, 'advanced:txtdlgGenStyle' );\r
-                                                                                                                       },\r
-                                                                                                                       validate : function()\r
-                                                                                                                       {\r
-                                                                                                                               var aMatch  =  this.getValue().match( regexGetSizeOrEmpty ),\r
-                                                                                                                                       isValid = !!( aMatch && parseInt( aMatch[1], 10 ) !== 0 );\r
-                                                                                                                               if ( !isValid )\r
-                                                                                                                                       alert( editor.lang.common.invalidWidth );\r
-                                                                                                                               return isValid;\r
-                                                                                                                       },\r
-                                                                                                                       setup : setupDimension,\r
-                                                                                                                       commit : function( type, element, internalCommit )\r
-                                                                                                                       {\r
-                                                                                                                               var value = this.getValue();\r
-                                                                                                                               if ( type == IMAGE )\r
-                                                                                                                               {\r
-                                                                                                                                       if ( value )\r
-                                                                                                                                               element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) );\r
-                                                                                                                                       else\r
-                                                                                                                                               element.removeStyle( 'width' );\r
-\r
-                                                                                                                                       !internalCommit && element.removeAttribute( 'width' );\r
-                                                                                                                               }\r
-                                                                                                                               else if ( type == PREVIEW )\r
-                                                                                                                               {\r
-                                                                                                                                       var aMatch = value.match( regexGetSize );\r
-                                                                                                                                       if ( !aMatch )\r
-                                                                                                                                       {\r
-                                                                                                                                               var oImageOriginal = this.getDialog().originalElement;\r
-                                                                                                                                               if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )\r
-                                                                                                                                                       element.setStyle( 'width',  oImageOriginal.$.width + 'px');\r
-                                                                                                                                       }\r
-                                                                                                                                       else\r
-                                                                                                                                               element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) );\r
-                                                                                                                               }\r
-                                                                                                                               else if ( type == CLEANUP )\r
-                                                                                                                               {\r
-                                                                                                                                       element.removeAttribute( 'width' );\r
-                                                                                                                                       element.removeStyle( 'width' );\r
-                                                                                                                               }\r
-                                                                                                                       }\r
-                                                                                                               },\r
-                                                                                                               {\r
-                                                                                                                       type : 'text',\r
-                                                                                                                       id : 'txtHeight',\r
-                                                                                                                       width: '40px',\r
-                                                                                                                       label : editor.lang.common.height,\r
-                                                                                                                       onKeyUp : onSizeChange,\r
-                                                                                                                       onChange : function()\r
-                                                                                                                       {\r
-                                                                                                                               commitInternally.call( this, 'advanced:txtdlgGenStyle' );\r
-                                                                                                                       },\r
-                                                                                                                       validate : function()\r
-                                                                                                                       {\r
-                                                                                                                               var aMatch = this.getValue().match( regexGetSizeOrEmpty ),\r
-                                                                                                                                       isValid = !!( aMatch && parseInt( aMatch[1], 10 ) !== 0 );\r
-                                                                                                                               if ( !isValid )\r
-                                                                                                                                       alert( editor.lang.common.invalidHeight );\r
-                                                                                                                               return isValid;\r
-                                                                                                                       },\r
-                                                                                                                       setup : setupDimension,\r
-                                                                                                                       commit : function( type, element, internalCommit )\r
-                                                                                                                       {\r
-                                                                                                                               var value = this.getValue();\r
-                                                                                                                               if ( type == IMAGE )\r
-                                                                                                                               {\r
-                                                                                                                                       if ( value )\r
-                                                                                                                                               element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) );\r
-                                                                                                                                       else\r
-                                                                                                                                               element.removeStyle( 'height' );\r
-\r
-                                                                                                                                       !internalCommit && element.removeAttribute( 'height' );\r
-                                                                                                                               }\r
-                                                                                                                               else if ( type == PREVIEW )\r
-                                                                                                                               {\r
-                                                                                                                                       var aMatch = value.match( regexGetSize );\r
-                                                                                                                                       if ( !aMatch )\r
-                                                                                                                                       {\r
-                                                                                                                                               var oImageOriginal = this.getDialog().originalElement;\r
-                                                                                                                                               if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )\r
-                                                                                                                                                       element.setStyle( 'height', oImageOriginal.$.height + 'px' );\r
-                                                                                                                                       }\r
-                                                                                                                                       else\r
-                                                                                                                                               element.setStyle( 'height',  CKEDITOR.tools.cssLength( value ) );\r
-                                                                                                                               }\r
-                                                                                                                               else if ( type == CLEANUP )\r
-                                                                                                                               {\r
-                                                                                                                                       element.removeAttribute( 'height' );\r
-                                                                                                                                       element.removeStyle( 'height' );\r
-                                                                                                                               }\r
-                                                                                                                       }\r
-                                                                                                               }\r
-                                                                                                       ]\r
-                                                                                               },\r
-                                                                                               {\r
-                                                                                                       id : 'ratioLock',\r
-                                                                                                       type : 'html',\r
-                                                                                                       style : 'margin-top:30px;width:40px;height:40px;',\r
-                                                                                                       onLoad : function()\r
-                                                                                                       {\r
-                                                                                                               // Activate Reset button\r
-                                                                                                               var     resetButton = CKEDITOR.document.getById( btnResetSizeId ),\r
-                                                                                                                       ratioButton = CKEDITOR.document.getById( btnLockSizesId );\r
-                                                                                                               if ( resetButton )\r
-                                                                                                               {\r
-                                                                                                                       resetButton.on( 'click', function( evt )\r
-                                                                                                                               {\r
-                                                                                                                                       resetSize( this );\r
-                                                                                                                                       evt.data && evt.data.preventDefault();\r
-                                                                                                                               }, this.getDialog() );\r
-                                                                                                                       resetButton.on( 'mouseover', function()\r
-                                                                                                                               {\r
-                                                                                                                                       this.addClass( 'cke_btn_over' );\r
-                                                                                                                               }, resetButton );\r
-                                                                                                                       resetButton.on( 'mouseout', function()\r
-                                                                                                                               {\r
-                                                                                                                                       this.removeClass( 'cke_btn_over' );\r
-                                                                                                                               }, resetButton );\r
-                                                                                                               }\r
-                                                                                                               // Activate (Un)LockRatio button\r
-                                                                                                               if ( ratioButton )\r
-                                                                                                               {\r
-                                                                                                                       ratioButton.on( 'click', function(evt)\r
-                                                                                                                               {\r
-                                                                                                                                       var locked = switchLockRatio( this ),\r
-                                                                                                                                               oImageOriginal = this.originalElement,\r
-                                                                                                                                               width = this.getValueOf( 'info', 'txtWidth' );\r
-\r
-                                                                                                                                       if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' && width )\r
-                                                                                                                                       {\r
-                                                                                                                                               var height = oImageOriginal.$.height / oImageOriginal.$.width * width;\r
-                                                                                                                                               if ( !isNaN( height ) )\r
-                                                                                                                                               {\r
-                                                                                                                                                       this.setValueOf( 'info', 'txtHeight', Math.round( height ) );\r
-                                                                                                                                                       updatePreview( this );\r
-                                                                                                                                               }\r
-                                                                                                                                       }\r
-                                                                                                                                       evt.data && evt.data.preventDefault();\r
-                                                                                                                               }, this.getDialog() );\r
-                                                                                                                       ratioButton.on( 'mouseover', function()\r
-                                                                                                                               {\r
-                                                                                                                                       this.addClass( 'cke_btn_over' );\r
-                                                                                                                               }, ratioButton );\r
-                                                                                                                       ratioButton.on( 'mouseout', function()\r
-                                                                                                                               {\r
-                                                                                                                                       this.removeClass( 'cke_btn_over' );\r
-                                                                                                                               }, ratioButton );\r
-                                                                                                               }\r
-                                                                                                       },\r
-                                                                                                       html : '<div>'+\r
-                                                                                                               '<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.lockRatio +\r
-                                                                                                               '" class="cke_btn_locked" id="' + btnLockSizesId + '" role="checkbox"><span class="cke_icon"></span><span class="cke_label">' + editor.lang.image.lockRatio + '</span></a>' +\r
-                                                                                                               '<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.resetSize +\r
-                                                                                                               '" class="cke_btn_reset" id="' + btnResetSizeId + '" role="button"><span class="cke_label">' + editor.lang.image.resetSize + '</span></a>'+\r
-                                                                                                               '</div>'\r
-                                                                                               }\r
-                                                                                       ]\r
-                                                                               },\r
-                                                                               {\r
-                                                                                       type : 'vbox',\r
-                                                                                       padding : 1,\r
-                                                                                       children :\r
-                                                                                       [\r
-                                                                                               {\r
-                                                                                                       type : 'text',\r
-                                                                                                       id : 'txtBorder',\r
-                                                                                                       width: '60px',\r
-                                                                                                       label : editor.lang.image.border,\r
-                                                                                                       'default' : '',\r
-                                                                                                       onKeyUp : function()\r
-                                                                                                       {\r
-                                                                                                               updatePreview( this.getDialog() );\r
-                                                                                                       },\r
-                                                                                                       onChange : function()\r
-                                                                                                       {\r
-                                                                                                               commitInternally.call( this, 'advanced:txtdlgGenStyle' );\r
-                                                                                                       },\r
-                                                                                                       validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateBorder ),\r
-                                                                                                       setup : function( type, element )\r
-                                                                                                       {\r
-                                                                                                               if ( type == IMAGE )\r
-                                                                                                               {\r
-                                                                                                                       var value,\r
-                                                                                                                               borderStyle = element.getStyle( 'border-width' );\r
-                                                                                                                       borderStyle = borderStyle && borderStyle.match( /^(\d+px)(?: \1 \1 \1)?$/ );\r
-                                                                                                                       value = borderStyle && parseInt( borderStyle[ 1 ], 10 );\r
-                                                                                                                       isNaN ( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'border' ) );\r
-                                                                                                                       this.setValue( value );\r
-                                                                                                               }\r
-                                                                                                       },\r
-                                                                                                       commit : function( type, element, internalCommit )\r
-                                                                                                       {\r
-                                                                                                               var value = parseInt( this.getValue(), 10 );\r
-                                                                                                               if ( type == IMAGE || type == PREVIEW )\r
-                                                                                                               {\r
-                                                                                                                       if ( !isNaN( value ) )\r
-                                                                                                                       {\r
-                                                                                                                               element.setStyle( 'border-width', CKEDITOR.tools.cssLength( value ) );\r
-                                                                                                                               element.setStyle( 'border-style', 'solid' );\r
-                                                                                                                       }\r
-                                                                                                                       else if ( !value && this.isChanged() )\r
-                                                                                                                               element.removeStyle( 'border' );\r
-\r
-                                                                                                                       if ( !internalCommit && type == IMAGE )\r
-                                                                                                                               element.removeAttribute( 'border' );\r
-                                                                                                               }\r
-                                                                                                               else if ( type == CLEANUP )\r
-                                                                                                               {\r
-                                                                                                                       element.removeAttribute( 'border' );\r
-                                                                                                                       element.removeStyle( 'border-width' );\r
-                                                                                                                       element.removeStyle( 'border-style' );\r
-                                                                                                                       element.removeStyle( 'border-color' );\r
-                                                                                                               }\r
-                                                                                                       }\r
-                                                                                               },\r
-                                                                                               {\r
-                                                                                                       type : 'text',\r
-                                                                                                       id : 'txtHSpace',\r
-                                                                                                       width: '60px',\r
-                                                                                                       label : editor.lang.image.hSpace,\r
-                                                                                                       'default' : '',\r
-                                                                                                       onKeyUp : function()\r
-                                                                                                       {\r
-                                                                                                               updatePreview( this.getDialog() );\r
-                                                                                                       },\r
-                                                                                                       onChange : function()\r
-                                                                                                       {\r
-                                                                                                               commitInternally.call( this, 'advanced:txtdlgGenStyle' );\r
-                                                                                                       },\r
-                                                                                                       validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateHSpace ),\r
-                                                                                                       setup : function( type, element )\r
-                                                                                                       {\r
-                                                                                                               if ( type == IMAGE )\r
-                                                                                                               {\r
-                                                                                                                       var value,\r
-                                                                                                                               marginLeftPx,\r
-                                                                                                                               marginRightPx,\r
-                                                                                                                               marginLeftStyle = element.getStyle( 'margin-left' ),\r
-                                                                                                                               marginRightStyle = element.getStyle( 'margin-right' );\r
-\r
-                                                                                                                       marginLeftStyle = marginLeftStyle && marginLeftStyle.match( pxLengthRegex );\r
-                                                                                                                       marginRightStyle = marginRightStyle && marginRightStyle.match( pxLengthRegex );\r
-                                                                                                                       marginLeftPx = parseInt( marginLeftStyle, 10 );\r
-                                                                                                                       marginRightPx = parseInt( marginRightStyle, 10 );\r
-\r
-                                                                                                                       value = ( marginLeftPx == marginRightPx ) && marginLeftPx;\r
-                                                                                                                       isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'hspace' ) );\r
-\r
-                                                                                                                       this.setValue( value );\r
-                                                                                                               }\r
-                                                                                                       },\r
-                                                                                                       commit : function( type, element, internalCommit )\r
-                                                                                                       {\r
-                                                                                                               var value = parseInt( this.getValue(), 10 );\r
-                                                                                                               if ( type == IMAGE || type == PREVIEW )\r
-                                                                                                               {\r
-                                                                                                                       if ( !isNaN( value ) )\r
-                                                                                                                       {\r
-                                                                                                                               element.setStyle( 'margin-left', CKEDITOR.tools.cssLength( value ) );\r
-                                                                                                                               element.setStyle( 'margin-right', CKEDITOR.tools.cssLength( value ) );\r
-                                                                                                                       }\r
-                                                                                                                       else if ( !value && this.isChanged( ) )\r
-                                                                                                                       {\r
-                                                                                                                               element.removeStyle( 'margin-left' );\r
-                                                                                                                               element.removeStyle( 'margin-right' );\r
-                                                                                                                       }\r
-\r
-                                                                                                                       if ( !internalCommit && type == IMAGE )\r
-                                                                                                                               element.removeAttribute( 'hspace' );\r
-                                                                                                               }\r
-                                                                                                               else if ( type == CLEANUP )\r
-                                                                                                               {\r
-                                                                                                                       element.removeAttribute( 'hspace' );\r
-                                                                                                                       element.removeStyle( 'margin-left' );\r
-                                                                                                                       element.removeStyle( 'margin-right' );\r
-                                                                                                               }\r
-                                                                                                       }\r
-                                                                                               },\r
-                                                                                               {\r
-                                                                                                       type : 'text',\r
-                                                                                                       id : 'txtVSpace',\r
-                                                                                                       width : '60px',\r
-                                                                                                       label : editor.lang.image.vSpace,\r
-                                                                                                       'default' : '',\r
-                                                                                                       onKeyUp : function()\r
-                                                                                                       {\r
-                                                                                                               updatePreview( this.getDialog() );\r
-                                                                                                       },\r
-                                                                                                       onChange : function()\r
-                                                                                                       {\r
-                                                                                                               commitInternally.call( this, 'advanced:txtdlgGenStyle' );\r
-                                                                                                       },\r
-                                                                                                       validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateVSpace ),\r
-                                                                                                       setup : function( type, element )\r
-                                                                                                       {\r
-                                                                                                               if ( type == IMAGE )\r
-                                                                                                               {\r
-                                                                                                                       var value,\r
-                                                                                                                               marginTopPx,\r
-                                                                                                                               marginBottomPx,\r
-                                                                                                                               marginTopStyle = element.getStyle( 'margin-top' ),\r
-                                                                                                                               marginBottomStyle = element.getStyle( 'margin-bottom' );\r
-\r
-                                                                                                                       marginTopStyle = marginTopStyle && marginTopStyle.match( pxLengthRegex );\r
-                                                                                                                       marginBottomStyle = marginBottomStyle && marginBottomStyle.match( pxLengthRegex );\r
-                                                                                                                       marginTopPx = parseInt( marginTopStyle, 10 );\r
-                                                                                                                       marginBottomPx = parseInt( marginBottomStyle, 10 );\r
-\r
-                                                                                                                       value = ( marginTopPx == marginBottomPx ) && marginTopPx;\r
-                                                                                                                       isNaN ( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'vspace' ) );\r
-                                                                                                                       this.setValue( value );\r
-                                                                                                               }\r
-                                                                                                       },\r
-                                                                                                       commit : function( type, element, internalCommit )\r
-                                                                                                       {\r
-                                                                                                               var value = parseInt( this.getValue(), 10 );\r
-                                                                                                               if ( type == IMAGE || type == PREVIEW )\r
-                                                                                                               {\r
-                                                                                                                       if ( !isNaN( value ) )\r
-                                                                                                                       {\r
-                                                                                                                               element.setStyle( 'margin-top', CKEDITOR.tools.cssLength( value ) );\r
-                                                                                                                               element.setStyle( 'margin-bottom', CKEDITOR.tools.cssLength( value ) );\r
-                                                                                                                       }\r
-                                                                                                                       else if ( !value && this.isChanged( ) )\r
-                                                                                                                       {\r
-                                                                                                                               element.removeStyle( 'margin-top' );\r
-                                                                                                                               element.removeStyle( 'margin-bottom' );\r
-                                                                                                                       }\r
-\r
-                                                                                                                       if ( !internalCommit && type == IMAGE )\r
-                                                                                                                               element.removeAttribute( 'vspace' );\r
-                                                                                                               }\r
-                                                                                                               else if ( type == CLEANUP )\r
-                                                                                                               {\r
-                                                                                                                       element.removeAttribute( 'vspace' );\r
-                                                                                                                       element.removeStyle( 'margin-top' );\r
-                                                                                                                       element.removeStyle( 'margin-bottom' );\r
-                                                                                                               }\r
-                                                                                                       }\r
-                                                                                               },\r
-                                                                                               {\r
-                                                                                                       id : 'cmbAlign',\r
-                                                                                                       type : 'select',\r
-                                                                                                       widths : [ '35%','65%' ],\r
-                                                                                                       style : 'width:90px',\r
-                                                                                                       label : editor.lang.common.align,\r
-                                                                                                       'default' : '',\r
-                                                                                                       items :\r
-                                                                                                       [\r
-                                                                                                               [ editor.lang.common.notSet , ''],\r
-                                                                                                               [ editor.lang.common.alignLeft , 'left'],\r
-                                                                                                               [ editor.lang.common.alignRight , 'right']\r
-                                                                                                               // Backward compatible with v2 on setup when specified as attribute value,\r
-                                                                                                               // while these values are no more available as select options.\r
-                                                                                                               //      [ editor.lang.image.alignAbsBottom , 'absBottom'],\r
-                                                                                                               //      [ editor.lang.image.alignAbsMiddle , 'absMiddle'],\r
-                                                                                                               //  [ editor.lang.image.alignBaseline , 'baseline'],\r
-                                                                                                               //  [ editor.lang.image.alignTextTop , 'text-top'],\r
-                                                                                                               //  [ editor.lang.image.alignBottom , 'bottom'],\r
-                                                                                                               //  [ editor.lang.image.alignMiddle , 'middle'],\r
-                                                                                                               //  [ editor.lang.image.alignTop , 'top']\r
-                                                                                                       ],\r
-                                                                                                       onChange : function()\r
-                                                                                                       {\r
-                                                                                                               updatePreview( this.getDialog() );\r
-                                                                                                               commitInternally.call( this, 'advanced:txtdlgGenStyle' );\r
-                                                                                                       },\r
-                                                                                                       setup : function( type, element )\r
-                                                                                                       {\r
-                                                                                                               if ( type == IMAGE )\r
-                                                                                                               {\r
-                                                                                                                       var value = element.getStyle( 'float' );\r
-                                                                                                                       switch( value )\r
-                                                                                                                       {\r
-                                                                                                                               // Ignore those unrelated values.\r
-                                                                                                                               case 'inherit':\r
-                                                                                                                               case 'none':\r
-                                                                                                                                       value = '';\r
-                                                                                                                       }\r
-\r
-                                                                                                                       !value && ( value = ( element.getAttribute( 'align' ) || '' ).toLowerCase() );\r
-                                                                                                                       this.setValue( value );\r
-                                                                                                               }\r
-                                                                                                       },\r
-                                                                                                       commit : function( type, element, internalCommit )\r
-                                                                                                       {\r
-                                                                                                               var value = this.getValue();\r
-                                                                                                               if ( type == IMAGE || type == PREVIEW )\r
-                                                                                                               {\r
-                                                                                                                       if ( value )\r
-                                                                                                                               element.setStyle( 'float', value );\r
-                                                                                                                       else\r
-                                                                                                                               element.removeStyle( 'float' );\r
-\r
-                                                                                                                       if ( !internalCommit && type == IMAGE )\r
-                                                                                                                       {\r
-                                                                                                                               value = ( element.getAttribute( 'align' ) || '' ).toLowerCase();\r
-                                                                                                                               switch( value )\r
-                                                                                                                               {\r
-                                                                                                                                       // we should remove it only if it matches "left" or "right",\r
-                                                                                                                                       // otherwise leave it intact.\r
-                                                                                                                                       case 'left':\r
-                                                                                                                                       case 'right':\r
-                                                                                                                                               element.removeAttribute( 'align' );\r
-                                                                                                                               }\r
-                                                                                                                       }\r
-                                                                                                               }\r
-                                                                                                               else if ( type == CLEANUP )\r
-                                                                                                                       element.removeStyle( 'float' );\r
-\r
-                                                                                                       }\r
-                                                                                               }\r
-                                                                                       ]\r
-                                                                               }\r
-                                                                       ]\r
-                                                               },\r
-                                                               {\r
-                                                                       type : 'vbox',\r
-                                                                       height : '250px',\r
-                                                                       children :\r
-                                                                       [\r
-                                                                               {\r
-                                                                                       type : 'html',\r
-                                                                                       id : 'htmlPreview',\r
-                                                                                       style : 'width:95%;',\r
-                                                                                       html : '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) +'<br>'+\r
-                                                                                       '<div id="' + imagePreviewLoaderId + '" class="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>'+\r
-                                                                                       '<div class="ImagePreviewBox"><table><tr><td>'+\r
-                                                                                       '<a href="javascript:void(0)" target="_blank" onclick="return false;" id="' + previewLinkId + '">'+\r
-                                                                                       '<img id="' + previewImageId + '" alt="" /></a>' +\r
-                                                                                       ( editor.config.image_previewText ||\r
-                                                                                       'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '+\r
-                                                                                       'Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, '+\r
-                                                                                       'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.' ) +\r
-                                                                                       '</td></tr></table></div></div>'\r
-                                                                               }\r
-                                                                       ]\r
-                                                               }\r
-                                                       ]\r
-                                               }\r
-                                       ]\r
-                               },\r
-                               {\r
-                                       id : 'Link',\r
-                                       label : editor.lang.link.title,\r
-                                       padding : 0,\r
-                                       elements :\r
-                                       [\r
-                                               {\r
-                                                       id : 'txtUrl',\r
-                                                       type : 'text',\r
-                                                       label : editor.lang.common.url,\r
-                                                       style : 'width: 100%',\r
-                                                       'default' : '',\r
-                                                       setup : function( type, element )\r
-                                                       {\r
-                                                               if ( type == LINK )\r
-                                                               {\r
-                                                                       var href = element.data( 'cke-saved-href' );\r
-                                                                       if ( !href )\r
-                                                                               href = element.getAttribute( 'href' );\r
-                                                                       this.setValue( href );\r
-                                                               }\r
-                                                       },\r
-                                                       commit : function( type, element )\r
-                                                       {\r
-                                                               if ( type == LINK )\r
-                                                               {\r
-                                                                       if ( this.getValue() || this.isChanged() )\r
-                                                                       {\r
-                                                                               var url = decodeURI( this.getValue() );\r
-                                                                               element.data( 'cke-saved-href', url );\r
-                                                                               element.setAttribute( 'href', url );\r
-\r
-                                                                               if ( this.getValue() || !editor.config.image_removeLinkByEmptyURL )\r
-                                                                                       this.getDialog().addLink = true;\r
-                                                                       }\r
-                                                               }\r
-                                                       }\r
-                                               },\r
-                                               {\r
-                                                       type : 'button',\r
-                                                       id : 'browse',\r
-                                                       filebrowser :\r
-                                                       {\r
-                                                               action : 'Browse',\r
-                                                               target: 'Link:txtUrl',\r
-                                                               url: editor.config.filebrowserImageBrowseLinkUrl\r
-                                                       },\r
-                                                       style : 'float:right',\r
-                                                       hidden : true,\r
-                                                       label : editor.lang.common.browseServer\r
-                                               },\r
-                                               {\r
-                                                       id : 'cmbTarget',\r
-                                                       type : 'select',\r
-                                                       label : editor.lang.common.target,\r
-                                                       'default' : '',\r
-                                                       items :\r
-                                                       [\r
-                                                               [ editor.lang.common.notSet , ''],\r
-                                                               [ editor.lang.common.targetNew , '_blank'],\r
-                                                               [ editor.lang.common.targetTop , '_top'],\r
-                                                               [ editor.lang.common.targetSelf , '_self'],\r
-                                                               [ editor.lang.common.targetParent , '_parent']\r
-                                                       ],\r
-                                                       setup : function( type, element )\r
-                                                       {\r
-                                                               if ( type == LINK )\r
-                                                                       this.setValue( element.getAttribute( 'target' ) || '' );\r
-                                                       },\r
-                                                       commit : function( type, element )\r
-                                                       {\r
-                                                               if ( type == LINK )\r
-                                                               {\r
-                                                                       if ( this.getValue() || this.isChanged() )\r
-                                                                               element.setAttribute( 'target', this.getValue() );\r
-                                                               }\r
-                                                       }\r
-                                               }\r
-                                       ]\r
-                               },\r
-                               {\r
-                                       id : 'Upload',\r
-                                       hidden : true,\r
-                                       filebrowser : 'uploadButton',\r
-                                       label : editor.lang.image.upload,\r
-                                       elements :\r
-                                       [\r
-                                               {\r
-                                                       type : 'file',\r
-                                                       id : 'upload',\r
-                                                       label : editor.lang.image.btnUpload,\r
-                                                       style: 'height:40px',\r
-                                                       size : 38\r
-                                               },\r
-                                               {\r
-                                                       type : 'fileButton',\r
-                                                       id : 'uploadButton',\r
-                                                       filebrowser : 'info:txtUrl',\r
-                                                       label : editor.lang.image.btnUpload,\r
-                                                       'for' : [ 'Upload', 'upload' ]\r
-                                               }\r
-                                       ]\r
-                               },\r
-                               {\r
-                                       id : 'advanced',\r
-                                       label : editor.lang.common.advancedTab,\r
-                                       elements :\r
-                                       [\r
-                                               {\r
-                                                       type : 'hbox',\r
-                                                       widths : [ '50%', '25%', '25%' ],\r
-                                                       children :\r
-                                                       [\r
-                                                               {\r
-                                                                       type : 'text',\r
-                                                                       id : 'linkId',\r
-                                                                       label : editor.lang.common.id,\r
-                                                                       setup : function( type, element )\r
-                                                                       {\r
-                                                                               if ( type == IMAGE )\r
-                                                                                       this.setValue( element.getAttribute( 'id' ) );\r
-                                                                       },\r
-                                                                       commit : function( type, element )\r
-                                                                       {\r
-                                                                               if ( type == IMAGE )\r
-                                                                               {\r
-                                                                                       if ( this.getValue() || this.isChanged() )\r
-                                                                                               element.setAttribute( 'id', this.getValue() );\r
-                                                                               }\r
-                                                                       }\r
-                                                               },\r
-                                                               {\r
-                                                                       id : 'cmbLangDir',\r
-                                                                       type : 'select',\r
-                                                                       style : 'width : 100px;',\r
-                                                                       label : editor.lang.common.langDir,\r
-                                                                       'default' : '',\r
-                                                                       items :\r
-                                                                       [\r
-                                                                               [ editor.lang.common.notSet, '' ],\r
-                                                                               [ editor.lang.common.langDirLtr, 'ltr' ],\r
-                                                                               [ editor.lang.common.langDirRtl, 'rtl' ]\r
-                                                                       ],\r
-                                                                       setup : function( type, element )\r
-                                                                       {\r
-                                                                               if ( type == IMAGE )\r
-                                                                                       this.setValue( element.getAttribute( 'dir' ) );\r
-                                                                       },\r
-                                                                       commit : function( type, element )\r
-                                                                       {\r
-                                                                               if ( type == IMAGE )\r
-                                                                               {\r
-                                                                                       if ( this.getValue() || this.isChanged() )\r
-                                                                                               element.setAttribute( 'dir', this.getValue() );\r
-                                                                               }\r
-                                                                       }\r
-                                                               },\r
-                                                               {\r
-                                                                       type : 'text',\r
-                                                                       id : 'txtLangCode',\r
-                                                                       label : editor.lang.common.langCode,\r
-                                                                       'default' : '',\r
-                                                                       setup : function( type, element )\r
-                                                                       {\r
-                                                                               if ( type == IMAGE )\r
-                                                                                       this.setValue( element.getAttribute( 'lang' ) );\r
-                                                                       },\r
-                                                                       commit : function( type, element )\r
-                                                                       {\r
-                                                                               if ( type == IMAGE )\r
-                                                                               {\r
-                                                                                       if ( this.getValue() || this.isChanged() )\r
-                                                                                               element.setAttribute( 'lang', this.getValue() );\r
-                                                                               }\r
-                                                                       }\r
-                                                               }\r
-                                                       ]\r
-                                               },\r
-                                               {\r
-                                                       type : 'text',\r
-                                                       id : 'txtGenLongDescr',\r
-                                                       label : editor.lang.common.longDescr,\r
-                                                       setup : function( type, element )\r
-                                                       {\r
-                                                               if ( type == IMAGE )\r
-                                                                       this.setValue( element.getAttribute( 'longDesc' ) );\r
-                                                       },\r
-                                                       commit : function( type, element )\r
-                                                       {\r
-                                                               if ( type == IMAGE )\r
-                                                               {\r
-                                                                       if ( this.getValue() || this.isChanged() )\r
-                                                                               element.setAttribute( 'longDesc', this.getValue() );\r
-                                                               }\r
-                                                       }\r
-                                               },\r
-                                               {\r
-                                                       type : 'hbox',\r
-                                                       widths : [ '50%', '50%' ],\r
-                                                       children :\r
-                                                       [\r
-                                                               {\r
-                                                                       type : 'text',\r
-                                                                       id : 'txtGenClass',\r
-                                                                       label : editor.lang.common.cssClass,\r
-                                                                       'default' : '',\r
-                                                                       setup : function( type, element )\r
-                                                                       {\r
-                                                                               if ( type == IMAGE )\r
-                                                                                       this.setValue( element.getAttribute( 'class' ) );\r
-                                                                       },\r
-                                                                       commit : function( type, element )\r
-                                                                       {\r
-                                                                               if ( type == IMAGE )\r
-                                                                               {\r
-                                                                                       if ( this.getValue() || this.isChanged() )\r
-                                                                                               element.setAttribute( 'class', this.getValue() );\r
-                                                                               }\r
-                                                                       }\r
-                                                               },\r
-                                                               {\r
-                                                                       type : 'text',\r
-                                                                       id : 'txtGenTitle',\r
-                                                                       label : editor.lang.common.advisoryTitle,\r
-                                                                       'default' : '',\r
-                                                                       onChange : function()\r
-                                                                       {\r
-                                                                               updatePreview( this.getDialog() );\r
-                                                                       },\r
-                                                                       setup : function( type, element )\r
-                                                                       {\r
-                                                                               if ( type == IMAGE )\r
-                                                                                       this.setValue( element.getAttribute( 'title' ) );\r
-                                                                       },\r
-                                                                       commit : function( type, element )\r
-                                                                       {\r
-                                                                               if ( type == IMAGE )\r
-                                                                               {\r
-                                                                                       if ( this.getValue() || this.isChanged() )\r
-                                                                                               element.setAttribute( 'title', this.getValue() );\r
-                                                                               }\r
-                                                                               else if ( type == PREVIEW )\r
-                                                                               {\r
-                                                                                       element.setAttribute( 'title', this.getValue() );\r
-                                                                               }\r
-                                                                               else if ( type == CLEANUP )\r
-                                                                               {\r
-                                                                                       element.removeAttribute( 'title' );\r
-                                                                               }\r
-                                                                       }\r
-                                                               }\r
-                                                       ]\r
-                                               },\r
-                                               {\r
-                                                       type : 'text',\r
-                                                       id : 'txtdlgGenStyle',\r
-                                                       label : editor.lang.common.cssStyle,\r
-                                                       validate : CKEDITOR.dialog.validate.inlineStyle( editor.lang.common.invalidInlineStyle ),\r
-                                                       'default' : '',\r
-                                                       setup : function( type, element )\r
-                                                       {\r
-                                                               if ( type == IMAGE )\r
-                                                               {\r
-                                                                       var genStyle = element.getAttribute( 'style' );\r
-                                                                       if ( !genStyle && element.$.style.cssText )\r
-                                                                               genStyle = element.$.style.cssText;\r
-                                                                       this.setValue( genStyle );\r
-\r
-                                                                       var height = element.$.style.height,\r
-                                                                               width = element.$.style.width,\r
-                                                                               aMatchH  = ( height ? height : '' ).match( regexGetSize ),\r
-                                                                               aMatchW  = ( width ? width : '').match( regexGetSize );\r
-\r
-                                                                       this.attributesInStyle =\r
-                                                                       {\r
-                                                                               height : !!aMatchH,\r
-                                                                               width : !!aMatchW\r
-                                                                       };\r
-                                                               }\r
-                                                       },\r
-                                                       onChange : function ()\r
-                                                       {\r
-                                                               commitInternally.call( this,\r
-                                                                       [ 'info:cmbFloat', 'info:cmbAlign',\r
-                                                                         'info:txtVSpace', 'info:txtHSpace',\r
-                                                                         'info:txtBorder',\r
-                                                                         'info:txtWidth', 'info:txtHeight' ] );\r
-                                                               updatePreview( this );\r
-                                                       },\r
-                                                       commit : function( type, element )\r
-                                                       {\r
-                                                               if ( type == IMAGE && ( this.getValue() || this.isChanged() ) )\r
-                                                               {\r
-                                                                       element.setAttribute( 'style', this.getValue() );\r
-                                                               }\r
-                                                       }\r
-                                               }\r
-                                       ]\r
-                               }\r
-                       ]\r
-               };\r
-       };\r
-\r
-       CKEDITOR.dialog.add( 'image', function( editor )\r
-               {\r
-                       return imageDialog( editor, 'image' );\r
-               });\r
-\r
-       CKEDITOR.dialog.add( 'imagebutton', function( editor )\r
-               {\r
-                       return imageDialog( editor, 'imagebutton' );\r
-               });\r
-})();\r