protected void Page_Load(object sender, EventArgs e)
    {
        dbData = new string[7] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
        // Fields to populate when user visits this page: Employee ID, Employee Name, and Branch
        TimesheetManager tm = new TimesheetManager();

        // re-highlight rows if possible
        HighLightDeletedRows();
        if (!IsPostBack)
        {

            verifyBtn.Enabled = true;
            // get and populate user information
            MembershipUser loggedInUser = Membership.GetUser();
            User employee = tm.getEmployeeForId(loggedInUser.UserName);
            empIdTB.Text = employee.empNo;
            nameTB.Text = employee.FirstName + " " + employee.MiddleName + " " + employee.LastName;
            departmentTB.Text = employee.branch;

            // populate generic non-chargeable drop down list elements
            specifyDDL.DataSource = tm.getWorkType();
            specifyDDL.DataBind();
            specifyDDL.Items.Insert(0, "Select");
            detailsDDL.DataSource = tm.getExpenses();
            detailsDDL.DataBind();
            detailsDDL.Items.Insert(0, "Select");

            // sub-menu's of non-chargeable section
            NonChargeExpensesPanel.Visible = false;
            NonChargeHoursPanel.Visible = false;
            detailsDDL.SelectedIndex = 0;
            specifyDDL.SelectedIndex = 0;

            // check query strings for form data to be populated
            if (Request.QueryString.Count > 0)
            {
                string timesheet = Request.QueryString["time"];
                string expense = Request.QueryString["expense"];
                string hours = Request.QueryString["hours"];
                string project = Request.QueryString["project"];
                string classification = Request.QueryString["class"];
                string activity = Request.QueryString["activity"];
                string delete = Request.QueryString["delete"];
                int chID = Convert.ToInt32(Request.QueryString["charge"]);
                int nonChID = Convert.ToInt32(Request.QueryString["nonCh"]);
                int lab = Convert.ToInt32(Request.QueryString["test"]);
                // reset weekending dates
                ScriptManager.RegisterStartupScript(this, this.GetType(), "populate", "populate();", true);

                int id = Convert.ToInt32(timesheet);
                timesheetID = id;
                HiddenField1.Value = id.ToString();

                // VIEW ONLY from a MANAGER's perspective.
                if (Request.QueryString["view"] == "view") {
                    verifyBtn.Enabled = false;
                    chargeableBtn.Enabled = false;
                    nonChargeBtn.Enabled = false;
                    labTestsBtn.Enabled = false;
                    // disable edit and delete columns
                    summaryGV.Columns[0].Visible = false;
                    summaryGV.Columns[1].Visible = false;
                    summaryGV.Columns[0].Visible = false;
                    summaryGV.Columns[1].Visible = false;
                    string username = Membership.GetUser().UserName;

                    TimeSheet ts = tm.getTimesheetForID(timesheetID);
                    User user = tm.getEmployeeForId(ts.EmployeeId);
                    departmentTB.Text = user.branch;
                    empIdTB.Text = user.empNo;
                    nameTB.Text = user.FirstName + " " + user.MiddleName + " " + user.LastName;
                }
                // display lab test hours
                if (lab > 0 && delete != "delete")
                {
                    List<EmpTest> tests = tm.getEmpTestsForTimeSheet(id);
                    updateLabTestsBtn.Visible = true;
                    labTestsBtn.Visible = false;
                    aID = 1;
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "toggleAccordion", "accordionToggle();", true);
                    foreach (EmpTest item in tests)
                    {
                        if (item.Day == "Sunday")
                        {
                            sunLabTB.Text = item.LabTest.ToString();
                            sunNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Monday")
                        {
                            monLabTB.Text = item.LabTest.ToString();
                            monNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Tuesday")
                        {
                            tuesLabTB.Text = item.LabTest.ToString();
                            tuesNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Wednesday")
                        {
                            wedsLabTB.Text = item.LabTest.ToString();
                            wedsNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Thursday")
                        {
                            thursLabTB.Text = item.LabTest.ToString();
                            thursNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Friday")
                        {
                            friLabTB.Text = item.LabTest.ToString();
                            friNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Saturday")
                        {
                            satLabTB.Text = item.LabTest.ToString();
                            satNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                    }
                }

                // set static properties on the webpage
                weekEndingTB.Text = tm.getWeekendingForTimeSheet(id);

                // delete summary non-chargeable and chargeable
                if (delete == "delete")
                {
                    rowIDs.Add(summaryGV.SelectedIndex);
                    HighLightDeletedRows();
                    //tm.deleteSummary(nonChID, chID, id, lab, false);

                    summaryGV.Focus();
                }
                // if there is a query string, load the totals from the corresponding timesheet
                updateTimeSheetTotals();
                // this conditional structure determines what module to load based on query string values
                // Project Only
                if (Request.QueryString["projectOnly"] != null)
                {
                    int projectID = Convert.ToInt32(project);
                    Project p = tm.getProjectForID(projectID);
                    projectNumTB.Text = p.ProjectNo;
                    projectNameTB.Text = p.ProjectName;
                    clientNameTB.Text = p.ClientName;
                    classificationDDL.DataSource = tm.getClassificationForProject(p.ProjectNo);
                    classificationDDL.DataBind();
                    classificationDDL.SelectedValue = classification;

                    projectNumTB.Enabled = true;
                    aID = 0;
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "toggleAccordion", "accordionToggle();", true);
                }
                // chargeable
                else if (project != null && project != "0")
                {
                    aID = 0;
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "toggleAccordion", "accordionToggle();", true);

                    // populate the project information fields
                    int projectID = Convert.ToInt32(project);
                    Project p = tm.getProjectForID(projectID);
                    if (p != null)
                    {
                        projectNumTB.Text = p.ProjectNo;
                        projectNameTB.Text = p.ProjectName;
                        clientNameTB.Text = p.ClientName;
                        classificationDDL.DataSource = tm.getClassificationForProject(p.ProjectNo);
                        classificationDDL.DataBind();
                        classificationDDL.SelectedValue = classification;
                        activitiesDDL.DataSource = tm.getActivityForClassification(classification);
                        activitiesDDL.DataBind();
                        activitiesDDL.SelectedValue = activity;
                        projectNumTB.Enabled = true;

                        // populate the chargeable fields based on the classification and activity selected
                        List<ChargeableJob> cJobs = tm.getChargeableJobsForTimesheetID(timesheetID);

                        if (chID > 0)
                        {
                            cJobs.Add(tm.getChargeForID(chID));
                        }

                        if (cJobs != null)
                        {
                            chargeableBtn.Visible = false;
                            updateChargeableBtn.Visible = true;

                            foreach (var item in cJobs)
                            {
                                if (item.Day == "Sunday" && item.Classification == classification && item.Activity == activity)
                                {
                                    if (item.Accomodations.HasValue)
                                    {
                                        sunAccomTB.Text = item.Accomodations.Value.ToString("0.00##");
                                    }
                                    sunCHoursTB.Text = item.EmpHours.ToString("0.0");
                                    sunDistTB.Text = item.TravelDistance.ToString();
                                    sunTruckDistTB.Text = item.TruckDistance.ToString();
                                    if (item.Misc.HasValue)
                                    {
                                        sunMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                    }
                                    sunCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Monday" && item.Classification == classification && item.Activity == activity)
                                {
                                    if (item.Accomodations.HasValue)
                                    {
                                        monAccomTB.Text = item.Accomodations.Value.ToString("0.00##");
                                    }
                                    monCHoursTB.Text = item.EmpHours.ToString("0.0");
                                    monDistTB.Text = item.TravelDistance.ToString();
                                    monTruckDistTB.Text = item.TruckDistance.ToString();
                                    if (item.Misc.HasValue)
                                    {
                                        monMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                    }
                                    monCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Tuesday" && item.Classification == classification && item.Activity == activity)
                                {
                                    if (item.Accomodations.HasValue)
                                    {
                                        tuesAccomTB.Text = item.Accomodations.Value.ToString("0.00##");
                                    }
                                    tuesCHoursTB.Text = item.EmpHours.ToString("0.0");
                                    tuesDistTB.Text = item.TravelDistance.ToString();
                                    tuesTruckDistTB.Text = item.TruckDistance.ToString();
                                    if (item.Misc.HasValue)
                                    {
                                        tuesMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                    }
                                    tuesCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Wednesday" && item.Classification == classification && item.Activity == activity)
                                {
                                    if (item.Accomodations.HasValue)
                                    {
                                        wedsAccomTB.Text = item.Accomodations.Value.ToString("0.00##");
                                    }
                                    wedsCHoursTB.Text = item.EmpHours.ToString("0.0");
                                    wedsDistTB.Text = item.TravelDistance.ToString();
                                    wedsTruckDistTB.Text = item.TruckDistance.ToString();
                                    if (item.Misc.HasValue)
                                    {
                                        wedsMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                    }
                                    wedsCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Thursday" && item.Classification == classification && item.Activity == activity)
                                {
                                    if (item.Accomodations.HasValue)
                                    {
                                        thursAccomTB.Text = item.Accomodations.Value.ToString("0.00##");
                                    }
                                    thursCHoursTB.Text = item.EmpHours.ToString("0.0");
                                    thursDistTB.Text = item.TravelDistance.ToString();
                                    thursTruckDistTB.Text = item.TruckDistance.ToString();
                                    if (item.Misc.HasValue)
                                    {
                                        thursMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                    }
                                    thursCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Friday" && item.Classification == classification && item.Activity == activity)
                                {
                                    if (item.Accomodations.HasValue)
                                    {
                                        friAccomTB.Text = item.Accomodations.Value.ToString("0.00##");
                                    }
                                    friCHoursTB.Text = item.EmpHours.ToString("0.0");
                                    friDistTB.Text = item.TravelDistance.ToString();
                                    friTruckDistTB.Text = item.TruckDistance.ToString();
                                    if (item.Misc.HasValue)
                                    {
                                        friMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                    }
                                    friCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Saturday" && item.Classification == classification && item.Activity == activity)
                                {
                                    if (item.Accomodations.HasValue)
                                    {
                                        satAccomTB.Text = item.Accomodations.Value.ToString("0.00##");
                                    }
                                    satCHoursTB.Text = item.EmpHours.ToString("0.0");
                                    satDistTB.Text = item.TravelDistance.ToString();
                                    satTruckDistTB.Text = item.TruckDistance.ToString();
                                    if (item.Misc.HasValue)
                                    {
                                        satMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                    }
                                    satCRemarksTB.Text = item.Remarks;
                                }
                            }
                        }
                    }
                }
                // Non-Chargeable
                else if (expense != "Select" || hours != "Select")
                {
                    aID = 2;
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "toggleAccordion", "accordionToggle();", true);
                    // set the dropdownlists and display the different panels accordingly
                    if (hours != string.Empty)
                    {
                        specifyDDL.SelectedValue = hours;
                        NonChargeHoursPanel.Visible = true;
                    }
                    else
                    {
                        specifyDDL.SelectedIndex = 0;
                        NonChargeHoursPanel.Visible = false;
                    }

                    if (expense != string.Empty)
                    {
                        detailsDDL.SelectedValue = expense;
                        NonChargeExpensesPanel.Visible = true;
                    }
                    else
                    {
                        detailsDDL.SelectedIndex = 0;
                        NonChargeExpensesPanel.Visible = false;
                    }

                    List<NonChargeable> nCh = tm.getNonChargeableForTimesheetID(timesheet, expense, hours);
                    if (nCh != null)
                    {
                        // adjust buttons
                        nonChargeBtn.Visible = false;
                        updateNonChargeableBtn.Visible = true;
                        // populate the non chargeable text fields based on the expense and type of hours selected
                        foreach (var item in nCh)
                        {
                            if (item.Day == "Sunday")
                            {
                                if (item.Accomodation.HasValue)
                                {
                                    sunNCAccomTB.Text = item.Accomodation.Value.ToString("0.00##");
                                }
                                sunNCHoursTB.Text = item.Hours.ToString("0.0");
                                sunNCDistanceTB.Text = item.Distance.ToString();
                                sunTruckDistTB.Text = item.TruckDistance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    sunNCMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                }

                                sunNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Monday")
                            {
                                if (item.Accomodation.HasValue)
                                {
                                    monNCAccomTB.Text = item.Accomodation.Value.ToString("0.00##");
                                }
                                monNCHoursTB.Text = item.Hours.ToString("0.0");
                                monNCDistanceTB.Text = item.Distance.ToString();
                                monTruckDistTB.Text = item.TruckDistance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    monNCMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                }

                                monNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Tuesday")
                            {
                                if (item.Accomodation.HasValue)
                                {
                                    tuesNCAccomTB.Text = item.Accomodation.Value.ToString("0.00##");
                                }
                                tuesNCHoursTB.Text = item.Hours.ToString("0.0");
                                tuesNCDistanceTB.Text = item.Distance.ToString();
                                tuesTruckDistTB.Text = item.TruckDistance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    tuesNCMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                }

                                tuesNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Wednesday")
                            {
                                if (item.Accomodation.HasValue)
                                {
                                    wedsNCAccomTB.Text = item.Accomodation.Value.ToString("0.00##");
                                }
                                wedsNCHoursTB.Text = item.Hours.ToString("0.0");
                                wedsNCDistanceTB.Text = item.Distance.ToString();
                                wedsTruckDistTB.Text = item.TruckDistance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    wedsNCMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                }
                                wedsNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Thursday")
                            {
                                if (item.Accomodation.HasValue)
                                {
                                    thursNCAccomTB.Text = item.Accomodation.Value.ToString("0.00##");
                                }
                                thursNCHoursTB.Text = item.Hours.ToString("0.0");
                                thursNCDistanceTB.Text = item.Distance.ToString();
                                thursTruckDistTB.Text = item.TruckDistance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    thursNCMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                }
                                thursNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Friday")
                            {
                                if (item.Accomodation.HasValue)
                                {
                                    friNCAccomTB.Text = item.Accomodation.Value.ToString("0.00##");
                                }
                                friNCHoursTB.Text = item.Hours.ToString("0.0");
                                friNCDistanceTB.Text = item.Distance.ToString();
                                friTruckDistTB.Text = item.TruckDistance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    friNCMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                }
                                friNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Saturday")
                            {
                                if (item.Accomodation.HasValue)
                                {
                                    satNCAccomTB.Text = item.Accomodation.Value.ToString("0.00##");
                                }
                                satNCHoursTB.Text = item.Hours.ToString("0.0");
                                satNCDistanceTB.Text = item.Distance.ToString();
                                satTruckDistTB.Text = item.TruckDistance.ToString();
                                satNCRemarksTB.Text = item.Remarks;
                                if (item.Misc.HasValue)
                                {
                                    satNCMiscTB.Text = item.Misc.Value.ToString("0.00##");
                                }
                            }
                        }
                    }
                }
            }
        }
        // check to see if weekending is specified, if it is get timesheetID set it and update the gridviews
        if (weekEndingTB.Text != string.Empty)
        {
            // re-populate the dates
            ScriptManager.RegisterStartupScript(this, this.GetType(), "populate", "populate();", true);
            // try and get the timesheet for the logged in user
            int id = tm.idForDate(weekEndingTB.Text, tm.idForUsername(Membership.GetUser().UserName));
            if (id != 0)
            {
                timesheetID = id;
                HiddenField1.Value = id.ToString();
                // update totals
                updateTimeSheetTotals();
                summaryGV.DataBind();
            }
        }
        // populate the predictive text arrays
        projectNoDB = tm.getProjectNumbers();
    }
    protected void verifyBtn_Click(object sender, EventArgs e)
    {
        // if chargeable or non chargeable are being edited prompt user to save or update changes, else execute intended code for verify
        if (activitiesDDL.Items.Count > 0 || specifyDDL.SelectedValue != "Select" || detailsDDL.SelectedValue != "Select")
        {
            // throw a dialog
            msg = "You have Un-Saved work on this Page, Please save,update or Clear the form";
            dialogTitle = "Warning: Un-saved Work";

            ScriptManager.RegisterStartupScript(this, this.GetType(), "unsavedwork", "throwDialog();", true);
        }
        else
        {
            if (weekEndingTB.Text != string.Empty)
            {
                // disable the non chargeable hours and expense panels
                NonChargeHoursPanel.Visible = false;
                NonChargeExpensesPanel.Visible = false;
                specifyDDL.SelectedIndex = 0;
                detailsDDL.SelectedIndex = 0;

                TimesheetManager tm = new TimesheetManager();
                ScriptManager.RegisterStartupScript(this, this.GetType(), "populate", "populate();", true);
                int userID = tm.idForUsername(Membership.GetUser().UserName);
                timesheetID = tm.idForDate(weekEndingTB.Text, userID);
                projectNumTB.Enabled = true;

                // if a timesheet does not exist for the weekending date, create a new one
                if (timesheetID == 0)
                {
                    TimeSheet t = new TimeSheet();
                    t.WeekEnding = weekEndingTB.Text;
                    t.EmployeeId = userID;
                    t.DateCreated = DateTime.Now;
                    t.DateModified = DateTime.Now;
                    t.Status = "Started";
                    t.EmployeeName = nameTB.Text;
                    t.TotalHours = 0;
                    t.TotalExpenses = 0;
                    t.TotalDistance = 0;
                    t.Branch = departmentTB.Text;
                    totalDistanceLBL.Text = "0";
                    totalExpensesLBL.Text = "0";
                    totalHoursLBL.Text = "0";
                    totalTruckLBL.Text = "0";

                    // populate global variables
                    timesheetID = tm.createTimesheet(t);

                    HiddenField1.Value = t.TimeSheetId.ToString();
                    // enable controls
                    projectNumTB.Enabled = true;
                }
                else
                {
                    TimeSheet ts = tm.getTimesheetForID(timesheetID);
                    if (ts != null)
                    {
                        if (ts.Status == "Completed" || ts.Status == "Approved" || ts.Status == "Manager - Updated" || ts.Status == "Synchronized")
                        {
                            // throw a dialog
                            dialogTitle = "Completed TimeSheet";
                            msg = "The timesheet for this weekending date has already been Completed and Approved";
                            ScriptManager.RegisterStartupScript(this, this.GetType(), "projectNumInvalid", "throwDialog();", true);

                            // disable edit and delete columns
                            summaryGV.Columns[0].Visible = false;
                            summaryGV.Columns[1].Visible = false;
                            summaryGV.Columns[0].Visible = false;
                            summaryGV.Columns[1].Visible = false;
                            // disable the save buttons
                            chargeableBtn.Visible = false;
                            nonChargeBtn.Visible = false;
                            labTestsBtn.Visible = false;
                            updateChargeableBtn.Visible = false;
                            updateNonChargeableBtn.Visible = false;
                            updateLabTestsBtn.Visible = false;

                            // update totals
                            updateTimeSheetTotals();
                        }
                        else
                        {
                            // UPDATE TOTALS
                            updateTimeSheetTotals();
                            // for gridview
                            HiddenField1.Value = timesheetID.ToString();
                            // enable controls
                            projectNumTB.Enabled = true;

                            // re-ENABLE edit and delete columns
                            summaryGV.Columns[0].Visible = true;
                            summaryGV.Columns[1].Visible = true;
                            summaryGV.Columns[0].Visible = true;
                            summaryGV.Columns[1].Visible = true;
                            // re-enable the save buttons
                            chargeableBtn.Visible = true;
                            nonChargeBtn.Visible = true;
                            labTestsBtn.Visible = true;
                        }
                    }
                }
                // re-populate the dates
                ScriptManager.RegisterStartupScript(this, this.GetType(), "populate", "populate();", true);
                summaryGV.DataBind();
            }
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        dbData = new string[7] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
        weekEndingTB.Enabled = false;
        // Fields to populate when user visits this page: Employee ID, Employee Name, and Branch
        TimesheetManager tm = new TimesheetManager();
        projectNumTB.Enabled = true;
        if (!IsPostBack)
        {
            // populate generic non-chargeable drop down list elements
            specifyDDL.DataSource = tm.getWorkType();
            specifyDDL.DataBind();
            specifyDDL.Items.Insert(0, "Select");
            detailsDDL.DataSource = tm.getExpenses();
            detailsDDL.DataBind();
            detailsDDL.Items.Insert(0, "Select");

            // sub-menu's of non-chargeable section
            NonChargeExpensesPanel.Visible = false;
            NonChargeHoursPanel.Visible = false;

            // check query strings for form data to be populated
            if (Request.QueryString.Count > 0)
            {
                string timesheet = Request.QueryString["time"];
                string expense = Request.QueryString["expense"];
                string hours = Request.QueryString["hours"];
                string project = Request.QueryString["project"];
                string classification = Request.QueryString["class"];
                string activity = Request.QueryString["activity"];
                int chID = Convert.ToInt32(Request.QueryString["charge"]);
                int nonChID = Convert.ToInt32(Request.QueryString["nonCh"]);
                string delete = Request.QueryString["delete"];
                int lab = Convert.ToInt32(Request.QueryString["test"]);

                // reset weekending dates
                ScriptManager.RegisterStartupScript(this, this.GetType(), "populate", "populate();", true);

                int id = Convert.ToInt32(timesheet);
                timesheetID = id;
                HiddenField1.Value = id.ToString();

                // handle lab hours
                if (lab > 0 && delete != "delete")
                {
                    List<ManagerTest> tests = tm.getManagerTestsForTimeSheet(id);
                    updateLabTestsBtn.Visible = true;
                    labTestsBtn.Visible = false;
                    aID = 1;
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "toggleAccordion", "accordionToggle();", true);
                    foreach (ManagerTest item in tests)
                    {
                        if (item.Day == "Sunday")
                        {
                            sunLabTB.Text = item.LabTest.ToString();
                            sunNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Monday")
                        {
                            monLabTB.Text = item.LabTest.ToString();
                            monNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Tuesday")
                        {
                            tuesLabTB.Text = item.LabTest.ToString();
                            tuesNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Wednesday")
                        {
                            wedsLabTB.Text = item.LabTest.ToString();
                            wedsNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Thursday")
                        {
                            thursLabTB.Text = item.LabTest.ToString();
                            thursNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Friday")
                        {
                            friLabTB.Text = item.LabTest.ToString();
                            friNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                        else if (item.Day == "Saturday")
                        {
                            satLabTB.Text = item.LabTest.ToString();
                            satNuclearDensityTestTB.Text = item.DensityTest.ToString();
                        }
                    }
                }

                // set static properties on the webpage
                weekEndingTB.Text = tm.getWeekendingForTimeSheet(id);
                // if there is a query string, load the totals from the corresponding timesheet

                if (delete == "delete")
                {

                   tm.deleteSummary(nonChID, chID, id, lab, true);
                    summaryGV.Focus();
                }
                // update Timesheet Totals
                updateTimeSheetTotals();
                TimeSheet t = tm.getTimesheetForID(timesheetID);
                // get and populate user information
                User emp = tm.getEmployeeForId(t.EmployeeId);
                empIdTB.Text = emp.empNo;
                nameTB.Text = emp.FirstName + " " + emp.MiddleName + " " + emp.LastName;
                departmentTB.Text = emp.branch;
                if (Request.QueryString["projectOnly"] != null)
                {
                    int projectID = Convert.ToInt32(project);
                    Project p = tm.getProjectForID(projectID);
                    projectNumTB.Text = p.ProjectNo;
                    projectNameTB.Text = p.ProjectName;
                    clientNameTB.Text = p.ClientName;
                    classificationDDL.DataSource = tm.getClassificationForProject(p.ProjectNo);
                    classificationDDL.DataBind();
                    classificationDDL.SelectedValue = classification;

                    projectNumTB.Enabled = true;
                    aID = 0;
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "toggleAccordion", "accordionToggle();", true);
                }
                // Chargeable
                else if (project != null && project != "0" && project != string.Empty)
                {
                    // adjust accordion panels
                    aID = 0;
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "toggleAccordion", "accordionToggle();", true);
                    // populate the project information fields
                    int projectID = Convert.ToInt32(project);
                    Project p = tm.getProjectForID(projectID);
                    if (p != null)
                    {
                        projectNumTB.Text = p.ProjectNo;
                        projectNameTB.Text = p.ProjectName;
                        clientNameTB.Text = p.ClientName;
                        classificationDDL.DataSource = tm.getClassificationForProject(p.ProjectNo);
                        classificationDDL.DataBind();
                        classificationDDL.SelectedValue = classification;

                        activitiesDDL.DataSource = tm.getActivityForClassification(classification);
                        activitiesDDL.DataBind();
                        activitiesDDL.SelectedValue = activity;

                        // adjust buttons
                        chargeableBtn.Visible = false;
                        updateChargeableBtn.Visible = true;

                        // populate the chargeable fields based on the classification and activity selected
                        List<ManagerChargeable> cJobs = tm.getManagerChargeableForID(timesheetID);

                        if (chID > 0)
                        {
                            cJobs.Add(tm.getManagerChargeForID(chID));
                        }

                        if (cJobs != null)
                        {
                            foreach (var item in cJobs)
                            {
                                if (item.Day == "Sunday" && item.Classification == classification && item.Activity == activity)
                                {
                                    // Accomodation

                                    if (item.BillingAccomodation.HasValue)
                                    {
                                        sunBAccomTB.Text = item.PayRollAccomodation.Value.ToString("0.00##");
                                    }

                                    // Hours
                                    if (item.BillingHours.HasValue)
                                    {
                                        sunBCHoursTB.Text = item.BillingHours.Value.ToString("0.0");
                                    }
                                    // Distance
                                    if (item.BillingTravelDistance.HasValue)
                                    {
                                        sunBDistTB.Text = item.BillingTravelDistance.ToString();
                                    }

                                    // truck distance
                                    if (item.TruckDistance.HasValue)
                                    {
                                        sunTruckDistTB.Text = item.TruckDistance.ToString();
                                    }

                                    // Misc

                                    if (item.BillingMisc.HasValue)
                                    {
                                        sunBMiscTB.Text = item.BillingMisc.Value.ToString("0.00##");
                                    }

                                    sunCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Monday" && item.Classification == classification && item.Activity == activity)
                                {
                                    // Accomodation

                                    if (item.BillingAccomodation.HasValue)
                                    {
                                        monBAccomTB.Text = item.PayRollAccomodation.Value.ToString("0.00##");
                                    }

                                    // Hours

                                    if (item.BillingHours.HasValue)
                                    {
                                        monBCHoursTB.Text = item.BillingHours.Value.ToString("0.0");
                                    }
                                    // Distance

                                    if (item.BillingTravelDistance.HasValue)
                                    {
                                        monBDistTB.Text = item.BillingTravelDistance.ToString();
                                    }
                                    // truck distance
                                    if (item.TruckDistance.HasValue)
                                    {
                                        monTruckDistTB.Text = item.TruckDistance.ToString();
                                    }
                                    // Misc

                                    if (item.BillingMisc.HasValue)
                                    {
                                        monBMiscTB.Text = item.BillingMisc.Value.ToString("0.00##");
                                    }
                                    monCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Tuesday" && item.Classification == classification && item.Activity == activity)
                                {
                                    // Accomodation

                                    if (item.BillingAccomodation.HasValue)
                                    {
                                        tuesBAccomTB.Text = item.PayRollAccomodation.Value.ToString("0.00##");
                                    }

                                    // Hours

                                    if (item.BillingHours.HasValue)
                                    {
                                        tuesBCHoursTB.Text = item.BillingHours.Value.ToString("0.0");
                                    }
                                    // Distance

                                    if (item.BillingTravelDistance.HasValue)
                                    {
                                        tuesBDistTB.Text = item.BillingTravelDistance.ToString();
                                    }
                                    // truck distance
                                    if (item.TruckDistance.HasValue)
                                    {
                                        tuesTruckDistTB.Text = item.TruckDistance.ToString();
                                    }
                                    // Misc

                                    if (item.BillingMisc.HasValue)
                                    {
                                        tuesBMiscTB.Text = item.BillingMisc.Value.ToString("0.00##");
                                    }
                                    tuesCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Wednesday" && item.Classification == classification && item.Activity == activity)
                                {
                                    // Accomodation

                                    if (item.BillingAccomodation.HasValue)
                                    {
                                        wedsBAccomTB.Text = item.PayRollAccomodation.Value.ToString("0.00##");
                                    }

                                    // Hours

                                    if (item.BillingHours.HasValue)
                                    {
                                        wedsBCHoursTB.Text = item.BillingHours.Value.ToString("0.0");
                                    }
                                    // Distance

                                    if (item.BillingTravelDistance.HasValue)
                                    {
                                        wedsBDistTB.Text = item.BillingTravelDistance.ToString();
                                    }
                                    // truck distance
                                    if (item.TruckDistance.HasValue)
                                    {
                                        wedsTruckDistTB.Text = item.TruckDistance.ToString();
                                    }
                                    // Misc

                                    if (item.BillingMisc.HasValue)
                                    {
                                        wedsBMiscTB.Text = item.BillingMisc.Value.ToString("0.00##");
                                    }
                                    wedsCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Thursday" && item.Classification == classification && item.Activity == activity)
                                {
                                    // Accomodation

                                    if (item.BillingAccomodation.HasValue)
                                    {
                                        thursBAccomTB.Text = item.PayRollAccomodation.Value.ToString("0.00##");
                                    }

                                    // Hours
                                    if (item.BillingHours.HasValue)
                                    {
                                        thursBCHoursTB.Text = item.BillingHours.Value.ToString("0.0");
                                    }
                                    // Distance

                                    if (item.BillingTravelDistance.HasValue)
                                    {
                                        thursBDistTB.Text = item.BillingTravelDistance.ToString();
                                    }
                                    // truck distance
                                    if (item.TruckDistance.HasValue)
                                    {
                                        thursTruckDistTB.Text = item.TruckDistance.ToString();
                                    }
                                    // Misc

                                    if (item.BillingMisc.HasValue)
                                    {
                                        thursBMiscTB.Text = item.BillingMisc.Value.ToString("0.00##");
                                    }
                                    thursCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Friday" && item.Classification == classification && item.Activity == activity)
                                {    // Accomodation
                                    if (item.BillingAccomodation.HasValue)
                                    {
                                        friBAccomTB.Text = item.PayRollAccomodation.Value.ToString("0.00##");
                                    }

                                    // Hours
                                    if (item.BillingHours.HasValue)
                                    {
                                        friBCHoursTB.Text = item.BillingHours.Value.ToString("0.0");
                                    }
                                    // Distance

                                    if (item.BillingTravelDistance.HasValue)
                                    {
                                        friBDistTB.Text = item.BillingTravelDistance.ToString();
                                    }
                                    // truck distance
                                    if (item.TruckDistance.HasValue)
                                    {
                                        friTruckDistTB.Text = item.TruckDistance.ToString();
                                    }
                                    // Misc

                                    if (item.BillingMisc.HasValue)
                                    {
                                        friBMiscTB.Text = item.BillingMisc.Value.ToString("0.00##");
                                    }
                                    friCRemarksTB.Text = item.Remarks;
                                }
                                else if (item.Day == "Saturday" && item.Classification == classification && item.Activity == activity)
                                {
                                    // Accomodation
                                    if (item.BillingAccomodation.HasValue)
                                    {
                                        satBAccomTB.Text = item.PayRollAccomodation.Value.ToString("0.00##");
                                    }

                                    // Hours
                                    if (item.BillingHours.HasValue)
                                    {
                                        satBCHoursTB.Text = item.BillingHours.Value.ToString("0.0");
                                    }
                                    // Distance
                                    if (item.BillingTravelDistance.HasValue)
                                    {
                                        satBDistTB.Text = item.BillingTravelDistance.ToString();
                                    }
                                    // truck distance
                                    if (item.TruckDistance.HasValue)
                                    {
                                        satTruckDistTB.Text = item.TruckDistance.ToString();
                                    }
                                    // Misc
                                    if (item.BillingMisc.HasValue)
                                    {
                                        satBMiscTB.Text = item.BillingMisc.Value.ToString("0.00##");
                                    }
                                    satCRemarksTB.Text = item.Remarks;
                                }
                            }
                        }
                    }
                }
                // Non-Chargeable
                else if (expense != string.Empty && expense != null || hours != string.Empty && hours != null)
                {
                    // activate corresponding accordion panel
                    aID = 2;
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "toggleAccordion", "accordionToggle();", true);

                    // set the dropdownlists and display the different panels accordingly
                    if (hours != string.Empty)
                    {
                        specifyDDL.SelectedValue = hours;
                        NonChargeHoursPanel.Visible = true;
                    } if (expense != string.Empty)
                    {
                        detailsDDL.SelectedValue = expense;
                        NonChargeExpensesPanel.Visible = true;
                    }

                    // adjust buttons
                    nonChargeBtn.Visible = false;
                    updateNonChargeableBtn.Visible = true;

                    List<ManagerNonChargeable> nonCh = tm.getManagerNonChargeableForTimesheetID(timesheet, expense, hours);
                    if (nonCh != null)
                    {
                        // populate the non chargeable text fields based on the expense and type of hours selected
                        foreach (var item in nonCh)
                        {
                            if (item.Day == "Sunday")
                            {
                                if (item.Accomodations.HasValue)
                                {
                                    sunNCAccomTB.Text = item.Accomodations.Value.ToString("0.####");
                                }
                                sunNCHoursTB.Text = item.Hours.Value.ToString("0.#");
                                sunNCDistanceTB.Text = item.Distance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    sunNCMiscTB.Text = item.Misc.Value.ToString("0.####");
                                }

                                sunNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Monday")
                            {
                                if (item.Accomodations.HasValue)
                                {
                                    monNCAccomTB.Text = item.Accomodations.Value.ToString("0.####");
                                }
                                monNCHoursTB.Text = item.Hours.Value.ToString("0.#");
                                monNCDistanceTB.Text = item.Distance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    monNCMiscTB.Text = item.Misc.Value.ToString("0.####");
                                }

                                monNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Tuesday")
                            {
                                if (item.Accomodations.HasValue)
                                {
                                    tuesNCAccomTB.Text = item.Accomodations.Value.ToString("0.####");
                                }
                                tuesNCHoursTB.Text = item.Hours.Value.ToString("0.#");
                                tuesNCDistanceTB.Text = item.Distance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    tuesNCMiscTB.Text = item.Misc.Value.ToString("0.####");
                                }

                                tuesNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Wednesday")
                            {
                                if (item.Accomodations.HasValue)
                                {
                                    wedsNCAccomTB.Text = item.Accomodations.Value.ToString("0.####");
                                }
                                wedsNCHoursTB.Text = item.Hours.Value.ToString("0.#");
                                wedsNCDistanceTB.Text = item.Distance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    wedsNCMiscTB.Text = item.Misc.Value.ToString("0.####");
                                }
                                wedsNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Thursday")
                            {
                                if (item.Accomodations.HasValue)
                                {
                                    thursNCAccomTB.Text = item.Accomodations.Value.ToString("0.####");
                                }
                                thursNCHoursTB.Text = item.Hours.Value.ToString("0.#");
                                thursNCDistanceTB.Text = item.Distance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    thursNCMiscTB.Text = item.Misc.Value.ToString("0.####");
                                }
                                thursNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Friday")
                            {
                                if (item.Accomodations.HasValue)
                                {
                                    friNCAccomTB.Text = item.Accomodations.Value.ToString("0.####");
                                }
                                friNCHoursTB.Text = item.Hours.Value.ToString("0.#");
                                friNCDistanceTB.Text = item.Distance.ToString();
                                if (item.Misc.HasValue)
                                {
                                    friNCMiscTB.Text = item.Misc.Value.ToString("0.####");
                                }
                                friNCRemarksTB.Text = item.Remarks;
                            }
                            else if (item.Day == "Saturday")
                            {
                                if (item.Accomodations.HasValue)
                                {
                                    satNCAccomTB.Text = item.Accomodations.Value.ToString("0.####");
                                }
                                satNCHoursTB.Text = item.Hours.Value.ToString("0.#");
                                satNCDistanceTB.Text = item.Distance.ToString();
                                satNCRemarksTB.Text = item.Remarks;
                                if (item.Misc.HasValue)
                                {
                                    satNCMiscTB.Text = item.Misc.Value.ToString("0.####");
                                }
                            }
                        }
                    }
                }
            }
        }
        // check to see if weekending is specified update the gridviews
        if (weekEndingTB.Text != string.Empty)
        {
            // re-populate the dates
            ScriptManager.RegisterStartupScript(this, this.GetType(), "populate", "populate();", true);
            // Get the timesheet id for the users whos timesheet we are managing
            string username = tm.getUsernameForEmpNo(empIdTB.Text);
            int id = tm.idForDate(weekEndingTB.Text, tm.idForUsername(username));

            if (id != 0)
            {
                timesheetID = id;
                HiddenField1.Value = id.ToString();
                // update totals
                updateTimeSheetTotals();
                summaryGV.DataBind();
            }
        }
        // populate the predictive text arrays
        projectNoDB = tm.getProjectNumbers();
    }