#! /usr/bin/perl

use strict;
use XML::DOM;
use dutil;

&main(@ARGV);

sub main {
    my $in_file = shift;

    my $parser = new XML::DOM::Parser;

    &parse_one_month($parser, $in_file);
}

sub parse_one_month {
    my ($parser, $file) = @_;

    my $doc = $parser->parsefile ($file);
    
    my $root = $doc->getDocumentElement();
    
    my $year = $root->getAttribute("year");
    my $month = $root->getAttribute("month");

    my $nav_anchor = '';
    $nav_anchor .= &create_navbar($year, $month-1, "前月");
    $nav_anchor .= &create_navbar($year, $month+1, "翌月");
    my $title = sprintf "日誌 - %04d/%02d", $year, $month;
    &print_header($title, $nav_anchor);
    printf "<h1>%s</h1>\n", $title;

    foreach my $day (sort bymday $root->getElementsByTagName("day")) {
	my $mday = $day->getAttribute("mday");
	if ($day->getAttribute("from") > 0) {
	    printf("<h2%s><a name=\"%02d\">%d/%d - %d</a></h2>\n",
		   &getclass($year, $month, $mday,
			     $day->getAttribute("class")), $mday, $month,
		   $day->getAttribute("from"),
		   $day->getAttribute("to"));
	} else {
	    printf("<h2%s><a name=\"%02d\">%d/%d</a></h2>\n",
		   &getclass($year, $month, $mday,
			     $day->getAttribute("class")), $mday, $month,
		   $mday);
	}
	print "  <ul>\n";
	my $idx = 1;
	foreach my $item ($day->getChildNodes) {
	    next if ($item->getNodeType != XML::DOM::ELEMENT_NODE ||
		     $item->getNodeName ne 'li');
	    my $nameval = sprintf "%02d-%02d", $mday, $idx++;

	    my $text = $doc->createTextNode(".");
	    my $name = $doc->createElement("a");
	    $name->setAttribute("name", $nameval);
	    $name->setAttribute("href", "#$nameval");
	    $name->appendChild($text);
	    $item->insertBefore($name, $item->getFirstChild);
	    my $val = $item->toString();
	    printf "  %s\n", $val;
	}
	print "  </ul>\n";
    }

    &print_footer($nav_anchor);
}

sub print_header {
    my ($title, $nav_anchor) = @_;

    print <<"HEAD";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
<html lang="ja">
<head>
  <link rev="MADE" href="mailto:AE5T-KSN\@asahi-net.or.jp">
  <link rel="INDEX" href="./">
  <link rel="StyleSheet" href="d.css">
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-2022-JP">
  <meta http-equiv="Content-Style-Type" content="text/css">
  <title>$title</title>
</head>
<body>
<p class="note">[<a href="../d.html">現在</a>][<a href="./">過去</a>]${nav_anchor}</p>
HEAD
}

sub print_footer {
    my $nav_anchor = shift;

    print <<"FOOT";
<p class="note">[<a href="../d.html">現在</a>][<a href="./">過去</a>]${nav_anchor}</p>
</body>
</html>
FOOT
}

sub create_navbar {
    my ($year, $month, $val) = @_;
    if ($month < 1) {
	$year--;
	$month = 12;
    } elsif ($month > 12) {
	$year++;
	$month = 1;
    }

    my $file = sprintf "%04d%02d", $year, $month;
    return (-e "${file}.xml") ? "[<a href=\"${file}.html\">$val</a>]" : '';
}

sub bymday {
    return $a->getAttribute("mday") <=> $b->getAttribute("mday");
}

# end of script
# Local Variables:
# mode:perl-mode
# coding:utf-8
# End:
