diff --git a/exec/load/calendar.js b/exec/load/calendar.js
index 6c39718529ef54ef9b4ddae9e94b16ec5e994752..52e036137f15b37b1ff1bdf21a788f786a7d20be 100644
--- a/exec/load/calendar.js
+++ b/exec/load/calendar.js
@@ -96,8 +96,8 @@ function Calendar(x,y,fg,hl,sel)
 			}
 			var day=this.month.days[l];
 			var color="\1-" + this.fg + "\1h";
-			if(this.highlights[day.number]) color=this.hl;
-			else if(day.number==this.selected) color=this.sel;
+			if(day.number==this.selected) color=this.sel;
+			else if(this.highlights[day.number]) color=this.hl;
 			console.putmsg("\1-" + this.fg + "\xB3",P_SAVEATR);
 			day.draw(color);
 		}
@@ -110,7 +110,7 @@ function Calendar(x,y,fg,hl,sel)
 	this.drawDay=function(num,col)
 	{
 		var color=col?col:"\1-" + this.fg + "\1h";
-		if(this.highlights[num]) color=this.hl;
+		if(!col && this.highlights[num]) color=this.hl;
 		var index=num + this.offset -1;
 		var day=this.month.days[index];
 		var posx=this.x+1 + ((index%7)*3);
@@ -118,15 +118,15 @@ function Calendar(x,y,fg,hl,sel)
 		console.gotoxy(posx,posy);
 		day.draw(color);
 	}
-	this.SelectDay=function()
+	this.SelectDay=function(dir)
 	{
+		var k=dir?dir:undefined;
 		var original=this.selected;
 		while(1)
 		{
-			var k=console.inkey(K_NOCRLF|K_NOSPIN|K_NOECHO,5);
 			if(k)
 			{
-				switch(k.toUpperCase())
+				switch(k)
 				{
 					case KEY_UP:
 						if(this.selected>7) 
@@ -164,12 +164,14 @@ function Calendar(x,y,fg,hl,sel)
 						this.drawDay(this.selected);
 						this.selected=original;
 						this.drawDay(this.selected,this.sel);
+						return false;
 					case "\r":
 						return this.selected;
 					default:
 						break;
 				}
 			}
+			k=console.inkey(K_NOCRLF|K_NOSPIN|K_NOECHO,5);
 		}
 	}
 	this.Init();