diff --git a/README.md b/README.md
index 7939d80d545ca3c00f06ee82a4093e52d1aba47c..8a81fba2ef1426f18221848fa0a8761daeee22a8 100644
--- a/README.md
+++ b/README.md
@@ -103,6 +103,10 @@ project and request to have your language added. Languages which reach 100%
 translated are are significantly reviewed will be made available on the
 osTicket download page.
 
+The software can also be translated in place in our [JIPT site]
+(http://jipt.i18n.osticket.com). Once you have a Crowdin account, login and
+translate the software in your browser!
+
 Localizing strings in new code requires usage of a [few rules](setup/doc/i18n.md).
 
 License
diff --git a/WHATSNEW.md b/WHATSNEW.md
index c580634d187b26330c7fcecc42b29e55386ca6fc..4523347765df7bf305e94ea25973092fae0b4518 100644
--- a/WHATSNEW.md
+++ b/WHATSNEW.md
@@ -1,3 +1,17 @@
+osTicket v1.9.5.1
+=================
+### Improvements
+  * Fix file.php to serve files added to system before osTicket v1.9.1
+  * Fix file.php to serve files if client panel or system is offline
+  * Fix popover download of inline images
+  * Avoid de-duplicating zero-length files
+  * Send new message alert to team members if not assigned to an agent
+  * Fix import of users to organization not setting the organization
+  * Fix redactor toolbar showing over the date picker (#1450, thanks @Chefkeks)
+
+### Performance and Security
+  * Fix XSS vulnerability in client language selection
+
 osTicket v1.9.5
 ===============
 ### Enhancements
diff --git a/assets/default/css/theme.css b/assets/default/css/theme.css
index b8ca14066d9c2c2188eeb23b997675659ea893b8..5b98eaee93d60bc9f6732c12cd2e3e39d24ca10d 100644
--- a/assets/default/css/theme.css
+++ b/assets/default/css/theme.css
@@ -300,9 +300,20 @@ body {
   height: 71px;
   padding: 0 20px;
 }
-#header #logo {
-  width: 220px;
-  height: 71px;
+#logo {
+    height: 100%;
+}
+#header #logo img {
+  max-height: 65px;
+  max-width: 380px;
+  width: auto;
+  height: auto;
+  vertical-align: middle;
+}
+.valign-helper {
+    height: 100%;
+    display: inline-block;
+    vertical-align: middle;
 }
 #header p {
   width: 400px;
@@ -398,6 +409,7 @@ body {
   text-indent: -9999px;
   margin: 0 auto;
   background: url('../images/poweredby.png') top left no-repeat;
+  background-size: auto 20px;
 }
 .front-page-button {
 }
diff --git a/assets/default/images/poweredby.png b/assets/default/images/poweredby.png
index 18cfcdd4050cde428500032d52db74609ae9e10f..9b2915505a144a89e12338f081b30dcd032b4e40 100644
Binary files a/assets/default/images/poweredby.png and b/assets/default/images/poweredby.png differ
diff --git a/client.inc.php b/client.inc.php
index 2faee156f11c1c34aebffaf72d13bd15b3dd1655..0a572ed1cfb82278c620945c00d32fb60e712427 100644
--- a/client.inc.php
+++ b/client.inc.php
@@ -29,7 +29,7 @@ define('OSTCLIENTINC',TRUE);
 define('ASSETS_PATH',ROOT_PATH.'assets/default/');
 
 //Check the status of the HelpDesk.
-if (!in_array(strtolower(basename($_SERVER['SCRIPT_NAME'])), array('logo.php',))
+if (!in_array(strtolower(basename($_SERVER['SCRIPT_NAME'])), array('logo.php','file.php'))
         && !(is_object($ost) && $ost->isSystemOnline())) {
     include(ROOT_DIR.'offline.php');
     exit;
diff --git a/css/rtl.css b/css/rtl.css
index c61f0b9fd1b494a4ffd1f6781ec307f102d915a5..64c4d086bb36824e3247659718138e4e78cebc01 100644
--- a/css/rtl.css
+++ b/css/rtl.css
@@ -86,7 +86,7 @@
     border-left: none;
     border-right: 1px solid rgba(0,0,0,0.7);
 }
-.rtl [class^="icon-"].pull-left, [class*=" icon-"].pull-left {
+.rtl [class^="icon-"].pull-left, [class*=" icon-"].pull-right {
     margin-right: 0;
     margin-left: 0.3em;
 }
diff --git a/include/ajax.orgs.php b/include/ajax.orgs.php
index aa6937bc38f9c96312ee53be6da45737b795c4e6..7c849e6db88bd31267ebd2ab67a9aabb0e1d6e09 100644
--- a/include/ajax.orgs.php
+++ b/include/ajax.orgs.php
@@ -185,7 +185,8 @@ class OrgsAjaxAPI extends AjaxController {
         );
 
         if ($_POST) {
-            $status = User::importFromPost($_POST['pasted']);
+            $status = User::importFromPost($_POST['pasted'],
+                array('org_id'=>$org_id));
             if (is_string($status))
                 $info['error'] = $status;
             else
diff --git a/include/class.api.php b/include/class.api.php
index a1fed6764a7d7b9816243b22fa51c79ed2f4d6a7..c998cf244a6ddc314dfaa983a99cc03cfa7d81ce 100644
--- a/include/class.api.php
+++ b/include/class.api.php
@@ -345,7 +345,7 @@ class ApiXmlDataParser extends XmlDataParser {
                     unset($value[":text"]);
                 }
                 if (isset($value['encoding']))
-                    $value['body'] = Format::utf8encode($value['body'], $value['encoding']);
+                    $value['body'] = Charset::utf8($value['body'], $value['encoding']);
 
                 if (!strcasecmp($value['type'], 'text/html'))
                     $value = new HtmlThreadEntryBody($value['body']);
diff --git a/include/class.charset.php b/include/class.charset.php
new file mode 100644
index 0000000000000000000000000000000000000000..5411e6b4abcb1347a0e22998678b13d57fe119d3
--- /dev/null
+++ b/include/class.charset.php
@@ -0,0 +1,75 @@
+<?php
+/*********************************************************************
+    class.charset.php
+
+    Charset util class
+
+    Copyright (c) 2015 osTicket
+    http://www.osticket.com
+
+    Released under the GNU General Public License WITHOUT ANY WARRANTY.
+    See LICENSE.TXT for details.
+
+    vim: expandtab sw=4 ts=4 sts=4:
+**********************************************************************/
+
+class Charset {
+
+    const UTF8 = 'utf-8';
+
+    // Cleanup invalid charsets
+    // Thanks in part to https://github.com/mikel/mail/commit/88457e
+    static function normalize($charset) {
+
+        $match = array();
+        switch (true) {
+        // Windows charsets - force correct format
+        case preg_match('`^Windows-?(\d+)$`', $charset, $match):
+            return 'Windows-'.$match[1];
+        // ks_c_5601-1987: Korean alias for cp949
+        case preg_match('`^ks_c_5601-1987`', $charset):
+            return 'cp949';
+        // Incorrect, bogus, ambiguous or empty charsets
+        // ISO-8859-1 is assumed
+        case preg_match('`^(default|x-user-defined|iso|us-ascii)`', $charset):
+        case preg_match('`^\s*$`', $charset):
+            return 'ISO-8859-1';
+        }
+
+        // Hmmmm
+        return $charset;
+    }
+
+    // Translate characters ($text) from one encoding ($from) to another ($to)
+    static function transcode($text, $from, $to) {
+
+        //Try auto-detecting charset/encoding
+        if (!$from && function_exists('mb_detect_encoding'))
+            $from = mb_detect_encoding($text);
+
+        // Normalize bogus or ambiguous charsets
+        $from = self::normalize(trim($from));
+        $to = self::normalize(trim($to));
+
+        $original = $text;
+        if (function_exists('iconv'))
+            $text = iconv($from, $to.'//IGNORE', $text);
+        elseif (function_exists('mb_convert_encoding'))
+            $text = mb_convert_encoding($text, $to, $from);
+        elseif (!strcasecmp($to, 'utf-8')
+                && function_exists('utf8_encode')
+                && !strcasecmp($from, 'ISO-8859-1'))
+            $text = utf8_encode($text);
+
+        // If $text is false, then we have a (likely) invalid charset, use
+        // the original text and assume 8-bit (latin-1 / iso-8859-1)
+        // encoding
+        return (!$text && $original) ? $original : $text;
+    }
+
+    //Wrapper for utf-8 transcoding.
+    function utf8($text, $charset=null) {
+        return self::transcode($text, $charset, self::UTF8);
+    }
+}
+?>
diff --git a/include/class.config.php b/include/class.config.php
index b8c35095396f5866b47e79b023338ce2289794a9..7ddc58855f0b68cb5f56f98ad893c43222e79e85 100644
--- a/include/class.config.php
+++ b/include/class.config.php
@@ -1096,6 +1096,13 @@ class OsticketConfig extends Config {
         return $this->getLogoId('client');
     }
 
+    function getStaffLogoId() {
+        return $this->getLogoId('staff');
+    }
+    function getStaffLogo() {
+        return $this->getLogo('staff');
+    }
+
     function updatePagesSettings($vars, &$errors) {
         global $ost;
 
@@ -1139,6 +1146,9 @@ class OsticketConfig extends Config {
             'client_logo_id' => (
                 (is_numeric($vars['selected-logo']) && $vars['selected-logo'])
                 ? $vars['selected-logo'] : false),
+            'staff_logo_id' => (
+                (is_numeric($vars['selected-logo-scp']) && $vars['selected-logo-scp'])
+                ? $vars['selected-logo-scp'] : false),
            ));
     }
 
diff --git a/include/class.file.php b/include/class.file.php
index a540aebd2b986f4ebe8df6881303e8992f33f30c..fd787b627554fd83434a5e2556cb6f523c9d38e0 100644
--- a/include/class.file.php
+++ b/include/class.file.php
@@ -74,8 +74,10 @@ class AttachmentFile extends VerySimpleModel {
         return $this->key;
     }
 
-    function getSignature() {
-        return $this->signature ?: $this->getKey();
+    function getSignature($cascade=false) {
+        $sig = $this->signature;
+        if (!$sig && $cascade) return $this->getKey();
+        return $sig;
     }
 
     function lastModified() {
@@ -127,7 +129,7 @@ class AttachmentFile extends VerySimpleModel {
     }
 
     function makeCacheable($ttl=86400) {
-        Http::cacheable($this->getSignature(), $this->lastModified(), $ttl);
+        Http::cacheable($this->getSignature(true), $this->lastModified(), $ttl);
     }
 
     function display($scale=false) {
@@ -269,7 +271,7 @@ class AttachmentFile extends VerySimpleModel {
     }
 
     /* Function assumes the files types have been validated */
-    static function upload($file, $ft='T') {
+    static function upload($file, $ft='T', $deduplicate=true) {
 
         if(!$file['name'] || $file['error'] || !is_uploaded_file($file['tmp_name']))
             return false;
@@ -285,10 +287,10 @@ class AttachmentFile extends VerySimpleModel {
                     'tmp_name'=>$file['tmp_name'],
                     );
 
-        return static::create($info, $ft);
+        return static::create($info, $ft, $deduplicate);
     }
 
-    static function uploadLogo($file, &$error, $aspect_ratio=3) {
+    static function uploadLogo($file, &$error, $aspect_ratio=2) {
         /* Borrowed in part from
          * http://salman-w.blogspot.com/2009/04/crop-to-fit-image-using-aspphp.html
          */
@@ -313,13 +315,13 @@ class AttachmentFile extends VerySimpleModel {
         $source_aspect_ratio = $source_width / $source_height;
 
         if ($source_aspect_ratio >= $aspect_ratio)
-            return self::upload($file, 'L');
+            return self::upload($file, 'L', false);
 
         $error = __('Image is too square. Upload a wider image');
         return false;
     }
 
-    static function create(&$file, $ft='T') {
+    static function create(&$file, $ft='T', $deduplicate=true) {
         if (isset($file['encoding'])) {
             switch ($file['encoding']) {
             case 'base64':
@@ -338,18 +340,17 @@ class AttachmentFile extends VerySimpleModel {
                 $file['key'] = $key;
         }
 
-        if (isset($file['size'])) {
+        if (isset($file['size']) && $file['size'] > 0) {
             // Check and see if the file is already on record
             $existing = static::objects()->filter(array(
                 'signature' => $file['signature'],
                 'size' => $file['size']
-            ))
-            ->first();
+            ));
 
             // If the record exists in the database already, a file with
             // the same hash and size is already on file -- just return
             // the file
-            if ($existing) {
+            if ($deduplicate && $existing->exists()) {
                 $file['key'] = $existing->key;
                 return $existing;
             }
diff --git a/include/class.format.php b/include/class.format.php
index f922a6c5ac3141f505c4aee36818063974637fe6..02402cf70c45f7739d103fa7d462f7e4bede45b0 100644
--- a/include/class.format.php
+++ b/include/class.format.php
@@ -14,6 +14,7 @@
     vim: expandtab sw=4 ts=4 sts=4:
 **********************************************************************/
 
+include_once INCLUDE_DIR.'class.charset.php';
 
 class Format {
 
@@ -40,47 +41,13 @@ class Format {
         return $size;
     }
 
-	/* encode text into desired encoding - taking into accout charset when available. */
-    function encode($text, $charset=null, $encoding='utf-8') {
-
-        //Try auto-detecting charset/encoding
-        if (!$charset && function_exists('mb_detect_encoding'))
-            $charset = mb_detect_encoding($text);
-
-        // Cleanup - incorrect, bogus, or ambiguous charsets
-        // ISO-8859-1 is assumed for empty charset.
-        if (!$charset || in_array(strtolower(trim($charset)),
-                array('default','x-user-defined','iso','us-ascii')))
-            $charset = 'ISO-8859-1';
-
-        $original = $text;
-        if (function_exists('iconv'))
-            $text = iconv($charset, $encoding.'//IGNORE', $text);
-        elseif (function_exists('mb_convert_encoding'))
-            $text = mb_convert_encoding($text, $encoding, $charset);
-        elseif (!strcasecmp($encoding, 'utf-8')
-                && function_exists('utf8_encode')
-                && !strcasecmp($charset, 'ISO-8859-1'))
-            $text = utf8_encode($text);
-
-        // If $text is false, then we have a (likely) invalid charset, use
-        // the original text and assume 8-bit (latin-1 / iso-8859-1)
-        // encoding
-        return (!$text && $original) ? $original : $text;
-    }
-
-    //Wrapper for utf-8 encoding.
-    function utf8encode($text, $charset=null) {
-        return Format::encode($text, $charset, 'utf-8');
-    }
-
     function mimedecode($text, $encoding='UTF-8') {
 
         if(function_exists('imap_mime_header_decode')
                 && ($parts = imap_mime_header_decode($text))) {
             $str ='';
             foreach ($parts as $part)
-                $str.= Format::encode($part->text, $part->charset, $encoding);
+                $str.= Charset::transcode($part->text, $part->charset, $encoding);
 
             $text = $str;
         } elseif($text[0] == '=' && function_exists('iconv_mime_decode')) {
@@ -105,7 +72,7 @@ class Format {
                 $filename, $match))
             // XXX: Currently we don't care about the language component.
             //      The  encoding hint is sufficient.
-            return self::utf8encode(urldecode($match[3]), $match[1]);
+            return Charset::utf8(urldecode($match[3]), $match[1]);
         else
             return $filename;
     }
@@ -679,7 +646,7 @@ class Format {
                 $contents = base64_decode($contents);
         }
         if ($output_encoding && $charset)
-            $contents = Format::encode($contents, $charset, $output_encoding);
+            $contents = Charset::transcode($contents, $charset, $output_encoding);
 
         return array(
             'data' => $contents,
diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php
index 4e0e3c43059aac9c100ea390ffd3622551d5aba6..db9026228caa6f024c57c43f906fce5cae683eab 100644
--- a/include/class.mailfetch.php
+++ b/include/class.mailfetch.php
@@ -207,7 +207,7 @@ class MailFetcher {
 
     //Convert text to desired encoding..defaults to utf8
     function mime_encode($text, $charset=null, $encoding='utf-8') { //Thank in part to afterburner
-        return Format::encode($text, $charset, $encoding);
+        return Charset::transcode($text, $charset, $encoding);
     }
 
     function mailbox_encode($mailbox) {
@@ -241,7 +241,7 @@ class MailFetcher {
         if (function_exists('mb_detect_encoding'))
             if (($src_enc = mb_detect_encoding($text))
                     && (strcasecmp($src_enc, 'ASCII') !== 0))
-                return Format::encode($text, $src_enc, $encoding);
+                return Charset::transcode($text, $src_enc, $encoding);
 
         // Handle ASCII text and RFC-2047 encoding
         $str = '';
diff --git a/include/class.mailparse.php b/include/class.mailparse.php
index c2b51d7f07b46523bebc22292388d8bc494ecc62..5c9cdf4d636fd04b4cdb4d894ca06b036eae8b37 100644
--- a/include/class.mailparse.php
+++ b/include/class.mailparse.php
@@ -335,7 +335,7 @@ class Mail_Parse {
                 $content = $struct->body;
                 //Encode to desired encoding - ONLY if charset is known??
                 if (isset($struct->ctype_parameters['charset']))
-                    $content = Format::encode($content,
+                    $content = Charset::transcode($content,
                         $struct->ctype_parameters['charset'], $this->charset);
 
                 return $content;
@@ -358,7 +358,7 @@ class Mail_Parse {
 
 
     function mime_encode($text, $charset=null, $encoding='utf-8') {
-        return Format::encode($text, $charset, $encoding);
+        return Charset::transcode($text, $charset, $encoding);
     }
 
     function getAttachments($part=null){
diff --git a/include/class.misc.php b/include/class.misc.php
index b515507c8610a30448ff10cb7246128360d672c9..df8eb6d7a6e35df50074c83b420e3280ddb1193c 100644
--- a/include/class.misc.php
+++ b/include/class.misc.php
@@ -16,14 +16,31 @@
 
 class Misc {
 
-	function randCode($count=8, $chars=false) {
-        $chars = $chars ? $chars
-            : 'abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.';
-        $data = '';
-        $m = strlen($chars) - 1;
-        for ($i=0; $i < $count; $i++)
-            $data .= $chars[mt_rand(0,$m)];
-        return $data;
+	function randCode($len=8, $chars=false) {
+        $chars = $chars ?: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_=';
+
+        // Determine the number of bits we need
+        $char_count = strlen($chars);
+        $bits_per_char = ceil(log($char_count, 2));
+        $bytes = ceil(4 * $len / floor(32 / $bits_per_char));
+        // Pad to 4 byte boundary
+        $bytes += (4 - ($bytes % 4)) % 4;
+
+        // Fetch some random data blocks
+        $data = Crypto::random($bytes);
+
+        $mask = (1 << $bits_per_char) - 1;
+        $loops = (int) (32 / $bits_per_char);
+        $output = '';
+        $ints = unpack('V*', $data);
+        array_shift($ints);
+        foreach ($ints as $int) {
+            for ($i = $loops; $i > 0; $i--) {
+                $output .= $chars[($int & $mask) % $char_count];
+                $int >>= $bits_per_char;
+            }
+        }
+        return substr($output, 0, $len);
 	}
 
     function __rand_seed($value=0) {
diff --git a/include/class.ostsession.php b/include/class.ostsession.php
index 94df679d2792046fda2b7373e598851f147a501b..b300f16ec7a826443e3e1fb52530a7c88bd6486b 100644
--- a/include/class.ostsession.php
+++ b/include/class.ostsession.php
@@ -69,6 +69,23 @@ class osTicketSession {
         $this->destroy($oldId);
     }
 
+    static function destroyCookie() {
+        setcookie(session_name(), 'deleted', 1,
+            ini_get('session.cookie_path'),
+            ini_get('session.cookie_domain'),
+            ini_get('session.cookie_secure'),
+            ini_get('session.cookie_httponly'));
+    }
+
+    static function renewCookie($baseTime=false, $window=false) {
+        setcookie(session_name(), session_id(),
+            ($baseTime ?: time()) + ($window ?: SESSION_TTL),
+            ini_get('session.cookie_path'),
+            ini_get('session.cookie_domain'),
+            ini_get('session.cookie_secure'),
+            ini_get('session.cookie_httponly'));
+    }
+
     function open($save_path, $session_name){
         return (true);
     }
diff --git a/include/class.thread.php b/include/class.thread.php
index 0dba7135cf4c7b455334a91e3f3f1c3ef568ae7f..048c7f4f755dc1140c6659a2e2509f46d686bee6 100644
--- a/include/class.thread.php
+++ b/include/class.thread.php
@@ -251,6 +251,13 @@ class Thread extends VerySimpleModel {
         return $deleted;
     }
 
+    function removeCollaborators() {
+        $sql='DELETE FROM '.TICKET_COLLABORATOR_TABLE
+            .' WHERE ticket_id='.db_input($this->getObjectId());
+
+        return (db_query($sql) && db_affected_rows());
+    }
+
     /**
      * Function: lookupByEmailHeaders
      *
@@ -315,7 +322,6 @@ class Thread extends VerySimpleModel {
         return null;
     }
 
-
     function delete() {
 
         //Self delete
@@ -329,6 +335,7 @@ class Thread extends VerySimpleModel {
 
         // Mass delete entries
         $this->deleteAttachments();
+        $this->removeCollaborators();
 
         $this->entries->delete();
 
@@ -1274,15 +1281,18 @@ class TextThreadEntryBody extends ThreadEntryBody {
         if ($this->isEmpty())
             return '(empty)';
 
+        $escaped = Format::htmlchars($this->body);
         switch ($output) {
         case 'html':
+            return '<div style="white-space:pre-wrap">'
+                .Format::clickableurls($escaped).'</div>';
         case 'email':
             return '<div style="white-space:pre-wrap">'
-                .Format::htmlchars($this->body).'</div>';
+                .$escaped.'</div>';
         case 'pdf':
-            return nl2br($this->body);
+            return nl2br($escaped);
         default:
-            return '<pre>'.$this->body.'</pre>';
+            return '<pre>'.$escaped.'</pre>';
         }
     }
 }
diff --git a/include/class.ticket.php b/include/class.ticket.php
index a7a91190af8d205e386d644f2624a84359fe574f..f55c97649eaa4b36888e846ef96262ac1d4bada4 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -2019,8 +2019,12 @@ implements RestrictedAccess, Threadable {
 
             //Assigned staff if any...could be the last respondent
 
-            if($this->isAssigned() && ($staff=$this->getStaff()))
-                $recipients[]=$staff;
+            if ($this->isAssigned()) {
+                if ($staff = $this->getStaff())
+                    $recipients[] = $staff;
+                elseif ($team = $this->getTeam())
+                    $recipients = array_merge($recipients, $team->getMembers());
+            }
 
             //Dept manager
             if($cfg->alertDeptManagerONNewMessage() && $dept && ($manager=$dept->getManager()))
@@ -2711,7 +2715,7 @@ implements RestrictedAccess, Threadable {
      *
      *  $autorespond and $alertstaff overrides config settings...
      */
-    static function create(&$vars, &$errors, $origin, $autorespond=true,
+    static function create($vars, &$errors, $origin, $autorespond=true,
             $alertstaff=true) {
         global $ost, $cfg, $thisclient, $_FILES;
 
@@ -3213,16 +3217,10 @@ implements RestrictedAccess, Threadable {
         }
 
         $ticket->reload();
-        $dept = $ticket->getDept();
-
-        // See if we need to skip auto-response.
-        $autorespond = isset($create_vars['autorespond'])
-            ? $create_vars['autorespond'] : true;
 
-        if (!$autorespond
+        if(!$cfg->notifyONNewStaffTicket()
                 || !isset($vars['alertuser'])
-                || !$dept->autoRespONNewTicket()
-                || !$cfg->notifyONNewStaffTicket())
+                || !($dept=$ticket->getDept()))
             return $ticket; //No alerts.
 
         //Send Notice to user --- if requested AND enabled!!
diff --git a/include/class.translation.php b/include/class.translation.php
index 67037d2c02fb979d2f3006c96a3733f32f8cc30f..cb8bcee9a3996bce4b494a870cc097690522c0ce 100644
--- a/include/class.translation.php
+++ b/include/class.translation.php
@@ -576,7 +576,7 @@ class Translation extends gettext_reader implements Serializable {
         if (!$this->encode)
             return $string;
 
-        return Format::encode($string, 'utf-8', $this->charset);
+        return Charset::transcode($string, 'utf-8', $this->charset);
     }
 
     static function buildHashFile($mofile, $outfile=false, $return=false) {
@@ -626,9 +626,8 @@ class Translation extends gettext_reader implements Serializable {
         }
         if ($charset && strcasecmp($charset, 'utf-8') !== 0) {
             foreach ($table as $orig=>$trans) {
-                // Format::encode defaults to UTF-8 output
-                $table[Format::encode($orig, $charset)] =
-                    Format::encode($trans, $charset);
+                $table[Charset::utf8($orig, $charset)] =
+                    Charset::utf8($trans, $charset);
                 unset($table[$orig]);
             }
         }
diff --git a/include/class.usersession.php b/include/class.usersession.php
index 1d0b8e0b1862b9c2ddfadac651074415ce6127b7..004eda9ee5e55ac7910990829102720eeaa42ae6 100644
--- a/include/class.usersession.php
+++ b/include/class.usersession.php
@@ -133,6 +133,8 @@ class ClientSession extends EndUser {
     }
 
     function refreshSession($force=false){
+        global $cfg;
+
         $time = $this->session->getLastUpdate($this->token);
         // Deadband session token updates to once / 30-seconds
         if (!$force && time() - $time < 30)
@@ -140,6 +142,8 @@ class ClientSession extends EndUser {
 
         $this->token = $this->getSessionToken();
         //TODO: separate expire time from hash??
+
+        osTicketSession::renewCookie($time, $cfg->getClientSessionTimeout());
     }
 
     function getSession() {
@@ -179,12 +183,16 @@ class StaffSession extends Staff {
     }
 
     function refreshSession($force=false){
+        global $cfg;
+
         $time = $this->session->getLastUpdate($this->token);
         // Deadband session token updates to once / 30-seconds
         if (!$force && time() - $time < 30)
             return;
 
         $this->token=$this->getSessionToken();
+
+        osTicketSession::renewCookie($time, $cfg->getStaffSessionTimeout());
     }
 
     function getSession() {
diff --git a/include/client/header.inc.php b/include/client/header.inc.php
index 4a6324a58e3da655bcf47face2cbd7b5020857b1..34cd76f4056355f180c5af257cf9192f56cc7009 100644
--- a/include/client/header.inc.php
+++ b/include/client/header.inc.php
@@ -53,11 +53,6 @@ if (($lang = Internationalization::getCurrentLanguage())
 <body>
     <div id="container">
         <div id="header">
-            <a class="pull-left" id="logo" href="<?php echo ROOT_PATH; ?>index.php"
-            title="<?php echo __('Support Center'); ?>"><img src="<?php
-                echo ROOT_PATH; ?>logo.php" border=0 alt="<?php
-                echo $ost->getConfig()->getTitle(); ?>"
-                style="height: 5em"></a>
             <div class="pull-right flush-right">
             <p>
              <?php
@@ -100,6 +95,12 @@ if (($all_langs = Internationalization::getConfiguredSystemLanguages())
 } ?>
             </p>
             </div>
+            <a class="pull-left" id="logo" href="<?php echo ROOT_PATH; ?>index.php"
+            title="<?php echo __('Support Center'); ?>">
+                <span class="valign-helper"></span>
+                <img src="<?php echo ROOT_PATH; ?>logo.php" border=0 alt="<?php
+                echo $ost->getConfig()->getTitle(); ?>">
+            </a>
         </div>
         <div class="clear"></div>
         <?php
diff --git a/include/i18n/en_US/file.yaml b/include/i18n/en_US/file.yaml
index b6b9ac906fe09b8a61aa32c1c07f46138cc811ee..0464b6a23d6f2e600b2242880089133d65fdc214 100644
--- a/include/i18n/en_US/file.yaml
+++ b/include/i18n/en_US/file.yaml
@@ -14,220 +14,169 @@
   type: image/png
   encoding: base64
   data: |
-      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
-
-- key: 6fe1efdea357534d238b86e7860a7c5a
-  name: kangaroo.png
-  type: image/png
-  encoding: base64
-  data: |
-      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
+    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
+    dDQPXYCWomvRGrQePYC2oqfRS+h1dAB9io5jgNExDmaM2WFcjIdFYIlYGibHFmPlWDVWjzVjHVg3
+    dhUbwJ5h7wgkAouAE+wIXoQQwmyCkJBHWExYQ6gl7CO0EroIVwmDhDHCJyKTqE+0JXoS+cR4Yjqx
+    kFhGrCbuIR4hniVeJw4TX5NIJA7JkuROCiElkDJJC0lrSNtILaRTpD7SEGmcTCbrkG3J3uQIsoCs
+    IJeRt5APkE+S+8nD5LcUOsWI4kwJoiRSpJQSSjVlP+UEpZ8yQpmgqlHNqZ7UCKqIOp9aSW2gdlAv
+    U4epEzR1miXNmxZDy6Qto9XQmmlnafdoL+l0ugndgx5Fl9CX0mvoB+nn6YP0dwwNhg2Dx0hiKBlr
+    GXsZpxi3GS+ZTKYF05eZyFQw1zIbmWeYD5hvVVgq9ip8FZHKEpU6lVaVfpXnqlRVc1U/1XmqC1Sr
+    VQ+rXlZ9pkZVs1DjqQnUFqvVqR1Vu6k2rs5Sd1KPUM9RX6O+X/2C+mMNsoaFRqCGSKNUY7fGGY0h
+    FsYyZfFYQtZyVgPrLGuYTWJbsvnsTHYF+xt2L3tMU0NzqmasZpFmneZxzQEOxrHg8DnZnErOIc4N
+    znstAy0/LbHWaq1mrX6tN9p62r7aYu1y7Rbt69rvdXCdQJ0snfU6bTr3dQm6NrpRuoW623XP6j7T
+    Y+t56Qn1yvUO6d3RR/Vt9KP1F+rv1u/RHzcwNAg2kBlsMThj8MyQY+hrmGm40fCE4agRy2i6kcRo
+    o9FJoye4Ju6HZ+M1eBc+ZqxvHGKsNN5l3Gs8YWJpMtukxKTF5L4pzZRrmma60bTTdMzMyCzcrNis
+    yeyOOdWca55hvtm82/yNhaVFnMVKizaLx5balnzLBZZNlvesmFY+VnlW9VbXrEnWXOss623WV2xQ
+    G1ebDJs6m8u2qK2brcR2m23fFOIUjynSKfVTbtox7PzsCuya7AbtOfZh9iX2bfbPHcwcEh3WO3Q7
+    fHJ0dcx2bHC866ThNMOpxKnD6VdnG2ehc53zNRemS5DLEpd2lxdTbaeKp26fesuV5RruutK10/Wj
+    m7ub3K3ZbdTdzD3Ffav7TS6bG8ldwz3vQfTw91jicczjnaebp8LzkOcvXnZeWV77vR5Ps5wmntYw
+    bcjbxFvgvct7YDo+PWX6zukDPsY+Ap96n4e+pr4i3z2+I37Wfpl+B/ye+zv6y/2P+L/hefIW8U4F
+    YAHBAeUBvYEagbMDawMfBJkEpQc1BY0FuwYvDD4VQgwJDVkfcpNvwBfyG/ljM9xnLJrRFcoInRVa
+    G/owzCZMHtYRjobPCN8Qfm+m+UzpzLYIiOBHbIi4H2kZmRf5fRQpKjKqLupRtFN0cXT3LNas5Fn7
+    Z72O8Y+pjLk722q2cnZnrGpsUmxj7Ju4gLiquIF4h/hF8ZcSdBMkCe2J5MTYxD2J43MC52yaM5zk
+    mlSWdGOu5dyiuRfm6c7Lnnc8WTVZkHw4hZgSl7I/5YMgQlAvGE/lp25NHRPyhJuFT0W+oo2iUbG3
+    uEo8kuadVpX2ON07fUP6aIZPRnXGMwlPUit5kRmSuSPzTVZE1t6sz9lx2S05lJyUnKNSDWmWtCvX
+    MLcot09mKyuTDeR55m3KG5OHyvfkI/lz89sVbIVM0aO0Uq5QDhZML6greFsYW3i4SL1IWtQz32b+
+    6vkjC4IWfL2QsFC4sLPYuHhZ8eAiv0W7FiOLUxd3LjFdUrpkeGnw0n3LaMuylv1Q4lhSVfJqedzy
+    jlKD0qWlQyuCVzSVqZTJy26u9Fq5YxVhlWRV72qX1VtWfyoXlV+scKyorviwRrjm4ldOX9V89Xlt
+    2treSrfK7etI66Trbqz3Wb+vSr1qQdXQhvANrRvxjeUbX21K3nShemr1js20zcrNAzVhNe1bzLas
+    2/KhNqP2ep1/XctW/a2rt77ZJtrWv913e/MOgx0VO97vlOy8tSt4V2u9RX31btLugt2PGmIbur/m
+    ft24R3dPxZ6Pe6V7B/ZF7+tqdG9s3K+/v7IJbVI2jR5IOnDlm4Bv2pvtmne1cFoqDsJB5cEn36Z8
+    e+NQ6KHOw9zDzd+Zf7f1COtIeSvSOr91rC2jbaA9ob3v6IyjnR1eHUe+t/9+7zHjY3XHNY9XnqCd
+    KD3x+eSCk+OnZKeenU4/PdSZ3Hn3TPyZa11RXb1nQ8+ePxd07ky3X/fJ897nj13wvHD0Ivdi2yW3
+    S609rj1HfnD94UivW2/rZffL7Vc8rnT0Tes70e/Tf/pqwNVz1/jXLl2feb3vxuwbt24m3Ry4Jbr1
+    +Hb27Rd3Cu5M3F16j3iv/L7a/eoH+g/qf7T+sWXAbeD4YMBgz8NZD+8OCYee/pT/04fh0kfMR9Uj
+    RiONj50fHxsNGr3yZM6T4aeypxPPyn5W/3nrc6vn3/3i+0vPWPzY8Av5i8+/rnmp83Lvq6mvOscj
+    xx+8znk98ab8rc7bfe+477rfx70fmSj8QP5Q89H6Y8en0E/3Pud8/vwv94Tz+4A5JREAAAAZdEVY
+    dFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADKGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAA
+    AAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4g
+    PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv
+    cmUgNS42LWMwMTQgNzkuMTU2Nzk3LCAyMDE0LzA4LzIwLTA5OjUzOjAyICAgICAgICAiPiA8cmRm
+    OlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1u
+    cyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5h
+    ZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8x
+    LjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jl
+    c291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoTWFj
+    aW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RTJDOTVERUE2NzMxMUU0QkRDRERG
+    OTFGQUY5NERBNSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RTJDOTVERkE2NzMxMUU0QkRD
+    RERGOTFGQUY5NERBNSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAu
+    aWlkOkNGQTc0RTRGQTY3MTExRTRCRENEREY5MUZBRjk0REE1IiBzdFJlZjpkb2N1bWVudElEPSJ4
+    bXAuZGlkOkNGQTc0RTUwQTY3MTExRTRCRENEREY5MUZBRjk0REE1Ii8+IDwvcmRmOkRlc2NyaXB0
+    aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+i/72ygAAFwtJ
+    REFUeNrsXQmcU9XVPy97MslkZoBhcRiQXTY30M+tKCqoLQr287O2LvUr1taFuiButUoVwa32U4tS
+    tNU6VkRUpCwFZdEyqGyCoKyC7IsCM8zCTJKX992b/G9z5k6SyQxQccz5/Q4kk5f37rv3/M/5n3Pv
+    uzGGDx9OWTk2pNp00tju71Oxfy9RxP1da35LoZOF7hd6m9DtjT6DJTTfpNI1Hrr6rTyy2SyyGc1j
+    bG1Z887KEZILhJ4n9MdCr2j0t6NC80xauN5NP5sSpLAAXXMBmRRH1j6+1+ISWig0V6hdaA0i0r4m
+    RjQFmV2N/rY/SktEJBv6Rj5ZAmQtfVGKWlmgZeW7Ka2Enip0gNDThLYX6gXgJLuJCA0JPSh0ldDp
+    QmcJPZDBue34X4K0otGUUQBtxlYX7SuzU492YYpEm1fHZ4H2/ZCOQq8U+r9Cu2X4nd5CrxK6TOhI
+    oQvSHJsjdBgD87tCxwn9bUZXkhAVADt0yCBfjtnsQJbN0Zq/eITeLnQhDL9bE84hI+BcoffjfMnk
+    V4iSHDr3A9gNR7OgSbO3OemJ0hwqyo02y4HIAq35SmuhU4X+QehxR8BOHgGNvAA5naSbRULvTRO5
+    fi00P+2ZnRbVfuOgSYt91Ca3eeVlWerY/OUEoW8K7XWEz3sucru9QmsBuNZpHHY/ipf6H0xHG7cd
+    tNGUtR5qF8gCLSvfHZFR5pWjADIlPuR8mcrvKF7NHJuS3wrqWOiPxnKz5lTSz1LH5i2SKvb/lq4t
+    49FSocuFVrG/y0JJyzpHylTMI/7JNWn+Gg9FIgYZRvMdlGxEO+ZcX+Rwvv1zaspk8ZGT9UJ/InSH
+    0A5Cfyn0MuR338Tvz4q792CU5q300KSVXpq20U1uQSGN5jysWcs+hryeEaWS7aeQGfYKq2t09U3m
+    Sncl+bucPC7/D93Cw0K/BFVcR/FCST8R56aTXQDMb8bQ9OVeB/30pQK6ZUaQJi73kddhkcdhNe+x
+    zZr3sSPSo28+FKSQPUxeq9H+XUaOntrfSoVOBACDR7n544W+Voca+qIhcSMhGcUOltvpwDYXPVjq
+    pzmbXFQVMsjvsqh7qwiZAmPR5o2zLNCOKXphCGuzbLT6QDH1z98Se52hBIReo/1NRpShFF9i1eYo
+    N/05oaMSrRGRKydKq9Z7aPGXbuqQH6EFW1z0aGkOtfNHYzQxJycesU3r+zG2jrPPPjtr4ceQTJu/
+    jN7c3Yv6t9gk3HzGfvAsipfdlZQBeN8gtmwQ2uIoNFcu0xpBatWICMJyneLjc3LJFFedtclNCwXQ
+    DFeUct0ierVonqs+shHtO5mnWZTnqooXRSyPMN6MXL5cMe9i7x8SugSv5SLhJ4S+kcF4y/zqddBM
+    WczIo3g53ym0EvleWwCbUPRYVucMgg5OWOGlzbudVCgiWY+2iXWL31eQZYF2DIrdiFJV2EM1NUHy
+    2EOZ0EdZNj+Rvf9A6KvaMWuEVlN8gjmdyEnuB1jK6KPEKpByRMoigPZMoYOEzo4BPSpAGDTpqz1O
+    yndaFGoZiRU5viVwyfbKJWHt8X6P0HlCD2WBlpWY+O21tKKiDZXs7EvDO39IVOtv6CuDKb4eUclf
+    EcW4dKHU6xSJGWNJ7FWeyLFCIpRW2qrIVmc+TMp2FFemU+Ixm3zyWLu27nDRsMl5tO2gnVp4o3JS
+    rR3FJ7cjoLAp/QvFV5pIqlsg1I32ygi6sQndKCPyPUIHMor7Q6HbskDLSkwsEUgcJMvdtSjxGxSf
+    B04pMpqpsCcXD7+b5JiuGrXULyrP8CdyWp9LRNz7Vh6dKCjf1WcJjB2yxZsQe4DGUJNdYVnHILlq
+    34o9QrOdCiI0fm6AVm53Uve2kViORvFV/3JRcxXOkEpk5NwEGnq+9DcUfyLgeaE3ZaljVo6KFLiq
+    6f293ejk4A7qJZRC/lRgywOFU/JP0DtdTk55sVgZ3no34rYecxy00X3zAvTkh35qL6jfrA1uqg4b
+    tLfSRsN619DICyqIDsRmltuJ5rSMNSnX3EWe6KFFS3z01moPFbc0FcgI+RwBNA1JLvLClpR4ts3b
+    xC6MasA2G4ioR0qOR1/3htOYkQVaejFgHE5441CK4zw4pgZe/sgkGDaTdtQEaFVZEfUK7I1HtuTz
+    anLerC9e70SOpYukYd1TmqPbmkltwrdMnJUbGvteIGadnVrLAoZBMza6Y2sPDwig5XssGjmgUtyx
+    QFe1USWgsFrkZPO31xjjV232hm+elidyS4odx0r2ivZVMMM3Wd6nRH4mFyqvB9jy0f+VhzF+/+mF
+    Jj1QSDoJ78dlgdawyIF+AbmPfNRkNMWfOubSh+LrCtvjmHuO1MWjAlTHuStosizzi4jWOXd3qs16
+    5PxYAK+/BP3S5QYth0uAzE4vUtvwzc/MzA3dMy1IhYFoK59hFQtweW12K9LKZ8mnpTe38kUj87Y6
+    6eqSAiq58oAE2xLqWjt4+QbXzoF3Fckqia9Lcag4V+BRgMwFgMi2PATwe1ieJp3So5R4UFRSzztQ
+    xJEg/COcl5uasiXCtyftGchIL7xkgZaiJkHxeakO+D+ZlRegsuVMasiHCzbhkD0isjkcoXQ5Gl+o
+    uzJJHiTb9QDpS+0s2i0i2WgBshee+Wcu3f52sLA437zJYYs9qNmeXU1WKhdELXqyYzA6f/J6N3nf
+    yaNHz68oL3k9v3zSp15budO6tmNh5BZxgT7RulFqi9DHKb5iRJev2Wt5g59KQOP91mOY5aRLlreh
+    oKNsZX8WaA1LhNHFAymo40F4bhn9dh+NRjgNk0q2nUJ3dyolR2xezZbMiyr5RPtMVtz+hqoglylR
+    03jA5jHXThBU8Tdv5p3RLt98zmWnU6JW7D5ehNHI/OgHQi+RGo7SvccHzXFTRd72xT47Ld7uFDQx
+    +nSv9qERpmlExeeTjThVlH0nH9EZIvRPQs8Qep2WI/GczcXed6L4lgt2ODu5hOwfSbpGPsg6GNS5
+    EBGzEuOwgOJPEDRE5eWzcpeC1gbhjMZT3W3yLqb4FEYhJaY45IqbSayCeSL6upOGp4vhhGXbKhxI
+    4E5Fw2ajAnQ1xedLFiPBrkySmwxC4ufFRRfBMxHj2TZQCJWgy/0kihFWNzID9uM7HtzoHlAiGTH6
+    w5PIuaD54PLEDKEV2rkeg9QFXHkTqNUg5CgWqnL/IqpXsj4TnZWDqt16FvpT8X0bixTqfD9Bn8g2
+    TqP4igx5zotwDjlIq5IAoq2KHsQ2wjEMizYfyqdQ1B4HWn1pzSIPp42yUjcGxRIlkgbeT97oxI37
+    7dGLH2tDVSFqL0A2MeCyegnKJ/OJW4R+peV316P6N1YAcV+uK/Z96phvXmUYNCIUNraJjr3CqA/0
+    c4T+Hbb0IcXXXHLiymueSk4CrVTylyRAk1H3Tqq/rlPJ+aCl6ebMJBt5WihfFvU663vpwOQTB1cB
+    LJSkDbcBL4MQuXW5BBpz1g54hufRsHFo6A/YF+aC56vQLp/efQmeiosc7GcovmJbGtZz8Ew34/xS
+    RqHkK68lH6Eowd9Hwzgi8DQSpHKB6inaNVbCGBaCNkmP2RlG9Q067yAGWFI+ObHaUTtHKdq0Eu/v
+    pvgTwF6W00zIsFLGI4vM0y5jfxsF4C/CoPXANS9k1El6Zjm5LOeb5gh9T2crPns4vgayvnhx7yrq
+    7sBruYJe31pgNaLKcrl1wNx1Hvq6yqAWvugdIpJJkM1FW3UHVItctQrRcYzI32blui3pDM+14s26
+    L0k0JTi0ezDGNyJXK2ugH6sBvFSFjEdhX+lkEwJDOrb2qAYy2cbhuN92AN1Z7PO1yC27o997wLb6
+    MMefTuw2Vv3xwuD7ITH9mnmIFwGaAgBAgUxGmXnoQB869jp45hA6rC8rRZ/DrnUuXgcQZj0wCAmy
+    VxjIViJihRCmS9AZNawzR6DthGh0Hgy4I8ArwfUZPj8L9+DHvT2C9pgwjn0wns4ZdKDJvNcQtHUN
+    /laItso5rCmMZnTRvH47vJ5XnzlYdMh0xoojKQo2RXj9OXKi8+E4uLwf619LgMwfpWcXBOgOkZcV
+    5kT7ipzsBqyavysJyLi8ChuQ7OFarfT+dZrvLUDfR/DdTMryqaLdTRrIwmAf0vFeTvENgl5GEAil
+    yKsJx93I3s9gICMUuM5iTOVGRNp+lHjWjkA3n4TTHwU6ydv+IWzyMRnAbBqXlSf+OUBwKYtiA+EB
+    BlBiTuZVUK7zcazirPcBBAvx/nSA6DgYnZIilieqDVwmIcKqBbK34yZPR0fXgmLeC24dZmBdC8ow
+    EufoBk49HG0/kRLPa/XC69sZWO9GJD8XFLWxMgYU/GJQChWxBsHYlXC2MJgZ63v1EkVBGW9ov4x8
+    rupk+Vke67dFLMdxalFlmDDX7VRg0stLfDRiZi4V5ETJZov1h4zab7Ponk7URPh/w4Gq0v09bCx1
+    2YExuVyjpI2VdhTfVYuLvO5QsJp3wEKuR1/7KTEXpwC7A06fb6mwBIGhlqUQQ9jnEsR/xucm0oH7
+    2OeXgc08AVBxfv82qq6ynWNtWpiewOZiPsYJlFwEo1WG8QSjAv+CJyAY+Hn4PiHctka+5Ee0LAcF
+    zUfkCLLKTU8WyWYgD8oBdVHn7AvA1eD9bniqqYiKqkjwGXJMFzzcNIo/Zi/lF6BxUqaD6hJKyr8H
+    jcmkEiVlBSKjicgyjh1zIRzWp4whqByvJ/N+y+twDSNKZREP5bkrUj11ncv6bQOjXkq+ghFVknyo
+    sspG729wk0O89gv6KGhfbxZJM5nMXQ5wdUI0+yuucS6i1kMYlwKNtklb2UlNm2dUEW0oi/wERvKH
+    RpxnLyLqWJa3rkH/8F2ZrwAzI7CoKUnONQfjrXLYAazAY9Oofcqq40fa+4VAqQNAURu+fAC6wkUB
+    KIhOkZ7ld5TYzKUVDP51RM5LAJb+aNQq5FmqQ6URLoMx2+BVclg0PJ55osXMkDuyyPlfQr9Ah0Qx
+    cH4WbXjeVsverwPou2cItDVaZfIreNDj4Ei2Aswnw1ANROm+rJ/rgGx3rZ/6BPZQBxnNzGT5eOw+
+    XWj3FvytQouwm9UPR7y+1EevrfBSt8KIfMjSYP2c6Y9R7IET6gJ28BGi29OgwA9Cv4ZDLEXutohS
+    T/hnKgO19y828vs5oHCqOCEDxK2M5hPslK+gcSJCWgw0NXgdSDLFogctRzqgmUk4MyWpvtUk8YJ8
+    mYsbYVkZ2xkAFQE8Hty0pFq9GchXs5vYDzAb7Caq0ebPYVRuzeBVudjDotNadJqdEhOmZXAIqhrY
+    1GkOI0W/mYxGqDbOBv3pDCrbB+1cC+fzbxe+rSZIJwmQPdBjNrltIhDEtjaoVxDpxhzcSlYUUVMP
+    cSrqsqhip5OmLPNRm6CpnmS2sXvONNLwe3KysRwIynUhxrIf6NcQRqFuo6Yt6LWSzBeWN2Gu7Uyt
+    uJGD6jdpQON7UJ5M6ZauJSSQwgYoHdD0J3H7sGO2gAIUwxt3YJ6UYED5DIg1GAgJtAsQZfbAsNTj
+    GpeyyPI5wBVm1aOhmpdWJfUIrq+ik51NKJbDq/pxzmHw+upzB77fF/dRgOiod17LDJN30gocUlow
+    x7KLRc1P4HRuYMWHxeiXuGVZBj3ebS4V+feSJwYyX6r9Q05gxq6KKCGWa8f7TdDEjfsdNHWdm7ol
+    Hrw0KbGPSKZbHPjQLxGqOxkbAfX9EH1cjP44mxUq5Fj8jNQGPU13aA0adArRE1wnItwKxoTsWn4b
+    TTO1E4EtOdk42lI4iaQfDmeGX0B1V05/wOY0urLqk5rPuZs1YjXL81ReUgxjUw8QVgJop2LgPmIA
+    Ixjkj9g1OqEs+3fMY1SnqFBtYZ3XD/mi+rwnpiD+D0UJZTDDWBXUjkJJi0Z4XHkdvpXAVez1Iq04
+    oXKOH+P1W/yERd5yOiF/CwUdNYhkSUGWx2jtJ1o0V3SwtoG2r2fONBPphrL2duQ8x1H9XYgt9P9c
+    FAcG4thBKBI1FWARbQ4srwnnmozCiZJWqBr6WGSv0Sqm51BijvU8phdCJSv7I2MuViqg6RHtFFCO
+    GZSYLFbVmXkoOowAsEYjInxGdTeGmcGqbCsAKL+WtO/FgPRi8xSfsoLMYHjal1BS/RI31Z0VDyop
+    +S5eVSjoXI7OnIr3OwGGtuiEq1DQmQCDeQMFlx4awBsCmerH8ej8AByIassb7DiZp/0axwTQHx/z
+    k97deQHZZIVR5mWpn64eDFrzCcZFT8C3/dtowgZ1KYjQ0O61tGi7M7YhDptbU1XEJ6jhX4wZiHH8
+    G6L1xygu/ZRSTw6vQtFiHPK6V5sY0bZo76/Ui0cNyE4Uq9bAKZ7O7ukOfFamFUb8aP/BJkRd7vTq
+    RTQTIGuPEnl/Nmh34vUXoD3f4MQ/RKm9J5uzuZV1/GIt4VRzEPuYR5WylHmteYisB2A4l6IM3x3H
+    PIUKYStWwg1o9zIJ8x8ReJqrMdfRlk1BvIF5lyls3mskuPyzrBwdSJHDeZk3/Bz9dA2ilWrLSPQB
+    LzYt00rAdSY8fSKiUcSVbkB7s2rwSxq1LmARLU6xQgYF2obpmtOraH+1TS9elYKdXN+AERUxdlMC
+    wy9HSlCUIb02DyOivaM5thEZOkNi/bEL9vCA5hgeRMSNUt1fzDmN+IZDDYv+U1VdU0U0O7zyGNBC
+    H6pvryKiKPkH+PdQeCknjOUDzLVwyrIPA9QJ3p3TnHsBiFAS7zQFCf7lMCwXQDoV0UyVjX+BXGoT
+    1V/w+WcY+TA4gjDuYwaLIiHc6yx4Nzeu8RoKFJ3wnWT7In6BaOCD55Pnuhn53n5QlTlJuP0sRlPn
+    1DtrbUBGMj8KJfs1enw6+rg1aNBE7dtD2HRHwlRFVJPlfS3+y3F6HOd7CqX7aUnusxBRvzMM/iPm
+    zGR0/i3GIdkcRFdEDNIjdyNlJhywmhrxwFFORPt3gZUMgN2Uau1xsqLUe3CkoxgGHgdrmwinoxYr
+    3I97GA9nWgvHq3LQpWwMq8Ei/GyObSRs23AkSRI/gDG7YDzJ+Ms6JJPqB+xCaeZilkKTnWNdms7d
+    gGs4cY2wdo1DlGSSV5MV6HhV3g8nuR95nr/AoRisoPBRkukOLgeIPW8EGYWBM7WBVoWYICWW/nxG
+    9dc9ilbKByutnhgki0UnXjkbT/U3S+0Bz0z1HIPovbJaG4UOGeTIq7NJzjR4+IdhsM/CQZXhPs7E
+    Z53Qj7ezs74AYF8LYxwHOhrBmA1GtChE5J1+GEAz0bczKbG+Uzq43yBfPwjwtYCTXKhNKei07hk4
+    1n54LwPG78HGRiHVUG7pf3AvB9i95QLYJQxoW3Ddi1hlcyzavsSRogppZZBM0xGYH8lEDveBSktL
+    co/WdZRBmClKwHciAvZktLH+8qV4XrYYzOJXyPsKcA/TEMnmJLnGAET3KKIti10GnV0UotM6hmhr
+    uZ3naYT8ZDP+vxWqj/Er8O472N9Vbv40CkvJtlAoA1DHaP3r1wo7XgYeu8aylCwHXXyeAYRYvsur
+    sQVUdwlWnsbedgAEvBB1C6q/j+C+nmJTKMEU1dmWWj89DGcYYHiS2tGhNcBNWTkakoNcU4FsM6hl
+    OlkJauZCbql2oUo1l3MDBvt60n+dU9DGLifU0iWbamjMnIAAWj1f8Bqi86WY9mgBYG8GZVua4rrL
+    KfEj8TKnaQew7AOdn03JN9eZjmJWGPf1FauETkB08lP9Xxldiuv9CP93ZhVIdc2ZSGWm438LbdDp
+    /9tIawYgWrVE27347icomJ2DirkfTlQeuxXnfF875yK061ZKTI3JlGm+8fLLL/dCaIygkRuzuDji
+    IqnGL+Ehd8L7f5rswOvKRjXl/HZUIStRwa0vQZNGTw/SmNIc6hA0m0OfGnAwakOVCkrMJza4o1Ga
+    ftQLN3ZEMy/YQjWoqtVA21ogcMnjy/5fgAEAs+CvmHNdSv0AAAAASUVORK5CYII=
diff --git a/include/i18n/en_US/help/tips/staff.department.yaml b/include/i18n/en_US/help/tips/staff.department.yaml
index 2d91cb5383194e81be920c328837ef031b6709cc..ec16a46a1f13e2ad790f2ca9216fe447b5654ad8 100644
--- a/include/i18n/en_US/help/tips/staff.department.yaml
+++ b/include/i18n/en_US/help/tips/staff.department.yaml
@@ -47,7 +47,7 @@ sla:
         Service Level Agreement for tickets routed to this Department.
     links:
       - title: Manage SLA Plans
-        href: /scp/slaplans.php
+        href: /scp/slas.php
 
 manager:
     title: Department Manager
diff --git a/include/staff/header.inc.php b/include/staff/header.inc.php
index b640573a569f9181e98a03a6ccbc90e10d7d79e8..b6afe4f38a37c1020426adc62c7da892b049a5c7 100644
--- a/include/staff/header.inc.php
+++ b/include/staff/header.inc.php
@@ -65,7 +65,6 @@ if (($lang = Internationalization::getCurrentLanguage())
         echo sprintf('<div id="notice_bar">%s</div>', $ost->getNotice());
     ?>
     <div id="header">
-        <a href="index.php" class="no-pjax pull-left" id="logo">osTicket &mdash; <?php echo __('Customer Support System'); ?></a>
         <p id="info" class="pull-right"><?php echo sprintf(__('Welcome, %s.'), '<strong>'.$thisstaff->getFirstName().'</strong>'); ?>
            <?php
             if($thisstaff->isAdmin() && !defined('ADMINPAGE')) { ?>
@@ -76,6 +75,10 @@ if (($lang = Internationalization::getCurrentLanguage())
             | <a href="profile.php"><?php echo __('My Preferences'); ?></a>
             | <a href="logout.php?auth=<?php echo $ost->getLinkToken(); ?>" class="no-pjax"><?php echo __('Log Out'); ?></a>
         </p>
+        <a href="index.php" class="no-pjax" id="logo">
+            <span class="valign-helper"></span>
+            <img src="logo.php" alt="osTicket &mdash; <?php echo __('Customer Support System'); ?>"/>
+        </a>
     </div>
     <div id="pjax-container" class="<?php if ($_POST) echo 'no-pjax'; ?>">
 <?php } else {
diff --git a/include/staff/login.tpl.php b/include/staff/login.tpl.php
index a979d6a64e9114ad6ad65425c7dff3af4f98c5cc..cbb5b589499552516ea20f60b8bd90917ff2d445 100644
--- a/include/staff/login.tpl.php
+++ b/include/staff/login.tpl.php
@@ -3,7 +3,10 @@ include_once(INCLUDE_DIR.'staff/login.header.php');
 $info = ($_POST && $errors)?Format::htmlchars($_POST):array();
 ?>
 <div id="loginBox">
-    <h1 id="logo"><a href="index.php">osTicket :: <?php echo __('Staff Control Panel');?></a></h1>
+    <h1 id="logo"><a href="index.php">
+        <span class="valign-helper"></span>
+        <img src="logo.php?login" alt="osTicket :: <?php echo __('Staff Control Panel');?>" />
+    </a></h1>
     <h3><?php echo Format::htmlchars($msg); ?></h3>
     <div class="banner"><small><?php echo ($content) ? Format::display($content->getLocalBody()) : ''; ?></small></div>
     <form action="login.php" method="post">
diff --git a/include/staff/settings-pages.inc.php b/include/staff/settings-pages.inc.php
index 3bf1c78776adc2bc90b9604175591bd3ff969202..4d9910b4e2c9e04cd5d41fc40ddde1961f0e1abf 100644
--- a/include/staff/settings-pages.inc.php
+++ b/include/staff/settings-pages.inc.php
@@ -107,49 +107,74 @@ $pages = Page::getPages();
     <tbody>
         <tr>
         <td colspan="2">
-                <label style="display:block">
+<table style="width:100%">
+    <thead><tr>
+        <th>Client</th>
+        <th>Staff</th>
+        <th>Logo</th>
+    </tr></thead>
+    <tbody>
+        <tr>
+            <td>
                 <input type="radio" name="selected-logo" value="0"
                     style="margin-left: 1em"
                     <?php if (!$ost->getConfig()->getClientLogoId())
                         echo 'checked="checked"'; ?>/>
-                <img src="../assets/default/images/logo.png"
+            </td><td>
+                <input type="radio" name="selected-logo-scp" value="0"
+                    style="margin-left: 1em"
+                    <?php if (!$ost->getConfig()->getStaffLogoId())
+                        echo 'checked="checked"'; ?>/>
+            </td><td>
+                <img src="<?php echo ROOT_PATH; ?>assets/default/images/logo.png"
                     alt="Default Logo" valign="middle"
                     style="box-shadow: 0 0 0.5em rgba(0,0,0,0.5);
                         margin: 0.5em; height: 5em;
                         vertical-align: middle"/>
-                </label>
-        </td></tr>
-        <tr>
-            <th colspan="2">
-                <em><?php echo __('Use a custom logo'); ?>&nbsp;<i class="help-tip icon-question-sign" href="#upload_a_new_logo"></i></em>
-            </th>
+                <img src="<?php echo ROOT_PATH; ?>scp/images/ost-logo.png"
+                    alt="Default Logo" valign="middle"
+                    style="box-shadow: 0 0 0.5em rgba(0,0,0,0.5);
+                        margin: 0.5em; height: 5em;
+                        vertical-align: middle"/>
+            </td>
         </tr>
-        <tr><td colspan="2">
-            <?php
-            $current = $ost->getConfig()->getClientLogoId();
-            foreach (AttachmentFile::allLogos() as $logo) { ?>
-                <div>
-                <label>
+        <tr><th colspan="3">
+            <em><?php echo __('Use a custom logo'); ?>&nbsp;<i class="help-tip icon-question-sign" href="#upload_a_new_logo"></i></em>
+        </th></tr>
+    <?php
+    $current = $ost->getConfig()->getClientLogoId();
+    $currentScp = $ost->getConfig()->getStaffLogoId();
+    foreach (AttachmentFile::allLogos() as $logo) { ?>
+        <tr>
+            <td>
                 <input type="radio" name="selected-logo"
                     style="margin-left: 1em" value="<?php
                     echo $logo->getId(); ?>" <?php
                     if ($logo->getId() == $current)
                         echo 'checked="checked"'; ?>/>
+            </td><td>
+                <input type="radio" name="selected-logo-scp"
+                    style="margin-left: 1em" value="<?php
+                    echo $logo->getId(); ?>" <?php
+                    if ($logo->getId() == $currentScp)
+                        echo 'checked="checked"'; ?>/>
+            </td><td>
                 <img src="<?php echo $logo->getDownloadUrl(); ?>"
                     alt="Custom Logo" valign="middle"
                     style="box-shadow: 0 0 0.5em rgba(0,0,0,0.5);
                         margin: 0.5em; height: 5em;
                         vertical-align: middle;"/>
-                </label>
-                <?php if ($logo->getId() != $current) { ?>
+                <?php if ($logo->getId() != $current && $logo->getId() != $currentScp) { ?>
                 <label>
                 <input type="checkbox" name="delete-logo[]" value="<?php
                     echo $logo->getId(); ?>"/> <?php echo __('Delete'); ?>
                 </label>
                 <?php } ?>
-                </div>
-            <?php } ?>
-            <br/>
+            </td>
+        </tr>
+<?php } ?>
+    </tbody>
+</table>
             <b><?php echo __('Upload a new logo'); ?>:</b>
             <input type="file" name="logo[]" size="30" value="" />
             <font class="error"><br/><?php echo $errors['logo']; ?></font>
diff --git a/include/staff/ticket-view.inc.php b/include/staff/ticket-view.inc.php
index b954c49dcb78c081294149b7013a55d97931435f..09d50c8d6b62b81bd0f0d3714857d4b5bb14967a 100644
--- a/include/staff/ticket-view.inc.php
+++ b/include/staff/ticket-view.inc.php
@@ -439,7 +439,7 @@ $tcount = $ticket->getThreadEntries($types)->count();
             </tr>
             <tr><td colspan="4" class="thread-body" id="thread-id-<?php
                 echo $entry->getId(); ?>"><div><?php
-                echo Format::clickableurls($entry->getBody()->toHtml()); ?></div></td></tr>
+                echo $entry['body']->toHtml(); ?></div></td></tr>
             <?php
             $urls = null;
             if ($entry->has_attachments
diff --git a/include/tnef_decoder.php b/include/tnef_decoder.php
index e0f7869ba82b4ce554ada486efbfb1ae9cc4bb67..70e455851fc69d236f822ed033fdb7e731219f57 100644
--- a/include/tnef_decoder.php
+++ b/include/tnef_decoder.php
@@ -341,7 +341,7 @@ class TnefAttributeStreamReader extends TnefStreamReader {
             /* Read and truncate to length. */
             $text = substr($this->_getx($datalen), 0, $length);
             if ($type == self::TypeUnicode) {
-                $text = Format::encode($text, 'ucs2');
+                $text = Charset::utf8($text, 'ucs2');
             }
 
             return $text;
@@ -543,7 +543,7 @@ class TnefMessage extends AbstractTnefObject {
 
         // Transcode it
         if ($encoding && $charset)
-            $body = Format::encode($body, $charset, $encoding);
+            $body = Charset::transcode($body, $charset, $encoding);
 
         return $body;
     }
diff --git a/logout.php b/logout.php
index 74d73cc377b58049f286551771ff880dfc800fab..9fb8037acd458c9998c126d6d17ec533fbac7b57 100644
--- a/logout.php
+++ b/logout.php
@@ -19,6 +19,7 @@ require('client.inc.php');
 if ($thisclient && $_GET['auth'] && $ost->validateLinkToken($_GET['auth']))
    $thisclient->logOut();
 
+osTicketSession::destroyCookie();
 
 Http::redirect('index.php');
 ?>
diff --git a/scp/css/login.css b/scp/css/login.css
index 99f8f1220c1f388f52a37d8759c5ba5049566b9c..aef7b3a789b44c4d55bc0e7df0965cc7f1bc2247 100644
--- a/scp/css/login.css
+++ b/scp/css/login.css
@@ -69,12 +69,21 @@ h1 {
 
 #logo a {
     display:block;
-    width:180px;
-    height:72px;
     text-decoration:none;
-    text-indent:-9999px;
-    background:url(../images/login-logo.png);
-    margin:0 auto 1em auto;
+    height: 100px;
+}
+
+#logo a img {
+    max-height:66px;
+    max-width: 300px;
+    height: auto;
+    width: auto;
+    vertical-align: middle;
+}
+.valign-helper {
+    height: 100%;
+    display: inline-block;
+    vertical-align: middle;
 }
 
 h3 {
diff --git a/scp/css/scp.css b/scp/css/scp.css
index 37979a2c7531d71f26910ea796fbbfbaa7a54f61..f9296da91eb1e9bf741a8cbd6e50bb44dccc8ae2 100644
--- a/scp/css/scp.css
+++ b/scp/css/scp.css
@@ -102,19 +102,31 @@ div#header a {
 
 #header {
     height:76px;
-    background:url(../images/header-bg.png) top left repeat-x;
     border-left:1px solid #aaa;
     border-right:1px solid #aaa;
+    background-color: rgb(248,248,248);
+    box-shadow: inset 0 -10px 8px -5px rgba(0,0,0,0.1);
 }
 
 #logo {
     display:block;
-    width:190px;
-    height:76px;
     text-decoration:none;
     outline:none;
-    text-indent:-9999px;
-    background:url(../images/ost-logo.png) top left no-repeat;
+    height: 64px;
+    max-width: 400px;
+    padding: 5px 0 7px 5px;
+}
+#logo img {
+    max-height: 66px;
+    max-width: 300px;
+    height: auto;
+    width: auto;
+    vertical-align: middle;
+}
+.valign-helper {
+    height: 100%;
+    display: inline-block;
+    vertical-align: middle;
 }
 
 #header p {
diff --git a/scp/images/header-bg.png b/scp/images/header-bg.png
deleted file mode 100644
index dc3e1d5c51f1a9c7b58c5a5b8c423a0152c72767..0000000000000000000000000000000000000000
Binary files a/scp/images/header-bg.png and /dev/null differ
diff --git a/scp/images/login-logo.png b/scp/images/login-logo.png
deleted file mode 100644
index 6526ebe0a15f393382e0339b38cef8422d7ff471..0000000000000000000000000000000000000000
Binary files a/scp/images/login-logo.png and /dev/null differ
diff --git a/scp/images/ost-logo.png b/scp/images/ost-logo.png
index 0cf40c72dc58b139663d8ba7bd0210ae5d2743f1..33b09d35aa8dfbc935e85e70ee17bc5c69d0567e 100644
Binary files a/scp/images/ost-logo.png and b/scp/images/ost-logo.png differ
diff --git a/scp/logo.php b/scp/logo.php
new file mode 100644
index 0000000000000000000000000000000000000000..0acbf430882b3690134e4048bb7c22ffc1cd697f
--- /dev/null
+++ b/scp/logo.php
@@ -0,0 +1,32 @@
+<?php
+/*********************************************************************
+    logo.php
+
+    Simple logo to facilitate serving a customized client-side logo from
+    osTicet. The logo is configurable in Admin Panel -> Settings -> Pages
+
+    Peter Rotich <peter@osticket.com>
+    Jared Hancock <jared@osticket.com>
+    Copyright (c)  2006-2013 osTicket
+    http://www.osticket.com
+
+    Released under the GNU General Public License WITHOUT ANY WARRANTY.
+    See LICENSE.TXT for details.
+
+    vim: expandtab sw=4 ts=4 sts=4:
+**********************************************************************/
+
+// Don't update the session for inline image fetches
+if (!function_exists('noop')) { function noop() {} }
+session_set_save_handler('noop','noop','noop','noop','noop','noop');
+define('DISABLE_SESSION', true);
+
+require_once('../main.inc.php');
+
+if (($logo = $ost->getConfig()->getStaffLogo())) {
+    $logo->display();
+} else {
+    header('Location: images/ost-logo.png');
+}
+
+?>
diff --git a/scp/logout.php b/scp/logout.php
index bdc697c78beceb7b4cf3185603f45afbcf8d2838..1007d985c0bb8509514f42d55d91103571b3f965 100644
--- a/scp/logout.php
+++ b/scp/logout.php
@@ -31,6 +31,8 @@ TicketLock::removeStaffLocks($thisstaff->getId());
 session_unset();
 session_destroy();
 
+osTicketSession::destroyCookie();
+
 @header('Location: login.php');
 require('login.php');
 ?>