<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

  <head>
    <link rel="stylesheet" type="text/css" href="vote.css" />
    <title>The GNOME Foundation - Votes</title>
    <meta name="cvsdate" content="$Date$" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  </head>

  <body>
<?php
require_once ("include/election-sql.php");

$display = TRUE;
$error = "";

$handle = elec_sql_open ();
if ($handle === FALSE) {
  $error .= "Can not open the database.<br />\n";
  $display = FALSE;
}

if ($display && isset ($_GET["election_id"]) && is_numeric ($_GET["election_id"]))
  $election_id = $_GET["election_id"];
else {
  $election_id = -1;
  $error .= "A menu of elections is not available.  A URL that includes the election id is required.  This should have been given to you when you were asked to vote.<br />\n";
  $display = FALSE;
}

if ($display && $election_id >= 0) {
  $election = elec_get_election ($handle, $election_id);
  if ($election === FALSE) {
    $error .= "The specified election/referendum does not exist.<br />\n";
    $display = FALSE;
  } else if (!elec_election_has_ended ($election)) {
    $error .= "The voting period for the specified ".htmlspecialchars(elec_election_get_type ($election))." starts on ".htmlspecialchars($election["voting_start"])." (UTC) and ends on ".htmlspecialchars($election["voting_end"])." (UTC). It is not possible to see the results now.<br />\n";
    $display = FALSE;
  }
}

if (isset ($election) && $election !== FALSE) {
  echo "<h1>Detailed votes for the ".htmlspecialchars($election["name"])."</h1>\n";
}

if ($display) {
  $anon_tokens = elec_get_anon_tokens_for_election ($handle, $election_id);
  if ($anon_tokens === FALSE) {
    $error .= "Can not get the anonymous tokens for this ".htmlspecialchars(elec_election_get_type ($election)).".\n";
    $display = FALSE;
  }
}

if ($display) {
  $choices = elec_choices_get ($handle, $election_id);
  if ($choices === FALSE) {
    $error .= "The ".htmlspecialchars(elec_election_get_type ($election))." is not properly set up.\n";
    $display = FALSE;
  }
}

if ($display) {
  $choices_name = array ();
  foreach ($choices as $choice) {
    $choices_name[$choice["id"]] = $choice["choice"];
  }

  echo "<p>Please look at the <a href=\"results.php?election_id=".rawurlencode($election_id)."\">automatic results</a> to have a summary of the votes. ";
  echo "You can also <a href=\"blt.php?election_id=".rawurlencode($election_id)."\">download the ballots</a> in the OpenSTV .blt file format and verify the results.</p>\n";

  echo "<p>Please note that these results are automatically calculated and are thus not the official results.</p>\n";

  echo "<p><strong>".htmlspecialchars($election["question"])."</strong></p>\n";

  echo "<table class=\"detailedvotes\">\n<tr><th>Anonymous token</th><th>Vote(s)</th></tr>\n";
  $color = TRUE;
  foreach ($anon_tokens as $anon_token) {
    $votes = elec_get_votes_for_anon_token ($handle, $anon_token["id"]);
    if ($color)
      $class = "colorA";
    else
      $class = "colorB";

    echo "<tr class=\"".$class."\">\n";
    echo "<td><span class=\"token\">".htmlspecialchars($anon_token["anon_token"])."</span></td>\n";

    echo "<td>";

    if ($votes === FALSE) {
      echo "Can not access votes<br />for this anonymous token.";
      $error .= "Can not get votes for anonymous token ".htmlspecialchars($anon_token["anon_token"])."<br />\n";
    } else if (count ($votes) == 0) {
      echo "This member chose to vote for<br />none of the possible choices.";
    } else {
      echo "<ol>";
      foreach ($votes as $vote) {
        if (array_key_exists ($vote["choice_id"], $choices_name))
          echo "<li><em>".htmlspecialchars($votes["preference"])." ".htmlspecialchars($choices_name[$vote["choice_id"]])."</em></li>\n";
        else {
          echo "<li><em>Unknown value (".htmlspecialchars($vote["choice_id"]).")</em></li>\n";
          $error .= "There was an unkown vote for anonymous token ".htmlspecialchars($anon_token["anon_token"]).": ".htmlspecialchars($vote["choice_id"])."<br />\n";
        }
      }
      echo "</ol>";
    }

    echo "</td>\n";

    echo "</tr>\n";
    $color = !$color;
  }
  echo "</table>\n";
}

global $committee_name;
global $committee_email;

if (isset ($error) && $error != "") {
  echo "<div class=\"error\">".$error."</div>\n";;
  echo "<p>If you don't understand the error, you should probably contact the $committee_name, which can be reached at <a href=\"mailto:$committee_email\">$committee_email</a>.</p>\n";
}

if (isset ($handle))
  elec_sql_close ($handle);

?>