#!/usr/bin/perl

#Written by Adam Arakelian and Boris Volf
#Usage:
#      Install in Perl/lib/
#      In Script at head type: Use DateValidate qw(DateValidate);
#      To Call:  DateValidate($date);
#DateValidate.pm

package DateValidate;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw();
@EXPORT_OK = qw(DateValidate);

sub DateValidate {
($date_validate) = @_;


$slash_count = ($date_validate =~ tr/\///);
if ($slash_count != 2) {
$slash_date_err = "false";
$url = "$ENV{'HTTP_REFERER'}";
print "location: $url\n\n";
exit;
}

@date_arry = "$date_validate";
foreach $i (@date_arry){
chomp($i);
($date_month,$date_day,$date_year) = split(/\//, $i);
}

$length_month = length($date_month);

$length_day = length($date_day);

$length_year = length($date_year);


if (($date_month >= 1) and ($date_month <= 12)) {
    if ((($date_month == 4) or ($date_month == 6) or ($date_month == 9) or ($date_month == 11)) and (($date_day == 31))){
        $month_too_many_days_date_err = "false";
        $url = "$ENV{'HTTP_REFERER'}";
        print "location: $url\n\n";
        exit;

}elsif (($date_month >= 1) and ($date_month <= 9)) {
       $date_month = '0'.$date_month;
   }

}elsif (($date_month > 12) or ($date_month == 0)) {

        $month_greater_date_err = "false";
        $url = "$ENV{'HTTP_REFERER'}";
        print "location: $url\n\n";
        exit;
}


if (($date_day >= 1) and ($date_day <= 31)) {
   if ($length_day == 1) {
       $date_day = '0'.$date_day;

   }

}else{
        $day_out_range_date_err = "false";
        $url = "$ENV{'HTTP_REFERER'}";
        print "location: $url\n\n";
        exit;
}

if (($length_year != 2) and ($length_year != 4)) {

        $year_date_err = "false";
        $url = "$ENV{'HTTP_REFERER'}";
        print "location: $url\n\n";
        exit;

  }elsif (($length_year ==  2) and ($date_year > 50)) {
          $date_year = '19'.$date_year;

}elsif ($date_year eq '00') {
          $date_year = '20'.$date_year;

}elsif ($date_year eq '0000') {
        $invalid_year_date_err = "false";
        $url = "$ENV{'HTTP_REFERER'}";
        print "location: $url\n\n";
        exit;
}

if (($date_month == 2) and ($date_day > 29)) {
         $leap_year_date_err = "false";
         $url = "$ENV{'HTTP_REFERER'}";
         print "location: $url\n\n";
         exit;

}elsif (($date_month == 2) and ($date_year % 4) and ($date_year % 100 or $date_year % 400)){

        $invalid_leap_date_err = "false";
        $url = "$ENV{'HTTP_REFERER'}";
        print "location: $url\n\n";
        exit;
   }

}