#!/usr/bin/perl -w

use strict;
use Getopt::Std;
use vars qw($old_sched $sched);

my (%opts, $item, $session, $result, %number, %time_slot, @number, $reminder);
my ($day, $hour, $place);
my ($sched_old, $sched_new);

getopts("r", \%opts);

$sched = [
    { name=>'媒體識讀',	  cat=>'通識',	spacetime=>['一34/中興Y1308' ]},
];

%number = ("一"=>1, "二"=>2, "三"=>3, "四"=>4, "五"=>5);

%time_slot = (
    1 => "08:10<br />09:00",
    2 => "09:10<br />10:00",
    3 => "10:10<br />11:00",
    4 => "11:10<br />12:00",
    5 => "13:10<br />14:00",
    6 => "14:10<br />15:00",
    7 => "15:10<br />16:00",
    8 => "16:10<br />17:00",
);

undef @$result;

foreach $item (@$sched) {
    foreach $session (@{$item->{spacetime}}) {
	($day, $hour, $place) = $session =~ m#^(...)([\w]+)/(.*)$#;
	$day = $number{$day};
	# print("# $day $hour $place $item->{name}\n");
	my ($h, $t);
	foreach $h (split //, $hour) {
	    $t = $h =~ /\D/ ? 2 : $h >= 5 ? 1 : 0;
#	    $reminder->[$day][$t] = 1;
	    @{$result->[$day]{$h}} = ($item->{name}, "$item->{cat}:$place");
	}
    }
}

if ($opts{r}) {
    # 為 remind 命令產生輸出
    for $day (1..5) {
	my ($s, $i);
	my (@t) = qw(早 午 晚);
	for ($i=0; $i<3; ++$i) {
	    $s .= $t[$i] if $reminder->[$day][$i];
	}
### to be continued ... Try ./sched -r ###
	print "$day: $s\n" if defined $s;
    }
} else {
    # 產生 html 表格
    my ($extra) = ' class="em"';
    print <<eof;
<table align="center" summary="課表" border="1">
<tr> <th></th>
eof
    foreach $day (qw(一 二 三 四 五)) {
	print " <th>$day</th>";
    }
    print "\n</tr>\n";
#    foreach $hour (split //, "1234N56789ABCDE") {
    foreach $hour (split //, "12345678") {
	print qq(<tr> <td><strong style="font-size: 150%">$hour </strong><div class="inlineblock_top">$time_slot{$hour}</div>&nbsp;</td>\n);
	foreach $day (split //, "12345") {
	    my ($t) = $result->[$day]{$hour};
#	    print "  <td", ($day==4 && $hour=~/[5-7]/ ? $extra : ""), ">",
	    print "  <td>",
		(defined $t->[0] ?  "$t->[0]<br />$t->[1]" : ""),
		"</td>\n";
	}
	print "</tr>\n";
    }
    print <<eof;
</table>
eof

}

