Index: /CKEditor/branches/prototype/_source/core/config.js
===================================================================
--- /CKEditor/branches/prototype/_source/core/config.js	(revision 2677)
+++ /CKEditor/branches/prototype/_source/core/config.js	(revision 2678)
@@ -159,5 +159,5 @@
 	 * config.plugins = 'elementspath,toolbar,wysiwygarea';
 	 */
-	plugins : 'basicstyles,button,dialog,elementspath,horizontalrule,htmldataprocessor,keystrokes,removeformat,smiley,link,sourcearea,tab,toolbar,wysiwygarea,forms,image',
+	plugins : 'basicstyles,button,dialog,elementspath,horizontalrule,htmldataprocessor,keystrokes,removeformat,smiley,link,sourcearea,tab,toolbar,wysiwygarea,forms,image,find',
 
 	/**
Index: /CKEditor/branches/prototype/_source/lang/en.js
===================================================================
--- /CKEditor/branches/prototype/_source/lang/en.js	(revision 2677)
+++ /CKEditor/branches/prototype/_source/lang/en.js	(revision 2678)
@@ -115,4 +115,6 @@
 	select	: 'Selection Field',
 	imageButton		: 'Image Button',
+	find			: 'Find',
+	replace			: 'Replace',
 	
 	//Dialog titles.
@@ -149,4 +151,21 @@
 	dlgGenLinkCharset	: 'Linked Resource Charset',
 	dlgGenStyle			: 'Style',
+
+	// Find and Replace Dialog
+	dlgFindAndReplaceTitle	: 'Find and Replace',
+
+	// Find Dialog
+	dlgFindTitle		: 'Find',
+	dlgFindFindBtn		: 'Find',
+	dlgFindNotFoundMsg	: 'The specified text was not found.',
+
+	// Replace Dialog
+	dlgReplaceTitle			: 'Replace',
+	dlgReplaceFindLbl		: 'Find what:',
+	dlgReplaceReplaceLbl	: 'Replace with:',
+	dlgReplaceCaseChk		: 'Match case',
+	dlgReplaceReplaceBtn	: 'Replace',
+	dlgReplaceReplAllBtn	: 'Replace All',
+	dlgReplaceWordChk		: 'Match whole word',
 
 	// Button Dialog
Index: /CKEditor/branches/prototype/_source/plugins/find/dialogs/find.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/find/dialogs/find.js	(revision 2678)
+++ /CKEditor/branches/prototype/_source/plugins/find/dialogs/find.js	(revision 2678)
@@ -0,0 +1,171 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+ 
+ 
+findDialog = function( editor, startupTab )
+{
+	return {
+		title : editor.lang.dlgFindAndReplaceTitle,
+		resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+		minWidth : 400,
+		minHeight : 225,
+		buttons : [ CKEDITOR.dialog.cancelButton ],		//Cancel button only.
+		contents : [
+			{
+				id : 'find',
+				label : editor.lang.dlgFindTitle,
+				title : editor.lang.dlgFindTitle,
+				accessKey : '',
+				elements : [
+					{
+						type : 'hbox',
+						widths : [ '90px', '190px', '100px' ],
+						children :
+						[
+							{
+								type : 'html',
+								align : 'center',
+								html : '<span >' + CKEDITOR.tools.htmlEncode( editor.lang.dlgReplaceFindLbl ) + '</span>'
+							},
+							{
+								type : 'text',
+								id : 'txtFindFind',
+								label : '',
+								isChanged : false,
+								labelLayout : 'horizontal',
+								accessKey : 'F',
+							},
+							{
+								type : 'button',
+								align : 'center',
+								label : editor.lang.dlgFindFindBtn,
+								onClick : function()
+								{
+									alert( editor.lang.dlgFindNotFoundMsg );
+								}
+							},
+						]
+					},
+					{
+						type : 'checkbox',
+						id : 'txtFindCaseChk',
+						isChanged : false,
+						label : editor.lang.dlgReplaceCaseChk,
+					},
+					{
+						type : 'checkbox',
+						id : 'txtFindWordChk',
+						isChanged : false,
+						label : editor.lang.dlgReplaceWordChk,
+					},
+				]
+			},
+			{
+				id : 'replace',
+				label : editor.lang.dlgReplaceTitle,
+				accessKey : 'M',
+				elements : [
+					{
+						type : 'hbox',
+						widths : [ '90px', '200px', '90px' ],
+						children :
+						[
+							{
+								type : 'html',
+								align : 'center',
+								html : '<span>' + CKEDITOR.tools.htmlEncode( editor.lang.dlgReplaceFindLbl ) + '</span>'
+							},
+							{
+								type : 'text',
+								id : 'txtFindReplace',
+								label : '',
+								isChanged : false,
+								labelLayout : 'horizontal',
+								accessKey : 'F',
+							},
+							{
+								type : 'button',
+								align : 'center',
+								label : editor.lang.dlgReplaceReplaceBtn,
+								onClick : function()
+								{
+									alert( editor.lang.dlgFindNotFoundMsg );
+								}
+							},
+						]
+					},
+					{
+						type : 'hbox',
+						widths : [ '90px', '200px', '90px' ],
+						children :
+						[
+							{
+								type : 'html',
+								align : 'center',
+								html : '<span>' + CKEDITOR.tools.htmlEncode( editor.lang.dlgReplaceReplaceLbl ) + '</span>'
+							},
+							{
+								type : 'text',
+								id : 'txtReplace',
+								label : '',
+								isChanged : false,
+								labelLayout : 'horizontal',
+								accessKey : 'R',
+							},
+							{
+								type : 'button',
+								align : 'center',
+								label : editor.lang.dlgReplaceReplAllBtn,
+								isChanged : false,
+								onClick : function()
+								{
+									alert( editor.lang.dlgFindNotFoundMsg );
+								}
+							},
+						]
+					},
+					{
+						type : 'checkbox',
+						id : 'txtReplaceCaseChk',
+						isChanged : false,
+						label : editor.lang.dlgReplaceCaseChk,
+					},
+					{
+						type : 'checkbox',
+						id : 'txtReplaceWordChk',
+						isChanged : false,
+						label : editor.lang.dlgReplaceWordChk,
+					},
+				]
+			}
+		]
+	};
+};
+
+CKEDITOR.dialog.add( 'find', function( editor ){
+		return findDialog( editor, 'find' )
+	}
+);
+
+CKEDITOR.dialog.add( 'replace', function( editor ){
+		return findDialog( editor, 'replace' )
+	}
+);
Index: /CKEditor/branches/prototype/_source/plugins/find/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/find/plugin.js	(revision 2678)
+++ /CKEditor/branches/prototype/_source/plugins/find/plugin.js	(revision 2678)
@@ -0,0 +1,45 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+
+CKEDITOR.plugins.add( 'find',
+{
+	init : function( editor )
+	{
+		var forms = CKEDITOR.plugins.find;
+		editor.ui.addButton( 'Find',
+			{
+				label : editor.lang.find,
+				command : 'find'
+			});
+		editor.addCommand( 'find', new CKEDITOR.dialogCommand( 'find' ) );
+
+		editor.ui.addButton( 'Replace',
+			{
+				label : editor.lang.replace,
+				command : 'replace'
+			});
+		editor.addCommand( 'replace', new CKEDITOR.dialogCommand( 'replace' ) );
+
+		CKEDITOR.dialog.add( 'find',	this.path + 'dialogs/find.js' );
+		CKEDITOR.dialog.add( 'replace',	this.path + 'dialogs/find.js' );
+	},
+	requires : [ 'image' ]
+} );
Index: /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js	(revision 2677)
+++ /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js	(revision 2678)
@@ -222,5 +222,6 @@
 CKEDITOR.config.toolbar =
 [
-	[ 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript', '-', 'SelectAll', 'RemoveFormat', '-', 'Link', 'Unlink', 'Smiley', 'Image', 'HorizontalRule', '-', 
+	[ 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript', '-', 'Find','Replace','-',
+	'SelectAll', 'RemoveFormat', '-', 'Link', 'Unlink', 'Smiley', 'Image', 'HorizontalRule', '-', 
 	'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ]
 ];
Index: /CKEditor/branches/prototype/_source/skins/default/toolbar.css
===================================================================
--- /CKEditor/branches/prototype/_source/skins/default/toolbar.css	(revision 2677)
+++ /CKEditor/branches/prototype/_source/skins/default/toolbar.css	(revision 2678)
@@ -132,4 +132,14 @@
 }
 
+.cke_skin_default a.cke_button_find .cke_icon
+{
+	background-position: 0 -240px;
+}
+
+.cke_skin_default a.cke_button_replace .cke_icon
+{
+	background-position: 0 -256px;
+}
+
 .cke_skin_default a.cke_button_selectAll .cke_icon
 {
