#week <datum>|<weeknummer> (was|is)
use utf8;
use Date::Calc;                     #om weeknummers uit te rekenen
sub week
{
    my ($msg) = @_; my ($week);

    my ($second, $minute, $hour, $day, $month, $year, $weekday) = localtime(time);
    $month++; $year+=1900; #rare Perl
    ($week, $year) = Date::Calc::Week_of_Year($year, $month, $day);

    if ($msg =~ m/^(\d{4})-(\d{2})-(\d{2})$/)
    {
        my ($week, $year);
        eval
        { ($week, $year) = Date::Calc::Week_of_Year($1, $2, $3); };
        if ($@)
        { return "Datum niet herkend!"; }
        return "Op $msg is het week $week.";
    }
    elsif ($msg =~ m/^(\d+)/i)
    {
        if ($1 < $week)
        {
            my $verb = 'was';
            if (index($msg, 'was') == -1)
            { $year++; $verb = 'is'; }
            ($year, $month, $day) = Date::Calc::Monday_of_Week($1, $year);
            return sprintf("Week %s %s de week van maandag %04d-%02d-%02d.", $1, $verb, $year, $month, $day);
        }
        elsif ($1 == $week)
        { return "Het is nu week $week."; }
        elsif ($1 > $week)
        {
            my $verb = 'is'; 
            if (index($msg, 'was') != -1)
            { $year--; $verb = 'was'; }
            ($year, $month, $day) = Date::Calc::Monday_of_Week($1, $year);
            return sprintf("Week %s %s de week van maandag %04d-%02d-%02d.", $1, $verb, $year, $month, $day);
        }
    }
    return "Het is nu week $week.";
}

sub week_help
{
    my $return;
    $return  = "Toon het weeknummer: week <datum>|<weeknummer> (was|is)\n";
    $return .= "Bv.: week 2007-04-23 -> toon het weeknummer van 23 april 2007\n";
    $return .= "Bv.: week 15 was -> toon de maandag van de laatste week 15\n";
    $return .= "Bv.: week 26 is -> toon de maandag van de volgende week 26\n";
    return $return;
}

1;
