diff --git ajax_comments.module ajax_comments.module
index 50eeae1..ce3d7c0 100644
--- ajax_comments.module
+++ ajax_comments.module
@@ -11,6 +11,13 @@ function ajax_comments_menu() {
     'page arguments' => array(2, 3),
     'type' => MENU_CALLBACK,
   );
+  $items['ajax_comments/edit/%'] = array(
+    'page callback' => 'ajax_comments_edit',
+    'access callback' => 'user_access',
+    'access arguments' => array('edit own comments'),
+    'page arguments' => array(2),
+    'type' => MENU_CALLBACK,
+  );
   $items['admin/config/content/ajax_comments'] = array(
     'title' => 'AJAX comments',
     'description' => 'AJAXifies comments on site.',
@@ -77,8 +84,12 @@ function ajax_comments_submit_js($form, &$form_state) {
 function ajax_comments_comment_view($comment, $view_mode, $langcode) {
   $active = ajax_comments_node_type_active(ltrim($comment->node_type, 'comment_node_'));
   if ($active) {
+    // Reply
     $comment->content['links']['comment']['#links']['comment-reply']['attributes']['class'] = array('use-ajax');
     $comment->content['links']['comment']['#links']['comment-reply']['href'] = 'ajax_comments/reply/' . $comment->nid . '/' . $comment->cid;
+    // Edit
+    $comment->content['links']['comment']['#links']['comment-edit']['attributes']['class'] = array('use-ajax');
+    $comment->content['links']['comment']['#links']['comment-edit']['href'] = 'ajax_comments/edit/' . $comment->cid;
   }
 }
 
@@ -105,6 +116,32 @@ function ajax_comments_reply($nid, $cid) {
   $commands[] = ajax_command_after('div[about="' . $base_path . 'comment/' . $cid . '#comment-' . $cid . '"]', $form);
   $page = array('#type' => 'ajax', '#commands' => $commands);
   ajax_deliver($page);
+}
+
+/**
+ *  Callback for clicking "edit".
+ */
+function ajax_comments_edit($cid) {
+  global $base_path;
+  global $user;
+  // Load comment and related node  
+  $comment = comment_load($cid);
+  $node = node_load($comment->nid);
+  if ( ( (user_access('edit own comments') && $comment->uid == $user->uid ) || user_access('administer comments') )
+      && $node->comment == COMMENT_NODE_OPEN
+      && (variable_get('comment_form_location_' . $node->type, COMMENT_FORM_BELOW) == COMMENT_FORM_BELOW)) {
+    $form_build = drupal_get_form("comment_node_{$node->type}_form", $comment);
+    $form = drupal_render($form_build);
+  }
+  // Remove all other comment forms on the page.
+  $commands[] = ajax_command_invoke('form.comment-form', 'remove');
+  $commands[] = ajax_command_invoke('h2.comment-form', 'remove');
+  // Add form after comment
+  $commands[] = ajax_command_after('div[about="' . $base_path . 'comment/' . $cid . '#comment-' . $cid . '"]', $form);
+  // Then remove comment, as replaced with form
+  $commands[] = ajax_command_invoke('div[about="' . $base_path . 'comment/' . $cid . '#comment-' . $cid . '"]', 'remove');
+  $page = array('#type' => 'ajax', '#commands' => $commands);
+  ajax_deliver($page);
 }  
 
 /**
