diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c
index 18a0ab584484e4914feebad48d87c17fb53b53d4..5fd8ce21f1f84c60fd98f18a41d7eaeae46c6ac5 100644
--- a/src/sbbs3/js_global.c
+++ b/src/sbbs3/js_global.c
@@ -112,7 +112,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 	errno = 0;
 	if(strcspn(filename,"/\\")==strlen(filename)) {
 		sprintf(path,"%s%s",cfg->mods_dir,filename);
-		if(cfg->mods_dir[0]==0 || !fexist(path))
+		if(cfg->mods_dir[0]==0 || !fexistcase(path))
 			sprintf(path,"%s%s",cfg->exec_dir,filename);
 	} else
 		strcpy(path,filename);
@@ -706,7 +706,8 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
 	ulong		i,j;
 	uchar*		inbuf;
 	uchar*		outbuf;
-	JSBool		exascii=JS_FALSE;
+	JSBool		exascii=JS_TRUE;
+	JSBool		wsp=JS_TRUE;
 	JSString*	js_str;
 
 	if((inbuf=JS_GetStringBytes(JS_ValueToString(cx, argv[0])))==NULL) 
@@ -715,6 +716,9 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
 	if(argc>1 && JSVAL_IS_BOOLEAN(argv[1]))
 		exascii=JSVAL_TO_BOOLEAN(argv[1]);
 
+	if(argc>2 && JSVAL_IS_BOOLEAN(argv[2]))
+		wsp=JSVAL_TO_BOOLEAN(argv[2]);
+
 	if((outbuf=(char*)malloc((strlen(inbuf)*10)+1))==NULL)
 		return(JS_FALSE);
 
@@ -723,7 +727,10 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
 			case TAB:
 			case LF:
 			case CR:
-				j+=sprintf(outbuf+j,"&#%u;",inbuf[i]);
+				if(wsp)
+					j+=sprintf(outbuf+j,"&#%u;",inbuf[i]);
+				else
+					outbuf[j++]=inbuf[i];
 				break;
 			case '"':
 				j+=sprintf(outbuf+j,""");
@@ -1234,8 +1241,9 @@ static jsMethodSpec js_global_functions[] = {
 	{"format",			js_format,			1,	JSTYPE_STRING,	JSDOCSTR("string format [,args]")
 	,JSDOCSTR("return a formatted string (ala sprintf)")
 	},
-	{"html_encode",		js_html_encode,		1,	JSTYPE_STRING,	JSDOCSTR("string text [,bool ex_ascii]")
-	,JSDOCSTR("return an HTML-encoded text buffer (using standard HTML character entities), optionally escaping IBM extended-ASCII characters")
+	{"html_encode",		js_html_encode,		1,	JSTYPE_STRING,	JSDOCSTR("string text [,bool ex_ascii] [,bool white_space]")
+	,JSDOCSTR("return an HTML-encoded text buffer (using standard HTML character entities), "
+	"escaping IBM extended-ASCII and white-space characters by default")
 	},
 	{"html_decode",		js_html_decode,		1,	JSTYPE_STRING,	JSDOCSTR("string text")
 	,JSDOCSTR("return a decoded HTML-encoded text buffer")