Index: wp-includes/theme.php
===================================================================
--- wp-includes/theme.php	(revision 13871)
+++ wp-includes/theme.php	(working copy)
@@ -1320,6 +1320,28 @@
 }
 
 /**
+ * Retrieve header background color for custom header.
+ *
+ * @since 3.0
+ * @uses HEADER_BGCOLOR
+ *
+ * @return string
+ */
+function get_header_bgcolor() {
+	return get_theme_mod('header_bgcolor', HEADER_BGCOLOR);
+}
+
+/**
+ * Display header image path.
+ *
+ * @since 3.0
+ */
+function header_bgcolor() {
+	echo get_header_bgcolor();
+}
+
+
+/**
  * Add callbacks for image header display.
  *
  * The parameter $header_callback callback will be required to display the
@@ -1335,8 +1357,10 @@
  * @param callback $admin_image_div_callback Output a custom header image div on the custom header administration screen. Optional.
  */
 function add_custom_image_header($header_callback, $admin_header_callback, $admin_image_div_callback = '') {
-	if ( ! empty($header_callback) )
-		add_action('wp_head', $header_callback);
+	if (  empty($header_callback) )
+		$header_callback = '_custom_header_cb';
+		
+	add_action('wp_head', $header_callback);
 
 	add_theme_support( 'custom-header' );
 
@@ -1348,6 +1372,33 @@
 }
 
 /**
+ * Default custom header callback.
+ *
+ * @since 3.0.0
+ * @see add_custom_image_header()
+ * @access protected
+ */
+function _custom_header_cb() {
+
+	$color = get_header_bgcolor();
+	$bg = get_header_image();
+	
+	if( $bg == 'bgcolor' )
+	{
+	
+	?>
+	<style type="text/css">
+	#header-background {
+		background-color: #<?=$color?>;
+		 width: <?php echo HEADER_IMAGE_WIDTH; ?>px;
+		 height: <?php echo HEADER_IMAGE_HEIGHT; ?>px;
+	}
+	</style>
+	<?php
+	}
+}
+
+/**
  * Register a selection of default headers to be displayed by the custom header admin UI.
  *
  * @since 3.0.0
Index: wp-content/themes/twentyten/style.css
===================================================================
--- wp-content/themes/twentyten/style.css	(revision 13871)
+++ wp-content/themes/twentyten/style.css	(working copy)
@@ -342,7 +342,7 @@
 }
 
 /* This is the custom header image */
-#branding img {
+#branding img, #branding #header-background {
 	clear: both;
 	border-top: 4px solid #000;
 	display: block;
Index: wp-content/themes/twentyten/functions.php
===================================================================
--- wp-content/themes/twentyten/functions.php	(revision 13871)
+++ wp-content/themes/twentyten/functions.php	(working copy)
@@ -9,6 +9,7 @@
 	// Your Changeable header business starts here
 	// No CSS, just IMG call
 	define( 'HEADER_TEXTCOLOR', '' );
+	define( 'HEADER_BGCOLOR', '21759b' );
 	define( 'HEADER_IMAGE', '%s/images/headers/forestfloor.jpg' ); // %s is theme dir uri
 	define( 'HEADER_IMAGE_WIDTH', apply_filters( 'twentyten_header_image_width',  940 ) );
 	define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'twentyten_header_image_height',	198 ) );
Index: wp-content/themes/twentyten/header.php
===================================================================
--- wp-content/themes/twentyten/header.php	(revision 13871)
+++ wp-content/themes/twentyten/header.php	(working copy)
@@ -47,6 +47,11 @@
 					if ( is_singular() && has_post_thumbnail( $post->ID ) && $width >= HEADER_IMAGE_WIDTH ) :		
 						// Houston, we have a new header image!
 						echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' );
+					elseif ( get_header_image() == "bgcolor" ) : ?>
+					
+					<div id="header-background"> </div>
+					
+					<?php
 					else : ?>
 						<img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />
 					<?php endif; ?>
Index: wp-admin/custom-header.php
===================================================================
--- wp-admin/custom-header.php	(revision 13871)
+++ wp-admin/custom-header.php	(working copy)
@@ -132,17 +132,22 @@
 			}
 		}
 
-		if ( isset($_POST['resetheader']) ) {
-			check_admin_referer('custom-header');
-			remove_theme_mods();
-		}
-
 		if ( isset($_POST['default-header']) ) {
 			check_admin_referer('custom-header');
 			$this->process_default_headers();
 			if ( isset($this->default_headers[$_POST['default-header']]) )
 				set_theme_mod('header_image', esc_url($this->default_headers[$_POST['default-header']]['url']));
 		}
+		
+		if ( isset($_POST['default-header-color']) && $_POST['default-header'] == 'bgcolor' ) {
+			check_admin_referer('custom-header');
+			$color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['default-header-color']);
+			if ( strlen($color) == 6 || strlen($color) == 3 ) {
+				set_theme_mod('header_image', 'bgcolor');
+				set_theme_mod('header_bgcolor', $color);
+			}
+		}
+		
 	}
 
 	/**
@@ -172,9 +177,14 @@
 	 * @since 3.0.0
 	 */
 	function show_default_header_selector() {
+	
+		echo '<div id="bgcolorPickerDiv" style="z-index: 100;background:#eee;border:1px solid #ccc;position:absolute;display:none;"></div>';
+		
 		echo '<table id="available-headers" cellspacing="0" cellpadding="0">';
-
+		
 		$headers = array_keys($this->default_headers);
+		array_unshift( $headers, "bgcolor" );
+		
 		$table = array();
 		$rows = ceil(count($headers) / 3);
 		for ( $row = 1; $row <= $rows; $row++ ) {
@@ -195,11 +205,20 @@
 				if ( $col == 3 ) $class[] = 'right';
 				if ( !isset($this->headers[$header_key]))
 				echo '<td class="' . join(' ', $class) . '">';
-				$header_thumbnail = $this->default_headers[$header_key]['thumbnail_url'];
-				$header_url = $this->default_headers[$header_key]['url'];
-				$header_desc = $this->default_headers[$header_key]['description'];
-				echo '<label><input name="default-header" type="radio" value="' . esc_attr($header_key) . '" ' . checked($header_url, get_header_image(), false) . ' />';
-				echo '<img src="' . $header_thumbnail . '" alt="' . esc_attr($header_desc) .'" /></label>';
+								
+				if ( $header_key == "bgcolor" ) {
+					echo '<label><input name="default-header" type="radio" value="bgcolor" ' . checked('bgcolor', get_theme_mod('header_image'), false) . ' />';
+					echo '<input name="default-header-color" id="default-header-color" type="text" style="width: 230px; height: 48px;"  value="'.esc_attr(get_header_bgcolor()).'"/></label>';
+				}
+				
+				else {
+					$header_thumbnail = $this->default_headers[$header_key]['thumbnail_url'];
+					$header_url = $this->default_headers[$header_key]['url'];
+					$header_desc = $this->default_headers[$header_key]['description'];
+					echo '<label><input name="default-header" type="radio" value="' . esc_attr($header_key) . '" ' . checked($header_url, get_header_image(), false) . ' />';
+					echo '<img src="' . $header_thumbnail . '" alt="' . esc_attr($header_desc) .'" /></label>';
+				}
+				
 				echo  '</td>';
 			}
 			echo '</tr>';
@@ -227,28 +246,48 @@
 	 */
 	function js_1() { ?>
 <script type="text/javascript">
-	var buttons = ['#name', '#desc', '#pickcolor', '#defaultcolor'];
+	var buttons = ['#name', '#desc', '#pickcolor', '#defaultcolor', '#default-header-color'];
 	var farbtastic;
+	var selecteditem;
 
 	function pickColor(color) {
-		jQuery('#name').css('color', color);
-		jQuery('#desc').css('color', color);
-		jQuery('#textcolor').val(color);
-		farbtastic.setColor(color);
+		if( selecteditem == 'textcolor' ) {
+			jQuery('#name').css('color', color);
+			jQuery('#desc').css('color', color);
+			jQuery('#textcolor').val(color);
+			farbtastic.setColor(color);
+		}
+		
+		else
+		{
+			jQuery('#default-header-color').val(color);
+			jQuery('#default-header-color').css('background-color', color);
+			farbtastic.setColor(color);
+		}		
 	}
-
+	
 	jQuery(document).ready(function() {
 		jQuery('#pickcolor').click(function() {
+			selecteditem = 'textcolor';
 			jQuery('#colorPickerDiv').show();
 		});
+		
+		jQuery('#default-header-color').click(function() {
+			selecteditem = 'bgcolor';
+			jQuery('#colorPickerDiv').show();
+		});
 
 		jQuery('#hidetext').click(function() {
 			toggle_text();
 		});
 
 		farbtastic = jQuery.farbtastic('#colorPickerDiv', function(color) { pickColor(color); });
-		pickColor('#<?php echo get_theme_mod('header_textcolor', HEADER_TEXTCOLOR); ?>');
-
+		
+		selecteditem = 'bgcolor';
+		pickColor('#<?php echo get_theme_mod('header_bgcolor', HEADER_BGCOLOR); ?>');
+		selecteditem = 'textcolor';
+		pickColor('#<?php echo get_theme_mod('header_textcolor', HEADER_TEXTCOLOR); ?>'); 
+		
 		<?php if ( 'blank' == get_theme_mod('header_textcolor', HEADER_TEXTCOLOR) ) { ?>
 		toggle_text();
 		<?php } ?>
@@ -257,6 +296,7 @@
 	jQuery(document).mousedown(function(){
 		// Make the picker disappear, since we're using it in an independant div
 		hide_picker();
+		hide_bgpicker();
 	});
 
 	function colorDefault() {
@@ -276,6 +316,20 @@
 			}
 		});
 	}
+	
+	function hide_bgpicker(what) {
+		var update = false;
+		jQuery('#bgcolorPickerDiv').each(function(){
+			var id = jQuery(this).attr('id');
+			if (id == what) {
+				return;
+			}
+			var display = jQuery(this).css('display');
+			if (display == 'block') {
+				jQuery(this).fadeOut(2);
+			}
+		});
+	}
 
 	function toggle_text(force) {
 		if (jQuery('#textcolor').val() == 'blank') {
@@ -378,8 +432,18 @@
 if ( $this->admin_image_div_callback ) {
   call_user_func($this->admin_image_div_callback);
 } else {
+if( get_theme_mod('header_image') == "bgcolor" ) {
 ?>
+<div id="headimg" style="background-color: #<?=get_theme_mod('header_bgcolor', HEADER_BGCOLOR)?>;">
+<?php
+}
+else {
+?>
 <div id="headimg" style="background-image: url(<?php esc_url(header_image()) ?>);">
+<?php
+}
+?>
+
 <h1><a onclick="return false;" href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>" id="name"><?php bloginfo('name'); ?></a></h1>
 <div id="desc"><?php bloginfo('description');?></div>
 </div>
