function DisplayDatesTableBody()
{
    $dates = RetrieveDates();
    if ($dates != NULL) {
        foreach ($dates as $date) {
            echo "<tr>";
            echo "<td>" . $date[DATE_TABLE_DATE_ID] . "</td>";
            echo "<td>" . $date[DATE_TABLE_DATE] . "</td>";
            echo "<td>" . $date[DATE_TABLE_PUBLIC_HOL_ID] . "</td>";
            $pubHolID = $date[DATE_TABLE_PUBLIC_HOL_ID];
            $publicHolidayName = "";
            if ($pubHolID != NULL) {
                $publicHoliday = RetrievePublicHolidayByID($pubHolID);
                $publicHolidayName = $publicHoliday[PUB_HOL_NAME];
            }
            echo "<td>" . $publicHolidayName . "</td>";
            echo "</tr>";
        }
    }
}
function DeletePublicHoliday($ID)
{
    $result = 0;
    $record = RetrievePublicHolidayByID($ID);
    if ($record != NULL) {
        $date = RetrieveDateByID($record[PUB_HOL_DATE_ID]);
        $date[DATE_TABLE_PUBLIC_HOL_ID] = NULL;
        UpdateDate($date);
        $sql = "DELETE FROM publicHolidayTable WHERE publicHolidayID=" . $ID . ";";
        $result = performSQL($sql);
    }
    GenerateStatus(true, "Record successfully deleted.");
    return $result;
}
}
if ($_GET["ID"] != NULL) {
    $record = RetrievePublicHolidayByID($_GET["ID"]);
    $date = RetrieveDateByID($record[PUB_HOL_DATE_ID]);
}
if (isset($_POST["cancel"])) {
    $url = "Location:adminPublicHolidays.php";
    header($url);
}
if (isset($_POST["update"])) {
    $record[PUB_HOL_ID] = $_GET["ID"];
    $record[PUB_HOL_NAME] = $_POST["name"];
    $filter[DATE_TABLE_DATE] = $_POST["date"];
    $dates = RetrieveDates($filter);
    $date = $dates[0];
    $currentRecord = RetrievePublicHolidayByID($_GET["ID"]);
    if ($currentRecord != NULL) {
        if ($currentRecord[PUB_HOL_DATE_ID] != $date[DATE_TABLE_DATE_ID]) {
            //Date has changed, so remove the public holiday ID from the old
            //date record and add to the new date record.
            $oldDate = RetrieveDateByID($currentRecord[PUB_HOL_DATE_ID]);
            $oldDate[DATE_TABLE_PUBLIC_HOL_ID] = NULL;
            UpdateDate($oldDate);
        }
    }
    $record[PUB_HOL_DATE_ID] = $date[DATE_TABLE_DATE_ID];
    $success = UpdatePublicHoliday($record);
    if ($success) {
        $url = "Location:adminPublicHolidays.php";
        header($url);
    }
function UpdateDate($fields)
{
    //--------------------------------------------------------------------------------
    // Validate Input parameters
    //--------------------------------------------------------------------------------
    $inputIsValid = TRUE;
    $validID = false;
    $countOfFields = 0;
    foreach ($fields as $key => $value) {
        if ($key == DATE_TABLE_DATE_ID) {
            $record = RetrieveDateByID($value);
            if ($record != NULL) {
                $validID = true;
                $countOfFields++;
            }
        } else {
            if ($key == DATE_TABLE_DATE) {
                $countOfFields++;
                if (!isValidDate($value)) {
                    error_log("Invalid DATE_TABLE_DATE passed to UpdateDate.");
                    $inputIsValid = FALSE;
                }
            } else {
                if ($key == DATE_TABLE_PUBLIC_HOL_ID) {
                    $countOfFields++;
                    if ($value != NULL) {
                        $record = RetrievePublicHolidayByID($value);
                        if ($record == NULL) {
                            error_log("Invalid DATE_TABLE_PUBLIC_HOL_ID passed to UpdateDate.");
                            $inputIsValid = FALSE;
                        }
                    }
                } else {
                    error_log("Invalid field passed to UpdateDate. {$key}=" . $key);
                    $inputIsValid = FALSE;
                }
            }
        }
    }
    if (!$validID) {
        error_log("No valid ID supplied in call to UpdateDate.");
        $inputIsValid = FALSE;
    }
    if ($countOfFields < 2) {
        error_log("Insufficent fields supplied in call to UpdateDate.");
        $inputIsValid = FALSE;
    }
    //--------------------------------------------------------------------------------
    // Only attempt to update a record in the database if the input parameters are ok.
    //--------------------------------------------------------------------------------
    $success = false;
    if ($inputIsValid) {
        $success = performSQLUpdate(DATE_TABLE, DATE_TABLE_DATE_ID, $fields);
    }
    return $success;
}