diff --git a/include/ajax.config.php b/include/ajax.config.php
index 398b6dccdd151c205a32b307a664f764db92d608..2a01e284071ca6122024ffc78c390759f3b48467 100644
--- a/include/ajax.config.php
+++ b/include/ajax.config.php
@@ -24,8 +24,6 @@ class ConfigAjaxAPI extends AjaxController {
 
         $config=array(
                       'lock_time'       => ($cfg->getLockTime()*3600),
-                      'file_types'      => $cfg->getAllowedFileTypes(),
-                      'max_file_size'   => (int) $cfg->getMaxFileSize(),
                       'max_file_uploads'=> (int) $cfg->getStaffMaxFileUploads()
                       );
         return $this->json_encode($config);
diff --git a/js/jquery.multifile.js b/js/jquery.multifile.js
index 9b9a23b7d47065e1ecdea827f4b4d2cc05574dc6..0c0dd4a1cc4fa75e59a0bc232acde768dede0b60 100644
--- a/js/jquery.multifile.js
+++ b/js/jquery.multifile.js
@@ -3,7 +3,9 @@
 
     Multifile plugin that allows users to upload multiple files at once in unobstructive manner - cleaner interface.
 
-    Allows limiting number of files and file type(s) using file extension.
+    Allows limiting number of files
+    Whitelist file type(s) using file extension
+    Limit file sizes.
 
     NOTE:
     * Files are not uploaded until the form is submitted
@@ -50,7 +52,21 @@
 
                 if(fObj.data('files')>=settings.max_uploads || (fObj.data('files')+file.count)>settings.max_uploads) {
                     alert('You have reached the maximum number of files ('+ settings.max_uploads+') allowed per upload');
-                } else if($.fn.multifile.checkFileTypes(file, settings.allowedFileTypes)) {
+                } else if(!$.fn.multifile.checkFileTypes(file, settings.allowedFileTypes)) {
+                    var msg = 'Selected file type is NOT allowed';
+                    if(file.count>1)
+                        msg = 'File type of one or more of the selected files is NOT allowed';
+
+                    alert('Error: '+msg);
+                    $this.replaceWith(new_input);
+                } else if(!$.fn.multifile.checkFileSize(file, settings.max_file_size)) {
+                    var msg = 'Selected file exceeds allowed size';
+                    if(file.count>1)
+                        msg = 'File size of one or more of the selected files exceeds allowed size';
+
+                    alert('Error: '+msg);
+                    $this.replaceWith(new_input);
+                } else {
                     $this.hide();
                     
                     settings
@@ -61,15 +77,6 @@
                     fObj.data('files', fObj.data('files')+file.count);
                     if(fObj.data('files')<settings.max_uploads)
                         $this.after(new_input);
-
-                } else {
-                    var msg = 'Selected file type is NOT allowed';
-                    if(file.count>1)
-                        msg = 'File type of one or more of the selected files is NOT allowed';
-
-                    alert('Error: '+msg);
-                    
-                    $this.replaceWith(new_input);
                 }
         
             }
@@ -126,6 +133,20 @@
           if(filenames[i] && $.inArray('.'+filenames[i].split('.').pop(), allowedFileTypes) == -1)
               return false;
 
+      return true;
+  };  
+  
+  $.fn.multifile.checkFileSize = function(file, MaxFileSize) {
+
+      //Size info not available or max file is not set (let server-side handle it).
+      if(!MaxFileSize || !file.size)
+          return true;
+     
+      var filesizes = $.map(file.size.split(','), $.trim);
+      for (var i = 0, _len = filesizes.length; i < _len; i++)
+          if(filesizes[i] > MaxFileSize)
+              return false;
+
       return true;
   };
 
@@ -150,16 +171,20 @@
     file.count = 1; 
     // check for HTML5 FileList support
     if ( !!global.FileList ) {
-      if ( input.files.length == 1 )
+      if ( input.files.length == 1 ) {
         file.name = input.files[0].name;
-      else { //Multi-select
+        file.size = '' + input.files[0].size;
+      } else { //Multi-select
         // We do this in order to support `multiple` files.
         // You can't display them separately because they 
         // belong to only one file input.  It is impossible
         // to remove just one of the files.
         file.name = input.files[0].name;
-        for (var i = 1, _len = input.files.length; i < _len; i++)
+        file.size = '' + input.files[0].size;
+        for (var i = 1, _len = input.files.length; i < _len; i++) {
           file.name += ', ' + input.files[i].name;
+          file.size += ', ' + input.files[i].size;
+        }
 
         file.count = i;
       }
@@ -173,6 +198,7 @@
   //Default options 
   $.fn.multifile.defaults = { 
                               max_uploads: 1,
-                              file_types: '.*'
+                              file_types: '.*',
+                              max_file_size: 0
                             };
 })(jQuery, this);
diff --git a/js/osticket.js b/js/osticket.js
index ceca388f0d15339967933876f29f43688d5854cf..4a0e87b030c0f0ebc26cc21521cf0586acff88bb 100644
--- a/js/osticket.js
+++ b/js/osticket.js
@@ -64,6 +64,7 @@ $(document).ready(function(){
      $('.multifile').multifile({
         container:   '.uploads',
         max_uploads: ($config && $config.max_file_uploads)?$config.max_file_uploads:1,
-        file_types:  ($config && $config.file_types)?$config.file_types:".*"
+        file_types:  ($config && $config.file_types)?$config.file_types:".*",
+        max_file_size: ($config && $config.max_file_size)?$config.max_file_size:0
        });
 });
diff --git a/scp/js/scp.js b/scp/js/scp.js
index 8ce35149ee3909130fa8d1a42ff202246ccb8981..aa80487bddfcf77353bbc5b3307e92b38c1ec37b 100644
--- a/scp/js/scp.js
+++ b/scp/js/scp.js
@@ -259,7 +259,8 @@ $(document).ready(function(){
      $('.multifile').multifile({
         container:   '.uploads',
         max_uploads: ($config && $config.max_file_uploads)?$config.max_file_uploads:1,
-        file_types:  ($config && $config.file_types)?$config.file_types:".*"
+        file_types:  ($config && $config.file_types)?$config.file_types:".*",
+        max_file_size: ($config && $config.max_file_size)?$config.max_file_size:0
         });
 
     /* Datepicker */