function UpdateMainVacactionRequest($fields)
{
    $success = false;
    $statusMessage = "";
    //-------------------------------------------------------------------------
    // Validate Input parameters
    //--------------------------------------------------------------------------
    $inputIsValid = TRUE;
    $validID = false;
    $countOfFields = 0;
    foreach ($fields as $key => $value) {
        if ($key == MAIN_VACATION_REQ_ID) {
            $record = RetrieveMainVacationRequestByID($value);
            if ($record != NULL) {
                $validID = true;
                $countOfFields++;
            }
        } else {
            if ($key == MAIN_VACATION_EMP_ID) {
                $countOfFields++;
                $record = RetrieveEmployeeByID($value);
                if ($record == NULL) {
                    $statusMessage .= "Invalid Main Vacation Employee ID</br>";
                    error_log("Invalid MAIN_VACATION_EMP_ID passed to " . "UpdateMainVacationRequest.");
                    $inputIsValid = FALSE;
                }
            } else {
                if ($key == MAIN_VACATION_1ST_START) {
                    $countOfFields++;
                    if (!isValidDate($value)) {
                        $statusMessage .= "Invalid 1st Choice Start Date</br>";
                        error_log("Invalid MAIN_VACATION_1ST_START passed to " . "UpdateMainVacationRequest.");
                        $inputIsValid = FALSE;
                    }
                } else {
                    if ($key == MAIN_VACATION_1ST_END) {
                        $countOfFields++;
                        if (!isValidDate($value)) {
                            $statusMessage .= "Invalid 1st Choice Finish Date/br>";
                            error_log("Invalid MAIN_VACATION_1ST_END passed to " . "UpdateMainVacationRequest.");
                            $inputIsValid = FALSE;
                        }
                    } else {
                        if ($key == MAIN_VACATION_2ND_START) {
                            $countOfFields++;
                            if (!isValidDate($value)) {
                                $statusMessage .= "Invalid 2nd Choice Start Date/br>";
                                error_log("Invalid MAIN_VACATION_2ND_START passed to " . "UpdateMainVacationRequest.");
                                $inputIsValid = FALSE;
                            }
                        } else {
                            if ($key == MAIN_VACATION_2ND_END) {
                                $countOfFields++;
                                if (!isValidDate($value)) {
                                    $statusMessage .= "Invalid 2nd Choice Finish Date/br>";
                                    error_log("Invalid MAIN_VACATION_2ND_END passed to " . "UpdateMainVacationRequest.");
                                    $inputIsValid = FALSE;
                                }
                            } else {
                                $statusMessage .= "Invalid Field encountered./br>";
                                error_log("Invalid field passed to " . "UpdateMainVacationRequest. {$key}=" . $key);
                                $inputIsValid = FALSE;
                            }
                        }
                    }
                }
            }
        }
    }
    $firstChoiceStartDate = $fields[MAIN_VACATION_1ST_START];
    $firstChoiceEndDate = $fields[MAIN_VACATION_1ST_END];
    $secondChoiceStartDate = $fields[MAIN_VACATION_2ND_START];
    $secondChoiceEndDate = $fields[MAIN_VACATION_2ND_END];
    if (strtotime($firstChoiceEndDate) < strtotime($firstChoiceStartDate)) {
        $statusMessage .= "1st Choice End Date is before 1st Choice Start Date.</br>";
        error_log("First Choice End Date is before First Choice Start Date.");
        $inputIsValid = FALSE;
    }
    if (strtotime($secondChoiceEndDate) < strtotime($secondChoiceStartDate)) {
        $statusMessage .= "2nd Choice End Date is before 2nd Choice Start Date.</br>";
        error_log("Second Choice End Date is before Second Choice Start Date.");
        $inputIsValid = FALSE;
    }
    if (!$validID) {
        $statusMessage .= "No valid record ID found/br>";
        error_log("No valid ID supplied in call to UpdateMainVacationRequest.");
        $inputIsValid = FALSE;
    }
    if ($countOfFields < 2) {
        $statusMessage .= "You must modify at least one of the fields of the record./br>";
        error_log("Insufficent fields supplied in call to UpdateMainVacationRequest.");
        $inputIsValid = FALSE;
    }
    //--------------------------------------------------------------------------
    // Only attempt to update a record in the database if the input parameters
    // are ok.
    //--------------------------------------------------------------------------
    if ($inputIsValid) {
        $success = performSQLUpdate(MAIN_VACATION_REQUEST_TABLE, MAIN_VACATION_REQ_ID, $fields);
        if ($success) {
            $statusMessage .= "Record successfully modified.";
        } else {
            $inputIsValid = false;
            $statusMessage .= "Error encountered when updating the database. " . "Contact system administrator.</br>";
        }
    }
    GenerateStatus($inputIsValid, $statusMessage);
    return $success;
}
    $startDate = $_POST["startDate"];
    $endDate = $_POST["endDate"];
    if (!isValidDate($startDate)) {
        $statusMessage .= "Start Date is not a valid Date.</br>";
        $inputIsValid = false;
    }
    if (!isValidDate($endDate)) {
        $statusMessage .= "Finish Date is not a valid Date.</br>";
        $inputIsValid = false;
    }
    if (strtotime($endDate) < strtotime($startDate)) {
        $statusMessage .= "End Date is before Start Date.</br>";
        $inputIsValid = false;
    }
    if ($inputIsValid == false) {
        GenerateStatus(false, $statusMessage);
    }
}
function DisplaySearchTableBody($startDate, $endDate)
{
    date_default_timezone_set('UTC');
    $startDate = $_POST["startDate"];
    $startDateTime = strtotime($startDate);
    $endDate = $endDateTime = strtotime($endDate);
    $bookings = RetrieveApprovedAbsenceBookings();
    if ($bookings != NULL) {
        foreach ($bookings as $booking) {
            $bookingStartTime = strtotime($booking[APPR_ABS_START_DATE]);
            $bookingEndTime = strtotime($booking[APPR_ABS_START_DATE]);
            if ($bookingStartTime >= $startDateTime and $bookingEndTime <= $endDateTime) {
                $employee = RetrieveEmployeeByID($booking[APPR_ABS_EMPLOYEE_ID]);
function DeleteEmployee($ID)
{
    $result = 0;
    $statusMessage = "";
    $employee = RetrieveEmployeeByID($ID);
    if ($employee != NULL) {
        if ($employee[EMP_MAIN_VACATION_REQ_ID] != NULL) {
            DeleteMainVacatioNRequest($employee[EMP_MAIN_VACATION_REQ_ID]);
        }
        $filter[AD_HOC_EMP_ID] = $ID;
        $adHocAbsenceRequests = RetrieveAdHocAbsenceRequests($filter);
        foreach ((array) $adHocAbsenceRequests as $value) {
            DeleteAdHocAbsenceRequest($value[AD_HOC_REQ_ID]);
        }
        unset($filter);
        $filter[APPR_ABS_EMPLOYEE_ID] = $ID;
        $approvedAbsenceBookings = RetrieveApprovedAbsenceBookings($filter);
        if ($approvedAbsenceBookings != NULL) {
            foreach ($approvedAbsenceBookings as $value) {
                DeleteApprovedAbsenceBooking($value[APPR_ABS_BOOKING_ID]);
            }
        }
        $sql = "DELETE FROM employeeTable WHERE employeeID=" . $ID . ";";
        $result = performSQL($sql);
        $statusMessage .= "Record deleted.</br>";
        GenerateStatus(true, $statusMessage);
    }
    return $result;
}
function DeleteCompanyRole($ID)
{
    $statusMessage = "";
    $result = 0;
    $record = RetrieveCompanyRoleByID($ID);
    if ($record != NULL) {
        $filter[EMP_COMPANY_ROLE] = $ID;
        $employees = RetrieveEmployees($filter);
        if ($employees != NULL) {
            foreach ($employees as $employee) {
                DeleteEmployee($employee[EMP_ID]);
            }
        }
        $sql = "DELETE FROM companyroletable WHERE companyRoleID=" . $ID . ";";
        $result = performSQL($sql);
        $statusMessage = "Role Deleted.</br>";
        GenerateStatus(true, $statusMessage);
    }
    return $result;
}
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;
}
function DeleteApprovedAbsenceBooking($ID)
{
    $result = 0;
    $approvedAbsenceBooking = RetrieveApprovedAbsenceBookingByID($ID);
    if ($approvedAbsenceBooking != NULL) {
        $sql = "DELETE FROM approvedAbsenceBookingTable WHERE approvedAbsenceBookingID=" . $ID . ";";
        $result = performSQL($sql);
        $filter[APPR_ABS_BOOK_DATE_ABS_BOOK_ID] = $ID;
        $approvedAbsenceBookingDates = RetrieveApprovedAbsenceBookingDates($filter);
        foreach ((array) $approvedAbsenceBookingDates as $approvedAbsenceBookingDate) {
            DeleteApprovedAbsenceBookingDate($approvedAbsenceBookingDate[APPR_ABS_BOOK_DATE_ID]);
        }
    }
    GenerateStatus(true, "Record successfully deleted.");
    return $result;
}
function DeleteAdHocAbsenceRequest($ID)
{
    $sql = "DELETE FROM adHocAbsenceRequestTable WHERE adHocAbsenceRequestID=" . $ID . ";";
    GenerateStatus(true, "Record successfully deleted");
    return performSQL($sql);
}
function DeleteAbsenceType($ID)
{
    $isValidRequest = TRUE;
    // Ensure there are no AdHocAbsenceRequest records which reference this record.
    $filter[AD_HOC_ABSENCE_TYPE_ID] = $ID;
    $adHocAbsenceRequests = RetrieveAdHocAbsenceRequests($filter);
    if ($adHocAbsenceRequests != NULL) {
        error_log("Attempt to DeleteAbsenceType failed. " . "One or more adHocAbsenceRequest records exist with an " . "absence type ID of " . $ID);
        $isValidRequest = FALSE;
    }
    // Ensure there are no ApprovedAbsenceBooking records which reference this record.
    unset($filter);
    $filter[APPR_ABS_ABS_TYPE_ID] = $ID;
    $approvedBookings = RetrieveApprovedAbsenceBookings($filter);
    if ($approvedBookings != NULL) {
        error_log("Attempt to DeleteAbsenceType failed. " . "One or more approvedAbsenceBooking records exist with an " . "absence type ID of " . $ID);
        $isValidRequest = FALSE;
    }
    $result = 0;
    if ($isValidRequest) {
        $sql = "DELETE FROM absenceTypeTable WHERE absenceTypeID=" . $ID . ";";
        $result = performSQLDelete($sql);
        GenerateStatus(true, "Record has been deleted.");
    }
    return $result;
}
function ApproveAdHocRequest($requestID)
{
    $statusMessage = "";
    $succeeded = true;
    $request = RetrieveAdHocAbsenceRequestByID($requestID);
    if ($request != NULL) {
        $absenceType = $request[AD_HOC_ABSENCE_TYPE_ID];
        $start = $request[AD_HOC_START];
        $end = $request[AD_HOC_END];
        $succeeded = ProcessAbsenceRequest($request[AD_HOC_EMP_ID], $start, $end, $absenceType, $statusMessage);
        if ($succeeded) {
            DeleteAdHocAbsenceRequest($requestID);
        }
    } else {
        $statusMessage .= "Error: Unable to process your request." . "The AdHoc Request ID of {$requestID} " . "could not be found in the database. Please " . "contact your system administrator.</br>";
        $succeeded = false;
    }
    GenerateStatus($succeeded, $statusMessage);
}
            GenerateStatus(false, "You must enter a password.");
        } else {
            $filter[EMP_EMAIL] = $email;
            $employees = RetrieveEmployees($filter);
            if (count($employees) != 1) {
                GenerateStatus(false, "No matching email address found.");
            } else {
                $encryptedPassword = $employees[0][EMP_PASSWORD];
                $temp = md5(md5($email) . $password);
                if ($temp == $encryptedPassword) {
                    $_SESSION['userID'] = $employees[0][EMP_ID];
                    $_SESSION['administrator'] = $employees[0][EMP_ADMIN_PERM];
                    $_SESSION['manager'] = $employees[0][EMP_MANAGER_PERM];
                    header('Location: index.php');
                } else {
                    GenerateStatus(false, "Password is incorrect.");
                }
            }
        }
    }
}
?>

<!DOCTYPE html>
<html>
    <head>
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
        <link rel="stylesheet" href="style.css">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>