diff --git a/include/ajax.tickets.php b/include/ajax.tickets.php
index f9151951c1f3880f40121905ed26bb01f1f23fe9..0506d24471843024c5e212434543335e6adfaf0a 100644
--- a/include/ajax.tickets.php
+++ b/include/ajax.tickets.php
@@ -21,6 +21,7 @@ include_once(INCLUDE_DIR.'class.ticket.php');
 class TicketsAjaxAPI extends AjaxController {
    
     function search() {
+        global $thisstaff;
 
         if(!is_numeric($_REQUEST['q']))
             return self::searchByEmail();
@@ -31,7 +32,17 @@ class TicketsAjaxAPI extends AjaxController {
 
         $sql='SELECT DISTINCT ticketID, email'
             .' FROM '.TICKET_TABLE
-            .' WHERE ticketID LIKE \''.db_input($_REQUEST['q'], false).'%\''
+            .' WHERE ticketID LIKE \''.db_input($_REQUEST['q'], false).'%\'';
+              
+        $sql.=' AND ( staff_id='.db_input($thisstaff->getId());
+            
+        if(($teams=$thisstaff->getTeams()) && count(array_filter($teams)))
+            $sql.=' OR team_id IN('.implode(',', array_filter($teams)).')';
+            
+        if(!$thisstaff->showAssignedOnly() && ($depts=$thisstaff->getDepts()))
+            $sql.=' OR dept_id IN ('.implode(',', $depts).')';
+
+        $sql.=' )  '
             .' ORDER BY created  LIMIT '.$limit;
 
         if(($res=db_query($sql)) && db_num_rows($res)) {
@@ -43,16 +54,28 @@ class TicketsAjaxAPI extends AjaxController {
     }
 
     function searchByEmail() {
+        global $thisstaff;
+
 
         $limit = isset($_REQUEST['limit']) ? (int) $_REQUEST['limit']:25;
         $tickets=array();
 
         $sql='SELECT email, count(ticket_id) as tickets '
             .' FROM '.TICKET_TABLE
-            .' WHERE email LIKE \'%'.db_input(strtolower($_REQUEST['q']), false).'%\' '
+            .' WHERE email LIKE \'%'.db_input(strtolower($_REQUEST['q']), false).'%\' ';
+                
+        $sql.=' AND ( staff_id='.db_input($thisstaff->getId());
+
+        if(($teams=$thisstaff->getTeams()) && count(array_filter($teams)))
+            $sql.=' OR team_id IN('.implode(',', array_filter($teams)).')';
+
+        if(!$thisstaff->showAssignedOnly() && ($depts=$thisstaff->getDepts()))
+            $sql.=' OR dept_id IN ('.implode(',', $depts).')';
+        
+        $sql.=' ) '
             .' GROUP BY email '
             .' ORDER BY created  LIMIT '.$limit;
-
+            
         if(($res=db_query($sql)) && db_num_rows($res)) {
             while(list($email, $count)=db_fetch_row($res))
                 $tickets[] = array('email'=>$email, 'value'=>$email, 'info'=>"$email ($count)");
diff --git a/include/staff/tickets.inc.php b/include/staff/tickets.inc.php
index ef7cb4d4853c30ca3ca661689d456f8187580f36..67d270c3f033e0db98e901d66b09fdcabf5247c6 100644
--- a/include/staff/tickets.inc.php
+++ b/include/staff/tickets.inc.php
@@ -89,7 +89,7 @@ if($staffId && ($staffId==$thisstaff->getId())) { //Staff's assigned tickets.
 }
 
 //******* Showing assigned tickets? (don't confuse it with show assigned To column). F'it it's confusing - just trust me! ***/
-if(!($cfg->showAssignedTickets() || $thisstaff->showAssignedTickets()) && strcasecmp($status,'closed'))
+if(!($cfg->showAssignedTickets() || $thisstaff->showAssignedTickets()) && strcasecmp($status,'closed') && !$search)
     $sql.=' AND (ticket.staff_id=0 OR ticket.staff_id='.db_input($thisstaff->getId()).') ';
 
 //Search?? Somebody...get me some coffee