#!/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";
}