#!/usr/bin/perl
#

use FCGI;

srand;

REQUEST:
while(FCGI::accept() >= 0) 
{
	$id = "";
	%FORM = ();

	&getdata;

	if ($ENV{'QUERY_STRING'} =~ /^(\w+)$/)
	{
		$id = lc($1);
	}
	elsif ($ENV{'PATH_INFO'}  =~ /^\/(\w+)$/)
	{
		$id = lc($1);
	}
	else
	{
		$id = $FORM{'id'} || $ARGV[0];
	}

	unless ($id)
	{
		print "Location: http://www.freevote.com/\n\n";
		next REQUEST;
	}

	print "Location: http://www.freevote.com/booth/$id\n\n";

}

sub getdata 
{
	my $buffer;
	if ($ENV{'REQUEST_METHOD'} eq 'POST') {
	    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
	} else {
#		$buffer = $ENV{'QUERY_STRING'};
	}

	# Split the name-value pairs
	my $pair;
    my @pairs = split(/&/, $buffer);
    foreach $pair (@pairs)
    {
        ($name, $value) = split(/=/, $pair);

        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $name =~ tr/+/ /;
        $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        if ($FORM{$name}) {$FORM{$name} .= ", $value";}
		else {$FORM{$name} = $value;}
    }
}