diff --git a/all/modules/filefield/filefield.js b/all/modules/filefield/filefield.js
index f71635b..377b99c 100644
--- a/all/modules/filefield/filefield.js
+++ b/all/modules/filefield/filefield.js
@@ -1,5 +1,15 @@
 // $Id: filefield.js,v 1.25 2010/04/24 02:47:49 quicksketch Exp $
 
+function filefieldGetExtensionsFromMimetypes(mimetypes)  {
+	var extensions = [];
+	$.each(Drupal.settings.mimetypes, function(extension, mime) {
+		if(jQuery.inArray(mime, mimetypes) > -1) {
+			extensions.push(extension);
+		}
+	});
+	return extensions;
+}
+
 /**
  * Auto-attach standard client side file input validation.
  */
@@ -14,14 +24,33 @@ Drupal.behaviors.filefieldValidateAutoAttach = function(context) {
     var accept = this.accept.replace(/,\s*/g, '|');
     if (accept.length > 1 && this.value.length > 0) {
       var v = new RegExp('\\.(' + accept + ')$', 'gi');
+
       if (!v.test(this.value)) {
-        var error = Drupal.t("The selected file %filename cannot be uploaded. Only files with the following extensions are allowed: %extensions.",
-          { '%filename' : this.value, '%extensions' : accept.replace(/\|/g, ', ') }
-        );
-        // What do I prepend this to?
-        $(this).before('<div class="messages error file-upload-js-error">' + error + '</div>');
-        this.value = '';
-        return false;
+		var fe_regex, fe, file_extension, split_regex, field_mimetypes, file_mimetype, accepted_extensions;
+
+		// get the file extension
+	    fe_regex = new RegExp(/\.(\w+)$/i);
+	    fe = fe_regex.exec(this.value); // get the fileending
+	    file_extension = fe[1]; // first match is the whole match, second the group
+
+        file_mimetype = Drupal.settings.mimetypes[file_extension.toLowerCase()]; // lookup the mimetype of the file
+		// get the accept field mimetypes
+		split_regex = new RegExp(/,\s*/g);
+		field_mimetypes = this.accept.split(split_regex); // split the mimetypes stored in the access attribute
+
+
+		// only proceed if the actual mimetype is not in the list
+		if(jQuery.inArray(file_mimetype, field_mimetypes) === -1) {
+			// get the file extensions for the mimetype and join them with ,
+			accepted_extensions = filefieldGetExtensionsFromMimetypes(field_mimetypes).join(', ');
+			var error = Drupal.t("The selected file %filename cannot be uploaded. Only files with the following extensions are allowed: %extensions.",
+			  { '%filename' : this.value, '%extensions' : accepted_extensions }
+			);
+			// What do I prepend this to?
+			$(this).before('<div class="messages error file-upload-js-error">' + error + '</div>');
+			this.value = '';
+			return false;
+		}
       }
     }
 
diff --git a/all/modules/filefield/filefield.module b/all/modules/filefield/filefield.module
index 2392d0b..013e0c3 100644
--- a/all/modules/filefield/filefield.module
+++ b/all/modules/filefield/filefield.module
@@ -24,6 +24,8 @@ function filefield_init() {
   if (module_exists('token')) {
     module_load_include('inc', 'filefield', 'filefield.token');
   }
+  // get the mimetypes and add them to the js
+  drupal_add_js('Drupal.settings.mimetypes = ' . drupal_to_js(filefield_get_mimetypes()), 'inline');
 }
 
 /**
@@ -1082,3 +1084,384 @@ function filefield_delete_file_references($file, $field = NULL) {
     }
   }
 }
+
+/**
+ * Returns a list of all mime extensions (or most of them) in a list processable by the filefield module
+ *
+ * @return array
+ */
+function filefield_get_mimetypes() {
+	$mimetypes = array();
+	$drupal_mimetypes = variable_get('mime_extension_mapping', array(
+		'ez' => 'application/andrew-inset',
+		'atom' => 'application/atom',
+		'atomcat' => 'application/atomcat+xml',
+		'atomsrv' => 'application/atomserv+xml',
+		'cap|pcap' => 'application/cap',
+		'cu' => 'application/cu-seeme',
+		'tsp' => 'application/dsptype',
+		'spl' => 'application/x-futuresplash',
+		'hta' => 'application/hta',
+		'jar' => 'application/java-archive',
+		'ser' => 'application/java-serialized-object',
+		'class' => 'application/java-vm',
+		'hqx' => 'application/mac-binhex40',
+		'cpt' => 'image/x-corelphotopaint',
+		'nb' => 'application/mathematica',
+		'mdb' => 'application/msaccess',
+		'doc|dot' => 'application/msword',
+		'bin' => 'application/octet-stream',
+		'oda' => 'application/oda',
+		'ogg|ogx' => 'application/ogg',
+		'pdf' => 'application/pdf',
+		'key' => 'application/pgp-keys',
+		'pgp' => 'application/pgp-signature',
+		'prf' => 'application/pics-rules',
+		'ps|ai|eps' => 'application/postscript',
+		'rar' => 'application/rar',
+		'rdf' => 'application/rdf+xml',
+		'rss' => 'application/rss+xml',
+		'rtf' => 'application/rtf',
+		'smi|smil' => 'application/smil',
+		'wpd' => 'application/wordperfect',
+		'wp5' => 'application/wordperfect5.1',
+		'xhtml|xht' => 'application/xhtml+xml',
+		'xml|xsl' => 'application/xml',
+		'zip' => 'application/zip',
+		'cdy' => 'application/vnd.cinderella',
+		'kml' => 'application/vnd.google-earth.kml+xml',
+		'kmz' => 'application/vnd.google-earth.kmz',
+		'xul' => 'application/vnd.mozilla.xul+xml',
+		'xls|xlb|xlt' => 'application/vnd.ms-excel',
+		'cat' => 'application/vnd.ms-pki.seccat',
+		'stl' => 'application/vnd.ms-pki.stl',
+		'ppt|pps' => 'application/vnd.ms-powerpoint',
+		'odc' => 'application/vnd.oasis.opendocument.chart',
+		'odb' => 'application/vnd.oasis.opendocument.database',
+		'odf' => 'application/vnd.oasis.opendocument.formula',
+		'odg' => 'application/vnd.oasis.opendocument.graphics',
+		'otg' => 'application/vnd.oasis.opendocument.graphics-template',
+		'odi' => 'application/vnd.oasis.opendocument.image',
+		'odp' => 'application/vnd.oasis.opendocument.presentation',
+		'otp' => 'application/vnd.oasis.opendocument.presentation-template',
+		'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
+		'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
+		'odt' => 'application/vnd.oasis.opendocument.text',
+		'odm' => 'application/vnd.oasis.opendocument.text-master',
+		'ott' => 'application/vnd.oasis.opendocument.text-template',
+		'oth' => 'application/vnd.oasis.opendocument.text-web',
+		'docm' => 'application/vnd.ms-word.document.macroEnabled.12',
+		'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+		'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
+		'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
+		'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
+		'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
+		'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
+		'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
+		'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
+		'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
+		'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
+		'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
+		'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
+		'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
+		'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+		'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
+		'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
+		'cod' => 'application/vnd.rim.cod',
+		'mmf' => 'application/vnd.smaf',
+		'sdc' => 'application/vnd.stardivision.calc',
+		'sds' => 'application/vnd.stardivision.chart',
+		'sda' => 'application/vnd.stardivision.draw',
+		'sdd' => 'application/vnd.stardivision.impress',
+		'sdf' => 'application/vnd.stardivision.math',
+		'sdw' => 'application/vnd.stardivision.writer',
+		'sgl' => 'application/vnd.stardivision.writer-global',
+		'sxc' => 'application/vnd.sun.xml.calc',
+		'stc' => 'application/vnd.sun.xml.calc.template',
+		'sxd' => 'application/vnd.sun.xml.draw',
+		'std' => 'application/vnd.sun.xml.draw.template',
+		'sxi' => 'application/vnd.sun.xml.impress',
+		'sti' => 'application/vnd.sun.xml.impress.template',
+		'sxm' => 'application/vnd.sun.xml.math',
+		'sxw' => 'application/vnd.sun.xml.writer',
+		'sxg' => 'application/vnd.sun.xml.writer.global',
+		'stw' => 'application/vnd.sun.xml.writer.template',
+		'sis' => 'application/vnd.symbian.install',
+		'vsd' => 'application/vnd.visio',
+		'wbxml' => 'application/vnd.wap.wbxml',
+		'wmlc' => 'application/vnd.wap.wmlc',
+		'wmlsc' => 'application/vnd.wap.wmlscriptc',
+		'wk' => 'application/x-123',
+		'7z' => 'application/x-7z-compressed',
+		'abw' => 'application/x-abiword',
+		'dmg' => 'application/x-apple-diskimage',
+		'bcpio' => 'application/x-bcpio',
+		'torrent' => 'application/x-bittorrent',
+		'cab' => 'application/x-cab',
+		'cbr' => 'application/x-cbr',
+		'cbz' => 'application/x-cbz',
+		'cdf' => 'application/x-cdf',
+		'vcd' => 'application/x-cdlink',
+		'pgn' => 'application/x-chess-pgn',
+		'cpio' => 'application/x-cpio',
+		'csh' => 'text/x-csh',
+		'deb|udeb' => 'application/x-debian-package',
+		'dcr|dir|dxr' => 'application/x-director',
+		'dms' => 'application/x-dms',
+		'wad' => 'application/x-doom',
+		'dvi' => 'application/x-dvi',
+		'rhtml' => 'application/x-httpd-eruby',
+		'flac' => 'application/x-flac',
+		'pfa|pfb|gsf|pcf|pcf.Z' => 'application/x-font',
+		'mm' => 'application/x-freemind',
+		'gnumeric' => 'application/x-gnumeric',
+		'sgf' => 'application/x-go-sgf',
+		'gcf' => 'application/x-graphing-calculator',
+		'gtar|tgz|taz' => 'application/x-gtar',
+		'hdf' => 'application/x-hdf',
+		'phtml|pht|php' => 'application/x-httpd-php',
+		'phps' => 'application/x-httpd-php-source',
+		'php3' => 'application/x-httpd-php3',
+		'php3p' => 'application/x-httpd-php3-preprocessed',
+		'php4' => 'application/x-httpd-php4',
+		'ica' => 'application/x-ica',
+		'ins|isp' => 'application/x-internet-signup',
+		'iii' => 'application/x-iphone',
+		'iso' => 'application/x-iso9660-image',
+		'jnlp' => 'application/x-java-jnlp-file',
+		'js' => 'application/x-javascript',
+		'jmz' => 'application/x-jmol',
+		'chrt' => 'application/x-kchart',
+		'kil' => 'application/x-killustrator',
+		'skp|skd|skt|skm' => 'application/x-koan',
+		'kpr|kpt' => 'application/x-kpresenter',
+		'ksp' => 'application/x-kspread',
+		'kwd|kwt' => 'application/x-kword',
+		'latex' => 'application/x-latex',
+		'lha' => 'application/x-lha',
+		'lyx' => 'application/x-lyx',
+		'lzh' => 'application/x-lzh',
+		'lzx' => 'application/x-lzx',
+		'frm|maker|frame|fm|fb|book|fbdoc' => 'application/x-maker',
+		'mif' => 'application/x-mif',
+		'wmd' => 'application/x-ms-wmd',
+		'wmz' => 'application/x-ms-wmz',
+		'com|exe|bat|dll' => 'application/x-msdos-program',
+		'msi' => 'application/x-msi',
+		'nc' => 'application/x-netcdf',
+		'pac' => 'application/x-ns-proxy-autoconfig',
+		'nwc' => 'application/x-nwc',
+		'o' => 'application/x-object',
+		'oza' => 'application/x-oz-application',
+		'p7r' => 'application/x-pkcs7-certreqresp',
+		'crl' => 'application/x-pkcs7-crl',
+		'pyc|pyo' => 'application/x-python-code',
+		'qtl' => 'application/x-quicktimeplayer',
+		'rpm' => 'application/x-redhat-package-manager',
+		'sh' => 'text/x-sh',
+		'shar' => 'application/x-shar',
+		'swf|swfl' => 'application/x-shockwave-flash',
+		'sit|sitx' => 'application/x-stuffit',
+		'sv4cpio' => 'application/x-sv4cpio',
+		'sv4crc' => 'application/x-sv4crc',
+		'tar' => 'application/x-tar',
+		'tcl' => 'application/x-tcl',
+		'gf' => 'application/x-tex-gf',
+		'pk' => 'application/x-tex-pk',
+		'texinfo|texi' => 'application/x-texinfo',
+		'~|%|bak|old|sik' => 'application/x-trash',
+		't|tr|roff' => 'application/x-troff',
+		'man' => 'application/x-troff-man',
+		'me' => 'application/x-troff-me',
+		'ms' => 'application/x-troff-ms',
+		'ustar' => 'application/x-ustar',
+		'src' => 'application/x-wais-source',
+		'wz' => 'application/x-wingz',
+		'crt' => 'application/x-x509-ca-cert',
+		'xcf' => 'application/x-xcf',
+		'fig' => 'application/x-xfig',
+		'xpi' => 'application/x-xpinstall',
+		'au|snd' => 'audio/basic',
+		'mid|midi|kar' => 'audio/midi',
+		'mpga|mpega|mp2|mp3|m4a' => 'audio/mpeg',
+		'f4a|f4b' => 'audio/mp4',
+		'm3u' => 'audio/x-mpegurl',
+		'oga|spx' => 'audio/ogg',
+		'sid' => 'audio/prs.sid',
+		'aif|aiff|aifc' => 'audio/x-aiff',
+		'gsm' => 'audio/x-gsm',
+		'wma' => 'audio/x-ms-wma',
+		'wax' => 'audio/x-ms-wax',
+		'ra|rm|ram' => 'audio/x-pn-realaudio',
+		'ra' => 'audio/x-realaudio',
+		'pls' => 'audio/x-scpls',
+		'sd2' => 'audio/x-sd2',
+		'wav' => 'audio/x-wav',
+		'alc' => 'chemical/x-alchemy',
+		'cac|cache' => 'chemical/x-cache',
+		'csf' => 'chemical/x-cache-csf',
+		'cbin|cascii|ctab' => 'chemical/x-cactvs-binary',
+		'cdx' => 'chemical/x-cdx',
+		'cer' => 'chemical/x-cerius',
+		'c3d' => 'chemical/x-chem3d',
+		'chm' => 'chemical/x-chemdraw',
+		'cif' => 'chemical/x-cif',
+		'cmdf' => 'chemical/x-cmdf',
+		'cml' => 'chemical/x-cml',
+		'cpa' => 'chemical/x-compass',
+		'bsd' => 'chemical/x-crossfire',
+		'csml|csm' => 'chemical/x-csml',
+		'ctx' => 'chemical/x-ctx',
+		'cxf|cef' => 'chemical/x-cxf',
+		'emb|embl' => 'chemical/x-embl-dl-nucleotide',
+		'spc' => 'chemical/x-galactic-spc',
+		'inp|gam|gamin' => 'chemical/x-gamess-input',
+		'fch|fchk' => 'chemical/x-gaussian-checkpoint',
+		'cub' => 'chemical/x-gaussian-cube',
+		'gau|gjc|gjf' => 'chemical/x-gaussian-input',
+		'gal' => 'chemical/x-gaussian-log',
+		'gcg' => 'chemical/x-gcg8-sequence',
+		'gen' => 'chemical/x-genbank',
+		'hin' => 'chemical/x-hin',
+		'istr|ist' => 'chemical/x-isostar',
+		'jdx|dx' => 'chemical/x-jcamp-dx',
+		'kin' => 'chemical/x-kinemage',
+		'mcm' => 'chemical/x-macmolecule',
+		'mmd|mmod' => 'chemical/x-macromodel-input',
+		'mol' => 'chemical/x-mdl-molfile',
+		'rd' => 'chemical/x-mdl-rdfile',
+		'rxn' => 'chemical/x-mdl-rxnfile',
+		'sd|sdf' => 'chemical/x-mdl-sdfile',
+		'tgf' => 'chemical/x-mdl-tgf',
+		'mcif' => 'chemical/x-mmcif',
+		'mol2' => 'chemical/x-mol2',
+		'b' => 'chemical/x-molconn-Z',
+		'gpt' => 'chemical/x-mopac-graph',
+		'mop|mopcrt|mpc|dat|zmt' => 'chemical/x-mopac-input',
+		'moo' => 'chemical/x-mopac-out',
+		'mvb' => 'chemical/x-mopac-vib',
+		'asn' => 'chemical/x-ncbi-asn1-spec',
+		'prt|ent' => 'chemical/x-ncbi-asn1-ascii',
+		'val|aso' => 'chemical/x-ncbi-asn1-binary',
+		'pdb|ent' => 'chemical/x-pdb',
+		'ros' => 'chemical/x-rosdal',
+		'sw' => 'chemical/x-swissprot',
+		'vms' => 'chemical/x-vamas-iso14976',
+		'vmd' => 'chemical/x-vmd',
+		'xtel' => 'chemical/x-xtel',
+		'xyz' => 'chemical/x-xyz',
+		'gif' => 'image/gif',
+		'ief' => 'image/ief',
+		'jpeg' => 'image/jpeg',
+		'jpg' => 'image/jpeg',
+		'jpe' => 'image/jpeg',
+		'pcx' => 'image/pcx',
+		'png' => 'image/png',
+		'svg' => 'image/svg+xml',
+		'svgz' => 'image/svg+xml',
+		'tiff' => 'image/tiff',
+		'tif' => 'image/tiff',
+		'djvu' => 'image/vnd.djvu',
+		'djv' => 'image/vnd.djvu',
+		'wbmp' => 'image/vnd.wap.wbmp',
+		'ras' => 'image/x-cmu-raster',
+		'cdr' => 'image/x-coreldraw',
+		'pat' => 'image/x-coreldrawpattern',
+		'cdt' => 'image/x-coreldrawtemplate',
+		'ico' => 'image/x-icon',
+		'art' => 'image/x-jg',
+		'jng' => 'image/x-jng',
+		'bmp' => 'image/x-ms-bmp',
+		'psd' => 'image/x-photoshop',
+		'pnm' => 'image/x-portable-anymap',
+		'pbm' => 'image/x-portable-bitmap',
+		'pgm' => 'image/x-portable-graymap',
+		'ppm' => 'image/x-portable-pixmap',
+		'rgb' => 'image/x-rgb',
+		'xbm' => 'image/x-xbitmap',
+		'xpm' => 'image/x-xpixmap',
+		'xwd' => 'image/x-xwindowdump',
+		'eml' => 'message/rfc822',
+		'igs|iges' => 'model/iges',
+		'msh|mesh|silo' => 'model/mesh',
+		'wrl|vrml' => 'model/vrml',
+		'ics|icz' => 'text/calendar',
+		'css' => 'text/css',
+		'csv' => 'text/csv',
+		'323' => 'text/h323',
+		'html|htm|shtml' => 'text/html',
+		'uls' => 'text/iuls',
+		'mml' => 'text/mathml',
+		'asc|txt|text|pot' => 'text/plain',
+		'rtx' => 'text/richtext',
+		'sct|wsc' => 'text/scriptlet',
+		'tm|ts' => 'text/texmacs',
+		'tsv' => 'text/tab-separated-values',
+		'jad' => 'text/vnd.sun.j2me.app-descriptor',
+		'wml' => 'text/vnd.wap.wml',
+		'wmls' => 'text/vnd.wap.wmlscript',
+		'bib' => 'text/x-bibtex',
+		'boo' => 'text/x-boo',
+		'h++|hpp|hxx|hh' => 'text/x-c++hdr',
+		'c++|cpp|cxx|cc' => 'text/x-c++src',
+		'h' => 'text/x-chdr',
+		'htc' => 'text/x-component',
+		'c' => 'text/x-csrc',
+		'd' => 'text/x-dsrc',
+		'diff|patch' => 'text/x-diff',
+		'hs' => 'text/x-haskell',
+		'java' => 'text/x-java',
+		'lhs' => 'text/x-literate-haskell',
+		'moc' => 'text/x-moc',
+		'p|pas' => 'text/x-pascal',
+		'gcd' => 'text/x-pcs-gcd',
+		'pl|pm' => 'text/x-perl',
+		'py' => 'text/x-python',
+		'etx' => 'text/x-setext',
+		'tcl|tk' => 'text/x-tcl',
+		'tex|ltx|sty|cls' => 'text/x-tex',
+		'vcs' => 'text/x-vcalendar',
+		'vcf' => 'text/x-vcard',
+		'3gp' => 'video/3gpp',
+		'dl' => 'video/dl',
+		'dif|dv' => 'video/dv',
+		'fli' => 'video/fli',
+		'gl' => 'video/gl',
+		'mpeg|mpg|mpe' => 'video/mpeg',
+		'mp4|f4v|f4p' => 'video/mp4',
+		'flv' => 'video/x-flv',
+		'ogv' => 'video/ogg',
+		'qt|mov' => 'video/quicktime',
+		'mxu' => 'video/vnd.mpegurl',
+		'lsf|lsx' => 'video/x-la-asf',
+		'mng' => 'video/x-mng',
+		'asf|asx' => 'video/x-ms-asf',
+		'wm' => 'video/x-ms-wm',
+		'wmv' => 'video/x-ms-wmv',
+		'wmx' => 'video/x-ms-wmx',
+		'wvx' => 'video/x-ms-wvx',
+		'avi' => 'video/x-msvideo',
+		'movie' => 'video/x-sgi-movie',
+		'ice' => 'x-conference/x-cooltalk',
+		'sisx' => 'x-epoc/x-sisx-app',
+		'vrm|vrml|wrl' => 'x-world/x-vrml',
+		'xps' => 'application/vnd.ms-xpsdocument',
+	  ));
+
+	// loop through every list entry and check wether or not there are keys where multiple file extensions are stored in for a mimetype
+	// and split them, we need them splitted
+	$extensions = array();
+	foreach($drupal_mimetypes as $extension => $mime) {
+		if(strpos($extension, '|')) {
+			$extensions = explode('|', $extension);
+			foreach($extensions as $ext) {
+				$mimetypes[$ext] = $mime;
+			}
+		} else {
+			$mimetypes[$extension] = $mime;
+		}
+	}
+
+	return $mimetypes;
+}
+
diff --git a/all/modules/filefield/filefield_field.inc b/all/modules/filefield/filefield_field.inc
index 077eddc..d226920 100644
--- a/all/modules/filefield/filefield_field.inc
+++ b/all/modules/filefield/filefield_field.inc
@@ -11,7 +11,6 @@
  */
 function filefield_field_settings_form($field) {
   drupal_add_js(drupal_get_path('module', 'filefield') .'/filefield.js');
-
   $form = array();
 
   $form['list_field'] = array(
diff --git a/all/modules/filefield/filefield_widget.inc b/all/modules/filefield/filefield_widget.inc
index 7b2d4e0..425fbd4 100644
--- a/all/modules/filefield/filefield_widget.inc
+++ b/all/modules/filefield/filefield_widget.inc
@@ -424,7 +424,7 @@ function filefield_widget_process($element, $edit, &$form_state, $form) {
     '#description' => implode('<br />', $desc),
     '#size' => 22,
     '#attributes' => array(
-      'accept' => implode(',', array_filter(explode(' ', $field['widget']['file_extensions']))),
+      'accept' => implode(',', array_filter(explode(' ', filefield_get_file_mimetypes($field['widget']['file_extensions'])))),
     ),
     '#access' => empty($item['fid']),
   );
@@ -437,6 +437,21 @@ function filefield_widget_process($element, $edit, &$form_state, $form) {
 }
 
 /**
+ *	Helper method for getting the right mimetypes for file_extensions in the widget
+ *
+ * @param  $file_extensions
+ * @return string
+ */
+function filefield_get_file_mimetypes($file_extensions) {
+	$new_extensions = array();
+	foreach(explode(' ', $file_extensions) as $ext) {
+		$mime = file_get_mimetype('dummy.'.$ext);
+		if(!in_array($mime, $new_extensions)) $new_extensions[] = $mime; // add the mimetype to the array
+	}
+
+	return implode(' ', $new_extensions);
+}
+/**
  * An #element_validate callback for the filefield_widget field.
  */
 function filefield_widget_validate(&$element, &$form_state) {
