#!/usr/bin/perl
use lib '.';
require "pagelib.pl";

header();
head();
print "<br>\n";
#print "Content-type: text/html\n\n";
#print "<html><body>\n";
print "<table border=1>\n";
print "<tr>\n";
print "<td><b>Set Number</b></td>\n";
print "<td><b>Description</b></td>\n";
print "<td><b>Pieces</b></td>\n";
print "<td><b>Tot Pieces</b></td>\n";
print "<td><b>Minifigs</b></td>\n";
print "<td><b>Quantity</b></td>\n";
print "<td><b>Set Theme</b></td>\n";
print "<td><b>Subtheme (minifig count)</b></td>\n";
if(open(SETF,"/home/dave/lego/mysets/sets2.txt")) {
    while(<SETF>) {
#	next unless /castle/i;
	if(!/^\#/) {
	    if(/^([\dA-Z\?]+)\t+/) {
		chomp;
		s/\n//g;
		$num = $1;
		s/\"//g;
		@dat = split /\t+/;

		if($dat[1] !~ /\w/) {
		    push @warnings,"Strange description for id $dat[0]: \"$dat[1]\"";
		}
		if($dat[2] !~ /^-?\d+/) {
		    push @warnings,"Invalid piece count for id $dat[0] ($dat[1]): \"$dat[2]\"";
		}
		if($dat[3] !~ /^-?\d+/) {
		    push @warnings,"Invalid fig count for id $dat[0] ($dat[1]): \"$dat[3]\"";
		}
		if($dat[4] !~ /^\d+/) {
		    push @warnings,"Invalid quantity for id $dat[0] ($dat[1]): \"$dat[4]\"";
		}
		if($dat[5] !~ /\w/) {
		    push @warnings,"Strange theme for id $dat[0] ($dat[1]): \"$dat[5]\"";
		}
		if($dat[6] =~ /./ && $dat[6] !~ /\w/) {
		    push @warnings,"Strange subtheme for id $dat[0] ($dat[1]): \"$dat[6]\"";
		}
		if($dat[6] =~ /,/ && $dat[6] !~ /^([A-Za-z0-9\'\:\ \-.]+ \(\d+\),? ?)*$/) {
		    push @warnings,"Illegal subtheme for id $dat[0] ($dat[1]): \"$dat[6]\"";
		}

		print "<tr>\n";
		if($dat[0] =~ /^\d+$/) {
		    print "<td><a href=\"http://guide.lugnet.com/set/$dat[0]\">$dat[0]</a>\n";
		    #print "&nbsp;(<a href=\"http://www.brickset.com/search.asp?Set=$dat[0]\">BrickSet</a>)";
		    print "</td>\n";
		}
		else {
		    print "<td>$dat[0]</td>\n";
		}
		shift @dat;
		for($i=0; $i<=5; $i++) {
		    print "<td";
		    if($i == 1 && $dat[$i] !~ /^\d+$/) {
			print " bgcolor=#FF9090"; #if pieces is a non-number
		    }
		    if($i == 2 && $dat[$i] !~ /^\d+$/) {
			print " bgcolor=#90FF90"; #if figs is a non-number
		    }
		    if($i == 3 && ($dat[$i] !~ /^\d+$/ || $dat[$i] == 0)) { #if quantity is a non number, or is 0
			print " bgcolor=#9090FF";
		    }
		    if($i == 4 && $dat[$i] =~ /[A-Z]/) {
			print " bgcolor=#FFFF90"; #theme should be in lower case
		    }
		    if($i == 5 && $dat[$i] =~ /,/) {
			my($tot) = 0;
			my($figs) = $dat[$i];
			$figs =~ s/\"+//g;
			while($figs =~ s/^,?([^,]+),?//) {
			    my($sub) = $1;
			    if($sub =~ /^[A-Za-z \'\-\:\-0-9]*\s*\((\d+)\)\s*$/) { $tot += $1; }
			    else { print " bgcolor=#FFC0FF"; }
			}
			if($tot != $dat[2]) {
			    print " bgcolor=#FFC0C0";
			    push @warnings,"Fig count does not match subtheme fig count for $dat[0] ($dat[1])";
			}
		    } elsif($i == 5 && $dat[$i] =~ /^\s*$/ && $dat[2] > 0) {
			print " bgcolor=#FFC0C0";
		    }
		    if($dat[$i] =~ /^\s*$/) {
			print ">&nbsp;</td>\n";
		    } else {
			print ">$dat[$i]</td>\n";
		    }
		    if($i == 1) {
			print "<td><b>".($dat[$i]*$dat[3])."</b></td>";
		    }
		}
		print "</tr>\n";
	    } else {
		push @warnings,"Extra line: $_";
	    }
	}
    }
    close SETF;
}
print "</table>\n";
#print "</body></html>\n";

foreach my $warn (@warnings) {
    print "$warn<br>\n";
}

foot();





