Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 6049)
+++ wp-includes/script-loader.php	(working copy)
@@ -142,6 +142,10 @@
 				'saveText' => attribute_escape(__('Save &raquo;')),
 				'confirmText' => __("Are you sure you want to delete the file '%title%'?\nClick ok to delete or cancel to go back.")
 			) );
+			$this->add( 'word-count', '/wp-admin/js/word-count.js', array( 'jquery' ), '20070906' );
+			$this->localize( 'word-count', 'wordCountL10n', array(
+				'count' => __('Word count: %d')
+			) );
 		}
 	}
 
Index: wp-admin/wp-admin.css
===================================================================
--- wp-admin/wp-admin.css	(revision 6049)
+++ wp-admin/wp-admin.css	(working copy)
@@ -626,6 +626,12 @@
 	margin-bottom: 3px;
 }
 
+.wp-word-count {
+	float: left;
+	margin: 5px 0 4px;
+	padding: 0.25em 2ex .25em 0;
+}
+
 #title {
 	font-size: 1.7em;
 	padding: 4px 3px;
Index: wp-admin/js/word-count.js
===================================================================
--- wp-admin/js/word-count.js	(revision 0)
+++ wp-admin/js/word-count.js	(revision 0)
@@ -0,0 +1,62 @@
+jQuery( function($) {
+	
+	var w = $("<span class='wp-word-count'>" + wordCountL10n.count.replace( /%d/, "<span id='word-count'></span>" ) + "</span>").prependTo('#poststuff p.submit:first');
+
+	var block = 0;
+	var wc = function(text) {
+		if ( block ) return;
+		block = 1;
+
+		setTimeout( function() {
+			var t = $.trim(text);
+			var tc = '0';
+			if ( t ) {
+				t = t.replace( /<.[^<>]*?>/g, '' );
+				tc = t.split( /\b[^\w']+\b/ ).length.toString();
+			}
+
+			w.children('span')[0].innerHTML = tc;
+
+			setTimeout( function() { block = 0; }, 2000 );
+		}, 1 );
+	};
+
+	var fwc = function() {
+		var t =  parseInt(w.children('span').text()) + 1;
+		w.children('span').text( t.toString() );
+	};
+
+	var last = 0;
+
+	var co = $('#content').keyup( function(e) {
+		if ( e.keyCode == last )
+			return true;
+		if ( 13 == e.keyCode )
+			wc( co.val() );
+		else if ( 32 == last )
+			fwc();
+		last = e.keyCode;
+		return true;
+	} );
+
+	wc(co.val());
+
+	if ( 'undefined' == typeof TinyMCE_wordpressPlugin ) { return; }
+	var o = $.isFunction(TinyMCE_wordpressPlugin.handleEvent) ? TinyMCE_wordpressPlugin.handleEvent : function() { return true; };
+
+	TinyMCE_wordpressPlugin.handleEvent = function(e) {
+		if ( !o(e) )
+			return false;
+		if ( 'keyup' == e.type ) {
+			if ( e.keyCode == last )
+				return true;
+			if ( 13 == e.keyCode )
+				wc( tinyMCE.getInstanceById('content').getHTML() );
+			else if ( 32 == last )
+				fwc();
+			last = e.keyCode;
+		}
+		return true;
+	};
+
+} );

Property changes on: wp-admin/js/word-count.js
___________________________________________________________________
Name: svn:eol-style
   + native

Index: wp-admin/admin-header.php
===================================================================
--- wp-admin/admin-header.php	(revision 6049)
+++ wp-admin/admin-header.php	(working copy)
@@ -2,7 +2,7 @@
 @header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
 if (!isset($_GET["page"])) require_once('admin.php');
 if ( $editing ) {
-	wp_enqueue_script( array('dbx-admin-key?pagenow=' . attribute_escape($pagenow),'admin-custom-fields') );
+	wp_enqueue_script( array('dbx-admin-key?pagenow=' . attribute_escape($pagenow), 'admin-custom-fields', 'word-count') );
 	if ( current_user_can('manage_categories') )
 		wp_enqueue_script( 'ajaxcat' );
 	if ( user_can_richedit() )

