#!/usr/bin/perl
use Data::Dumper;
require "../cgi-lib.pl";
require "../pagelib.pl";
header();
init();
head();
body();
foot();

sub body {
    print "<style>\n";
    print "a {\nfont-size: 11px;\n}\n";
    print ".FG {\nfont-size: 11px;\ncolor: blue;\n}\n";
    print ".FW {\nfont-size: 11px;\ncolor: green;\n}\n";
    print ".FL {\nfont-size: 11px;\ncolor: red;\n}\n";
    print ".FN {\nfont-size: 11px;\ncolor: black;\n}\n";
    print "</style>\n";
    if($params{gameid}) {
	
    } else {
	print "<table border=1>\n";
	print "<tr>\n";
	print "<th>#</th>\n";
	print "<th>Name</th>\n";
	print "<th>Date</th>\n";
	print "<th>Links</th>\n";
	print "<th>Location</th>\n";
	print "<th>Tek Level</th>\n";
	print "<th>Winner</th>\n";
	print "<th>Team(s)</th>\n";
	print "</tr>\n";
	foreach my $gameid (sort {$a <=> $b} (keys %games)) {
	    my($g) = $games{$gameid};
	    print "<tr valign=top>\n";
	    print "<td>$gameid</td>\n";
	    print "<td nowrap>$g->{name}</td>\n";
	    print "<td nowrap>".trans_date($g->{date})."</td>\n";
	    print "<td>";
	    foreach my $l (@{$g->{rules}}) { print "<a href=\"$l\">Rules</a><br>\n"; }
	    foreach my $l (@{$g->{images}}) { print "<a href=\"$l\">Images</a><br>\n"; }
	    foreach my $l (@{$g->{writeup}}) { print "<a href=\"$l\">Writeup</a><br>\n"; }
	    foreach my $l (@{$g->{media}}) { print "<a href=\"$l\">Media</a><br>\n"; }
	    foreach my $l (@{$g->{other}}) { print "<a href=\"$l\">Other</a><br>\n"; }
	    print "</td>\n";
	    print "<td>$g->{loc}</td>\n";
	    print "<td>$g->{tl}</td>\n";
	    print "<td>$g->{winner}</td>\n";
	    print "<td nowrap>";
	    if($g->{teams}{'G'}) {
		print "<font class='FG'>Game Master(s): ";
		print join(",",(map {$players{$_}{name}} (keys %{$g->{teams}{'G'}})));
		print "</font><br>\n";
	    }
	    foreach my $t (sort {$a <=> $b} (keys %{$g->{teams}})) {
		next if($t eq "G");
		if($t eq $g->{winner}) {
		    print "<font class='FW'>";
		} elsif($g->{winner} =~ /\d|G/) {
		    print "<font class='FL'>";
		} else {
		    print "<font class='FN'>";
		}
		print "Team $t: ";
		print join(",",(map {$players{$_}{name}} (keys %{$g->{teams}{$t}})));
		print "</font><br>\n";
	    }
	    print "</td>\n";
	    print "</tr>\n";
	}
	print "</table>\n";
	#print Dumper(\%games);
    }
}

sub init {
    ReadParse(*params);
    my $player_file = "players.txt";
    my $game_file = "games.txt";
    my $links_file = "links.txt";

    open(PF,$player_file);
    while(<PF>) {
        if(/^(\w+)\t+(.*\S)\s*$/) {
            $players{$1}{name} = $2;
        }
    }
    close PF;

    open(GF,$game_file);
    while(<GF>) {
        next if(/^\#/);
        if(!@fields && /\|/) {
            s/^\s+//;
            @fields = map { s/\s+//g; $_ } (split /\|/);
        } elsif(/\|/) {
            my @data = map { s/^\s+//; s/\s+$//; $_ } (split /\|/);
            for(my $i=0;$i<@fields;$i++) {
                if($fields[$i] eq "teams") {
                    my(@teams) = split/;/,$data[$i];
                    foreach my $t (@teams) {
                        if($t =~ /^([^:]+):(.*)$/) {
                            my $team = $1;
                            my @players = split /,/,$2;
                            foreach my $p (@players) {
                                $games{$data[0]}{teams}{$team}{$p} = 1;
                                $players{$p}{games}++;
                                next if($team eq "G");
                                if($games{$data[0]}{winner} eq $team) {
                                    if($games{$data[0]}{winner} ne "G") {
                                        $players{$p}{wins}++;
                                    }
                                } elsif($games{$data[0]}{winner} !~ /^(0|\s+|\-|\?)$/) {
                                    $players{$p}{losses}++;
                                }
                            }
                        }
                    }
                } else {
                    $games{$data[0]}{$fields[$i]} = $data[$i];
                }
            }
        }
    }
    close GF;

    open(LF,$links_file);
    while(<LF>) {
        next if(/^\#/);
	chomp;
	my($gameid,$type,$link) = split /\t/,$_;
	if($type eq "I") {
	    push @{$games{$gameid}{images}},$link;
	} elsif($type eq "W") {
	    push @{$games{$gameid}{writeup}},$link;
	} elsif($type eq "R") {
	    push @{$games{$gameid}{rules}},$link;
	} elsif($type eq "M") {
	    push @{$games{$gameid}{media}},$link;
	} else {
	    push @{$games{$gameid}{other}},$link; #????
	}
    }
    close LF;
}

sub trans_date {
    my($date) = @_;
    my($year,$mon,$day) = unpack("A4A2A2",$date);
    $mon--;
    $mon = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")[$mon];
    $day = int $day;
    if($day >= 4 && $day <= 20) { $day .= "th"; }
    elsif(substr($day,-1,1) eq "1") { $day .= "st"; }
    elsif(substr($day,-1,1) eq "2") { $day .= "nd"; }
    elsif(substr($day,-1,1) eq "3") { $day .= "rd"; }
    else {$day .= "th"; }
    return("$mon. $day $year");
}
