installers, RT#16584
[freeside.git] / httemplate / elements / select-time.html
1 % unless ( $opt{'js_only'} ) {
2     <SELECT NAME="<% $opt{'field'} %>" SIZE="1" <%$disabled%> <%$onchange%> >
3 %     for ( my $t = 0; $t <=1440; $t += $increment ) {
4         <OPTION VALUE="<% $t %>"
5                 <%    ( $curr_value eq '' && $t == $selected_default )
6                    || $curr_value == $t
7                      ? 'SELECTED' : ''
8                 %>
9         ><% pretty_time($t) %>
10 %     }
11     </SELECT>
12 % }
13 <%init>
14
15 my %opt = @_;
16 my $increment = $opt{increment} || 30;
17 my $selected_default = $opt{selected_default};
18 my $disabled = $opt{'disabled'} || '';
19
20 my $curr_value = $opt{curr_value};
21
22 my $onchange = '';
23 if ( $opt{'onchange'} ) {
24   $onchange = $opt{'onchange'};
25   $onchange .= '(this)' unless $onchange =~ /\(\w*\);?$/;
26   $onchange =~ s/\(what\);/\(this\);/g; #ugh, terrible hack.  all onchange
27                                         #callbacks should act the same
28   $onchange = 'onChange="'. $onchange. '"' unless $onchange =~ /^onChange=/i;
29 }
30
31 sub pretty_time {
32   my $t = shift;
33
34   return 'Midnight' if $t == 0 || $t == 1440;
35   return 'Noon'     if $t == 720;
36
37   my $h = int( $t / 60 );
38   my $m = $t % 60;
39
40   my $ap = 'AM';
41   if    ( $h == 0 || $h == 24 ) { $h = 12; }
42   elsif ( $h == 12 )           { $ap = 'PM'; }
43   elsif ( $h > 12 )            { $ap = 'PM'; $h -= 12; }
44
45   sprintf('%02d:%02d'." $ap", $h, $m);
46
47 }
48
49 </%init>