diff --git a/include/ajax.tickets.php b/include/ajax.tickets.php
index a142fc1056deab841b3cbf5f590a19295313ac80..ef207f84dbc587318eca5f509ad0763f7caf1a8d 100644
--- a/include/ajax.tickets.php
+++ b/include/ajax.tickets.php
@@ -448,5 +448,30 @@ class TicketsAjaxAPI extends AjaxController {
 
         return $resp;
     }
+
+    function changeUserForm($tid) {
+        global $thisstaff;
+
+        if(!$thisstaff
+                || !($ticket=Ticket::lookup($tid))
+                || !$ticket->checkStaffAccess($thisstaff))
+            Http::response(404, 'No such ticket');
+
+
+        $user = $ticket->getOwner();
+
+        $info = array(
+                'title' => sprintf('Change user for ticket #%s', $ticket->getNumber())
+                );
+
+        ob_start();
+        include(STAFFINC_DIR . 'templates/user-lookup.tmpl.php');
+        $resp = ob_get_contents();
+        ob_end_clean();
+        return $resp;
+
+    }
+
+
 }
 ?>
diff --git a/include/staff/ticket-edit.inc.php b/include/staff/ticket-edit.inc.php
index 668cd523484926831642b9626a2c2816877d562d..fa4b4069022d5453689d03820ba8479e4efa8b29 100644
--- a/include/staff/ticket-edit.inc.php
+++ b/include/staff/ticket-edit.inc.php
@@ -20,21 +20,26 @@ if ($_POST)
             </th>
         </tr>
     <?php
-    $client = User::lookup($info['user_id']);
+    if(!$info['user_id'] || !($user = User::lookup($info['user_id'])))
+        $user = $ticket->getUser();
     ?>
     <tr><td>Client:</td><td>
-        <span id="client-info"><?php echo $client->getName(); ?>
-        &lt;<?php echo $client->getEmail(); ?>&gt;</span>
-        <a class="action-button" style="float:none;overflow:inherit"
-            href="ajax.php/users/lookup?id=<?php echo $client->getId(); ?>"
-            onclick="javascript:
-                $('#overlay').show();
-                $('#user-lookup .body').load(this.href);
-                $('#user-lookup').show();
-                return false;
-            "><i class="icon-edit"></i> Change</a>
-        <input type="hidden" name="user_id" id="user_id"
-            value="<?php echo $info['user_id']; ?>" />
+        <div id="client-info">
+            <span id="client-name"><?php echo $user->getName(); ?></span>
+            <span id="client-email">&lt;<?php echo $user->getEmail(); ?>&gt;</span>
+            <a class="action-button" style="float:none;overflow:inherit" href="#"
+                onclick="javascript:
+                    $.userLookup('ajax.php/tickets/<?php echo $ticket->getId(); ?>/change-user',
+                            function(user) {
+                                $('input#user_id').val(user.id);
+                                $('#user_name').html(user.name);
+                                $('#user_email').html('&lt;'+user.email+'&gt;');
+                    });
+                    return false;
+                "><i class="icon-edit"></i> Change</a>
+            <input type="hidden" name="user_id" id="user_id"
+                value="<?php echo $info['user_id']; ?>" />
+        </div>
         </td></tr>
     <tbody>
         <tr>
diff --git a/scp/ajax.php b/scp/ajax.php
index 460248be22a420910f6bf54bf88a20a826a66727..82a2ce3ef28fc7008f21fba0daeef96ea9ea2102 100644
--- a/scp/ajax.php
+++ b/scp/ajax.php
@@ -67,6 +67,8 @@ $dispatcher = patterns('',
         url_post('^/lookup/form$', 'addUser')
     )),
     url('^/tickets/', patterns('ajax.tickets.php:TicketsAjaxAPI',
+        url_get('^(?P<tid>\d+)/change-user$', 'changeUserForm'),
+        url_post('^(?P<tid>\d+)/change-user$', 'changeUser'),
         url_get('^(?P<tid>\d+)/preview', 'previewTicket'),
         url_post('^(?P<tid>\d+)/lock', 'acquireLock'),
         url_post('^(?P<tid>\d+)/lock/(?P<id>\d+)/renew', 'renewLock'),