Index: wp-includes/js/comment-reply.js
===================================================================
--- wp-includes/js/comment-reply.js	(revision 0)
+++ wp-includes/js/comment-reply.js	(revision 0)
@@ -0,0 +1,37 @@
+function moveAddCommentForm(theId, threadId) {
+	var addComment = document.getElementById("respond");
+	var comment = document.getElementById(theId);
+	addComment.parentNode.removeChild(addComment);
+
+	comment.appendChild(addComment);
+//	if(comment.className.indexOf("alt")>-1) {
+//		addComment.className = addComment.className.replace(" alt", "");					
+//	} else {
+//		addComment.className += " alt";
+//	}
+	var replyId = document.getElementById("comment-parent");
+	replyId.value = threadId;
+	var reRootElement = document.getElementById("cancel-comment-reply");
+	reRootElement.style.display = "block";
+	var aTags = comment.getElementsByTagName("A");
+	var anc = aTags.item(0).id;
+	//document.location.href = "#"+anc;
+	document.getElementById("comment").focus();
+}
+
+function cancelCommentReply() {
+	var addComment = document.getElementById("respond");			
+	var reRootElement = document.getElementById("cancel-comment-reply");
+	reRootElement.style.display = "none";
+	var content = document.getElementById("content-main");
+	if( !content )
+		content = document.getElementById("content");
+	if( content ) {
+		addComment.parentNode.removeChild(addComment);
+		content.appendChild(addComment);
+	}
+//	addComment.className = addComment.className.replace(" alt", "");
+	document.location.href = "#respond";
+	document.getElementById("comment").focus();				
+	document.getElementById("comment-parent").value = "0";
+}
\ No newline at end of file
Index: wp-includes/comment-template.php
===================================================================
--- wp-includes/comment-template.php	(revision 8779)
+++ wp-includes/comment-template.php	(working copy)
@@ -227,9 +227,13 @@
  * @param int $comment_id An optional comment ID
  * @param int $post_id An optional post ID
  */
-function comment_class( $class = '', $comment_id = null, $post_id = null ) {
-	// Separates classes with a single space, collates classes for post DIV
-	echo 'class="' . join( ' ', get_comment_class( $class, $comment_id, $post_id ) ) . '"';
+function comment_class( $class = '', $comment_id = null, $post_id = null, $echo = true ) {
+	// Separates classes with a single space, collates classes for comment DIV
+	$class = 'class="' . join( ' ', get_comment_class( $class, $comment_id, $post_id ) ) . '"';
+	if ( $echo)
+		echo $class;
+	else
+		return $class;
 }
 
 /**
@@ -266,10 +270,12 @@
 	if ( empty($comment_alt) )
 		$comment_alt = 0;
 
-	if ( $comment_alt % 2 )
+	if ( $comment_alt % 2 ) {
 		$classes[] = 'odd';
-	else
+		$classes[] = 'alt';
+	} else {
 		$classes[] = 'even';
+	}
 
 	$comment_alt++;
 
@@ -837,4 +843,114 @@
 	echo '</a>';
 }
 
+function comment_reply_link($args = array(), $comment = null, $post = null) {
+	global $user_ID;
+
+	$defaults = array('add_below' => 'comment', 'reply_text' => __('Reply'),
+		'login_text' => __('Log in to Reply'));
+
+	$args = wp_parse_args($args, $defaults);
+
+	extract($args, EXTR_SKIP);
+
+	$comment = get_comment($comment);
+	$post = get_post($post);
+
+	if ( 'open' != $post->comment_status )
+		return false;
+
+	$link = '';
+
+	if ( get_option('comment_registration') && !$user_ID )
+		$link = '<a href="' . site_url('wp-login.php?redirect_to=' . get_permalink()) . '">' . $login_text . '</a>';
+	else 
+		$link = "<a href='#' onclick='moveAddCommentForm(\"$add_below-$comment->comment_ID\", $comment->comment_ID); return false;'>$reply_text</a>";
+
+	return $link;
+}
+
+function cancel_comment_reply_link($text = '') {
+	if ( empty($text) )
+		$text = __('Click here to cancel reply.');
+	echo '<a href="#" onclick="cancelCommentReply(); return false;">' . $text . '</a>';
+}
+
+class Walker_Comment extends Walker {
+	var $tree_type = 'comment';
+	var $db_fields = array ('parent' => 'comment_parent', 'id' => 'comment_ID');
+
+	function start_lvl(&$output, $depth, $args) {
+		if ( 'div' == $args['style'] )
+			return;
+
+		echo "<ul class='children'>\n";
+	}
+
+	function end_lvl(&$output, $depth, $args) {
+		if ( 'div' == $args['style'] )
+			return;
+
+		echo "</ul>\n";
+	}
+
+	function start_el(&$output, $comment, $depth, $args) {
+		$depth++;
+
+		if ( !empty($args['callback']) ) {
+			call_user_func($args['callback'], $comment, $args, $depth);
+			return;
+		}
+
+		$GLOBALS['comment'] = $comment;
+		extract($args, EXTR_SKIP);
+
+		if ( 'div' == $args['style'] )
+			$tag = 'div';
+		else
+			$tag = 'li';
+?>
+		<<?php echo $tag ?> "<?php comment_class() ?>" id="comment-<?php comment_ID() ?>">
+		<div id="div-comment-<?php comment_ID() ?>">
+		<div class="comment-author vcard">
+		<?php echo get_avatar( $comment, 32 ) ?>
+		<?php printf(__('<cite>%s</cite> Says:'), get_comment_author_link()) ?>
+		</div>
+<?php if ($comment->comment_approved == '0') : ?>
+		<em><?php _e('Your comment is awaiting moderation.') ?></em>
+		<br />
+<?php endif; ?>
+
+		<div class="comment-meta commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php printf(__('%1$s at %2$s'), get_comment_date('F jS, Y'),  get_comment_time()) ?></a><?php edit_comment_link('edit','&nbsp;&nbsp;','') ?></div>
+
+		<?php echo apply_filters('comment_text', get_comment_text()) ?>
+
+		<div class='reply'>
+		<?php if ( $depth < $args['depth'] ) echo comment_reply_link(array('add_below' => 'div-comment')) ?>
+		</div>
+		</div>
+<?php
+	}
+
+	function end_el(&$output, $comment, $depth, $args) {
+		if ( 'div' == $args['style'] )
+			echo "</div>\n";
+		else
+			echo "</li>\n";
+	}
+
+}
+
+function wp_list_comments(&$comments, $args = array() ) {
+	$defaults = array('walker' => '', 'depth' => 4, 'style' => 'list', 'callback' => null);
+
+	$r = wp_parse_args( $args, $defaults );
+
+	extract( $r );
+
+	if ( empty($walker) )
+		$walker = new Walker_Comment;
+
+	$walker->walk($comments, $depth, $r);
+}
+
 ?>
\ No newline at end of file
Index: wp-includes/link-template.php
===================================================================
--- wp-includes/link-template.php	(revision 8779)
+++ wp-includes/link-template.php	(working copy)
@@ -531,7 +531,7 @@
 	return apply_filters( 'get_edit_comment_link', $location );
 }
 
-function edit_comment_link( $link = 'Edit This', $before = '', $after = '' ) {
+function edit_comment_link( $link = 'Edit This', $before = '', $after = '', $echo = true ) {
 	global $comment, $post;
 
 	if ( $post->post_type == 'attachment' ) {
@@ -544,7 +544,11 @@
 	}
 
 	$link = '<a href="' . get_edit_comment_link( $comment->comment_ID ) . '" title="' . __( 'Edit comment' ) . '">' . $link . '</a>';
-	echo $before . apply_filters( 'edit_comment_link', $link, $comment->comment_ID ) . $after;
+	$link = $before . apply_filters( 'edit_comment_link', $link, $comment->comment_ID ) . $after;
+	if ( $echo )
+		echo $link;
+	else
+		return $link;
 }
 
 function get_edit_bookmark_link( $link = 0 ) {
Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 8779)
+++ wp-includes/script-loader.php	(working copy)
@@ -109,6 +109,8 @@
 	$scripts->add( 'jquery-ui-resizable', '/wp-includes/js/jquery/ui.resizable.js', array('jquery-ui-core'), '1.5.2' );
 	$scripts->add( 'jquery-ui-dialog', '/wp-includes/js/jquery/ui.dialog.js', array('jquery-ui-resizable', 'jquery-ui-draggable'), '1.5.2' );
 
+	$scripts->add( 'comment-reply', '/wp-includes/js/comment-reply.js', false, '20080828');
+
 	if ( is_admin() ) {
 		$scripts->add( 'ajaxcat', '/wp-admin/js/cat.js', array( 'wp-lists' ), '20071101' );
 		$scripts->localize( 'ajaxcat', 'catL10n', array(
Index: wp-content/themes/default/comments.php
===================================================================
--- wp-content/themes/default/comments.php	(revision 8779)
+++ wp-content/themes/default/comments.php	(working copy)
@@ -23,30 +23,7 @@
 	<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;</h3>
 
 	<ol class="commentlist">
-
-	<?php foreach ($comments as $comment) : ?>
-
-		<li <?php comment_class($oddcomment) ?> id="comment-<?php comment_ID() ?>">
-			<?php echo get_avatar( $comment, 32 ); ?>
-			<cite><?php comment_author_link() ?></cite> Says:
-			<?php if ($comment->comment_approved == '0') : ?>
-			<em>Your comment is awaiting moderation.</em>
-			<?php endif; ?>
-			<br />
-
-			<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?></small>
-
-			<?php comment_text() ?>
-
-		</li>
-
-	<?php
-		/* Changes every other comment to a different class */
-		$oddcomment = ( empty( $oddcomment ) ) ? 'alt' : '';
-	?>
-
-	<?php endforeach; /* end for each comment */ ?>
-
+	<?php wp_list_comments($comments); ?>
 	</ol>
 
  <?php else : // this is displayed if there are no comments so far ?>
@@ -64,8 +41,14 @@
 
 <?php if ('open' == $post->comment_status) : ?>
 
-<h3 id="respond">Leave a Reply</h3>
+<div id="respond">
 
+<h3>Leave a Reply</h3>
+
+<div id="cancel-comment-reply" style="display: none;">
+	<small><?php echo cancel_comment_reply_link() ?></small>
+</div>
+
 <?php if ( get_option('comment_registration') && !$user_ID ) : ?>
 <p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>
 <?php else : ?>
@@ -95,10 +78,12 @@
 
 <p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
 <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
+<input type="hidden" name="comment_parent" id="comment-parent" value="0" />
 </p>
 <?php do_action('comment_form', $post->ID); ?>
 
 </form>
+</div>
 
 <?php endif; // If registration required and not logged in ?>
 
Index: wp-content/themes/default/header.php
===================================================================
--- wp-content/themes/default/header.php	(revision 8779)
+++ wp-content/themes/default/header.php	(working copy)
@@ -24,6 +24,8 @@
 
 </style>
 
+<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>
+
 <?php wp_head(); ?>
 </head>
 <body>
