#!/usr/bin/perl
##############################################################################
# Countdown                     Version 1.21                                 #
# Copyright 1996 Matt Wright    mattw@worldwidemart.com                      #
# Created 9/1/95                Last Modified 10/8/95                        #
# Scripts Archive at:           http://www.worldwidemart.com/scripts/        #
##############################################################################
# COPYRIGHT NOTICE                                                           #
# Copyright 1996 Matthew M. Wright  All Rights Reserved.                     #
#                                                                            #
# Countdown may be used and modified free of charge by anyone so long as     #
# this copyright notice and the comments above remain intact.  By using this #
# code you agree to indemnify Matthew M. Wright from any liability that      #  
# might arise from it's use.                                                 #  
#                                                                            #
# Selling the code for this program without prior written consent is         #
# expressly forbidden.  In other words, please ask first before you try and  #
# make money off of my program.                                              #
#                                                                            #
# Obtain permission before redistributing this software over the Internet or #
# in any other medium.	In all cases copyright and header must remain intact.#
##############################################################################
# Define Variables

# @from_date = (yyyy,mm,dd,hh,mm,ss);
# Which means: (year,month,day,hour,minute,second)
@from_date = (2000,1,1,0,0,0);

# Done
##############################################################################

$ENV{'QUERY_STRING'} =~ s/%2C/,/g;
$ENV{'QUERY_STRING'} =~ s/=//g;

if ($ENV{'QUERY_STRING'}) {
   @from_date = split(/,/, $ENV{'QUERY_STRING'});
}

# Define when various things occur, different dates, etc...
&define_dates;

# Calculate the Differences in the two dates
&calc_dates;

# Make Sure we don't get negative times.. That's not cool...
&no_negative;

# Top of HTML Page Information
&html_header;

# We don't want it to say 1 Years, now, do we?  Of course not!
&proper_english;

# End of HTML Page Information
&html_trailer;

#####################################
# Subroutines

sub define_dates {
   ($f_year,$f_month,$f_day,$f_hour,$f_minute,$f_second) = @from_date;

   ($second,$minute,$hour,$day,$month,$year,$wday,$yday,$isdst) = localtime(time);

   $year ="19$year";

   &leap_year_check;

   @months = ("XX","January","February","March","April","May","June","July",
              "August","September","October","November","December");

   @days = ("XX","1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th",
            "11th","12th","13th","14th","15th","16th","17th","18th","19th",
            "20th","21st","22nd","23rd","24th","25th","26th","27th","28th",
            "29th","30th","31st");

   @days_in_month = (31,$feb_days,31,30,31,30,31,31,30,31,30,31);

   $date_term = "$months[$f_month] $days[$f_day]";

   unless ($f_year eq 'XX') {
      $date_term = "$date_term, $f_year";
   }
   unless ($f_hour eq 'XX') {
      $date_term = "$date_term $f_hour";
   }
   unless ($f_minute eq 'XX') {
      if ($f_minute < 10) {
         $date_term = "$date_term:0$f_minute";
      }
      else {
         $date_term = "$date_term:$f_minute";
      }
   }
   unless ($f_second eq 'XX') {
      if ($f_second < 10) {
         $date_term = "$date_term:0$f_second";
      }
      else {
         $date_term = "$date_term:$f_second";
      }
   }

   $current_date = "$months[($month + 1)] $days[$day], $year $hour";
   if ($minute < 10) {
      $current_date = "$current_date:0$minute";
   }
   else {
      $current_date = "$current_date:$minute";
   }
   if ($second < 10) {
      $current_date = "$current_date:0$second";
   }
   else {
      $current_date = "$current_date:$second";
   }

}

sub leap_year_check {
   $yeardiv = ($year / 4);
   $yearint = int($yeardiv);
   $yeardiv1 = ($year / 100);
   $yearint1 = int($yeardiv1);

   if ($yeardiv eq $yearint && $yeardiv1 ne $yearint1) {
      $feb_days = "28";
   }
   else {
      $feb_days = "29";
   }
}

sub calc_dates {
   $real_year = ($f_year - $year);
   $real_month = (($f_month - 1) - $month);
   $real_day = ($f_day - $day);
   $real_hour = ($f_hour - $hour);
   $real_minute = ($f_minute - $minute);
   $real_second = ($f_second - $second);
}

sub no_negative {
   if ($real_second < 0) {
      $real_second = ($real_second + 60);
      $real_minute--;
   }

   if ($real_minute < 0) {
      $real_minute = ($real_minute + 60);
      $real_hour--;
   }

   if ($real_hour < 0) {
      $real_hour = ($real_hour + 24);
      $real_day--;
   }

   if ($real_day < 0) {
     $real_day = ($real_day + @days_in_month[$month]);
      $real_month--;
   }

   if ($real_month < 0) {
      $real_month = ($real_month + 12);
      $real_year--;
   }
}

sub proper_english {
   unless ($f_year eq 'XX') {
      if ($real_year eq '1') {
         print "$real_year Year
\n"; } else { print "$real_year Years
\n"; } } unless ($f_month eq 'XX') { if ($real_month eq '1') { print "$real_month Month
\n"; } else { print "$real_month Months
\n"; } } unless ($f_day eq 'XX') { if ($real_day eq '1') { print "$real_day Day
\n"; } else { print "$real_day Days
\n"; } } unless ($f_hour eq 'XX') { if ($real_hour eq '1') { print "$real_hour Hour
\n"; } else { print "$real_hour Hours
\n"; } } unless ($f_minute eq 'XX') { if ($real_minute eq '1') { print "$real_minute Minute
\n"; } else { print "$real_minute Minutes
\n"; } } unless ($f_second eq 'XX') { if ($real_second eq '1') { print "$real_second Second
\n"; } else { print "$real_second Seconds
\n"; } } } sub html_header { print "Content-type: text/html\n\n"; print "Countdown to: $date_term\n"; print "

Countdown to: $date_term

\n"; print "
\n"; } sub html_trailer { print "
\n"; print "It is currently $current_date\n"; print "
\n"; print "\n"; }