#!/usr/athena/bin/perl

print("Content-Type: text/html\n\n");

$query = $ENV{'QUERY_STRING'};
&gen_coollist($query);

sub gen_coollist {
	local($request) = @_;
	local($cooldata) = "/var/local/www/cool/cooldata";

	print("<h1>Coolest stuff on the web</h1>\n<ol>");


	open(COOLD, $cooldata);
	while(<COOLD>){
		($url, $total, $n, @name) = split;
		next unless $n;
		$name = join(' ', @name);
		$avg = $total/$n;
		printf("<li><a href=\"$url\">$name</a> (rating %.1f) <a href=\"http://www.mit.edu:8001/takevote?$url\">Rate this document</a>\n", $avg);
	}
	print("</ol>\n");
	close(COOLD);
}

sub take_vote {
	local($request) = @_;

	print("Please rate <a href=\"$request\">this document.</a>\n");
	print("<form action=\"http://www.mit.edu:8001/dovote\">\n");
	print("Rating of <select name=\"vote\">\n");
	for $n (1..10){
		print("<option>$n\n");
	}
	print("</select>\n on document <select name=\"url\"><option>$request\n</select><input type=submit></form>\n");

}

sub do_vote {
	local($request) = @_;
	local($cooldata) = "/var/local/www/cool/cooldata";

	$request =~ /vote=([^&]+)&url=(.+)/;
	$v = $1;
	$myurl = $2;

	$myurl =~ s/%([\da-f]{1,2})/pack(C,hex($1))/eig; # remove % escapes


	open(COOLD, $cooldata);
	while(<COOLD>){
		($url, $total, $n, @name) = split;
		next unless $n;
		$name = join(' ', @name);
		$avg = $total/$n;
		
		$name{$url} = $name;
		$total{$url} = $total;
		$num{$url} = $n;

		if($url eq $myurl){
			$total{$url} += $v;
			$num{$url}++;
		}
	}
	close(COOLD);
	@surls = sort byavg keys %name;
	unlink($cooldata);
	open(COOLD, ">>$cooldata");
	for $u (@surls){
		print(COOLD "$u $total{$u} $num{$u} $name{$u}\n");
	}
	close(COOLD);
	&gen_coollist();
}

sub do_nominate {
	
}

sub byavg { ($total{$b}/$num{$b}) <=> ($total{$a}/$num{$a}) }

1;
