protected void BtnBreak_Click(object sender, EventArgs e)
        {
            int userid = Convert.ToInt32(Session["UserId"]);
            JobType jobtype = new JobType();
            jobtype = jobtype.GetDefaultBreak();
            DateTime selectedDate = DateTime.Parse(txtBoxDate.Text);
            JobTracker jobtracker = new JobTracker();
            bool noError = true;
            User user = new User();
            user = user.GetUser(userid, selectedDate);

            if (jobtracker.HasPreviousUnclosedJobs(userid,DateTime.Today)) //check if user has unclosed jobs
            {
                noError = false;
                panelAlertHeader2.CssClass = "modalAlertHeader";
                alertModalBtnOK2.CssClass = "buttonalert";
                labelAlertHeader2.Text = "Error";
                labelAlertMessage2.Text = "Please close all jobs before adding a new one.";
                programmaticAlertModalPopup2.Show();
            }
            else
            {
                string errMsg = "";
                errMsg = jobtracker.GetError(userid, selectedDate, 30); //check if there is an error
                if (errMsg.Trim() != "")
                {
                    noError = false;
                    panelAlertHeader2.CssClass = "modalAlertHeader";
                    alertModalBtnOK2.CssClass = "buttonalert";
                    labelAlertHeader2.Text = "Error";
                    labelAlertMessage2.Text = errMsg.Trim() + " Please settle error first.";
                    programmaticAlertModalPopup2.Show();
                }
            }
            if (noError)
            {
                if (TimeSpan.Parse(user.startTime) > TimeSpan.Parse(user.endTime)) //check if user has shifting hours
                {
                    RunBreakButtonActionForShifting();
                }
                else
                {
                    RunBreakButtonAction();
                }

            }
        }
        protected void gridViewJobTrack_Command(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Select")
            {
                modalBtnDelete.Visible = true;
                DateTime date = Convert.ToDateTime(txtBoxDate.Text);
                int i = Convert.ToInt32(e.CommandArgument);
                int userid = Convert.ToInt32(Session["UserId"]);
                int jobtrackerId = Convert.ToInt32(((Label)gridJobTrack.Rows[i].FindControl("labelJobTrackId")).Text);
                bool noError = true;
                if (date.CompareTo(DateTime.Today) < 0)
                {
                    SupervisorMapping supmap = new SupervisorMapping();
                    if (supmap.GetActiveSupervisors(userid).Count < 1)
                    {
                        noError = false;
                        panelAlertHeader2.CssClass = "modalAlertHeader";
                        alertModalBtnOK2.CssClass = "buttonalert";
                        labelAlertHeader2.Text = "Error";
                        labelAlertMessage2.Text = "Sorry you cannot edit job on previous date without a direct supervisor. Please contact your system administrator.";
                        programmaticAlertModalPopup2.Show();
                    }
                }
                else
                {
                    JobTracker jobtracker = new JobTracker();
                    string errMsg = "";
                    errMsg = jobtracker.GetError(userid, date, 7);
                    if (errMsg.Trim() != "")
                    {
                        noError = false;
                        panelAlertHeader2.CssClass = "modalAlertHeader";
                        alertModalBtnOK2.CssClass = "buttonalert";
                        labelAlertHeader2.Text = "Error";
                        labelAlertMessage2.Text = errMsg.Trim() + " Please settle error first.";
                        programmaticAlertModalPopup2.Show();
                    }
                }
                if(noError)
                {
                    JobTracker jobtracker = new JobTracker();
                    jobtracker = jobtracker.GetJobTracker(jobtrackerId,false);
                    //List<JobTracker> datalist = new List<JobTracker>();
                    //datalist = jobtracker.GetJobTrackerList(userid, date);
                    modalLabelError.Text = "";
                    modalLabelError.Visible = false;
                    modalBtnSubmit.CommandArgument = jobtracker.Id.ToString();
                    modalBtnDelete.CommandArgument = jobtracker.Id.ToString();

                    InitializeModalJobType(jobtracker.JobTypeId.ToString());
                    //InitializeModalStartTime(jobtracker.StartTime.ToString());
                    InitializeModalJobStatus(jobtracker.JobStatus == null ? "" : jobtracker.JobStatus.Trim());

                    bool generateBlank = false;
                    if (date.CompareTo(DateTime.Today) == 0)
                        generateBlank = true;

                    Session["StartTime"] = Convert.ToDateTime(jobtracker.StartTime).TimeOfDay.ToString();
                    GenerateStartHour(Convert.ToDateTime(jobtracker.StartTime).TimeOfDay.ToString());
                    GenerateStartMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToDateTime(jobtracker.StartTime).TimeOfDay.ToString());

                    string endtime = "";
                    if (jobtracker.EndTime != null)
                        endtime = jobtracker.EndTime.ToString();
                    //InitializeModalEndTime(endtime);

                    GenerateEndHour(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToInt32(modalDropDownStartTimeMin.SelectedItem.Value), generateBlank, endtime == "" ? "" : Convert.ToDateTime(jobtracker.EndTime).ToString());
                    GenerateEndMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToInt32(modalDropDownStartTimeMin.SelectedItem.Value), modalDropDownEndTimeHour.SelectedItem.Text.Trim(), endtime == "" ? "" : Convert.ToDateTime(jobtracker.EndTime).TimeOfDay.ToString());
                    //if (datalist[i].ApprovedBy != null && datalist[i].ApprovedBy != userid && datalist[i].ApprovedBy != 0)
                    //{
                    //    //InitializeModalSupervisor(datalist[i].ApprovedBy.ToString());
                    //    //modalLabelSupervisor.Visible = true;
                    //    //modalLabelSupColon.Visible = true;
                    //    //modalDropDownSupervisor.Visible = true;
                    //}
                    //else if (date.CompareTo(DateTime.Today) < 0)
                    //{
                    //InitializeModalSupervisor();
                    //modalLabelSupervisor.Visible = true;
                    //modalLabelSupColon.Visible = true;
                    //modalDropDownSupervisor.Visible = true;
                    //}
                    //else
                    //{
                    //    //modalLabelSupervisor.Visible = false;
                    //    //modalLabelSupColon.Visible = false;
                    //    //modalDropDownSupervisor.Visible = false;
                    //}
                    if (jobtracker.JobIdNumber != null && jobtracker.JobIdNumber.Trim() != "")
                    {

                        modalTxtBoxJobId.Text = jobtracker.JobIdNumber;
                        JobTracker jobTracker = new JobTracker();
                        jobTracker = jobTracker.GenerateHWAndSW(modalTxtBoxJobId.Text.Trim());
                        modallabelBoxJobDescription.Text = jobTracker.Description;
                        modallabelCustomer.Text = jobTracker.Customer;
                        modalLabelHWSW.Text = jobTracker.HWNo;
                        modalLabelHWSW.ToolTip = jobTracker.SWNo;
                        modalLabelEvalNo.Text = jobTracker.EvalNo;
                    }

                    modalTxtBoxRemarks.Text = jobtracker.Remarks == null ? "" : jobtracker.Remarks.Trim();

                    Page.Validate();
                    this.programmaticModalPopup.Show();
                }
            }
        }
        //Action triggered when the users click the add job track button
        protected void linkBtnAddJobTrack_Click(object sender, EventArgs e)
        {
            Session["StartTime"] = null;
            JobTracker jobtracker = new JobTracker();
            DateTime selectedDate = DateTime.Parse(txtBoxDate.Text);
            int userid = Convert.ToInt32(Session["UserId"]);
            bool noError = true;

            if (jobtracker.HasUnclosedJobs(userid)) //check if user has unclosed jobs
            {
                noError = false;
                panelAlertHeader2.CssClass = "modalAlertHeader";
                alertModalBtnOK2.CssClass = "buttonalert";
                labelAlertHeader2.Text = "Error";
                labelAlertMessage2.Text = "Please close all jobs before adding a new one.";
                programmaticAlertModalPopup2.Show();
            }
            if (selectedDate.CompareTo(DateTime.Today) < 0)
            {
                SupervisorMapping supmap = new SupervisorMapping();
                if (supmap.GetActiveSupervisors(userid).Count < 1)
                {
                    noError = false;
                    panelAlertHeader2.CssClass = "modalAlertHeader";
                    alertModalBtnOK2.CssClass = "buttonalert";
                    labelAlertHeader2.Text = "Error";
                    labelAlertMessage2.Text = "Sorry you cannot add job on previous date without a direct supervisor. Please contact your system administrator.";
                    programmaticAlertModalPopup2.Show();
                }
            }
            else
            {
                string errMsg = "";
                errMsg = jobtracker.GetError(userid, selectedDate, 30); //check if there is an error
                if (errMsg.Trim() != "")
                {
                    noError = false;
                    panelAlertHeader2.CssClass = "modalAlertHeader";
                    alertModalBtnOK2.CssClass = "buttonalert";
                    labelAlertHeader2.Text = "Error";
                    labelAlertMessage2.Text = errMsg.Trim() + " Please settle error first.";
                    programmaticAlertModalPopup2.Show();
                }
            }
            if(noError)
            {
                InitializeModalJobType();
                //InitializeModalStartTime();
                //InitializeModalEndTime();
                InitializeModalJobStatus();

                bool generateBlank = false;
                if (selectedDate.CompareTo(DateTime.Today) == 0)
                    generateBlank = true;
                GenerateStartHour();
                GenerateStartMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value));
                GenerateEndHour(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToInt32(modalDropDownStartTimeMin.SelectedItem.Value), generateBlank);
                GenerateEndMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToInt32(modalDropDownStartTimeMin.SelectedItem.Value), modalDropDownEndTimeHour.SelectedItem.Text.Trim());

                modalBtnSubmit.CommandArgument = "Add";

                modalBtnDelete.Visible = false;
                modalTxtBoxRemarks.Text = "";
                modalLabelError.Text = "";
                modalLabelError.Visible = false;
                modallabelBoxJobDescription.Text = "";
                modallabelCustomer.Text = "";
                modalTxtBoxJobId.Text = "";
                modalLabelHWSW.Text = "";
                modalLabelHWSW.ToolTip = "";
                modalLabelEvalNo.Text = "";
                //modalTxtBoxJobId.Enabled = false;
                Page.Validate();

                this.programmaticModalPopup.Show();
            }
        }