+<%perl>
+
+use GD;
+
+my $im = new GD::Image($width, $height) or die;
+
+my $white = $im->colorAllocate(255,255,255);
+my $black = $im->colorAllocate(0,0,0);
+
+# Put a black frame around the picture
+$im->rectangle(0,0,$width-1,$height-1,$black);
+
+#XXX block out unavailable times
+#alas. abstractions break, freeside-specific stuff to get availability
+# move availability to RT side? make it all callback/pluggable?
+
+#XXX block out / show / color code existing appointments
+
+$r->content_type('image/png');
+$m->clear_buffer;
+$m->out($im->png);
+$m->abort;
+
+</%perl>
+<%args>
+$Username => undef
+$Date => undef
+</%args>
+<%once>
+
+my $stime = RT->Config->Get('CalendarWeeklyStartMin');
+$stime = 480 unless $stime =~ /^\d+$/; #8am
+my $etime = RT->Config->Get('CalendarWeeklyEndMin');
+$etime = 1080 unless $etime =~ /^\d+$/; #6pm
+
+my $width = ( $etime - $stime ) / 10;
+my $height = 12;
+
+</%once>