diff --git a/include/staff/apikey.inc.php b/include/staff/apikey.inc.php
index fdf30da4bc844ed0cbdef37c3902a3916eca2716..5096c5150de3f59caf061b2830802909aca0460a 100644
--- a/include/staff/apikey.inc.php
+++ b/include/staff/apikey.inc.php
@@ -70,7 +70,8 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info);
             </td>
             <td>
                 <span>
-                <input type="text" size="30" name="ipaddr" value="<?php echo $info['ipaddr']; ?>">
+                <input type="text" size="30" name="ipaddr" value="<?php echo $info['ipaddr']; ?>"i
+                    autofocus>
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['ipaddr']; ?></span>
                 <i class="help-tip icon-question-sign" href="#ip_addr"></i>
                 </span>
diff --git a/include/staff/banlist.inc.php b/include/staff/banlist.inc.php
index 3fd33ed5a98840bf6136ed1b10b9c06f96ffa6b3..4093439573edb4df326db69e7b5c9763c4a63944 100644
--- a/include/staff/banlist.inc.php
+++ b/include/staff/banlist.inc.php
@@ -55,8 +55,9 @@ $query="$select $from $where ORDER BY $order_by LIMIT ".$pageNav->getStart().","
     <form action="banlist.php" method="GET" name="filter">
      <input type="hidden" name="a" value="filter" >
      <div>
-       <?php echo __('Query');?>: <input name="q" type="text" size="20" value="<?php echo Format::htmlchars($_REQUEST['q']); ?>">
-        &nbsp;&nbsp;
+       <?php echo __('Query');?>:
+            <input name="q" type="search" size="30" autofocus
+            value="<?php echo Format::htmlchars($_REQUEST['q']); ?>">
         <input type="submit" name="submit" value="<?php echo __('Search');?>"/>
      </div>
     </form>
diff --git a/include/staff/department.inc.php b/include/staff/department.inc.php
index 5d7aa8426818855bc12d1a5c6e076ef0f715fce7..826c2ab2eee407c314b3bd39aedfa12d111649b4 100644
--- a/include/staff/department.inc.php
+++ b/include/staff/department.inc.php
@@ -72,7 +72,8 @@ $info = Format::htmlchars(($errors && $_POST) ? $_POST : $info);
             </td>
             <td>
                 <input data-translate-tag="<?php echo $dept ? $dept->getTranslateTag() : '';
-                ?>" type="text" size="30" name="name" value="<?php echo $info['name']; ?>">
+                ?>" type="text" size="30" name="name" value="<?php echo $info['name']; ?>"
+                autofocus>
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['name']; ?></span>
             </td>
         </tr>
diff --git a/include/staff/dynamic-form.inc.php b/include/staff/dynamic-form.inc.php
index 5415ba03cbd755b4c696f32eeb339ef50064cb58..0bf1f10396e447bc698b744c7c9713cc13e0f052 100644
--- a/include/staff/dynamic-form.inc.php
+++ b/include/staff/dynamic-form.inc.php
@@ -73,7 +73,7 @@ if ($form && count($langs) > 1) { ?>
             lang="<?php echo $cfg->getPrimaryLanguage(); ?>">
             <div class="required"><?php echo __('Title'); ?>:</div>
             <div>
-            <input type="text" name="title" size="60"
+            <input type="text" name="title" size="60" autofocus
                 value="<?php echo $info['title']; ?>"/>
                 <i class="help-tip icon-question-sign" href="#form_title"></i>
                 <div class="error"><?php
diff --git a/include/staff/dynamic-list.inc.php b/include/staff/dynamic-list.inc.php
index 8b9dd955747574d157f32606995e9e9bf93a6361..3755f2e38b8e030b051c34c4fd8b0fbe3a6fc246 100644
--- a/include/staff/dynamic-list.inc.php
+++ b/include/staff/dynamic-list.inc.php
@@ -57,7 +57,7 @@ $info=Format::htmlchars(($errors && $_POST) ? array_merge($info,$_POST) : $info)
                     echo $list->getName();
                 else {
                     echo sprintf('<input size="50" type="text" name="name"
-                            data-translate-tag="%s"
+                            data-translate-tag="%s" autofocus
                             value="%s"/> <span
                             class="error">*<br/>%s</span>',
                             $trans['name'], $info['name'], $errors['name']);
diff --git a/include/staff/email.inc.php b/include/staff/email.inc.php
index 8958d43a0fcb022d51445ebe93d2d4a665638a9d..5cc183baab6d05f5ce14e60d7d8feb6ed5219c39 100644
--- a/include/staff/email.inc.php
+++ b/include/staff/email.inc.php
@@ -55,7 +55,8 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info);
                 <?php echo __('Email Address');?>
             </td>
             <td>
-                <input type="text" size="35" name="email" value="<?php echo $info['email']; ?>">
+                <input type="text" size="35" name="email" value="<?php echo $info['email']; ?>"
+                    autofocus>
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['email']; ?></span>
             </td>
         </tr>
diff --git a/include/staff/faq-categories.inc.php b/include/staff/faq-categories.inc.php
index d66c24470c1475e5d3b05697f1d23ae1ebcfb796..52d4f8d49cdc81e7eaaf92e3590a473da3b2d14a 100644
--- a/include/staff/faq-categories.inc.php
+++ b/include/staff/faq-categories.inc.php
@@ -6,7 +6,8 @@ if(!defined('OSTSTAFFINC') || !$thisstaff) die('Access Denied');
 <form id="kbSearch" action="kb.php" method="get">
     <input type="hidden" name="a" value="search">
     <div>
-        <input id="query" type="text" size="20" name="q" value="<?php echo Format::htmlchars($_REQUEST['q']); ?>">
+        <input id="query" type="search" size="20" name="q" autofocus
+            value="<?php echo Format::htmlchars($_REQUEST['q']); ?>">
         <select name="cid" id="cid">
             <option value="">&mdash; <?php echo __('All Categories');?> &mdash;</option>
             <?php
diff --git a/include/staff/filter.inc.php b/include/staff/filter.inc.php
index 3c0f8f49ada7acf811697b500ee1fd104b447b1f..144d0321a3e572ffca09003921c5cef8fce4f0a1 100644
--- a/include/staff/filter.inc.php
+++ b/include/staff/filter.inc.php
@@ -42,7 +42,8 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info);
               <?php echo __('Filter Name');?>:
             </td>
             <td>
-                <input type="text" size="30" name="name" value="<?php echo $info['name']; ?>">
+                <input type="text" size="30" name="name" value="<?php echo $info['name']; ?>"
+                    autofocus>
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['name']; ?></span>
             </td>
         </tr>
diff --git a/include/staff/group.inc.php b/include/staff/group.inc.php
index e64857da0b51231a97a525795e06348f455b3ab1..d13205385c286281d85558dc028d42571b1ce781 100644
--- a/include/staff/group.inc.php
+++ b/include/staff/group.inc.php
@@ -54,7 +54,7 @@ $roles = Role::getActiveRoles();
             <td width="180" class="required"><?php echo __('Name'); ?>:</td>
             <td>
                 <input size="50" type="text" name="name" value="<?php echo $info['name']; ?>"
-                data-translate-tag="<?php echo $trans['name']; ?>"/>
+                autofocus data-translate-tag="<?php echo $trans['name']; ?>"/>
                 <span class="error">*&nbsp;<?php echo $errors['name']; ?></span>
             </td>
         </tr>
diff --git a/include/staff/helptopic.inc.php b/include/staff/helptopic.inc.php
index cd0b54bddfc0b7250a71860241c45af9ad3c3b7b..834cc5a72b3b831616e0a49febb1e3277a4670a1 100644
--- a/include/staff/helptopic.inc.php
+++ b/include/staff/helptopic.inc.php
@@ -54,7 +54,7 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info);
             </td>
             <td>
                 <input type="text" size="30" name="topic" value="<?php echo $info['topic']; ?>"
-                data-translate-tag="<?php echo $trans['name']; ?>"/>
+                autofocus data-translate-tag="<?php echo $trans['name']; ?>"/>
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['topic']; ?></span> <i class="help-tip icon-question-sign" href="#topic"></i>
             </td>
         </tr>
diff --git a/include/staff/login.tpl.php b/include/staff/login.tpl.php
index cbb5b589499552516ea20f60b8bd90917ff2d445..296b76af92e4ba5b9d00793e62fb53190d8168e8 100644
--- a/include/staff/login.tpl.php
+++ b/include/staff/login.tpl.php
@@ -13,7 +13,9 @@ $info = ($_POST && $errors)?Format::htmlchars($_POST):array();
         <?php csrf_token(); ?>
         <input type="hidden" name="do" value="scplogin">
         <fieldset>
-        <input type="text" name="userid" id="name" value="<?php echo $info['userid']; ?>" placeholder="<?php echo __('Email or Username'); ?>" autocorrect="off" autocapitalize="off">
+        <input type="text" name="userid" id="name" value="<?php
+            echo $info['userid']; ?>" placeholder="<?php echo __('Email or Username'); ?>"
+            autofocus autocorrect="off" autocapitalize="off">
         <input type="password" name="passwd" id="pass" placeholder="<?php echo __('Password'); ?>" autocorrect="off" autocapitalize="off">
             <?php if ($show_reset && $cfg->allowPasswordReset()) { ?>
             <h3 style="display:inline"><a href="pwreset.php"><?php echo __('Forgot my password'); ?></a></h3>
diff --git a/include/staff/orgs.inc.php b/include/staff/orgs.inc.php
index 84288aeda3ad643af8183b1e1a5a37c84ca4ccf6..bc41711ff8b59016163c65248071aef835107011 100644
--- a/include/staff/orgs.inc.php
+++ b/include/staff/orgs.inc.php
@@ -78,8 +78,9 @@ $_SESSION['orgs_qs_'.$qhash] = $query;
         <input type="hidden" name="a" value="search">
         <table>
             <tr>
-                <td><input type="text" id="basic-org-search" name="query" size=30 value="<?php echo Format::htmlchars($_REQUEST['query']); ?>"
-                autocomplete="off" autocorrect="off" autocapitalize="off"></td>
+                <td><input type="search" id="basic-org-search" name="query"
+                    autofocus size="30" value="<?php echo Format::htmlchars($_REQUEST['query']); ?>"
+                    autocomplete="off" autocorrect="off" autocapitalize="off"></td>
                 <td><input type="submit" name="basic_search" class="button" value="<?php echo __('Search'); ?>"></td>
                 <!-- <td>&nbsp;&nbsp;<a href="" id="advanced-user-search">[advanced]</a></td> -->
             </tr>
diff --git a/include/staff/page.inc.php b/include/staff/page.inc.php
index 0a7359ae0d7e58bebd5580398c683f269a2fed5e..ae445a656f9895d0acbd4102d56c668dfa57fc62 100644
--- a/include/staff/page.inc.php
+++ b/include/staff/page.inc.php
@@ -62,7 +62,7 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info);
             </td>
             <td>
                 <input type="text" size="40" name="name" value="<?php echo $info['name']; ?>"
-                data-translate-tag="<?php echo $trans['name']; ?>"/>
+                    autofocus data-translate-tag="<?php echo $trans['name']; ?>"/>
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['name']; ?></span>
             </td>
         </tr>
diff --git a/include/staff/role.inc.php b/include/staff/role.inc.php
index e597c1f2735a759a95fe7a0ab81e967f854b03a5..7730ea551f005c0f70dd72f021173b17ddcada52 100644
--- a/include/staff/role.inc.php
+++ b/include/staff/role.inc.php
@@ -49,7 +49,8 @@ $info = Format::htmlchars(($errors && $_POST) ? array_merge($info, $_POST) : $in
             <td width="180" class="required"><?php echo __('Name'); ?>:</td>
             <td>
                 <input size="50" type="text" name="name" value="<?php echo
-                $info['name']; ?>" data-translate-tag="<?php echo $trans['name']; ?>"/>
+                $info['name']; ?>" data-translate-tag="<?php echo $trans['name']; ?>"
+                autofocus/>
                 <span class="error">*&nbsp;<?php echo $errors['name']; ?></span>
             </td>
         </tr>
diff --git a/include/staff/slaplan.inc.php b/include/staff/slaplan.inc.php
index 3ca424c3044aea1d524f6ef8032b9671cfe04aca..484778e8bb49b76ddbe3abae7603a8675c907ec1 100644
--- a/include/staff/slaplan.inc.php
+++ b/include/staff/slaplan.inc.php
@@ -42,7 +42,7 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info);
             </td>
             <td>
                 <input type="text" size="30" name="name" value="<?php echo $info['name']; ?>"
-                data-translate-tag="<?php echo $trans['name']; ?>"/>
+                    autofocus data-translate-tag="<?php echo $trans['name']; ?>"/>
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['name']; ?></span>&nbsp;<i class="help-tip icon-question-sign" href="#name"></i>
             </td>
         </tr>
diff --git a/include/staff/staff.inc.php b/include/staff/staff.inc.php
index 728bb4b4fc3c0a6a23a1498901efcef149056d57..b18b7cd772b11206c46962cd0a2937f204163789 100644
--- a/include/staff/staff.inc.php
+++ b/include/staff/staff.inc.php
@@ -50,7 +50,7 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info);
             </td>
             <td>
                 <input type="text" size="30" class="staff-username typeahead"
-                     name="username" value="<?php echo $info['username']; ?>">
+                     autofocus name="username" value="<?php echo $info['username']; ?>">
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['username']; ?></span>&nbsp;<i class="help-tip icon-question-sign" href="#username"></i>
             </td>
         </tr>
diff --git a/include/staff/team.inc.php b/include/staff/team.inc.php
index db47fa00e0db332b6c1e8f3b46debcde4e1501e1..93719667251ffef9ff2ac99ea041907eb62a1add 100644
--- a/include/staff/team.inc.php
+++ b/include/staff/team.inc.php
@@ -58,7 +58,7 @@ $info = Format::htmlchars(($errors && $_POST) ? $_POST : $info);
             </td>
             <td>
                 <input type="text" size="30" name="name" value="<?php echo $info['name']; ?>"
-                data-translate-tag="<?php echo $trans['name']; ?>"/>
+                    autofocus data-translate-tag="<?php echo $trans['name']; ?>"/>
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['name']; ?></span>
             </td>
         </tr>
diff --git a/include/staff/templates/org-lookup.tmpl.php b/include/staff/templates/org-lookup.tmpl.php
index 10a4ce28fbf75916ba718e52e45bd0c9f38ae25a..07620f2f60d374484a6b0720eb90142aa79e5b5f 100644
--- a/include/staff/templates/org-lookup.tmpl.php
+++ b/include/staff/templates/org-lookup.tmpl.php
@@ -17,7 +17,8 @@ if ($info['search'] === false)
 if ($info['search'] !== false) { ?>
 <div style="margin-bottom:10px;">
     <input type="text" class="search-input" style="width:100%;"
-    placeholder="Search by name" id="org-search" autocorrect="off" autocomplete="off"/>
+    placeholder="Search by name" id="org-search"
+    autofocus autocorrect="off" autocomplete="off"/>
 </div>
 <?php
 }
diff --git a/include/staff/templates/user-lookup.tmpl.php b/include/staff/templates/user-lookup.tmpl.php
index 948026e8ff188f4ce6fb7ee5c1319db346226314..90dac1ab97c18b19b2b2bb03f379090c4295810e 100644
--- a/include/staff/templates/user-lookup.tmpl.php
+++ b/include/staff/templates/user-lookup.tmpl.php
@@ -10,9 +10,9 @@ if (!isset($info['lookup']) || $info['lookup'] !== false) { ?>
     : __('Search existing users.');
 ?></p></div>
 <div style="margin-bottom:10px;">
-    <input type="text" class="search-input" style="width:100%;"
+    <input type="search" class="search-input" style="width:100%;"
     placeholder="<?php echo __('Search by email, phone or name'); ?>" id="user-search"
-    autocorrect="off" autocomplete="off"/>
+    autofocus autocorrect="off" autocomplete="off"/>
 </div>
 <?php
 }
diff --git a/include/staff/tickets.inc.php b/include/staff/tickets.inc.php
index 549784aef4bd88d2dd8872a08add015e38778d46..1f1b078cf6f3388265fcf69a90ba974947d82ab0 100644
--- a/include/staff/tickets.inc.php
+++ b/include/staff/tickets.inc.php
@@ -311,9 +311,8 @@ return false;">
     <input type="hidden" name="a" value="search">
     <table>
         <tr>
-            <td><input type="text" id="basic-ticket-search" name="query"
-            size=30 value="<?php echo Format::htmlchars($_REQUEST['query'],
-            true); ?>"
+            <td><input type="search" id="basic-ticket-search" name="query"
+                autofocus size="30" value="<?php echo Format::htmlchars($_REQUEST['query'], true); ?>"
                 autocomplete="off" autocorrect="off" autocapitalize="off"></td>
             <td><input type="submit" class="button" value="<?php echo __('Search'); ?>"></td>
             <td>&nbsp;&nbsp;<a href="#" onclick="javascript:
diff --git a/include/staff/users.inc.php b/include/staff/users.inc.php
index 848abf4dc1f35eed7bea90308af83504ab464b34..7e4993ad459d2e9bc63f57060fc11f0714c4ec15 100644
--- a/include/staff/users.inc.php
+++ b/include/staff/users.inc.php
@@ -63,8 +63,9 @@ $users->order_by($order . $order_column);
         <input type="hidden" name="a" value="search">
         <table>
             <tr>
-                <td><input type="text" id="basic-user-search" name="query" size=30 value="<?php echo Format::htmlchars($_REQUEST['query']); ?>"
-                autocomplete="off" autocorrect="off" autocapitalize="off"></td>
+                <td><input type="search" id="basic-user-search" name="query"
+                    autofocus size="30" value="<?php echo Format::htmlchars($_REQUEST['query']); ?>"
+                    autocomplete="off" autocorrect="off" autocapitalize="off"></td>
                 <td><input type="submit" name="basic_search" class="button" value="<?php echo __('Search'); ?>"></td>
                 <!-- <td>&nbsp;&nbsp;<a href="" id="advanced-user-search">[advanced]</a></td> -->
             </tr>
diff --git a/scp/css/scp.css b/scp/css/scp.css
index dea3f191351f74ecd61e7590b8d7505fa213f260..2b6701e9cb86835fa033e5dfa21a5a79706dc393 100644
--- a/scp/css/scp.css
+++ b/scp/css/scp.css
@@ -613,6 +613,10 @@ a.print {
     height:25px;
 }
 
+input[type=search] {
+    font-size: 16px;
+}
+.search input[type=search],
 .search input[type=text] {
     height:23px;
     line-height:23px;
diff --git a/scp/emailtest.php b/scp/emailtest.php
index 9e15baf36b1ccb10d0cd3cc93e87b94edf9d88c3..cd9fbae9d67afcab14e96ed180d5490faab6bae9 100644
--- a/scp/emailtest.php
+++ b/scp/emailtest.php
@@ -99,7 +99,8 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info);
                 <?php echo __('To');?>:
             </td>
             <td>
-                <input type="text" size="60" name="email" value="<?php echo $info['email']; ?>">
+                <input type="text" size="60" name="email" value="<?php echo $info['email']; ?>"
+                    autofocus>
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['email']; ?></span>
             </td>
         </tr>
diff --git a/scp/js/scp.js b/scp/js/scp.js
index ee0a233068bec66729b2473e1de70d515727e8a8..e8a9443af1e37172e69160474c5a63ebf7252017 100644
--- a/scp/js/scp.js
+++ b/scp/js/scp.js
@@ -37,7 +37,10 @@ function checkbox_checker(formObj, min, max) {
 
 var scp_prep = function() {
 
-    $("input:not(.dp):visible:enabled:first").focus();
+    $("input[autofocus]:visible:enabled:first").each(function() {
+      if ($(this).val())
+        $(this).blur();
+    });
     $('table.list input:checkbox').bind('click, change', function() {
         $(this)
             .parents("tr:first")