Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 23401)
+++ wp-includes/post.php	(working copy)
@@ -1899,6 +1899,30 @@
 }
 
 /**
+ * Retrieve metadata for current post format
+ *
+ * @since 3.6.0
+ *
+ * @param int $post_id
+ * @return null
+ */
+function get_post_format_meta( $post_id = 0 ) {
+	$keys = get_post_custom( $post_id );
+	if ( empty( $keys ) )
+		return null;
+
+	$values = array();
+	foreach ( $keys as $key => $value ) {
+		if ( 0 === strpos( $key, '_wp_format_' ) ) {
+			$slug = str_replace( '_wp_format_', '', $key );
+			$values[$slug] = $value[0];
+		}
+	}
+
+	return $values;
+}
+
+/**
  * Check if post is sticky.
  *
  * Sticky posts should remain at the top of The Loop. If the post ID is not
Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 23401)
+++ wp-includes/script-loader.php	(working copy)
@@ -399,6 +399,8 @@
 			'comma' => _x( ',', 'tag delimiter' ),
 		) );
 
+		$scripts->add( 'post-formats', "/wp-admin/js/post-formats$suffix.js", array( 'media-models' ), false, 1 );
+
 		$scripts->add( 'link', "/wp-admin/js/link$suffix.js", array( 'wp-lists', 'postbox' ), false, 1 );
 
 		$scripts->add( 'comment', "/wp-admin/js/comment$suffix.js", array( 'jquery', 'postbox' ) );
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 23401)
+++ wp-admin/includes/post.php	(working copy)
@@ -192,13 +192,22 @@
 	}
 
 	// Post Formats
+	// @TODO: be able to delete
 	if ( isset( $post_data['post_format'] ) ) {
-		if ( current_theme_supports( 'post-formats', $post_data['post_format'] ) )
-			set_post_format( $post_ID, $post_data['post_format'] );
-		elseif ( '0' == $post_data['post_format'] )
-			set_post_format( $post_ID, false );
+		set_post_format( $post_ID, $post_data['post_format'] );
 	}
 
+	if ( isset( $post_data[ '_wp_format_url' ] ) ) {
+		update_post_meta( $post_ID, '_wp_format_url', addslashes( esc_url_raw( stripslashes( $post_data['_wp_format_url'] ) ) ) );
+	}
+
+	$format_keys = array( 'quote', 'quote_source', 'image', 'gallery', 'media' );
+
+	foreach ( $format_keys as $key ) {
+		 if ( isset( $post_data[ '_wp_format_' . $key ] ) )
+		 	update_post_meta( $post_ID, '_wp_format_' . $key, wp_filter_post_kses( $post_data[ '_wp_format_' . $key ] ) );
+	}
+
 	// Meta Stuff
 	if ( isset($post_data['meta']) && $post_data['meta'] ) {
 		foreach ( $post_data['meta'] as $key => $value ) {
Index: wp-admin/js/post-formats.js
===================================================================
--- wp-admin/js/post-formats.js	(revision 0)
+++ wp-admin/js/post-formats.js	(revision 0)
@@ -0,0 +1,63 @@
+window.wp = window.wp || {};
+
+(function($){
+	var frame;
+
+	// Post formats selection
+	$('.post-format-select a').on( 'click', function(e){
+		e.preventDefault();
+		var $this = $(this),
+			format = $this.data('wpFormat');
+		$('.post-format-select a.nav-tab-active').removeClass('nav-tab-active');
+		$this.addClass('nav-tab-active').blur();
+		$('#post_format').val(format);
+		$('#post-body-content').attr('class', 'wp-format-' + format );
+	});
+
+	// Image selection
+	$('#wp-format-image-select').click( function( event ) {
+		var $el = $(this),
+			$holder = $('#wp-format-image-holder'),
+			$field = $('#wp_format_image');
+		event.preventDefault();
+
+		// If the media frame already exists, reopen it.
+		if ( frame ) {
+			frame.open();
+			return;
+		}
+
+		// Create the media frame.
+		frame = wp.media.frames.formatImage = wp.media({
+			// Set the title of the modal.
+			title: $el.data('choose'),
+
+			// Tell the modal to show only images.
+			library: {
+				type: 'image'
+			},
+
+			// Customize the submit button.
+			button: {
+				// Set the text of the button.
+				text: $el.data('update')
+			}
+		});
+
+		// When an image is selected, run a callback.
+		frame.on( 'select', function() {
+			// Grab the selected attachment.
+			var attachment = frame.state().get('selection').first(),
+				imageUrl = attachment.get('url');
+
+			// set the hidden input's value
+			$field.attr('value', attachment.id);
+
+			// Show the image in the placeholder
+			$el.html('<img src="' + imageUrl + '" />');
+			$holder.removeClass('empty');
+		});
+
+		frame.open();
+	});
+})(jQuery);
Index: wp-admin/edit-form-advanced.php
===================================================================
--- wp-admin/edit-form-advanced.php	(revision 23401)
+++ wp-admin/edit-form-advanced.php	(working copy)
@@ -112,9 +112,6 @@
 	add_meta_box( 'submitdiv', __( 'Publish' ), 'post_submit_meta_box', null, 'side', 'core' );
 }
 
-if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post_type, 'post-formats' ) )
-	add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', null, 'side', 'core' );
-
 // all taxonomies
 foreach ( get_object_taxonomies( $post ) as $tax_name ) {
 	$taxonomy = get_taxonomy($tax_name);
@@ -129,6 +126,17 @@
 		add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name ));
 }
 
+// post format
+if ( post_type_supports( $post_type, 'post-formats' ) ) {
+	wp_enqueue_script( 'post-formats' );
+	$post_format = get_post_format();
+	$format_class = '';
+	if ( ! $post_format )
+		$post_format = 'standard';
+
+	$format_class = " class='wp-format-{$post_format}'";
+}
+
 if ( post_type_supports($post_type, 'page-attributes') )
 	add_meta_box('pageparentdiv', 'page' == $post_type ? __('Page Attributes') : __('Attributes'), 'page_attributes_meta_box', null, 'side', 'core');
 
@@ -321,8 +329,28 @@
 
 <div id="poststuff">
 
+<?php
+if ( post_type_supports( $post_type, 'post-formats' ) ) {
+	$all_post_formats = get_post_format_strings();
+
+	echo '<h2 class="nav-tab-wrapper post-format-select">';
+
+	foreach ( $all_post_formats as $slug => $label ) {
+		if ( $post_format == $slug )
+			$class = 'nav-tab nav-tab-active';
+		else
+			$class = 'nav-tab';
+
+		echo '<a class="' . $class . '" href="?format=' . $slug . '" data-wp-format="' . $slug . '">' . $label . '</a>';
+	}
+
+	echo '</h2>';
+}
+?>
+
 <div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>">
-<div id="post-body-content">
+<div id="post-body-content"<?php echo $format_class; ?>>
+
 <?php if ( post_type_supports($post_type, 'title') ) { ?>
 <div id="titlediv">
 <div id="titlewrap">
@@ -356,6 +384,65 @@
 
 do_action( 'edit_form_after_title' );
 
+// post format fields
+if ( post_type_supports( $post_type, 'post-formats' ) ) {
+	$format_meta = get_post_format_meta( $post_ID );
+
+if ( isset( $format_meta['image'] ) )
+	$image = is_numeric( $format_meta['image'] ) ? wp_get_attachment_url( $format_meta['image'] ) : $format_meta['image'];
+else
+	$image = false;
+?>
+<div class="post-formats-fields">
+
+<input type="hidden" name="post_format" id="post_format" value="<?php echo esc_attr( $post_format ); ?>" />
+
+<div class="field wp-format-quote">
+	<label for="_wp_format_quote" class="screen-reader-text"><?php _e( 'Quote' ); ?>:</label>
+	<textarea name="_wp_format_quote" placeholder="<?php _e( 'Quote' ); ?>" class="widefat"><?php echo esc_textarea( $format_meta['quote'] ); ?></textarea>
+</div>
+
+<div class="field wp-format-quote">
+	<label for="_wp_format_quote_source" class="screen-reader-text"><?php _e( 'Quote source' ); ?>:</label>
+	<input type="text" name="_wp_format_quote_source" value="<?php echo esc_attr( $format_meta['quote_source'] ); ?>" placeholder="<?php _e( 'Quote source' ); ?>" class="widefat" />
+</div>
+
+<div class="field wp-format-image">
+	<div id="wp-format-image-holder" class="hide-if-no-js<?php if ( ! $image ) echo ' empty'; ?>">
+		<a href="#" id="wp-format-image-select"
+			data-choose="<?php esc_attr_e( 'Choose an Image' ); ?>"
+			data-update="<?php esc_attr_e( 'Select Image' ); ?>">
+			<?php
+				if ( $image )
+					echo "<img src='{$image}' />";
+				else
+					_e( 'Select Image' );
+			?>
+		</a>
+	</div>
+	<label for="_wp_format_image" class="screen-reader-text"><?php _e( 'Image ID or URL' ); ?>:</label>
+	<input type="text" name="_wp_format_image" id="wp_format_image" value="<?php echo esc_attr( $format_meta['image'] ); ?>" placeholder="<?php _e( 'Image ID or URL' ); ?>" class="widefat hide-if-js" />
+</div>
+
+<div class="field wp-format-link wp-format-quote wp-format-image">
+	<label for="_wp_format_url" class="screen-reader-text"><?php _e( 'Link URL' ); ?>:</label>
+	<input type="text" name="_wp_format_url" value="<?php echo esc_url( $format_meta['url'] ); ?>" placeholder="<?php _e( 'Link URL' ); ?>" class="widefat" />
+</div>
+
+<div class="field wp-format-gallery">
+	<label for="_wp_format_gallery" class="screen-reader-text"><?php _e( 'Gallery shortcode' ); ?>:</label>
+	<input type="text" name="_wp_format_gallery" value="<?php echo esc_attr( $format_meta['gallery'] ); ?>" placeholder="<?php _e( 'Gallery shortcode' ); ?>" class="widefat" />
+</div>
+
+<div class="field wp-format-audio wp-format-video">
+	<label for="_wp_format_media" class="screen-reader-text"><?php _e( 'Embed code or URL' ); ?>:</label>
+	<textarea name="_wp_format_media" placeholder="<?php _e( 'Embed code or URL' ); ?>" class="widefat"><?php echo esc_textarea( $format_meta['media'] ); ?></textarea>
+</div>
+
+</div>
+<?php
+}
+
 if ( post_type_supports($post_type, 'editor') ) {
 ?>
 <div id="postdivrich" class="postarea">
Index: wp-admin/css/wp-admin.css
===================================================================
--- wp-admin/css/wp-admin.css	(revision 23401)
+++ wp-admin/css/wp-admin.css	(working copy)
@@ -750,7 +750,8 @@
 	background-color: #eee;
 }
 
-:-moz-placeholder {
+:-moz-placeholder,
+.wp-core-ui :-moz-placeholder {
    color: #a9a9a9;
 }
 
@@ -3089,11 +3090,94 @@
 	margin: 2px 0 2px -2px;
 }
 
-#post-status-select, #post-format {
+#post-status-select {
 	line-height: 2.5em;
 	margin-top: 3px;
 }
 
+/* Post formats form */
+#poststuff .post-format-select {
+	margin-top: 0;
+	padding-bottom: 0;
+}
+
+.post-formats-fields {
+	margin-bottom: 20px;
+}
+
+.wp-format-standard .post-formats-fields,
+.wp-format-aside .post-formats-fields,
+.wp-format-chat .post-formats-fields,
+.wp-format-status .post-formats-fields {
+	display: none;
+}
+
+.post-formats-fields .field {
+	display: none;
+	margin-bottom: 10px;
+}
+
+.post-formats-fields input,
+.post-formats-fields textarea {
+	padding: 5px;
+	font-size: 1.2em;
+}
+
+.wp-format-chat .field.wp-format-chat,
+.wp-format-gallery .field.wp-format-gallery,
+.wp-format-link .field.wp-format-link,
+.wp-format-image .field.wp-format-image,
+.wp-format-quote .field.wp-format-quote,
+.wp-format-video .field.wp-format-video,
+.wp-format-audio .field.wp-format-audio {
+	display: block;
+}
+
+/*.wp-format-image .post-formats-fields,
+.wp-format-video .post-formats-fields,
+.wp-format-audio .post-formats-fields {
+	width: 30%;
+	float: left;
+}
+
+.wp-format-image #postdivrich,
+.wp-format-video #postdivrich,
+.wp-format-audio #postdivrich {
+	width: 69%;
+	float: right;
+}*/
+
+#wp-format-image-holder {
+	overflow: hidden;
+	width: 300px;
+	height: 200px;
+	background: #f5f5f5;
+	box-shadow:
+		inset 0 0 15px rgba( 0, 0, 0, 0.1 ),
+		inset 0 0 0 1px rgba( 0, 0, 0, 0.05 );
+}
+
+#wp-format-image-holder:hover {
+	background-color: #eee;
+}
+
+#wp-format-image-select {
+	display: block;
+	height: 200px;
+	text-align: center;
+}
+
+#wp-format-image-select img {
+	max-width: 100%;
+	max-height: 100%;
+}
+
+.empty #wp-format-image-select {
+	padding-top: 120px;
+	height: 80px;
+	background: url(../images/media-button-2x.png) no-repeat center;
+}
+
 /* Post Screen */
 #post-body #normal-sortables {
 	min-height: 50px;
