Index: /CKEditor/branches/prototype/_source/plugins/image/dialogs/image.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/image/dialogs/image.js	(revision 2872)
+++ /CKEditor/branches/prototype/_source/plugins/image/dialogs/image.js	(revision 2873)
@@ -23,6 +23,5 @@
 {
 	// Load image preview.
-	var showPreview = true;
-	var uploadAction = 'nowhere.php';
+	var showPreview = editor.config.pluginConfig.image.showPreview;
 	var regexSize = /^\s*(\d+)((px)|\%)?\s*$/i;
 	var regexValidSize = /^(\d+)\%?$|^$/i;
@@ -34,17 +33,24 @@
 		'</div>'+'</div>';
 
-	var addChange = function( name, input, object ){
+	var addChange = function( name, input, object, getMyValue ){
 		var dialog = input.getDialog();
-		
+
 		//Don't load before onShow.
 		if ( !dialog.allowOnChange )
 			return 0;
 
-		if ( input.getValue() != '' || input.isChanged() )
-		{
-			dialog.changedAttibutes[ object ][ name ] = input.getValue();
-			return true;
-		}
-		return false;
+		var value;
+		if ( getMyValue )
+			value = getMyValue.apply( input );
+		else
+			value = input.getValue();
+
+		if ( value == null )		// Didn't passed validation
+			return false;
+
+		if ( value != '' || input.isChanged() )
+			dialog.changedAttibutes[ object ][ name ] = value;
+
+		return true;
 	}
 	var onImgLoad = function()
@@ -81,5 +87,5 @@
 		// Hide loader
 		CKEDITOR.document.getById( 'ImagePreviewLoader' ).setStyle( 'display', 'none' );
-		switchLockRatio( dialog, false );	// Unlock.
+		switchLockRatio( this, false );	// Unlock.
 	}
 	var onUrlChange = function( input )
@@ -533,5 +539,5 @@
 				}
 				//Remove Link, Image exists.
-				else if ( this.editMode[ 'link' ] == true && !this.changedAttibutes[ 'link' ][ '_cke_saved_href' ] )
+				else if ( this.editMode[ 'link' ] == true && !this.changedAttibutes[ 'link' ][ '_cke_saved_href' ] && editor.config.pluginConfig.image.removeLinkByEmptyURL == true )
 					this.editObj[ 'link' ].remove( true );
 			}
@@ -633,6 +639,12 @@
 				this.hidePage( 'Link' );		//Hide Link tab.
 
-			if ( editor.config.imageUpload == false )
+			if ( editor.config.pluginConfig.image.uploadTab == false )
 				this.hidePage( 'Upload' );		//Hide Upload tab.
+
+			if ( editor.config.pluginConfig.image.showAdvancedTab == false )
+				this.hidePage( 'advanced' );		//Hide Advanded tab.
+
+			if ( editor.config.pluginConfig.image.browseServer == false )
+				this.getContentElement( 'info', 'browse' ).getElement().hide();
 
 			// Activate Reset button
@@ -719,5 +731,5 @@
 										type : 'text',
 										label : '',
-										validate: function()
+										validate : function()
 										{
 											addChange( 'src', this, 'image' );
@@ -748,4 +760,5 @@
 						label : editor.lang.image.alt,
 						accessKey : 'A',
+						'default' : editor.config.pluginConfig.image.defaultValues.alt,
 						onChange : function()
 						{
@@ -788,13 +801,17 @@
 														},
 														validate: function()
-														{
-															var aMatch  =  this.getValue().match( regexValidSize );
-															if ( aMatch )
-															{
-																addChange( 'width', this, 'image' );
-																return true;
-															}
-															alert( editor.lang.common.validateNumberFailed );
-															return false;
+														{										
+															return addChange( 'width', this, 'image', function ()
+																{
+																	var aMatch  =  this.getValue().match( regexValidSize );
+																	if ( aMatch )
+																		return aMatch[0];
+																	else
+																	{
+																		alert( editor.lang.common.validateNumberFailed );
+																		return null;
+																	}
+																}
+															);
 														}
 													},
@@ -810,12 +827,16 @@
 														validate: function()
 														{
-															var aMatch  =  this.getValue().match( regexValidSize );
-															if ( aMatch )
-															{
-																addChange( 'height', this, 'image' );
-																return true;
-															}
-															alert( editor.lang.common.validateNumberFailed );
-															return false;
+															return addChange( 'height', this, 'image', function ()
+																{
+																	var aMatch  =  this.getValue().match( regexValidSize );
+																	if ( aMatch )
+																		return aMatch[0];
+																	else
+																	{
+																		alert( editor.lang.common.validateNumberFailed );
+																		return null;
+																	}
+																}
+															);
 														}
 													}
@@ -844,4 +865,5 @@
 												labelLayout : 'horizontal',
 												label : editor.lang.image.border,
+												'default' : editor.config.pluginConfig.image.defaultValues.border,
 												onChange : function()
 												{
@@ -862,4 +884,5 @@
 												labelLayout : 'horizontal',
 												label : editor.lang.image.hSpace,
+												'default' : editor.config.pluginConfig.image.defaultValues.hSpace,
 												onChange : function()
 												{
@@ -880,4 +903,5 @@
 												labelLayout : 'horizontal',
 												label : editor.lang.image.vSpace,
+												'default' : editor.config.pluginConfig.image.defaultValues.vSpace,
 												onChange : function()
 												{
@@ -900,4 +924,5 @@
 												style : 'width:100%',
 												label : editor.lang.image.align,
+												'default' : editor.config.pluginConfig.image.defaultValues.align,
 												items :
 												[
@@ -954,7 +979,12 @@
 						label : editor.lang.image.url,
 						style : 'width: 100%',
+						'default' : editor.config.pluginConfig.image.defaultValues.link,
 						validate: function()
 						{
-							addChange( '_cke_saved_href', this, 'link' );
+							addChange( '_cke_saved_href', this, 'link', function ( )
+								{
+									return decodeURI( this.getValue() );
+								}
+							);
 							return true;
 						}
@@ -975,4 +1005,5 @@
 						type : 'select',
 						label : editor.lang.link.target,
+						'default' : editor.config.pluginConfig.image.defaultValues.target,
 						items :
 						[
@@ -1000,5 +1031,5 @@
 						id : 'upload',
 						label : editor.lang.image.btnUpload,
-						action : uploadAction,
+						action : editor.config.pluginConfig.image.uploadAction,
 						size : 38
 					},
@@ -1034,6 +1065,7 @@
 								id : 'cmbLangDir',
 								type : 'select',
+								style : 'width : 100%;',
 								label : editor.lang.common.langDir,
-								style : 'width : 100%;',
+								'default' : editor.config.pluginConfig.image.defaultValues.langDir,
 								items :
 								[
@@ -1052,4 +1084,5 @@
 								id : 'txtLangCode',
 								label : editor.lang.common.langCode,
+								'default' : editor.config.pluginConfig.image.defaultValues.langCode,
 								validate : function()
 								{
@@ -1079,4 +1112,5 @@
 								id : 'txtGenClass',
 								label : editor.lang.common.cssClass,
+								'default' : editor.config.pluginConfig.image.defaultValues.classes,
 								validate : function()
 								{
@@ -1089,4 +1123,5 @@
 								id : 'txtGenTitle',
 								label : editor.lang.common.advisoryTitle,
+								'default' : editor.config.pluginConfig.image.defaultValues.title,
 								onChange : function()
 								{
@@ -1105,4 +1140,5 @@
 						id : 'txtdlgGenStyle',
 						label : editor.lang.common.cssStyle,
+						'default' : editor.config.pluginConfig.image.defaultValues.style,
 						validate : function()
 						{				
Index: /CKEditor/branches/prototype/_source/plugins/link/dialogs/link.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/link/dialogs/link.js	(revision 2872)
+++ /CKEditor/branches/prototype/_source/plugins/link/dialogs/link.js	(revision 2873)
@@ -48,6 +48,8 @@
 		if ( typeValue == 'url' )
 		{
-			dialog.showPage( 'target' );
-			dialog.showPage( 'upload' );
+			if ( editor.config.pluginConfig.link.showTargetTab )
+				dialog.showPage( 'target' );
+			if ( editor.config.pluginConfig.link.uploadTab )
+				dialog.showPage( 'upload' );
 		}
 		else
@@ -185,5 +187,5 @@
 						type : 'select',
 						label : editor.lang.link.type,
-						'default' : 'url',
+						'default' : editor.config.pluginConfig.link.defaultValues.linkType,
 						items :
 						[
@@ -208,5 +210,5 @@
 										type : 'select',
 										label : editor.lang.common.protocol,
-										'default' : 'http://',
+										'default' : editor.config.pluginConfig.link.defaultValues.protocol,
 										style : 'width : 100%;',
 										items :
@@ -341,5 +343,5 @@
 								id : 'linkTargetType',
 								label : editor.lang.link.target,
-								'default' : 'notSet',
+								'default' : editor.config.pluginConfig.link.defaultValues.target,
 								style : 'width : 100%;',
 								'items' :
@@ -358,5 +360,6 @@
 								type : 'text',
 								id : 'linkTargetName',
-								label : editor.lang.link.targetFrameName
+								label : editor.lang.link.targetFrameName,
+								'default' : editor.config.pluginConfig.link.defaultValues.targetFrameName
 							}
 						]
@@ -492,5 +495,5 @@
 						id : 'upload',
 						label : editor.lang.common.upload,
-						action : 'nowhere.php',
+						action : editor.config.pluginConfig.link.uploadAction,
 						size : 38
 					},
@@ -528,5 +531,5 @@
 										id : 'advLangDir',
 										label : editor.lang.link.langDir,
-										'default' : '',
+										'default' : editor.config.pluginConfig.link.defaultValues.langDir,
 										style : 'width: 100%;',
 										items :
@@ -558,5 +561,6 @@
 										type : 'text',
 										label : editor.lang.link.langCode,
-										id : 'advLangCode'
+										id : 'advLangCode',
+										'default' : editor.config.pluginConfig.link.defaultValues.langCode
 									},
 									{
@@ -583,4 +587,5 @@
 										type : 'text',
 										label : editor.lang.link.advisoryTitle,
+										'default' : editor.config.pluginConfig.link.defaultValues.title,
 										id : 'advTitle'
 									},
@@ -588,4 +593,5 @@
 										type : 'text',
 										label : editor.lang.link.advisoryContentType,
+										'default' : editor.config.pluginConfig.link.defaultValues.type,
 										id : 'advContentType'
 									}
@@ -600,4 +606,5 @@
 										type : 'text',
 										label : editor.lang.link.cssClasses,
+										'default' : editor.config.pluginConfig.link.defaultValues.classes,
 										id : 'advCSSClasses'
 									},
@@ -605,4 +612,5 @@
 										type : 'text',
 										label : editor.lang.link.charset,
+										'default' : editor.config.pluginConfig.link.defaultValues.charset,
 										id : 'advCharset'
 									}
@@ -616,4 +624,5 @@
 										type : 'text',
 										label : editor.lang.link.styles,
+										'default' : editor.config.pluginConfig.link.defaultValues.style,
 										id : 'advStyles'
 									}
@@ -823,4 +832,19 @@
 			}
 		},
+		onLoad : function()
+		{
+			if ( editor.config.pluginConfig.link.uploadTab == false )
+				this.hidePage( 'upload' );		//Hide Upload tab.
+
+			if ( editor.config.pluginConfig.link.showAdvancedTab == false )
+				this.hidePage( 'advanced' );		//Hide Advanded tab.
+
+			if ( editor.config.pluginConfig.link.browseServer == false )
+				this.getContentElement( 'info', 'browse' ).getElement().hide();
+
+			if ( editor.config.pluginConfig.link.showTargetTab == false )
+				this.hidePage( 'target' );		//Hide Target tab.
+				
+		},
 		onHide : function()
 		{
Index: /CKEditor/branches/prototype/_source/plugins/print/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/print/plugin.js	(revision 2872)
+++ /CKEditor/branches/prototype/_source/plugins/print/plugin.js	(revision 2873)
@@ -30,5 +30,5 @@
 	{	
 		editor.addCommand( 'print', CKEDITOR.plugins.print );
-		editor.ui.addButton( 'HorizontalRule',
+		editor.ui.addButton( 'Print',
 			{
 				label : editor.lang.print,
@@ -52,5 +52,8 @@
 	exec : function( editor )
 	{
-		CKEDITOR.plugins.print.printCKEDocument( editor );
+		if (editor.config.print == 'page' )
+			CKEDITOR.plugins.print.printPage( editor );
+		else
+			CKEDITOR.plugins.print.printCKEDocument( editor );
 	}
 };
Index: /CKEditor/branches/prototype/_source/plugins/smiley/dialogs/smiley.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/smiley/dialogs/smiley.js	(revision 2872)
+++ /CKEditor/branches/prototype/_source/plugins/smiley/dialogs/smiley.js	(revision 2873)
@@ -38,5 +38,8 @@
 
 			this.getDialog().restoreSelection();
-			editor.insertElement( CKEDITOR.dom.element.createFromHtml( '<img src="' + CKEDITOR.tools.htmlEncode( target.src ) + '" '
+			editor.insertElement( CKEDITOR.dom.element.createFromHtml( '<img src="' + 
+			CKEDITOR.tools.htmlEncode( target.src ) + '" title="' + 
+			CKEDITOR.tools.htmlEncode( target.title ) + '" alt="' + 
+			CKEDITOR.tools.htmlEncode( target.title ) + '" ' 
 					+ '_cke_saved_src="' + CKEDITOR.tools.htmlEncode( target.src ) + '" />',
 				editor.document ) );
@@ -46,16 +49,17 @@
 	},
 		html = [ '<table cellspacing="2" cellpadding="2" border="0"><tbody>' ],
-		cellWidth = parseInt( 100 / editor.config.smileyColumns ) + '%',
-		images = editor.config.smileyImages,
-		columns = editor.config.smileyColumns,
+		cellWidth = parseInt( 100 / editor.config.pluginConfig.smiley.columns ) + '%',
+		images = editor.config.pluginConfig.smiley.images,
+		columns = editor.config.pluginConfig.smiley.columns,
 		i;
 
 	for ( i = 0 ; i < images.length ; i++ )
 	{
-		if ( i % editor.config.smileyColumns == 0 )
+		if ( i % editor.config.pluginConfig.smiley.columns == 0 )
 			html.push( '<tr>' );
 
-		html.push( '<td class="dark_background hand centered" style="vertical-align: middle;"><img border="0" src="' +
-				CKEDITOR.tools.htmlEncode( editor.config.smileyPath + images[i] ) + '" ' +
+		html.push( '<td class="dark_background hand centered" style="vertical-align: middle;"><img border="0" title="'+
+		editor.config.pluginConfig.smiley.descriptions[i] +'" src="' +
+				CKEDITOR.tools.htmlEncode( editor.config.pluginConfig.smiley.path + images[i] ) + '" ' +
 				// IE BUG: Below is a workaround to an IE image loading bug to ensure the image sizes are correct.
 				( CKEDITOR.env.ie ? 'onload="this.setAttribute(\'width\', 2); this.removeAttribute(\'width\');" ' : '' ) +
@@ -78,6 +82,6 @@
 	return {
 		title : editor.lang.smiley.title,
-		minWidth : editor.config.smileyWindowWidth,
-		minHeight : editor.config.smileyWindowHeight,
+		minWidth : editor.config.pluginConfig.smiley.windowWidth,
+		minHeight : editor.config.pluginConfig.smiley.windowHeight,
 		contents : [
 			{
