#-*-mode: Perl; perl-continued-statement-offset: 2; perl-indent-level: 2;-*-

#Add the name of the subroutines to the hash of functions
#with the number of days from today the comic is available
$hof{"fae"} = 14;

# http://www.frankandernest.com/images/archive/72/721106.gif
sub fae {
  my $time = shift(@_);
  my @ltime = gmtime($time);
  my (%exists, %missing);

  # List of existing entries (before 1992)
  $exists{"1972"}{"11"} = [6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 21, 25, 30];
  $exists{"1972"}{"12"} = [6, 13, 15];
  $exists{"1973"}{"01"} = [3, 4, 11, 18, 19, 31];
  $exists{"1973"}{"02"} = [8, 9, 15, 21];
  $exists{"1973"}{"03"} = [8, 14, 23];
  $exists{"1973"}{"04"} = [4, 10, 13, 24, 30];
  $exists{"1973"}{"05"} = [4, 10, 16, 24];
  $exists{"1973"}{"06"} = [5, 12, 15, 20, 28];
  $exists{"1973"}{"07"} = [3, 13, 18, 19, 25, 31];
  $exists{"1973"}{"08"} = [10, 21, 29, 31];
  $exists{"1973"}{"09"} = [5, 6, 18, 21];
  $exists{"1973"}{"10"} = [4, 10, 16, 19];
  $exists{"1973"}{"11"} = [6, 8, 15, 16, 23];
  $exists{"1973"}{"12"} = [4, 12, 18];
  $exists{"1974"}{"01"} = [2, 9, 11, 15, 18, 28];
  $exists{"1974"}{"02"} = [1, 11, 15, 22, 28];
  $exists{"1974"}{"03"} = [5, 12, 21, 25];
  $exists{"1974"}{"04"} = [2, 10, 17, 25, 26, 30];
  $exists{"1974"}{"05"} = [7, 8, 10, 18, 24];
  $exists{"1974"}{"06"} = [6, 13, 19, 20, 21];
  $exists{"1974"}{"07"} = [4, 12];
  $exists{"1974"}{"10"} = [11, 31];
  $exists{"1974"}{"11"} = [20, 25];
  $exists{"1974"}{"12"} = [19];
  $exists{"1975"}{"03"} = [21];
  $exists{"1975"}{"04"} = [2, 15, 26];
  $exists{"1975"}{"05"} = [30];
  $exists{"1975"}{"06"} = [9, 11, 19, 24, 27];
  $exists{"1975"}{"07"} = [4, 9, 24];
  $exists{"1975"}{"08"} = [8];
  $exists{"1975"}{"09"} = [26];
  $exists{"1975"}{"10"} = [13];
  $exists{"1975"}{"11"} = [5];
  $exists{"1975"}{"12"} = [24];
  $exists{"1976"}{"01"} = [24];
  $exists{"1976"}{"02"} = [26];
  $exists{"1976"}{"03"} = [15, 23, 30, 31];
  $exists{"1976"}{"04"} = [2];
  $exists{"1976"}{"07"} = [23, 27];
  $exists{"1976"}{"08"} = [25, 30];
  $exists{"1976"}{"09"} = [28];
  $exists{"1976"}{"10"} = [25];
  $exists{"1976"}{"11"} = [25];
  $exists{"1976"}{"12"} = [21, 22];
  $exists{"1977"}{"01"} = [6, 13, 24];
  $exists{"1977"}{"02"} = [2, 5, 15, 22];
  $exists{"1977"}{"03"} = [1, 4, 15, 17, 28, 31];
  $exists{"1977"}{"04"} = [6, 14, 21, 26];
  $exists{"1977"}{"05"} = [3, 9, 12, 25, 30];
  $exists{"1977"}{"06"} = [8, 15, 21, 25];
  $exists{"1977"}{"07"} = [4, 13, 14, 26, 29];
  $exists{"1977"}{"08"} = [10, 16, 23, 24, 29];
  $exists{"1977"}{"09"} = [5, 12, 17, 27];
  $exists{"1977"}{"10"} = [4, 8, 19, 25, 27, 31];
  $exists{"1977"}{"11"} = [8, 10, 19, 29];
  $exists{"1977"}{"12"} = [2, 14, 23, 27, 30];
  $exists{"1978"}{"01"} = [5, 6, 10, 18, 20, 26];
  $exists{"1978"}{"02"} = [8, 11, 20, 24];
  $exists{"1978"}{"03"} = [1, 2, 14, 18, 27];
  $exists{"1978"}{"04"} = [4, 6, 17, 24, 28];
  $exists{"1978"}{"05"} = [8, 9, 13, 22];
  $exists{"1978"}{"06"} = [7, 9, 14, 15, 23];
  $exists{"1978"}{"07"} = [1, 12, 13, 24];
  $exists{"1978"}{"08"} = [2, 11, 18, 28];
  $exists{"1978"}{"09"} = [1, 11, 14, 21];
  $exists{"1978"}{"10"} = [2, 7, 18, 21, 28];
  $exists{"1978"}{"11"} = [3, 7, 13, 21, 28];
  $exists{"1978"}{"12"} = [6, 7, 13, 18, 26, 29];
  $exists{"1979"}{"01"} = [4, 16, 19, 29];
  $exists{"1979"}{"02"} = [6, 10, 21, 28];
  $exists{"1979"}{"03"} = [1, 8, 9, 15, 27, 30];
  $exists{"1979"}{"04"} = [10, 13, 23];
  $exists{"1979"}{"05"} = [2, 7, 11, 14, 22, 28];
  $exists{"1979"}{"06"} = [4, 9, 16, 19, 27];
  $exists{"1979"}{"07"} = [13];
  $exists{"1979"}{"08"} = [23];
  $exists{"1979"}{"09"} = [4, 18, 22];
  $exists{"1979"}{"10"} = [31];
  $exists{"1979"}{"11"} = [20, 22];
  $exists{"1980"}{"02"} = [7, 29];
  $exists{"1980"}{"03"} = [27];
  $exists{"1980"}{"11"} = [27];
  $exists{"1980"}{"12"} = [13, 24];
  $exists{"1981"}{"01"} = [25];
  $exists{"1981"}{"02"} = [5];
  $exists{"1981"}{"03"} = [5, 17];
  $exists{"1981"}{"04"} = [7];
  $exists{"1981"}{"05"} = [8];
  $exists{"1981"}{"06"} = [3, 13];
  $exists{"1981"}{"07"} = [4, 31];
  $exists{"1981"}{"08"} = [6];
  $exists{"1981"}{"09"} = [10, 25];
  $exists{"1981"}{"11"} = [26];
  $exists{"1981"}{"12"} = [10, 19, 24, 25];
  $exists{"1982"}{"01"} = [11, 14, 20, 30];
  $exists{"1982"}{"02"} = [8, 15, 22, 27];
  $exists{"1982"}{"03"} = [6, 11, 22, 29];
  $exists{"1982"}{"04"} = [5, 8, 13, 24];
  $exists{"1982"}{"05"} = [3, 7, 17, 20, 29];
  $exists{"1982"}{"06"} = [7, 10, 12, 16, 28, 29];
  $exists{"1982"}{"07"} = [6, 10, 19, 27, 30];
  $exists{"1982"}{"08"} = [4, 14, 18, 21, 30];
  $exists{"1982"}{"09"} = [2, 4, 11, 20, 27, 30];
  $exists{"1982"}{"10"} = [5, 12, 16, 21, 26];
  $exists{"1982"}{"11"} = [2, 9, 16, 23, 26, 27];
  $exists{"1982"}{"12"} = [2, 9, 17, 24, 25, 29];
  $exists{"1983"}{"01"} = [3, 5, 12, 25, 26];
  $exists{"1983"}{"02"} = [8, 15, 16];
  $exists{"1983"}{"03"} = [2, 9, 15, 24, 31];
  $exists{"1983"}{"04"} = [8, 14, 20, 27, 29];
  $exists{"1983"}{"05"} = [3, 7, 9, 12, 14, 21];
  $exists{"1983"}{"06"} = [6, 11, 13, 14, 18, 21, 22, 24, 25, 30];
  $exists{"1983"}{"07"} = [5, 9, 14, 16, 23, 29];
  $exists{"1983"}{"08"} = [10, 11, 13, 15, 16, 19, 22, 23, 26, 27, 31];
  $exists{"1983"}{"09"} = [10, 20, 21, 30];
  $exists{"1983"}{"10"} = [8, 14, 25, 26];
  $exists{"1983"}{"11"} = [4, 7, 8, 11, 18, 25, 30];
  $exists{"1983"}{"12"} = [1, 9, 16];
  $exists{"1984"}{"01"} = [1, 3, 6, 14, 18, 27];
  $exists{"1984"}{"02"} = [2, 13, 14, 18, 27];
  $exists{"1984"}{"03"} = [2, 14, 15, 20, 21, 22, 28];
  $exists{"1984"}{"04"} = [2, 7, 18, 26, 30];
  $exists{"1984"}{"05"} = [8, 12, 13, 22, 28, 29, 30];
  $exists{"1984"}{"06"} = [6, 8, 13, 14, 18, 19, 22, 25, 26];
  $exists{"1984"}{"08"} = [20, 30];
  $exists{"1984"}{"10"} = [9];
  $exists{"1984"}{"11"} = [22];
  $exists{"1984"}{"12"} = [8];
  $exists{"1985"}{"01"} = [1, 3, 9, 22];
  $exists{"1985"}{"02"} = [4, 5, 13];
  $exists{"1985"}{"03"} = [1, 4, 12, 13, 25, 26, 30];
  $exists{"1985"}{"04"} = [3, 10, 19];
  $exists{"1985"}{"05"} = [11];
  $exists{"1985"}{"06"} = [19];
  $exists{"1985"}{"07"} = [19, 27, 29, 31];
  $exists{"1985"}{"08"} = [5, 27];
  $exists{"1985"}{"09"} = [30];
  $exists{"1985"}{"10"} = [15, 28, 29];
  $exists{"1985"}{"11"} = [2, 5, 20, 26, 27, 28];
  $exists{"1985"}{"12"} = [2, 21];
  $exists{"1986"}{"01"} = [4, 9, 23, 25];
  $exists{"1986"}{"02"} = [24];
  $exists{"1986"}{"03"} = [1, 4, 15];
  $exists{"1986"}{"04"} = [2, 8];
  $exists{"1986"}{"05"} = [20];
  $exists{"1986"}{"06"} = [9, 14];
  $exists{"1986"}{"07"} = [1, 14, 16, 19, 24];
  $exists{"1986"}{"08"} = [1, 06];
  $exists{"1986"}{"09"} = [1, 6, 19];
  $exists{"1986"}{"10"} = [13, 17, 18];
  $exists{"1986"}{"11"} = [8];
  $exists{"1986"}{"12"} = [11, 24, 25];
  $exists{"1987"}{"01"} = [7, 14, 20];
  $exists{"1987"}{"02"} = [2, 5, 10, 23, 24];
  $exists{"1987"}{"03"} = [3, 5, 16, 19, 23, 25, 30];
  $exists{"1987"}{"04"} = [1, 10, 13, 15, 21, 23];
  $exists{"1987"}{"05"} = [4, 6, 7, 8, 12, 20, 26];
  $exists{"1987"}{"06"} = [1, 8, 9, 18, 20, 22, 27];
  $exists{"1987"}{"07"} = [4, 8, 17, 27];
  $exists{"1987"}{"08"} = [1, 6, 13, 19, 20, 26];
  $exists{"1987"}{"09"} = [2, 8, 15, 24, 29];
  $exists{"1987"}{"10"} = [3, 8, 19, 21, 28];
  $exists{"1987"}{"11"} = [4, 7, 14, 16, 21, 25, 26];
  $exists{"1987"}{"12"} = [2, 5, 8, 18, 21, 24, 31];
  $exists{"1988"}{"01"} = [2, 8, 12, 18, 21];
  $exists{"1988"}{"02"} = [1, 8, 9, 18, 23, 25];
  $exists{"1988"}{"03"} = [2, 8, 15, 17, 28];
  $exists{"1988"}{"04"} = [5, 7, 16, 22, 30];
  $exists{"1988"}{"05"} = [3, 5, 16, 21];
  $exists{"1988"}{"06"} = [3, 11, 20, 21, 22, 23];
  $exists{"1988"}{"07"} = [1, 7, 19, 20, 28];
  $exists{"1988"}{"08"} = [11, 12, 23, 24, 31];
  $exists{"1988"}{"09"} = [10, 20, 27];
  $exists{"1988"}{"10"} = [4, 6, 18, 21, 27];
  $exists{"1988"}{"11"} = [2, 7, 8, 10, 17, 24, 28];
  $exists{"1988"}{"12"} = [1, 2, 7, 9, 20];
  $exists{"1989"}{"01"} = [3, 10, 14, 17, 18, 30];
  $exists{"1989"}{"02"} = [3, 8, 15, 16, 25, 28];
  $exists{"1989"}{"03"} = [1, 9, 15, 17, 22, 23, 30];
  $exists{"1989"}{"04"} = [7, 12, 21];
  $exists{"1989"}{"05"} = [2, 3, 9, 11, 12, 13, 17, 25, 30];
  $exists{"1989"}{"06"} = [1, 6, 12, 20, 26, 27];
  $exists{"1989"}{"07"} = [1, 4, 14];
  $exists{"1989"}{"09"} = [5, 25];
  $exists{"1989"}{"10"} = [10];
  $exists{"1989"}{"12"} = [28];
  $exists{"1990"}{"01"} = [6, 10, 19];
  $exists{"1990"}{"02"} = [7];
  $exists{"1990"}{"03"} = [14, 20];
  $exists{"1990"}{"04"} = [14];
  $exists{"1990"}{"06"} = [1, 8, 19];
  $exists{"1990"}{"07"} = [2, 05];
  $exists{"1990"}{"08"} = [3, 30, 31];
  $exists{"1990"}{"09"} = [24];
  $exists{"1990"}{"10"} = [4];
  $exists{"1991"}{"03"} = [21];
  $exists{"1991"}{"05"} = [1];
  $exists{"1991"}{"10"} = [1];
  $exists{"1991"}{"11"} = [8, 13, 20, 21];
  # List of missing entries (Starting in 1992)
  $missing{"1992"}{"08"} = [22];
  $missing{"1993"}{"01"} = [29];
  $missing{"1994"}{"08"} = [28];
  $missing{"1995"}{"02"} = [19];
  $missing{"1997"}{"10"} = [19, 22, 26];
  $missing{"1997"}{"11"} = [2, 9, 10, 16, 23];
  $missing{"1997"}{"12"} = [14, 20];
  $missing{"1998"}{"04"} = [12, 23, 24, 25];
  $missing{"1998"}{"11"} = [29];
  $missing{"1998"}{"12"} = [13, 20, 27];
  $missing{"1999"}{"01"} = [10, 17, 24, 31];
  $missing{"1999"}{"02"} = [7];
  $missing{"1999"}{"03"} = [21];

  my $mday = $ltime[3];
  my $mon  = strftime("%m", @ltime);
  my $year = strftime("%Y", @ltime);
  my $date = strftime("%Y%m%d",@ltime);

  my $ext = "gif";
  # "GIF" extension on Dec 21st 1976
  $ext = "GIF" if $date == 19761221;;
  # "gIf" extension on Aug 11 1997
  $ext = "gIf" if $date == 19970811;

  if ($year < 1992) {
    return undef if (! exists $exists{$year}{$mon});
    return undef if (! grep /^$mday$/, @{$exists{$year}{$mon}});
  } elsif (exists $missing{$year}{$mon}) {
    return undef if (grep /^$mday$/, @{$missing{$year}{$mon}});
  }

  my $rec = {
    'title' => "Frank and Ernest",
    'author' => "Bob Thaves",
    'type' => 'gif',
    'main' => "http://www.frankandernest.com/",
    'archives' => "http://www.frankandernest.com/view/",
    'base' => "http://www.frankandernest.com/",
    'size' => ($ltime[6] == 0? [725,400] : [600,200]),
    };

  if ($ltime[5] < 100) {
    $rec->{'page'} = strftime("images/archive/%y/%y%m%d.$ext", @ltime);
  } else {
    my $year = strftime("%y", @ltime) + 100;
    if ($ltime[6] == 0) {
      $rec->{'page'} = strftime("view/images/$year%m%dsc.$ext", @ltime);
    } else {
      $rec->{'page'} = strftime("images/archive/$year/$year%m%d.$ext", @ltime);
    }
  }

  return $rec;
}

1;  
