Index: wp-includes/media.php
===================================================================
--- wp-includes/media.php	(revision 7221)
+++ wp-includes/media.php	(working copy)
@@ -338,4 +338,27 @@
 	return $output;
 }
 
+function previous_image_link() {
+	adjacent_image_link(true);
+}
+
+function next_image_link() {
+	adjacent_image_link(false);
+}
+
+function adjacent_image_link($prev = true) {
+	global $post;
+	$post = get_post($post);
+	$attachments = array_values(get_children("post_parent=$post->post_parent&post_type=attachment&post_mime_type=image&orderby=\"menu_order ASC, ID ASC\""));
+
+	foreach ( $attachments as $k => $attachment )
+		if ( $attachment->ID == $post->ID )
+			break;
+
+	$k = $prev ? $k - 1 : $k + 1;
+
+	if ( isset($attachments[$k]) )
+		echo get_the_attachment_link($attachments[$k]->ID, true, array(128, 96), true);
+}
+
 ?>
Index: wp-content/themes/default/image.php
===================================================================
--- wp-content/themes/default/image.php	(revision 0)
+++ wp-content/themes/default/image.php	(revision 0)
@@ -0,0 +1,63 @@
+<?php get_header(); ?>
+
+	<div id="content" class="widecolumn">
+
+  <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
+
+		<div class="post" id="post-<?php the_ID(); ?>">
+			<h2><a href="<?php echo get_permalink($post->post_parent); ?>" rev="attachment"><?php echo get_the_title($post->post_parent); ?></a> &raquo; <?php the_title(); ?></h2>
+			<div class="entry">
+				<p class="attachment"><?php echo wp_get_attachment_link(0, 'medium', false); ?></p>
+
+				<?php the_content('<p class="serif">Read the rest of this entry &raquo;</p>'); ?>
+
+				<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
+
+				<div class="navigation">
+					<div class="alignleft"><?php previous_image_link() ?></div>
+					<div class="alignright"><?php next_image_link() ?></div>
+				</div>
+				<br class="clear" />
+
+				<p class="postmetadata alt">
+					<small>
+						This entry was posted on <?php the_time('l, F jS, Y') ?> at <?php the_time() ?>
+						and is filed under <?php the_category(', ') ?>.
+						You can follow any responses to this entry through the <?php post_comments_feed_link('RSS 2.0'); ?> feed.
+
+						<?php if (('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
+							// Both Comments and Pings are open ?>
+							You can <a href="#respond">leave a response</a>, or <a href="<?php trackback_url(); ?>" rel="trackback">trackback</a> from your own site.
+
+						<?php } elseif (!('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
+							// Only Pings are Open ?>
+							Responses are currently closed, but you can <a href="<?php trackback_url(); ?> " rel="trackback">trackback</a> from your own site.
+
+						<?php } elseif (('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
+							// Comments are open, Pings are not ?>
+							You can skip to the end and leave a response. Pinging is currently not allowed.
+
+						<?php } elseif (!('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
+							// Neither Comments, nor Pings are open ?>
+							Both comments and pings are currently closed.
+
+						<?php } edit_post_link('Edit this entry.','',''); ?>
+
+					</small>
+				</p>
+
+			</div>
+
+		</div>
+
+	<?php comments_template(); ?>
+
+	<?php endwhile; else: ?>
+
+		<p>Sorry, no attachments matched your criteria.</p>
+
+<?php endif; ?>
+
+	</div>
+
+<?php get_footer(); ?>
Index: wp-content/themes/default/attachment.php
===================================================================
--- wp-content/themes/default/attachment.php	(revision 7221)
+++ wp-content/themes/default/attachment.php	(working copy)
@@ -1,65 +0,0 @@
-<?php get_header(); ?>
-
-	<div id="content" class="widecolumn">
-
-  <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
-
-		<div class="navigation">
-			<div class="alignleft">&nbsp;</div>
-			<div class="alignright">&nbsp;</div>
-		</div>
-		<div class="post" id="post-<?php the_ID(); ?>">
-			<h2><a href="<?php echo get_permalink($post->post_parent); ?>" rev="attachment"><?php echo get_the_title($post->post_parent); ?></a> &raquo; <a href="<?php echo get_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
-			<div class="entry">
-				<p class="attachment"><?php echo wp_get_attachment_link(0, 'medium', false); ?></p>
-
-				<?php the_content('<p class="serif">Read the rest of this entry &raquo;</p>'); ?>
-
-				<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
-
-				<p class="postmetadata alt">
-					<small>
-						This entry was posted
-						<?php /* This is commented, because it requires a little adjusting sometimes.
-							You'll need to download this plugin, and follow the instructions:
-							http://binarybonsai.com/archives/2004/08/17/time-since-plugin/ */
-							/* $entry_datetime = abs(strtotime($post->post_date) - (60*120)); echo time_since($entry_datetime); echo ' ago'; */ ?>
-						on <?php the_time('l, F jS, Y') ?> at <?php the_time() ?>
-						and is filed under <?php the_category(', ') ?>.
-						You can follow any responses to this entry through the <?php post_comments_feed_link('RSS 2.0'); ?> feed.
-
-						<?php if (('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
-							// Both Comments and Pings are open ?>
-							You can <a href="#respond">leave a response</a>, or <a href="<?php trackback_url(); ?>" rel="trackback">trackback</a> from your own site.
-
-						<?php } elseif (!('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
-							// Only Pings are Open ?>
-							Responses are currently closed, but you can <a href="<?php trackback_url(); ?> " rel="trackback">trackback</a> from your own site.
-
-						<?php } elseif (('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
-							// Comments are open, Pings are not ?>
-							You can skip to the end and leave a response. Pinging is currently not allowed.
-
-						<?php } elseif (!('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
-							// Neither Comments, nor Pings are open ?>
-							Both comments and pings are currently closed.
-
-						<?php } edit_post_link('Edit this entry.','',''); ?>
-
-					</small>
-				</p>
-
-			</div>
-		</div>
-
-	<?php comments_template(); ?>
-
-	<?php endwhile; else: ?>
-
-		<p>Sorry, no attachments matched your criteria.</p>
-
-<?php endif; ?>
-
-	</div>
-
-<?php get_footer(); ?>
