#! /usr/bin/perl

print "Content-type: text/html\n\n";

if ($ENV{"REQUEST_METHOD"} eq "POST") {
  read(STDIN, $datastring, $ENV{"CONTENT_LENGTH"});		
}
elsif (exists $ENV{"REQUEST_METHOD"}) {# data from GET transaction (or HEAD or other)
  $datastring = $ENV{"QUERY_STRING"};
}
else {
  print "Offline execution detected\n";
  print "Please enter some data.\n";
  $datastring = <>;

  chomp $datastring;
  print "== data accepted == HTML output follows ==\n\n";
}

###decode######################################################
@nameValuePairs = split(/&/, $datastring);#step 1.
foreach $pair (@nameValuePairs) {
  ($name, $value) = split(/=/, $pair);             #step 2.
  $name =~tr/+/ /;                                 #step 3.
  $name =~s/%([\da-fA-F]{2})/pack("C",hex($1))/eg; #step 3.
  $value =~tr/+/ /;                                #step 3.
  $value =~s/%([\da-fA-F]{2})/pack("C",hex($1))/eg;#step 3.
  $value =~s/[<>]//g;					#precaution
  $formHash{$name}=$value;                    		 #step 4.
}
###done decoding###############################################

$cheesetotal = sprintf "%.2f", $formHash{"cheeseburger"}*1.50;
$veggietotal = sprintf "%.2f", $formHash{"veggieburger"}*1.50;
$friestotal = sprintf "%.2f", $formHash{"fries"}*1.00;
$drinktotal = sprintf "%.2f", $formHash{"drink"}*0.80;
$totalCost = sprintf "%.2f", $cheesetotal+$veggietotal+$friestotal+$drinktotal;

print <<WHOLEPAGE;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1"/>
        <title>Thank you for your order</title>
    </head>
    <body>
        <table border="1">
        	<tr>
        	    <th>Food</th><th>Quantity</th><th>Subtotal</th>
        	</tr>
          <tr>
          	<td>Cheeseburger (\$1.50)</td>
                <td align="right">$formHash{"cheeseburger"}</td>
                <td align="right">\$$cheesetotal</td>
          </tr>
          <tr>
           	<td>Veggieburger (\$1.50)</td>
                <td align="right">$formHash{"veggieburger"}</td>
                <td align="right">\$$veggietotal</td>
          </tr>
          <tr>
          	<td>Fries (\$1.00)</td>
                <td align="right">$formHash{"fries"}</td>
                <td align="right">\$$friestotal</td>
          </tr>
          <tr>
           	<td>Drink (\$0.80)</td>
                <td align="right">$formHash{"drink"}</td>
                <td align="right">\$$drinktotal</td>
          </tr>
          <tr>
           	<td colspan="2"><b>TOTAL</b></td><td align="right">\$$totalCost</td>
          </tr>
        </table>
    </body>
</html>
WHOLEPAGE