#!/usr/local/bin/perl5

use MITEvents;
require 'parseform.pl';
require 'categories.pl';

$ae = substr($ENV{'SCRIPT_NAME'}, 5);
$link = ($ae=~/link/);
$le = $link ? "listevents.link":"listevents";

if($link){
	$override = 1 if(-e "/afs/sipb/user/mkgray/project/mitevents/security/$ENV{'REMOTE_HOST'}");
}


if((substr($ENV{'REMOTE_HOST'},0,3) ne "18.") && 1){
	print("Content-type: text/html\n\n");
	print "<body bgcolor=#778899 text=#000000>\n";
	&mit_only;
	print "<hr>\n";
	&footer;
	exit;
}

if($ENV{'REQUEST_METHOD'} eq "GET") {
	if($ENV{'PATH_INFO'} =~/edit/){
		%form = &parseform($ENV{'QUERY_STRING'});
		$dbfile = "/var/local/www/data/eventsdb";
		loadDB($dbfile);
		$ev = getEvent($form{'id'});
		@ee = @$ev;

		($cnf, $host) = split("/", $ee[$CONFIRMATION]);
		if(($host ne $ENV{'REMOTE_HOST'}) && !$override){
			print("Content-type: text/html\n\n");
			print "<body bgcolor=#778899 text=#000000>\n";
			&cant_edit;
			&footer;
			exit;
		}

		(@dinfo) = split(/\//, $ee[$DATE]);
		$vmon = $dinfo[0];
		$vday = $dinfo[1];
		$vyear = $dinfo[2];
		(@tinfo) = split(/:/, $ee[$TIME]);
		$vhour = $tinfo[0];
		$vminute = $tinfo[1];
		if($vhour > 12){
			$vhour-=12;
			$vpm = "SELECTED";
			$ampm="pm";
		}
		elsif($vhour == 0){
			$vhour = 12;
			$vam = "SELECTED";
			$ampm="am";
		}
		else{
			$vam = "SELECTED";
			$ampm="am";
		}
		$vtitle = $ee[$TITLE];
		$pcat = substr($ee[$CATEGORIES], 0, 1);
		$vpcat{$pcat} = "SELECTED";
		@ocat = split(//, substr($ee[$CATEGORIES], 1));
		foreach $oc (@ocat){ $vcat{$oc} = "CHECKED"; }
		$vsponsor = $ee[$SPONSOR];
		$vemail = $ee[$EMAIL];
		$vlocation = $ee[$LOCATION];
		$vurl = $ee[$URL];
		$vfees = $ee[$FEES];
		$vaud = $ee[$AUDIENCE];
		$vattire = $ee[$ATTIRE];
		$vdesc = $ee[$DESCRIPTION];
		$veform = "<input type=hidden name=id value=$ee[$ID]>\n";
		$editing = 1;
		&show_form;
		&footer;
		exit;
	}
	else{
		$vpm="SELECTED";
		$vpcat{p} = "SELECTED";
		&show_form;
		&footer;
		exit;
	}
}
read(STDIN, $pdata, $ENV{'CONTENT_LENGTH'});
%form = &parseform($pdata);

$dbfile = "/var/local/www/data/eventsdb";

loadDB($dbfile);

# Massage form data into an event array

$confirmation = "y/$ENV{'REMOTE_HOST'}";
$date = $form{'month'}."/".$form{'day'}."/".$form{'year'};

$hour = $form{'hour'};
$minute = $form{'minute'};
&bogus("time") if (!$hour || !$minute);
if(($form{'ampm'} eq "pm") && ($hour < 12)){
    $hour+=12;
}
if(($form{'ampm'} eq "am") && ($hour == 12)){
    $hour = 0;
}
$time = "$hour:$minute";

$title = $form{'title'};

$categories = $form{'prim_cat'}.join("", split("\n", $form{'other_cat'}));
$sponsor = $form{'sponsor'};
$email = $form{'email'};
$url = $form{'url'};
$location = $form{'location'};
$fees = $form{'fees'};
$audience = $form{'aud'};
$attire = $form{'attire'};
$description = $form{'desc'};

&bogus("title") if !$title;
&bogus("sponsor") if !$sponsor;
&bogus("email") if !$email;
&bogus("location") if !$location;

@e = ($date, $time, $title, $categories, $sponsor, $email, $url,
	$location, $fees, $audience, $attire, $description, $confirmation);

if($form{'id'}){
	$myev = getEvent($form{'id'});
		($cnf, $host) = split("/", ${$myev}[$CONFIRMATION]);
		if(($host ne $ENV{'REMOTE_HOST'}) && !$override){
			print("Content-type: text/html\n\n");
			print "<body bgcolor=#778899 text=#000000>\n";
			&cant_edit;
			&footer;
			exit;
		}
	push(@e, $form{'id'});
	@{$myev} = @e;
}
else{
	newEvent(\@e);
}

writeDB($dbfile);

print("Content-type: text/html\n\n");
print "<body bgcolor=#778899 text=#000000>\n";
print "The calendar has been updated.<hr>\n";
&footer;
exit;

sub bogus{
	my $what = shift;
print("Content-type: text/html\n\n");
print "<body bgcolor=#778899 text=#000000>\n";
print("You need to fill out the \"$what\" entry on the form. Please go back and resubmit the form.<hr>\n");
&footer;
exit;

}



sub show_form {
if($editing) {
	$year = $vyear;
	$mon = $vmon;
	$mday = $vday;
}
else{
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$year+=1900;
$mon++;
}
@months=("January","February","March","April","May","June","July","August",
         "September","October","November","December");

print "Content-type: text/html\n\n";
$text = <<PAGETOP;
<head>
<link rev=made href="mailto:webmaster\@mit.edu">
<link rev=owns href="mailto:webmaster\@mit.edu">
<title>Add an Event</title>
</head>
<body bgcolor=#778899 text=#000000>
<h1 align=center>Add an event to the MIT event listings</h1>
PAGETOP

print "$text\n";
$cal=`/usr/bin/cal`;
print "<PRE>\n";
#print "$cal\n";
print "</PRE>\n";
$text= <<PAGEMID;
Please select the appropriate choices for each field; fields marked with
an <font color=#aa0033>*</font> are required.


<FORM method=POST action="$ENV{'SCRIPT_NAME'}">
$veform
<table>
<tr>
<td align=left colspan=1><font color=#aa0033>*Event Title:</font></td><td colspan=3><INPUT SIZE=55 NAME=title VALUE="$vtitle"></td>
</tr><TR>

<td align=left><font color=#aa0033>*Date:</font></td><td colspan=2>
<SELECT NAME=month>    
PAGEMID

print "$text\n";
print "<OPTION VALUE=$mon SELECTED>$months[$mon-1]\n";

for ($i=$mon+1; $i <=12; $i++) {
    print "<OPTION VALUE=$i>$months[$i-1]\n";
}

for ($i=1; $i < $mon ; $i++) {
    print "<OPTION VALUE=$i>$months[$i-1]\n";
}

print "<\/SELECT>\n";
print "<SELECT NAME=day>\n";
print "<OPTION VALUE=$mday SELECTED>$mday\n";

for ($i=$mday+1; $i <= 31; $i++) {
    print "<OPTION VALUE=$i>$i\n";
}

for ($i=1; $i < $mday; $i++) {
    print "<OPTION VALUE=$i>$i\n";
}
print "<\/SELECT>\n";
print "<SELECT NAME=year>\n";
print "<OPTION VALUE=$year SELECTED>$year\n";
for ($i=$year+1; $i < $year+6; $i++) {
    print "<OPTION VALUE=$i>$i\n";
}
print <<END_OF_SEC1;
</SELECT>
</td>
<td colspan=1 rowspan=3><pre>$cal</pre></a>
</tr><TR>
<td align=left><font color=#aa0033>*Time:</font></td><td colspan=2><INPUT NAME=hour size=2 VALUE="$vhour">:<INPUT NAME=minute size=2 VALUE="$vminute">
<SELECT NAME=ampm><OPTION VALUE=am $vam>AM<OPTION VALUE=pm $vpm>PM
</SELECT></td>
</tr><TR>
END_OF_SEC1

print "<td align=left><font color=#aa0033>*Primary Category:</font></td><td><SELECT NAME=prim_cat>";
	foreach $categ (@categories) {
		print "<OPTION VALUE=$categories{$categ} $vpcat{$categories{$categ}}>$categ\n";
}
print "</SELECT></TD>\n</TR>\n</table>\n<TABLE BORDER=0>\nAdditional Categories:\n<TR>\n";

	foreach $categ (@categories) {
		$ctgct++;
		print("<td bgcolor=$cat_colors{$categories{$categ}}>");
		print("<input type=checkbox name=other_cat value=$categories{$categ} $vcat{$categories{$categ}}> $categ\n");
	print "</tr><tr>\n" if($ctgct%3 == 0);
}
print "</tr></TABLE>";
print <<END_OF_PAG2;
<BR>
<table>
<tr>
<td align=left><font color=#aa0033>*Sponsor Organization/Individual:</font></td><td><INPUT NAME=sponsor VALUE="$vsponsor"></td>
</tr><tr>
<td align=left><font color=#aa0033>*E-mail contact:</font></td><td> <INPUT NAME=email VALUE="$vemail"></td>
</tr><TR>
<td align=left><font color=#aa0033>*Location:</font></td><td><INPUT SIZE=55 NAME=location VALUE="$vlocation"></td>
</tr><TR>
<td align=left>URL:</td><td> <INPUT SIZE=55 NAME=url VALUE="$vurl"></td>
</tr><TR>
<td align=left>Fees:</td><td><INPUT SIZE=10 NAME=fees VALUE="$vfees"></td>
</tr><TR>
<td align=left>Intended Audience:</td><td><INPUT NAME=aud VALUE="$vaud"></td>
</tr><TR>
<td align=left>Attire:</td><td><INPUT NAME=attire VALUE="$vattire"></td>
</tr></table>
<BR>Description:<BR> 
<TEXTAREA NAME=desc rows=5 cols=50 VALUE="">$vdesc</TEXTAREA><BR>

<BR>
<INPUT type=SUBMIT VALUE=Submit Event>
<INPUT type=RESET  VALUE=Clear>

</FORM>
END_OF_PAG2

if($editing){

print <<END_OF_PAGE;
<FORM method=POST action="$ENV{'SCRIPT_NAME'}">
$veform
<input type=hidden name=title value=$vtitle>
<input type=hidden name=month value=$vmon>
<input type=hidden name=day value=$vday>
<input type=hidden name=year value=-$vyear>
<input type=hidden name=hour value=$vhour>
<input type=hidden name=minute value=$vminute>
<input type=hidden name=ampm value=$ampm>
<input type=hidden name=prim_cat value=$pcat>
END_OF_PAGE

@cats=split(//,$categories);
for ($i=0;$i<$#cats;$i++) {
    print "<input type=hidden name=other_cat value=$cats[$i]>\n";
}

print <<END_OF_PAGE;
<input type=hidden name=sponsor value=$vsponsor>
<input type=hidden name=email value=$vemail>
<input type=hidden name=url value=$vurl>
<input type=hidden name=location value=$vlocation>
<input type=hidden name=fees  value=$vfees>
<input type=hidden name=aud value=$vaud>
<input type=hidden name=attire value=$vattire>
<input type=hidden name=desc value="$vdesc">
<INPUT type=SUBMIT VALUE="Delete this Event">
</FORM>
<hr>
</body>
END_OF_PAGE
}

}
sub footer {
        print("<a href=/cgi/$le>[List Events]</a> <a href=$ae>[Add Event]</a> <a href=/cgi/$le?type=date&display=compact&when=today>[Today's Events]</a> <a href=/cgi/$le?type=date&display=compact&when=weekend&cat=p>[Parties this weekend]</a> <a href=/eventhelp.html>[Help/Instructions]</a>\n");
}

sub mit_only {
	print("Only users at MIT (on net 18) may add events to the list.\n");
}

sub cant_edit {
	print("Events are only editable from the same host which originally added them.<hr>\n");
}
