#!/usr/local/bin/perl5
# File: time2.pl
use English;
use CGI qw/:standard :html3/;
use CGI::Carp qw/carpout fatalsToBrowser/;

$logfile = "/webadmin/home/web1/lindam/public_html/CGI.log";
$mailfile = "/webadmin/home/web1/lindam/public_html/wfc98/mail.txt";

open (LOG,">>$logfile") || die "Couldn't open $logfile uid $UID gid $GID :  $!";
carpout(LOG);



print_toolate();
exit 0;

if (!param()) {
    # first time
    print_regform('');
} elsif (!(param('ciname') && param('ciaddr') && param('cicity'))) {
    print_regform('Please enter at least name and paper mail address.');
    # should check for at least one availability slot and at
    # least one subject?
} else {
    print_thankyou();
    send_mail();
    
    
}

sub print_toolate() {
    print
	header,
	start_html(
		   -title=>'World Fantasy Convention 1998 Reading/Autograph Availability Form',
		   -author=>'webmaster@pensfa.org',
		   -bgcolor=>'#FFFFFF',
		   -text=>'#000000'),
	    p(),
	    div({-align=>CENTER},
		'WORLD FANTASY CONVENTION',
		br,
		'MONTEREY, CALIFORNIA,',
		br,
		'29 October to 1 November 1998',
		br);
    print
	h1('Sorry!');

    print
    p("Sorry, but it's now too late to sign up to be on programming."),

    p("Back to the ",
      a({-href=>'index.html'},"WFC98 home page.")
    );
    
    print
      end_html();
  }

sub print_thankyou() {
    print
	header,
	start_html(
		   -title=>'World Fantasy Convention 1998 Reading/Autograph Availability Form',
		   -author=>'webmaster@pensfa.org',
		   -bgcolor=>'#FFFFFF',
		   -text=>'#000000'),
	    p(),
	    div({-align=>CENTER},
		'WORLD FANTASY CONVENTION',
		br,
		'MONTEREY, CALIFORNIA,',
		br,
		'29 October to 1 November 1998',
		br);
    print
	h1('Thank you!');

    print
      p("Thanks for filling in the questionnaire.",
	"Your answers have been sent by e-mail to the program ",
	"co-ordinator, ",
	a({-href=>'mailto:goodston@well.com'},"Sarah Goodman"),
	".  ",
	"At this late date you're unlikely to hear anything back",
	"before the convention.");
	

    print
      end_html();
  }
  
      

sub print_regform() {
    @xargs = @_;
    print
	header,
	start_html(
		   -title=>'World Fantasy Convention 1998 Reading/Autograph Availability Form',
		   -author=>'webmaster@pensfa.org',
		   -bgcolor=>'#FFFFFF',
		   -text=>'#000000'),
	    p(),
	    div({-align=>CENTER},
		'WORLD FANTASY CONVENTION',
		br,
		'MONTEREY, CALIFORNIA,',
		br,
		'29 October to 1 November 1998',
		br);
    print
	h1('Reading/Autograph Availability Form'),
	p("If you are interested in giving a reading,",
	  "demonstrating a lost art, or participating in the",
	  "Mass Autographing, please complete this form so we can",
	  "figure out when to schedule you.  Space limitations may mean",
  	  "that not everyone can be included, but as always,",
	  "we will do our best.");

    print start_form, hr;
    if (@xargs) {
      print
	strong(@xargs),
	hr;
    }
      


    print_ci();
    print_avail();
    print_interests();

    print
	hr,
	submit(-name=>'action', -value=>"Send Finished Questionnaire as E-mail"),
	end_form,
	end_html;

    sub print_ci {
	print h3('CONTACT INFORMATION');
	my @labels = ('NAME',
		      'ADDRESS',
		      'CITY/ZIP/COUNTRY',
		      'PHONE NUMBER',
		      'Best time to call',
		      'E-MAIL');
	my @names = qw/ciname ciaddr cicity ciphone citime ciemail/;

	die "Must have same number of labels as names" if $#labels != $#names;

	my @rows;

	for $i ( 0 .. $#labels) {
	    push(@rows,
		 th({-align=>RIGHT},$labels[$i].':').
		 td(textfield(-name=>$names[$i],-size=>50)));
	}
	
	
	print table ({-border=>0}, Tr(\@rows));
	
	print
	  p("Are you already a member or will you be buying",
	    "a membership at the door?"),
	  radio_group(-name=>'ciwhenbuy',
		      -values=>['Already a member','Will buy at door'],
		      -default=>'Already a member');

    }
}

sub print_avail() {
    print
	h3('AVAILABILITY:'),
	p('Identify all times during which you are willing ',
	  'to participate in programming.');

# there is no doubt a nice programmatic way to do this but my Perl
# isn't that good..
    
    print
	table({-border=>1},
	      Tr(th(''),th('Friday'),th('Saturday')),
	      
	      Tr(
		 th('10am-11am'),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"FRI10")),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"SAT10")),
		 ),
	      Tr(
		 th('11am-12pm'),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"FRI11")),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"SAT11")),
		 ),
	      Tr(
		 th('12pm-1pm'),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"FRI12")),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"SAT12")),
		 ),
	      Tr(
		 th('1pm-2pm'),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"FRI13")),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"SAT13")),
		 ),
	      Tr(
		 th('2pm-3pm'),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"FRI14")),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"SAT14")),
		 ),
	      Tr(
		 th('3pm-4pm'),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"FRI15")),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"SAT15")),
		 ),
	      Tr(
		 th('4pm-5pm'),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"FRI16")),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"SAT16")),
		 ),
	      Tr(
		 th('5pm-6pm'),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"FRI17")),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"SAT17")),
		 ),
	      Tr(
		 th('Evening'),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"FRI20")),
		 td({-align=>CENTER},
		    checkbox( -name=>'avail', -label=>'', -value=>"SAT20")),
		 )
	      );

    print
	p(checkbox(-name=>'avail',
		   -value=>'FRIautograph',
		   -label=>'Available to sign autographs during the '.
		   'Autograph Jam/Meet the Guests party on '.
		   'Friday from 7pm to 8:30pm?')
	  );
}    

sub print_interests() {
    print
        h3('TYPES OF PROGRAM ITEMS THAT INTEREST YOU'),
        checkbox( -name=>'interests' , -value=>'Readings - of', 
		 -label=>'Readings - of'),
        br,textfield( -name=>"inread" , -size=>50),
        br,
        checkbox( -name=>'interests' , -value=>'Demonstration of a "lost" art or skill ', 
		 -label=>'Demonstration of a "lost" art or skill '),
        br,textfield( -name=>'inlostart', -size=>50),
        br,
}



sub send_mail {
    $mailfile = "/webadmin/home/web1/lindam/public_html/wfc98/mail.txt";

    open (MAIL,"|/usr/lib/sendmail -t") ||
	die "Couldn't open sendmail uid $UID gid $GID :  $!";

    select(MAIL);
    print 'To: goodston@well.com',"\n";
    print 'Bcc: rfm@pensfa.org',"\n";
    print 'From: WFC98 Web Page Robot <rfm@pensfa.org>', "\n";
    print "Subject: Program Participant Form for WFC98\n";
    print "\n";

    import_names('IN');

    print <<END_CI_TEXT;
Name:	$IN::ciname    
Addr:	$IN::ciaddr
	$IN::cicity

Phone:	$IN::ciphone	Best time: $IN::citime
email:	$IN::ciemail

END_CI_TEXT


    print "\nMembership status: ",
      $IN::ciwhenbuy,
      "\n\n";

    print "\n\nAvailable times:\n\n";

    my(%daytable) = ('FRI', 0, 'SAT', 1);
    my(@rownames) = (
		     '10:00am-11:00am',
		     '11:00am-noon   ',
		     '   noon- 1:00pm',
		     ' 1:00pm- 2:00pm',
		     ' 2:00pm- 3:00pm',
		     ' 3:00pm- 4:00pm',
		     ' 4:00pm- 5:00pm',
		     ' 5:00pm- 6:00pm',
		     '        evening');
    my(@rowids)   = (
		     '10',
		     '11',
		     '12',
		     '13',
		     '14',
		     '15',
		     '16',
		     '17',
		     '20');
    my(@colnames) = ('', 'FRIDAY', 'SATURDAY', );

    

    my(%tab,$time,$fri,$sat,$sun,$x,$r,$c,@l);
    foreach $_ (@IN::avail) {
	$tab{$_} = 1;
    }


    format Table =
@>>>>>>>>>>>>>>> @|||||||| @|||||||| 
$time,           $fri,     $sat,     
.

    $FORMAT_NAME = "Table";

    ($time, $fri, $sat) = @colnames;
    write;
    foreach $r (0 .. $#rownames) {
      $time = $rownames[$r];
      @l = ();
      foreach $c (1 .. 2) {
	$x = substr($colnames[$c],0,3).$rowids[$r];
	warn "checking for mark for $x";
	push(@l, (defined($tab{$x})?
		  'XXX':'---'));
      }
      ($fri, $sat) = @l;
      write;
    }
    
    print "\n\n";

    if (grep /FRIautograph/, @IN::avail) {
      print "Available";
    } else {
      print "NOT available";
    }
    print " for the Friday night autograph party\n";


    sub print_text {
      my($lab,$txt) = @_;
      if ($txt) {
	print "\n$lab\n-----\n ", $txt, "\n-----\n";
      }
    }
    print "\nInterests:\n-----\n";
    print join "\n", @IN::interests;
    print "-----\n";
    
    print_text("Reading topics:", $IN::inread);
    print_text("Lost art demos:", $IN::inlostart);

    print "\n.\n";

    
    close(MAIL);
}

