#!/usr/bin/perl

# Filename: codar.perl.cgi
# 


######################################################################
# Necessary Variables:                                               #
# The following variables should be set to define the locations      #
# and URLs of various files, as explained in the documentation.      #

	$CalCMD = "/usr/bin/cal";  # En: PATH of cal.
	                           # Fr: Chemin de cal.

	$SSI = 1;  # 0 NO SSI (print <HTML><BODY>...</HTML>)
	           # 1 SSI (En: print only Calandar / Fr: N'affiche que le calendrier)

	$Border = 1; # En: Size of table Border.
	             # Fr: Taille des Tables.

	$Days = "Su Mo Tu We Th Fr Sa";  # En: Days
	#$Days = "Di Lu Ma Me Je Ve Sa"; # Fr: Jours en Francais

# Nothing Below this line needs to be altered!                       #
######################################################################

############################################################
# GET INPUT FROM THE CALENDAR HYPERLINKS
(@args) = split(/&/, $ENV{'QUERY_STRING'});
foreach $arg (@args) {
   ($arg, $values) = split(/=/, $arg);
   $values =~ tr/+/ /;
$FORMY{$arg} = $values;
}
############################################################

############################################################
# GET THE INPUT FROM THE SUBMIT BUTTON
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Split the name-value pairs
@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);

   # Un-Webify plus signs and %-encoding
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $value =~ s/<!--(.|\n)*-->//g;

   if ($allow_html != 1) {
      $value =~ s/<([^>]|\n)*>//g;
   }

   $FORM{$name} = $value;
}
############################################################


# Open file to get the name of the lastest image available
{
$file = "/home/fake/CODAR/AUTOMATE/TASK1/filename";
open INFILE, "< $file" or die "Couldn't open $file";
local $/ = undef; 
$figname = <INFILE>;
close INFILE;
}

# Open file to get the last day looked at by the user
{
$dayfile = "/home/fake/public_html/CODAR/dayinfo";
open DAYFILE, "< $dayfile" or die "Couldn't open $file";
local @/ = undef;
@dayinfo = <DAYFILE>;
close DAYFILE;
}

# Open file to get the last hour looked at by the user
{
$hrfile = "/home/fake/public_html/CODAR/hrinfo";
open HRFILE, "< $hrfile" or die "Couldn't open $file";
local @/ = undef;
$lasthr = <HRFILE>;
close HRFILE;
}

chomp $lasthr;

# Decides the fate of $dayinfo[1]
if ( $FORMY{'Mon2'} eq 'January') { }
elsif ( $dayinfo[1] eq 'February') { }
elsif ( $dayinfo[1] eq 'March') { }
elsif ( $dayinfo[1] eq 'April') { }
elsif ( $dayinfo[1] eq 'May') { }
elsif ( $dayinfo[1] eq 'June') { }
elsif ( $dayinfo[1] eq 'July') { }
elsif ( $dayinfo[1] eq 'August') { }
elsif ( $dayinfo[1] eq 'September') { }
elsif ( $dayinfo[1] eq 'October') { }
elsif ( $dayinfo[1] eq 'November') { }
elsif ( $dayinfo[1] eq 'December') { }
#else { $dayinfo[1] ='0' }

# Open file to get information about the month, day, and time of the lastest available image
{
$filenew = "/home/fake/CODAR/AUTOMATE/TASK1/params";
open PARAMFILE, "< $filenew" or die "Couldn't open $filenew";
#local $/ = undef; 
@params = <PARAMFILE>;
close PARAMFILE;
# if params is empty grabs temp values
$blen = length($params[0]);
 if ($blen eq 1){
   $filenew = "/home/fake/CODAR/AUTOMATE/TASK1/tmp_params";
   open PARAMFILE, "< $filenew" or die "Couldn't open $filenew";
   @params = <PARAMFILE>;
   close PARAMFILE;
   # send message to admin to correct problem if params file is empty
   $mailprog = '/usr/lib/sendmail'; 
   $recipient = 'fake@oceans.dms.uconn.edu';
   $sender = 'web admin';
   $subject = 'codar.pl.cgi error';
   $messagebody = 'param file was found empty. Please correct problem';
   open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!\n";
   print MAIL "To: $recipient\n";
   print MAIL "From: $sender\n";
   print MAIL "Subject: $subject\n";
   print MAIL "\n";
   print MAIL "$messagebody\n";
   close (MAIL); 
 }
}




#sets the correct current available time based on output from automated codar file grabber
foreach $i (0 .. 23) {
                if ( $i < 10 ) {
                    $tt = "0$i:00:00";
                    $ttmp = "0$i";
                }
                else {
                    $tt = "$i\:00:00";
		    $ttmp = "$i";
                }
                if ( $params[2] == $tt ) {
                    $curhr = $ttmp;
                }
                } 

#####################################################################################

#####################################################################################
# Assign parameters a value
# Define the month to be used
if ( $FORM{MONTH} ) {
      $mon = $FORM{MONTH};
}
elsif ( $FORMY{Mon} ) {
      $mon = $FORMY{Mon};
}
elsif ( $FORMY{'Mon2'} ) {
if ( $FORMY{'Mon2'} eq 'January') { $mon = 'February'; }
elsif ( $FORMY{'Mon2'} eq 'February') { $mon = 'March'; }
elsif ( $FORMY{'Mon2'} eq 'March') { $mon = 'April'; }
elsif ( $FORMY{'Mon2'} eq 'April') { $mon = 'May'; }
elsif ( $FORMY{'Mon2'} eq 'May') { $mon = 'June'; }
elsif ( $FORMY{'Mon2'} eq 'June') { $mon = 'July'; }
elsif ( $FORMY{'Mon2'} eq 'July') { $mon = 'August'; }
elsif ( $FORMY{'Mon2'} eq 'August') { $mon = 'September'; }
elsif ( $FORMY{'Mon2'} eq 'September') { $mon = 'October'; }
elsif ( $FORMY{'Mon2'} eq 'October') { $mon = 'November'; }
elsif ( $FORMY{'Mon2'} eq 'November') { $mon = 'December'; }
elsif ( $FORMY{'Mon2'} eq 'December') { $mon = 'January';}
}
elsif ( $FORMY{'Mon1'} ) {
if ( $FORMY{'Mon1'} eq 'December') { $mon = 'February'; }
elsif ( $FORMY{'Mon1'} eq 'January') { $mon = 'March'; }
elsif ( $FORMY{'Mon1'} eq 'February') { $mon = 'April'; }
elsif ( $FORMY{'Mon1'} eq 'March') { $mon = 'May'; }
elsif ( $FORMY{'Mon1'} eq 'April') { $mon = 'June'; }
elsif ( $FORMY{'Mon1'} eq 'May') { $mon = 'July'; }
elsif ( $FORMY{'Mon1'} eq 'June') { $mon = 'August'; }
elsif ( $FORMY{'Mon1'} eq 'July') { $mon = 'September'; }
elsif ( $FORMY{'Mon1'} eq 'August') { $mon = 'October'; }
elsif ( $FORMY{'Mon1'} eq 'September') { $mon = 'November'; }
elsif ( $FORMY{'Mon1'} eq 'October') { $mon = 'December'; }
elsif ( $FORMY{'Mon1'} eq 'November') { $mon = 'January'; }
}
else {
      $mon = $params[0];
}

# Defines Hour to be used
if ( $FORM{'HOUR'} ) {
	$hr=$FORM{'HOUR'};
}
elsif ( $FORMY{'Hour'} ) {
 	$hr=$FORMY{'Hour'};
}
else {
	$hr=$curhr;
}

# Define the day to be used
if ( $FORMY{'Day'} ) {
	$dy=$FORMY{'Day'};
}
elsif ( $dayinfo[0] ) {
        if ( $FORM{'MONTH'} ) {
	   $dy=$dayinfo[0];
        }
        else {
           $dy=$params[1];
        }  
}
else {
	$dy=$params[1];
}

# Define the year to be used
{
$yrfile = "/home/fake/CODAR/AUTOMATE/TASK1/dirfile";
open DIRFILE, "< $yrfile" or die "Couldn't open $yrfile";
#local $/ = undef; 
@yrdirs = <DIRFILE>;
close DIRFILE;
}
# Setting the current time
($sec,$min,$hour,$mday,$monn,$year,$wday,$yday,$isdst) = localtime(time);
if ( $FORM{'YEAR'} ) {
	$yr=$FORM{'YEAR'};
}
elsif ( $FORMY{'Year'} ) {
	$yr=$FORMY{'Year'};
}
else {
        $yr=$yrdirs[1];
        chomp $yr;
#	$yr=$year+'1900';
}



# Eliminates any spaces at the end of these variables
chomp $dy;
chomp $mon;

#####################################################################################
# DEFINES THE NUMBER FOR THE MONTH
if ( $mon eq 'January') {
   $numon = '1';
   $s1='SELECTED';
}
elsif ( $mon eq 'February') {
   $numon = '2';
   $s2='SELECTED';
}
elsif ( $mon eq 'March') {
   $numon = '3';
   $s3='SELECTED';
}
elsif ( $mon eq 'April') {
   $numon = '4';
   $s4='SELECTED';
}
elsif ( $mon eq 'May') {
   $numon = '5';
   $s5='SELECTED';
}
elsif ( $mon eq 'June') {
   $numon = '6';
   $s6='SELECTED';
}
elsif ( $mon eq 'July') {
   $numon = '7';
   $s7='SELECTED';
}
elsif ( $mon eq 'August') {
   $numon = '8';
   $s8='SELECTED';
}
elsif ( $mon eq 'September') {
   $numon = '9';
   $s9='SELECTED';
}
elsif ( $mon eq 'October') {
   $numon = '10';
   $s10='SELECTED';
}
elsif ( $mon eq 'November') {
   $numon = '11';
   $s11='SELECTED';
}
elsif ( $mon eq 'December') {
   $numon = '12';
   $s12='SELECTED';
}
# DEFINES THE NUMBER FOR THE MONTH
if ( $mon =~ 'January') {
   $numon = '1';
   $s1='SELECTED';
}
elsif ( $mon =~ 'February') {
   $numon = '2';
   $s2='SELECTED';
}
elsif ( $mon =~ 'March') {
   $numon = '3';
   $s3='SELECTED';
}
elsif ( $mon =~ 'April') {
   $numon = '4';
   $s4='SELECTED';
}
elsif ( $mon =~ 'May') {
   $numon = '5';
   $s5='SELECTED';
}
elsif ( $mon =~ 'June') {
   $numon = '6';
   $s6='SELECTED';
}
elsif ( $mon =~ 'July') {
   $numon = '7';
   $s7='SELECTED';
}
elsif ( $mon =~ 'August') {
   $numon = '8';
   $s8='SELECTED';
}
elsif ( $mon =~ 'September') {
   $numon = '9';
   $s9='SELECTED';
}
elsif ( $mon =~ 'October') {
   $numon = '10';
   $s10='SELECTED';
}
elsif ( $mon =~ 'November') {
   $numon = '11';
   $s11='SELECTED';
}
elsif ( $mon =~ 'December') {
   $numon = '12';
   $s12='SELECTED';
}
#####################################################################################
# Defines which hour is displayed on the web
if ( $hr eq '01') { $h1='SELECTED'; }
elsif ( $hr eq '00') { $h0='SELECTED'; }
elsif ( $hr eq '02') { $h2='SELECTED'; }
elsif ( $hr eq '03') { $h3='SELECTED'; }
elsif ( $hr eq '04') { $h4='SELECTED'; }
elsif ( $hr eq '05') { $h5='SELECTED'; }
elsif ( $hr eq '06') { $h6='SELECTED'; }
elsif ( $hr eq '07') { $h7='SELECTED'; }
elsif ( $hr eq '08') { $h8='SELECTED'; }
elsif ( $hr eq '09') { $h9='SELECTED'; }
elsif ( $hr eq '10') { $h10='SELECTED'; }
elsif ( $hr eq '11') { $h11='SELECTED'; }
elsif ( $hr eq '12') { $h12='SELECTED'; }
elsif ( $hr eq '13') { $h13='SELECTED'; }
elsif ( $hr eq '14') { $h14='SELECTED'; }
elsif ( $hr eq '15') { $h15='SELECTED'; }
elsif ( $hr eq '16') { $h16='SELECTED'; }
elsif ( $hr eq '17') { $h17='SELECTED'; }
elsif ( $hr eq '18') { $h18='SELECTED'; }
elsif ( $hr eq '19') { $h19='SELECTED'; }
elsif ( $hr eq '20') { $h20='SELECTED'; }
elsif ( $hr eq '21') { $h21='SELECTED'; }
elsif ( $hr eq '22') { $h22='SELECTED'; }
elsif ( $hr eq '23') { $h23='SELECTED'; }


#####################################################################################
print "Content-type: text/html\n\n";

# Print the HTML HEADER INFO
print <<EndOfHTML;
<html>

	<head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
		<meta name="Author" content="Todd Fake">
	</head>

	<body text="black" bgcolor="white" link="#0000ee" vlink="#551a8b" alink="red">

<table width="840" cellspacing="0" cellpadding="0" border="0">
			<tr height="27">
				<td colspan="5" height="27">
					<center>
						<font size="5" face="Arial,Helvetica" color="#3333ff">Real Time Ocean Currents (CODAR)</font></center>
				</td>
				<td height="27"></td>
			</tr>
                        <tr height="27">
                                <td colspan="5" height="27">
                                        <center>
                                                <img src="uconn_logo.gif" hspace="30"><img src="uri_logo.gif" hspace="30" vspace="20"></center>
                                </td>
                                <td height="27"></td>
                        </tr>

			<tr height="19">
				<td colspan="5" valign="top" height="19">
					<center>
						<hr noshade width="100%">
						<font color="white">Color</font> <font color="white">Color</font></center>
				</td>
				<td height="19"></td>
			</tr>
			<tr height="80">
				<td colspan="5" height="80">


<center>
<FORM METHOD="POST" ACTION="codar.pl.cgi">

<table BORDER=0 valign="TOP">
<tr>
<td VALIGN=TOP WIDTH=180>

EndOfHTML

#########################################################################################################
#        BEGINING OF CALENDAR SECTION

	if (! $SSI) { print "<HTML><HEAD><TITLE>Calendar</TITLE></HEAD><BODY><H1>Calendar</H1>\n"; }
	print &RetCalFirst($CalCMD, $Query_String, $Border);
	print &RetCalSecond($CalCMD, $Query_String, $Border);
	print &RetCal($CalCMD, $Query_String, $Border);
	if (! $SSI) { print "<BODY></HTML>"; }


# En: Sub routine return calendar.
# Fr: Sous-routine retournant le calendrier.

sub RetCalFirst {
	my($CalCMD, $Args, $Border) = @_;
	my($ret, @Result, $Month, $dy, $line, $no);

	if ( -x "$CalCMD" ) {

		if (($Args !~ /^\d\d?-\d\d\d\d$/) || ($Args eq "")) {
			$Args = "";
			@date = localtime(time); 
			$Today = $date[3];
		} else {
			$Args =~ s/-/ /g;
		}
	        
                if ( $numon eq '1' ) {
			$numon1 = '11';
                    # Adjustments to handle year change
                    if ( $FORMY{'Mon1'} ) {
                       $yr1 = $yr;
                    }
                    elsif ( $FORMY{'Mon2'} ) {
                       $yr1 = $yr;  
                    }
                    else { 
                       $yr1 = $yr-1;
                    }
  		}     
         	elsif ( $numon eq '2' ) {
			$numon1 = '12';
                    # Adjustments to handle year change
                    if ( $FORMY{'Mon1'} ) {
                       $yr1 = $yr;
                    }
                    elsif ( $FORMY{'Mon2'} ) {
                       $yr1 = $yr-1;  
                    }
                    else { 
                       $yr1 = $yr-1;
                    }
  		}
		else {
			$numon1 = $numon-'2';
                    $yr1 = $yr;
		}
                open(CAL, "$CalCMD $numon1 $yr1|");
		#open(CAL, "$CalCMD $Args|");
		
                @Result = <CAL>;
		close(CAL);

		$Month = $Result[0]; 
                shift(@Result);
		$Month =~ s/\s\s\s*//g;
		$ret = "<TABLE Border=\"$Border\"><CAPTION ALIGN=\"TOP\"><B>$Month</B></CAPTION>\n<TR>";

		shift(@Result);
		foreach $dy (split(/ /, $Days)) {
			$ret .= "<TH>$dy</TH>";
		}
		$ret .= "</TR>\n";

		foreach $line (@Result) {
			$line =~ s/\n//;
			$line =~ s/   /ccs/g;
			$line =~ s/  /sc/g;
			$line =~ s/ /s/g;
			$line =~ s/^s//g;
			$line =~ s/ss/s/g;
			$line =~ s/c//g;
			$ret .= "<TR>";
                    # Loops through the days in the month and decides what values will be included in the link
			foreach $no (split(/s/, $line)) {
					$ret .= "<TD><a href=http://nopp.dms.uconn.edu/CODAR/codar.pl.cgi?Day=$no&Hour=$hr\&Year=$yr1\&Mon1=$Month\>$no\</a></TD>";
			}
			$ret .= "</TR>\n";
		}
		$ret .= "</TABLE>\n";
	} else {
		$ret = "Cannot find cal on this system.";
	}
        $ret .= "</td><td VALIGN=TOP WIDTH=180>\n";
	return $ret;

}

#########################################################################################################

sub RetCalSecond {
	my($CalCMD, $Args, $Border) = @_;
	my($ret, @Result, $Month, $dy, $line, $no);

	if ( -x "$CalCMD" ) {

		if (($Args !~ /^\d\d?-\d\d\d\d$/) || ($Args eq "")) {
			$Args = "";
			@date = localtime(time); 
			$Today = $date[3];
		} else {
			$Args =~ s/-/ /g;
		}
	        
                if ( $numon eq '1' ) {
                   $numon1 = '12';
                   # Adjustments to handle year change
                   if ( $FORMY{'Mon1'} ) {
                       $yr2 = $yr;
                    }
                    elsif ( $FORMY{'Mon2'} ) {
                       $yr2 = $yr;  
                    }
                    else { 
                       $yr2 = $yr-'1';
                    }
  		}
                elsif ( $numon eq '2' ) {
                   $numon1 = '1';
                   if ( $FORMY{'Mon1'} ) {
                       $yr2 = $yr+'1';
                   }
                   else { 
                       $yr2 = $yr;
                    }
                }  
		else {
			$numon1 = $numon-'1';
                    $yr2 = $yr;
		}
                open(CAL, "$CalCMD $numon1 $yr2|");
		#open(CAL, "$CalCMD $Args|");
		
                @Result = <CAL>;
		close(CAL);

		$Month = $Result[0]; 
                shift(@Result);
		$Month =~ s/\s\s\s*//g;
		$ret = "<TABLE Border=\"$Border\"><CAPTION ALIGN=\"TOP\"><B>$Month</B></CAPTION>\n<TR>";

		shift(@Result);
		foreach $dy (split(/ /, $Days)) {
			$ret .= "<TH>$dy</TH>";
		}
		$ret .= "</TR>\n";

		foreach $line (@Result) {
			$line =~ s/\n//;
			$line =~ s/   /ccs/g;
			$line =~ s/  /sc/g;
			$line =~ s/ /s/g;
			$line =~ s/^s//g;
			$line =~ s/ss/s/g;
			$line =~ s/c//g;
			$ret .= "<TR>";
                    # Loops through the days in the month and decides what values will be included in the link
			foreach $no (split(/s/, $line)) {
					$ret .= "<TD><a href=http://nopp.dms.uconn.edu/CODAR/codar.pl.cgi?Day=$no&Hour=$hr\&Year=$yr2\&Mon2=$Month\>$no\</a></TD>";
			}
			$ret .= "</TR>\n";
		}
		$ret .= "</TABLE>\n";
	} else {
		$ret = "Cannot find cal on this system.";
	}
        $ret .= "</td><td VALIGN=TOP WIDTH=180>\n";
	return $ret;

}

#########################################################################################################

sub RetCal {
	my($CalCMD, $Args, $Border) = @_;
	my($ret, @Result, $Month, $dy, $line, $no);

	if ( -x "$CalCMD" ) {

		if (($Args !~ /^\d\d?-\d\d\d\d$/) || ($Args eq "")) {
			$Args = "";
			@date = localtime(time); 
			$Today = $date[3];
		} else {
			$Args =~ s/-/ /g;
		}
	        
                if ( $numon eq '1' ) {
                   # Adjustments to handle year change
                   if ( $FORMY{'Mon1'} ) {
                       $yr3 = $yr+1;
                    }
                    elsif ( $FORMY{'Mon2'} ) {
                       $yr3 = $yr+1;  
                    }
                    else { 
                       $yr3 = $yr;
                       # Resets the Year For Looking at December and November 
                       # When the first Month is January of the next Year
                       if ( $FORMY{Mon} ) {
                          $yr=$yr3;
                       }
                       elsif ( $FORM{YEAR} ) {
                          if ( $dayinfo[1] eq 'December' ) {
                             $yr=$yr3-'1';
                          }
                          elsif ( $dayinfo[1] eq 'November' ) {
                             $yr=$yr3-'1';
                          }
                       }
                       else {
                          $yr=$yr3;
                       }
                    }
  		}
                elsif ( $numon eq '2' ) {
                   if ( $FORMY{'Mon1'} ) {
                       $yr3 = $yr+1;
                    }
                    else { 
                       $yr3 = $yr;
                       # Resets the Year For Looking at December and November 
                       # When the first Month is January of the next Year
                       if ( $FORMY{Mon} ) {
                          $yr=$yr3;
                       }
                       elsif ( $FORMY{Mon2} ) {
                          $yr=$yr3;
                       }
                       elsif ( $FORM{YEAR} ) {
                          if ( $dayinfo[1] eq 'December' ) {
                             $yr=$yr3-'1';
                          }
                       }
                       else {
                          $yr=$yr3;
                       }
                    }
                }
                else {
                    $yr3 = $yr;
                }
                # Decide which option button will be shown on web site
		if ( $yr3 eq '2000' ) {
		   $y1='SELECTED';
		}
	 	elsif ( $yr3 eq '2001' ) {
		   $y2='SELECTED';
		}
	 	elsif ( $yr3 eq '2002' ) {
		   $y3='SELECTED';
		}
	 	elsif ( $yr3 eq '2003' ) {
		   $y4='SELECTED';
	 	}
                elsif ( $yr3 eq '2004' ) {
		   $y5='SELECTED';
                }
                elsif ( $yr3 eq '2005' ) {
		   $y6='SELECTED';
		}
                elsif ( $yr3 eq '2006' ) {
		   $y7='SELECTED';
		}
                open(CAL, "$CalCMD $numon $yr3|");
		#open(CAL, "$CalCMD $Args|");
		
                @Result = <CAL>;
		close(CAL);

		$Month = $Result[0]; 
                shift(@Result);
		$Month =~ s/\s\s\s*//g;
		$ret = "<TABLE Border=\"$Border\"><CAPTION ALIGN=\"TOP\"><B>$Month</B></CAPTION>\n<TR>";

		shift(@Result);
		foreach $dy (split(/ /, $Days)) {
			$ret .= "<TH>$dy</TH>";
		}
		$ret .= "</TR>\n";

		foreach $line (@Result) {
			$line =~ s/\n//;
			$line =~ s/   /ccs/g;
			$line =~ s/  /sc/g;
			$line =~ s/ /s/g;
			$line =~ s/^s//g;
			$line =~ s/ss/s/g;
			$line =~ s/c//g;
			$ret .= "<TR>";
                    # Loops through the days in the month and decides what values will be included in the link
			foreach $no (split(/s/, $line)) {
				#if ($no == $Today) {
					#$ret .= "<TD><B><a href=http://nopp.dms.uconn.edu/CODAR/codar.pl.cgi?Day=$no&Hour=$hr\&Year=$yr3\&Mon=$mon\>$no\</a></B></TD>";
                        #}
				  #else {
					$ret .= "<TD><a href=http://nopp.dms.uconn.edu/CODAR/codar.pl.cgi?Day=$no&Hour=$hr\&Year=$yr3\&Mon=$mon\>$no\</a></TD>";
				#}
			}
			$ret .= "</TR>\n";
		}
		$ret .= "</TABLE>\n";
	} else {
		$ret = "Cannot find cal on this system.";
	}
        $ret .= "</td></tr></table>\n";
	return $ret;
}



#                         END OF CALENDAR SECTION
#########################################################################################################



# Create HTML for web viewing

#print "Content-type:text/html\n\n";

# Decide which options will display on web based on latest image
if ( $params[0] ) {
print <<ENDEOF
       Month:
       <SELECT NAME="MONTH">
       <OPTION $s1\>January
       <OPTION $s2\>February
       <OPTION $s3\>March
       <OPTION $s4\>April
       <OPTION $s5\>May 
       <OPTION $s6\>June
       <OPTION $s7\>July
       <OPTION $s8\>August
       <OPTION $s9\>September
       <OPTION $s10\>October
       <OPTION $s11\>November
       <OPTION $s12\>December
       </SELECT>
       Hour:
       <SELECT NAME="HOUR">
       <OPTION $h0\>00
       <OPTION $h1\>01
       <OPTION $h2\>02
       <OPTION $h3\>03
       <OPTION $h4\>04
       <OPTION $h5\>05
       <OPTION $h6\>06
       <OPTION $h7\>07
       <OPTION $h8\>08
       <OPTION $h9\>09
       <OPTION $h10\>10 
       <OPTION $h11\>11
       <OPTION $h12\>12
       <OPTION $h13\>13
       <OPTION $h14\>14 
       <OPTION $h15\>15
       <OPTION $h16\>16
       <OPTION $h17\>17 
       <OPTION $h18\>18
       <OPTION $h19\>19
       <OPTION $h20\>20
       <OPTION $h21\>21
       <OPTION $h22\>22
       <OPTION $h23\>23
       </SELECT>
       Year:
       <SELECT NAME="YEAR">
       <OPTION $y1\>2000
       <OPTION $y2\>2001
       <OPTION $y3\>2002
       <OPTION $y4\>2003
       <OPTION $y5\>2004
       <OPTION $y6\>2005
       <OPTION $y7\>2006
       </SELECT>
  
      <INPUT TYPE="submit" NAME="submitname" VALUE="Submit">
    
   </FORM>
   </center>

   <hr>

   <center>
ENDEOF
}

# Sets various parameters for codar data extraction
#
# Puts the month into a common variable for data extraction
if ( $FORMY{'Mon'} ) {
  $mont = $mon;
}
elsif ( $FORMY{'Mon1'} ) {
  $mont = $FORMY{'Mon1'};
}
elsif ( $FORMY{'Mon2'} ) {
  $mont = $FORMY{'Mon2'};
}
elsif ( $dayinfo[1] ) {
  if ( $FORM{'MONTH'} ) {
        $mont = $dayinfo[1]; 
  }
  else {
        $mont = $mon;
  }
}
else {
  $mont = $mon;
}
#
# Sets the month to a number, the year to a number by last two digits, and day to two digit number
# if less than ten
#
# Day Handle
if ( $dy < 10 ) { $dyt = "0$dy"; }
else { $dyt = $dy; }
#
# Year Handle
$yrt = $yr-2000;
$yrt = "0$yrt";
#
# Month Handle
if ( $mont eq 'December') { $montnum = '12'; }
elsif ( $mont eq 'January') { $montnum = '01'; }
elsif ( $mont eq 'February') { $montnum = '02'; }
elsif ( $mont eq 'March') { $montnum = '03'; }
elsif ( $mont eq 'April') { $montnum = '04'; }
elsif ( $mont eq 'May') { $montnum = '05'; }
elsif ( $mont eq 'June') { $montnum = '06'; }
elsif ( $mont eq 'July') { $montnum = '07'; }
elsif ( $mont eq 'August') { $montnum = '08'; }
elsif ( $mont eq 'September') { $montnum = '09'; }
elsif ( $mont eq 'October') { $montnum = '10'; }
elsif ( $mont eq 'November') { $montnum = '11'; }

# Prints html code to display image and decides what parameters to used based on the users actions
#
# Controls for when user selects Calendar 1 (Current Month)
#
if ( $FORMY{'Mon'} ) {
$veryfile = "/home/fake/CODAR/pictures/$yr\/$mon\/$mon\_$dy\_$hr\:00:00.jpg";
open VERYFILE, "<$veryfile" or $suc = 1;
if ( $suc ) {
print "<font size=6><b><blink>Image does not exist for $mon $dy $yr $hr\:00:00!</blink></b></font></center>";
}
else {
print <<EOFF;
<img SRC="http://nopp.dms.uconn.edu/CODAR/pictures/$yr\/$mon\/$mon\_$dy\_$hr\:00:00.jpg"  align=CENTER>
<p><a href="http://nopp.dms.uconn.edu/CODAR/data_download.html">Download Data</a>&nbsp|&nbsp<a href="README.html" target="main">Data Format</a>&nbsp|&nbsp<a href="README2.html" target="main">Plotting Package</a>
</center></body></html>
EOFF
}
}
#
# Controls for when user selects Calendar 2
#
elsif ( $FORMY{'Mon1'} ) {
$veryfile = "/home/fake/CODAR/pictures/$yr\/$FORMY{'Mon1'}\/$FORMY{'Mon1'}\_$dy\_$hr\:00:00.jpg";
open VERYFILE, "< $veryfile" or $suc = 1;
if ( $suc ) {
print "<font size=6><b><blink>Image does not exist for $FORMY{'Mon1'} $dy $yr $hr\:00:00!</blink></b></font></center>";
}
else {
print <<EOFF;
<img SRC="http://nopp.dms.uconn.edu/CODAR/pictures/$yr\/$FORMY{'Mon1'}\/$FORMY{'Mon1'}\_$dy\_$hr\:00:00.jpg"  align=CENTER>
<p><a href="http://nopp.dms.uconn.edu/CODAR/data_download">Download Data</a>&nbsp|&nbsp<a href="README.html" target="main">Data Format</a>&nbsp|&nbsp<a href="README2.html" target="main">Plotting Package</a>
</center></body></html>
EOFF
}
}
#
# Controls for when user selects Calendar 3
#
elsif ( $FORMY{'Mon2'} ) {
$veryfile = "/home/fake/CODAR/pictures/$yr\/$FORMY{'Mon2'}\/$FORMY{'Mon2'}\_$dy\_$hr\:00:00.jpg";
open VERYFILE, "< $veryfile" or $suc = 1;
if ( $suc ) {
print "<font size=6><b><blink>Image does not exist for $FORMY{'Mon2'} $dy $yr $hr\:00:00!</blink></b></font></center>";
}
else {
print <<EOFF;
<img SRC="http://nopp.dms.uconn.edu/CODAR/pictures/$yr\/$FORMY{'Mon2'}\/$FORMY{'Mon2'}\_$dy\_$hr\:00:00.jpg"  align=CENTER>
<p><a href="http://nopp.dms.uconn.edu/CODAR/data_download.html">Download Data</a>&nbsp|&nbsp<a href="README.html" target="main">Data Format</a>&nbsp|&nbsp<a href="README2.html" target="main">Plotting Package</a>
</center></body></html>
EOFF
}
}
#
# Controls for when user clicks on the submit button
#
# First checks to see if there is previous month information 
# if yes and user is changing the hour within the same month then use this code
#
elsif ( $FORM{'MONTH'} ) {
if ( $FORM{'MONTH'} eq $dayinfo[1] ) {
$veryfile = "/home/fake/CODAR/pictures/$yr\/$dayinfo[1]\/$dayinfo[1]\_$dy\_$hr\:00:00.jpg";
open VERYFILE, "< $veryfile" or $suc = 1;
if ( $suc ) {
print "<font size=6><b><blink>Image does not exist for $dayinfo[1] $dy $yr $hr\:00:00!</blink></b></font></center>";
}
else {
print <<EOFF;
<img SRC="http://nopp.dms.uconn.edu/CODAR/pictures/$yr\/$dayinfo[1]\/$dayinfo[1]\_$dy\_$hr\:00:00.jpg"  align=CENTER>
<p><a href="http://nopp.dms.uconn.edu/CODAR/data_download.html">Download Data</a>&nbsp|&nbsp<a href="README.html" target="main">Data Format</a>&nbsp|&nbsp<a href="README2.html" target="main">Plotting Package</a>
</center></body></html>
EOFF
}
}
#
# Checks Second to see if the hour is the same when selecting the submit button
# if yes then user is changing month and not hour
#
else {
if ( $hr eq $lasthr ) {
$veryfile = "/home/fake/CODAR/pictures/$yr\/$mon\/$mon\_$dy\_$hr\:00:00.jpg";
open VERYFILE, "< $veryfile" or $suc = 1;
if ( $suc ) {
print "<font size=6><b><blink>Image does not exist for $mon $dy $yr $hr\:00:00!</blink></b></font></center>";
}
else {
print <<EOFF;
<img SRC="http://nopp.dms.uconn.edu/CODAR/pictures/$yr\/$mon\/$mon\_$dy\_$hr\:00:00.jpg"  align=CENTER>
<p><a href="http://nopp.dms.uconn.edu/CODAR/data_download.html">Download Data</a>
&nbsp|&nbsp<a href="README.html" target="main">Data Format</a>&nbsp|&nbsp<a href="README2.html" target="main">Plotting Package</a>
</center></body></html>
EOFF
}
}
#
# Use the last month if current hour doesn't equal last hour 
#
else {
$veryfile = "/home/fake/CODAR/pictures/$yr\/$dayinfo[1]\/$dayinfo[1]\_$dy\_$hr\:00:00.jpg";
open VERYFILE, "< $veryfile" or $suc = 1;
if ( $suc ) {
print "<font size=6><b><blink>Image does not exist for $dayinfo[1] $dy $yr $hr\:00:00!</blink></b></font></center>";
}
else {
print <<EOFF;
<img SRC="http://nopp.dms.uconn.edu/CODAR/pictures/$yr\/$dayinfo[1]\/$dayinfo[1]\_$dy\_$hr\:00:00.jpg"  align=CENTER>
<p><a href="http://nopp.dms.uconn.edu/CODAR/data_download.html">Download Data</a>&nbsp|&nbsp<a href="README.html" target="main">Data Format</a>&nbsp|&nbsp<a href="README2.html" target="main">Plotting Package</a>
</center></body></html>
EOFF
}
}
}
}
#
# If non of the above then user is just viewing this page. Use this code.
#
else {
$veryfile = "/home/fake/CODAR/pictures/$yr\/$mon\/$mon\_$dy\_$hr\:00:00.jpg";
open VERYFILE,"< $veryfile"  or $suc = 1;
if ( $suc ) {
print "<font size=6><b><blink>Image does not exist for $mon $dy $yr $hr\:00:00!</blink></b></font></center>";
}
else {
print <<EOFF;
<img SRC="http://nopp.dms.uconn.edu/CODAR/pictures/$yr\/$mon\/$mon\_$dy\_$hr\:00:00.jpg"  align=CENTER>
<p><a href="http://nopp.dms.uconn.edu/CODAR/data_download.html">Download Data</a>&nbsp|&nbsp<a href="README.html" target="main">Data Format</a>&nbsp|&nbsp<a href="README2.html" target="main">Plotting Package</a>
</center></body></html>
EOFF
}
}


# Closing code
print <<HEEFF;

</td><td height="80"></td>
			<tr height="20">
				<td colspan="5" height="20">
					<center>
						<hr noshade width="100%">
					</center>
				</td>
				<td height="20"></td>
			</tr>
<tr height="47">
				<td height="47" width="166">
					<center>
						<a href="/CODAR/faq.html">Frequently Ask Questions</a></center>
				</td>
				<td height="47" width="42"><img src="/images/nopp_btn.gif" border="0" height="47" width="42" align="LEFT"></td>
				<td height="47" width="209">
					<center>
						<a href="http://www.codaros.com" target="new">CODAR&nbsp;Ocean Sensors Home</a></center>
				</td>
				<td height="47" width="48"><img src="/images/nopp_btn.gif" border="0" height="47" width="42" align="LEFT"></td>
				<td height="47" width="137">
					<div align="left">
						<a href="/CODAR/codar.pl.cgi">CODAR&nbsp;Data</a></div>
				</td>
				<td height="47"></td>
			</tr>
			<tr height="19">
				<td colspan="5" height="19">
					<center>
						<hr noshade width="100%">
					</center>
				</td>
				<td height="19"></td>
			</tr>
                   
</table>
<font size="2"><i>Please send comments to:</i> <a href="mailto:fake.t\@uconn.edu">fake.t\@uconn.edu</a><br></font>
<br>&nbsp;
	<center>
	<img src="http://nopp.dms.uconn.edu/counter/counter.pl.cgi" align=abscenter><font size="1">visitors since Nov. 16 2000</font>

	</center>
HEEFF


# Saves data that allows time to be changed for previous months and not just current month
open(MYOUTFILE, ">dayinfo"); #open for write, overwrite
if ( $FORM{'MONTH'} ) {
   if ( $dayinfo[1] =~ $mon ) { 
     print MYOUTFILE "$dy\n";
     print MYOUTFILE "$mon";
     close(MYOUTFILE);
   }
   else {
     print MYOUTFILE "$dy\n";
     print MYOUTFILE "$dayinfo[1]";
     close(MYOUTFILE);
   }
}
else { print MYOUTFILE "$dy\n"; 
   if ( $FORMY{'Mon1'} ) { 
     print MYOUTFILE "$FORMY{'Mon1'}"; 
   }
   elsif ( $FORMY{'Mon2'} ) { 
     print MYOUTFILE "$FORMY{'Mon2'}"; 
   }
   elsif ( $FORMY{'Mon'} ) { 
     print MYOUTFILE "$FORMY{'Mon'}"; 
   }
   else {
     print MYOUTFILE "$mon";
   }
   close(MYOUTFILE);
}


# Save hour data for handling submit button when month changes but not hour
open(HOUROUT, ">hrinfo"); #open for write, overwrite
print HOUROUT "$hr";
close(HOUROUT)





