#!/afs/athena/contrib/perl/perl

@wid = (0,0,0,0,0);
%wd = ("Monday","Mon","Tuesday","Tue","Wednesday","Wed","Thursday","Thu",
       "Friday","Fri","Saturday","Sat","Sunday","Sun");

@saveARGV = @ARGV;
while (<>) {
    if (! (/^%/ || /^\s*$/)) {
	chop;
	@info = split("&");
	warn "%Warning: line $. has only ",$#info+1," fields\n" if ($#info!=4);
	$info[1] =~ s/^\s*(\S*)\s*$/\1/;
	$day = $wd{$info[1]};
	$info[1] = $info[0].($day ? "($day)" : "");
	for ($i=0; $i<5; $i++) {
	    if (($l=length($info[$i])) > $wid[$i]) {$wid[$i] = $l;}
	}
    }
}

@ARGV = @saveARGV;
while (<>) {
    if (! /^%/) {
	if (/^\s*$/) {
	    print "|","-" x ($wid[1]+1),"+","-" x $wid[2],"+","-" x $wid[3],
	        "+","-" x ($wid[4]+1),"|\n";
	} else {
	    chop;
	    @info = split("&");
	    $info[1] =~ s/^\s*(\S*)\s*$/\1/;
	    $day = $wd{$info[1]};
	    $info[1] = ($day ? "($day)" : "");
	    printf "|%s |%-$wid[2]s|%-$wid[3]s|%-$wid[4]s |\n",
	        $info[0].(" " x ($wid[1]-length($info[0].$info[1]))).$info[1],
	        $info[2],$info[3],$info[4];
	}
    }
}
