function compareFilenames(filename1, filename2, extFirst) {
        var lang = brackets.getLocale();

        filename1 = filename1.toLocaleLowerCase();
        filename2 = filename2.toLocaleLowerCase();

        function cmpExt() {
            var ext1 = getFileExtension(filename1),
                ext2 = getFileExtension(filename2);
            return ext1.localeCompare(ext2, lang, {numeric: true});
        }

        function cmpNames() {
            return _cmpNames(filename1, filename2, lang);
        }

        return extFirst ? (cmpExt() || cmpNames()) : (cmpNames() || cmpExt());
    }
Compares 2 filenames in lowercases. In Windows it compares the names without the
extension first and then the extensions to fix issue #4409
@param {string} filename1
@param {string} filename2
@param {boolean} extFirst If true it compares the extensions first and then the file names.
@return {number} The result of the compare function