3 $template_file = "/home/ivan/radio.haze.st/template.html";
10 'upcoming' => '999966',
12 'rebroadcast' => 'ffcc99',
17 'name' => 'High Jinx',
22 'startdate' => 'May 6th',
24 'high_jinx_rebroadcast' => {
25 'name' => 'High Jinx',
30 'startdate' => 'May 7th',
33 'name' => 'Dub Monday',
37 'url' => 'http://www.voyager.org/sets',
40 'dub_monday_rebroadcast' => {
41 'name' => 'Dub Monday',
45 'url' => 'http://www.voyager.org/sets',
46 'type' => 'rebroadcast',
48 'organized_chaos' => {
49 #'name' => 'Organized<BR>Chaos',
50 'name' => 'Organized Chaos',
54 'url' => 'http://www.angelfire.com/rant/burf/oc.html',
57 'organized_chaos_rebroadcast' => {
58 #'name' => 'Organized<BR>Chaos',
59 'name' => 'Organized Chaos',
63 'url' => 'http://www.angelfire.com/rant/burf/oc.html',
64 'type' => 'rebroadcast',
66 'echo_communication_system' => {
67 #'name' => 'Echo<BR>Communication<BR>System',
68 #'name' => 'Echo Communication System',
69 'name' => 'Echo Communication System',
73 'url' => 'http://www.theoverworld.com/echo/',
76 'echo_communication_system__rebroadcast' => {
77 #'name' => 'Echo<BR>Communication<BR>System',
78 #'name' => 'Echo Communication System',
79 'name' => 'Echo Communication System',
83 'url' => 'http://www.theoverworld.com/echo/',
84 'type' => 'rebroadcast',
86 'sub_bass_sessions' => {
87 'name' => 'Sub-Bass Sessions',
93 'sub_bass_sessions_rebroadcast' => {
94 'name' => 'Sub-Bass Sessions',
98 'type' => 'rebroadcast',
102 @times = qw( midnight 1am 2am 3am 4am 5am 6am 7am 8am 9am 10am 11am noon 1pm
103 2pm 3pm 4pm 5pm 6pm 7pm 8pm 9pm 10pm 11pm );
108 if ( defined($cgi->param('showstart'))
109 && $cgi->param('showstart') =~ /^(\d+)$/ ) {
114 @showtimes = @times[$showstart..23];
116 $template = new Text::Template ( TYPE => 'FILE', SOURCE => $template_file )
117 or die "Can't create template for $template_file: $Text::Template::ERROR";
119 my $text = $template->fill_in()
120 or die "Can't fill in template for $template_file: $Text::Template::ERROR";
122 print $cgi->header, $text;
124 # subroutines for the template
128 my $rows = 1 + scalar(@showtimes)*(1/$increment);
130 my $table = new HTML::Table($rows+20,8+2);
131 # $table->setBorder(0);
132 $table->setCellSpacing('0');
133 $table->setCellPadding('1');
136 foreach my $day ( map "${_}day", qw( Sun Mon Tues Wednes Thurs Fri Satur ) ) {
137 $table->setCell(1, $daycol, "<B>${day}</B>" );
138 $table->setCellAlign(1, $daycol, 'CENTER');
141 sort { $shows{$a}{'start'} <=> $shows{$b}{'start'} }
142 grep { lc($shows{$_}{day}) eq lc($day) } keys %shows;
144 foreach my $show ( @dayshows ) {
146 my $text = "<B>$shows{$show}{name}</B>";
147 $text = qq(<A HREF="$shows{$show}{url}">$text</A>)
148 if exists $shows{$show}{url};
149 if ( $shows{$show}{type} eq 'upcoming' ) {
150 $text .= qq(<BR><FONT SIZE="-1">starts $shows{$show}{startdate}</FONT>);
151 #$text .= '<BR><FONT SIZE="-1">starts May Xth</FONT>';
153 if ( $shows{$show}{type} eq 'live' ) {
154 $text .= "<BR><B>LIVE</B> ";
156 if ( $shows{$show}{type} eq 'rebroadcast' ) {
157 #$text .= "<BR><B>rebroadcast</B> ";
158 $text .= qq(<BR><FONT SIZE="-1">rebroadcast</FONT> );
160 if ( $shows{$show}{type} =~ /^(live|rebroadcast)$/ ) {
161 my $start = $shows{$show}{start};
162 my $stext = $times[ $start ];
163 $stext =~ s/([0-9])([ap]m)/$1:30$2/ if $start != int($start);
164 my $end = $shows{$show}{start} + $shows{$show}{len};
165 my $etext = $times[$end];
166 $etext =~ s/([0-9])([ap]m)/$1:30$2/ if $end != int($end);
167 #$text .= "<B>$stext-$etext</B>";
168 $text .= qq(<FONT SIZE="-1">$stext-$etext</FONT>);
171 my $showrow = 2 + (1/$increment) * ( $shows{$show}{start} - $showstart);
173 if ( $pshowrow < $showrow ) {
174 #$table->setCell($pshowrow, $daycol, '<B>OFF THE AIR</B>'. "($showrow/$pshowrow) ".($showrow-$pshowrow));
175 $table->setCell($pshowrow, $daycol, '<B>OFF THE AIR</B>');
176 $table->setCellAlign($pshowrow, $daycol, 'CENTER');
177 $table->setCellRowSpan( $pshowrow, $daycol, $showrow-$pshowrow );
178 #$table->setCellRowSpan( $pshowrow, $daycol, 1 );
179 $table->setCellBGColor( $pshowrow, $daycol, '89201b' );
181 $table->setCell($showrow, $daycol, $text );
182 $table->setCellAlign($showrow, $daycol, 'CENTER');
183 $table->setCellBGColor($showrow, $daycol,
184 $type2color{$shows{$show}{type}});
185 my $span = $shows{$show}{len} * (1/$increment);
186 $table->setCellRowSpan($showrow, $daycol, $span );
188 $pshowrow=$showrow+$span;
191 if ( $pshowrow < $rows+1 ) {
192 #$table->setCell($pshowrow, $daycol, '<B>OFF THE AIR</B>'. "($rows+1/$pshowrow) ".($rows+1-$pshowrow));
193 $table->setCell($pshowrow, $daycol, '<B>OFF THE AIR</B>');
194 $table->setCellAlign($pshowrow, $daycol, 'CENTER');
195 $table->setCellRowSpan( $pshowrow, $daycol, $rows+1-$pshowrow );
196 #$table->setCellRowSpan( $pshowrow, $daycol, 2 );
197 $table->setCellBGColor( $pshowrow, $daycol, '89201b' );
204 foreach my $time ( @showtimes ) {
206 $text = qq(<FONT SIZE="-1">$text</FONT>) if length($text) > 4;
207 $table->setCell( $timerow, 1, "<B>$text</B>" );
208 $table->setCellAlign( $timerow, 1, 'CENTER' );
209 $table->setCellRowSpan( $timerow, 1, 1/$increment );
210 #$table->setCell( $timerow+1, 1, "<B>$text:30</B>" );
211 # $table->setCell( $timerow+1, 1, " " );
212 # $table->setCellAlign( $timerow+1, 1, 'CENTER' );
213 $timerow += 1/$increment;
217 my $html = $table->getTable;
218 $html =~ s/<! spanned cell\)>//g;