Index: Scheduling/trunk/cs/bsdx0200GUISourceCode/Printing.cs
===================================================================
--- Scheduling/trunk/cs/bsdx0200GUISourceCode/Printing.cs	(revision 1110)
+++ Scheduling/trunk/cs/bsdx0200GUISourceCode/Printing.cs	(revision 1112)
@@ -9,5 +9,5 @@
 namespace IndianHealthService.ClinicalScheduling
 {
-    public class Printing
+    public partial class Printing
     { 
         /// <summary>
@@ -48,5 +48,26 @@
             //Typical manipulable print area
             Rectangle printArea = e.MarginBounds;
-            
+            Rectangle pageArea = e.PageBounds;
+            Rectangle headerArea = new Rectangle()
+            {
+                X = e.MarginBounds.X,
+                Y = e.PageBounds.Y,
+                Height = e.MarginBounds.Y - e.PageBounds.Y,
+                Width = e.MarginBounds.Width
+            };
+            Rectangle footerArea = new Rectangle()
+            {
+                X = e.MarginBounds.X,
+                Y = e.MarginBounds.Height + headerArea.Height,
+                Width = e.MarginBounds.Width,
+                Height = pageArea.Height - (e.MarginBounds.Height + headerArea.Height)
+            };
+
+            //print footer
+            StringFormat sfFooter = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
+            string s = strings.Printed + ": " + DateTime.Now.ToString();
+            Font fFooter = new Font(FontFamily.GenericSerif, 7);
+            g.DrawString(s, fFooter, Brushes.Black, footerArea, sfFooter);
+
             //resource we want to print
             dsPatientApptDisplay2.BSDXResourceRow r = ds.BSDXResource[resourceToPrint];
@@ -54,5 +75,5 @@
             //header
             string toprint;
-            if (beg == end) toprint = "Appointments for " + r.RESOURCE_NAME + " on " + beg.ToLongDateString();
+            if (beg.Date == end.Date) toprint = "Appointments for " + r.RESOURCE_NAME + " on " + beg.ToLongDateString();
             else toprint = "Appointments for " + r.RESOURCE_NAME + " from " + beg.ToShortDateString() + " to "
                 + end.ToShortDateString();
@@ -60,6 +81,7 @@
             
             //Move print area down
-            printArea.Height -= (int)f14bold.GetHeight();
-            printArea.Y += (int)f14bold.GetHeight();
+            int titleHeight = (int)g.MeasureString(toprint, f14bold, printArea.Size).Height;
+            printArea.Height -= titleHeight;
+            printArea.Y += titleHeight;
 
             //Draw Line
@@ -134,155 +156,4 @@
                 Width = e.MarginBounds.Width
             };
-
-            // A few fonts
-            Font fTitle = new Font(FontFamily.GenericSerif, 24, FontStyle.Bold); //for title
-            Font fBody = new Font(FontFamily.GenericSerif, 12);
-            Font fGroupTitle = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold);
-
-            StringFormat sf0 = new StringFormat()
-            {
-                 Alignment = StringAlignment.Center,
-                 LineAlignment = StringAlignment.Center
-            };
-            
-            // Draw Header
-            string division = CGDocumentManager.Current.ConnectInfo.DivisionName;
-            g.DrawString(division, fBody, Brushes.Black, headerArea, sf0);
-            
-            // Draw Title
-            StringFormat sf = new StringFormat();
-            sf.Alignment = StringAlignment.Center; //for title & header
-
-            string s = "Appointment Reminder Slip";
-            g.DrawString(s, fTitle, Brushes.Black, printArea, sf); //title
-
-            // move down
-            int titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height;
-            printArea.Y += titleHeight;
-            printArea.Height -= titleHeight;
-
-            // draw underline
-            g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
-            printArea.Y += 15;
-            printArea.Height -= 15;
-
-            // draw curved rectangle.
-            Rectangle personalInfoRectangle = new Rectangle(e.MarginBounds.X, printArea.Y + 30, 280, 300);
-            using (GraphicsPath path = GetRoundedRectPath(personalInfoRectangle, 10))
-            {
-                g.DrawPath(Pens.Black, path);
-            }
-
-            // group header
-            g.DrawString("Patient Information", fGroupTitle, Brushes.Black, new Point(personalInfoRectangle.X, personalInfoRectangle.Y - 20));
-            
-            // inner rectangle for drawing strings:
-            Rectangle personalInfoInnerRectangle = new Rectangle(personalInfoRectangle.X + 20, personalInfoRectangle.Y + 20, 280 - 40, 300 - 40);
-            
-            // Strings to write
-            StringBuilder sb = new StringBuilder(500);
-            sb.AppendLine("Name:" + "\t" + appt.Patient.Name);
-            sb.AppendLine();
-            sb.AppendLine("ID#:" + "\t" + appt.Patient.ID);
-            sb.AppendLine();
-            sb.AppendLine("DOB:" + "\t" + appt.Patient.DOB.ToShortDateString());
-            sb.AppendLine();
-            sb.AppendLine("Age:" + "\t" + appt.Patient.UserFriendlyAge);
-            sb.AppendLine();
-            sb.AppendLine("Sex:" + "\t" + appt.Patient.Sex.ToString());
-            
-            // Draw them
-            g.DrawString(sb.ToString(), fBody, Brushes.Black, personalInfoInnerRectangle);
-
-            // draw curved rectangle
-            Rectangle apptInfoRectangle = new Rectangle(e.MarginBounds.X + e.MarginBounds.Width - 280, printArea.Y + 30, 280, 300);
-            using (GraphicsPath path = GetRoundedRectPath(apptInfoRectangle, 10))
-            {
-                g.DrawPath(Pens.Black, path);
-            }
-
-            // group header
-            g.DrawString("Appointment Information", fGroupTitle, Brushes.Black, new Point(apptInfoRectangle.X, apptInfoRectangle.Y - 20));
-
-            // Strings to write
-            sb = new StringBuilder();
-            sb.AppendLine("Clinic: " + "\t" + appt.Resource);
-            sb.AppendLine();
-            sb.AppendLine("Date: " + "\t" + appt.StartTime.ToShortDateString());
-            sb.AppendLine();
-            sb.AppendLine("Day: " + "\t" + appt.StartTime.DayOfWeek.ToString());
-            sb.AppendLine();
-            sb.AppendLine("Time: " + "\t" + appt.StartTime.ToShortTimeString());
-
-            // Draw them
-            Rectangle apptInfoInnerRectangle = new Rectangle(apptInfoRectangle.X + 20, apptInfoRectangle.Y + 20, 280 - 40, 300 - 40);
-
-            // Draw them
-            g.DrawString(sb.ToString(), fBody, Brushes.Black, apptInfoInnerRectangle);
-
-            // Move Drawing Rectangle Down
-            printArea.Y += 300 + 30 + 20;
-            printArea.Height -= 300 + 30 + 20;
-
-            // Draw New Line
-            g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
-            printArea.Y += 5;
-            printArea.Height -= 5;
-
-            // Draw new Title
-            s = "Clinic Instructions";
-            g.DrawString(s, fTitle, Brushes.Black, printArea, sf); //title
-
-            // move down
-            titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height;
-            printArea.Y += titleHeight;
-            printArea.Height -= titleHeight;
-
-            // Draw New Line
-            g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
-            printArea.Y += 15;
-            printArea.Height -= 15;
-
-            // Get Resource Clinic Appointment Letter Text
-            DataTable resources = CGDocumentManager.Current.GlobalDataSet.Tables["Resources"];
-
-            string ltrTxt = (from resource in resources.AsEnumerable()
-                             where resource.Field<string>("RESOURCE_NAME") == appt.Resource
-                             select resource.Field<string>("LETTER_TEXT")).SingleOrDefault<string>();
-
-            if (String.IsNullOrWhiteSpace(ltrTxt)) ltrTxt = "(no instructions provided)";
-
-            g.DrawString(ltrTxt, fBody, Brushes.Black, printArea);
-
-            int ltrTxtHeight = (int)g.MeasureString(ltrTxt, fBody).Height;
-
-            printArea.Y += ltrTxtHeight + 15;
-            printArea.Height -= ltrTxtHeight + 15;
-
-            g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
-            printArea.Y += 5;
-            printArea.Height -= 5;
-
-            s = "Notes";
-            g.DrawString(s, fTitle, Brushes.Black, printArea, sf); // Notes title
-            
-            // move down
-            titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height;
-            printArea.Y += titleHeight;
-            printArea.Height -= titleHeight;
-
-            // Draw New Line
-            g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
-            printArea.Y += 15;
-            printArea.Height -= 15;
-
-            // Draw Notes Area
-            using (GraphicsPath path = GetRoundedRectPath(printArea, 15))
-            {
-                g.DrawPath(Pens.Black, path);
-            }
-
-            // Draw Footer
-            // Get footer rectangle
             Rectangle footerArea = new Rectangle()
             {
@@ -293,6 +164,163 @@
             };
 
+
+            // A few fonts
+            Font fTitle = new Font(FontFamily.GenericSerif, 24, FontStyle.Bold); //for title
+            Font fBody = new Font(FontFamily.GenericSerif, 12);
+            Font fGroupTitle = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold);
+
+            StringFormat sf0 = new StringFormat()
+            {
+                 Alignment = StringAlignment.Center,
+                 LineAlignment = StringAlignment.Center
+            };
+            
+            // Draw Header
+            string division = CGDocumentManager.Current.ConnectInfo.DivisionName;
+            g.DrawString(division, fBody, Brushes.Black, headerArea, sf0);
+            
+            // Draw Title
+            StringFormat sf = new StringFormat();
+            sf.Alignment = StringAlignment.Center; //for title & header
+
+            //string s = "Appointment Reminder Slip";
+            string s = strings.ApptRoutingSlip;
+            g.DrawString(s, fTitle, Brushes.Black, printArea, sf); //title
+
+            // move down
+            int titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height;
+            printArea.Y += titleHeight;
+            printArea.Height -= titleHeight;
+
+            // draw underline
+            g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
+            printArea.Y += 15;
+            printArea.Height -= 15;
+
+            // draw curved rectangle.
+            Rectangle personalInfoRectangle = new Rectangle(e.MarginBounds.X, printArea.Y + 30, 280, 300);
+            using (GraphicsPath path = GetRoundedRectPath(personalInfoRectangle, 10))
+            {
+                g.DrawPath(Pens.Black, path);
+            }
+
+            // group header
+            s = strings.PtInfo;
+            StringFormat sf3 = new StringFormat(System.Threading.Thread.CurrentThread.CurrentUICulture.TextInfo.IsRightToLeft ? StringFormatFlags.DirectionRightToLeft : 0);
+            g.DrawString(s, fGroupTitle, Brushes.Black, new Rectangle(personalInfoRectangle.X, personalInfoRectangle.Y - 20,personalInfoRectangle.Width, 20),sf3);
+            
+            // inner rectangle for drawing strings:
+            Rectangle personalInfoInnerRectangle = new Rectangle(personalInfoRectangle.X + 20, personalInfoRectangle.Y + 20, 280 - 40, 300 - 40);
+            
+            // Strings to write
+            StringBuilder sb = new StringBuilder(500);
+            sb.AppendLine(strings.Name + ":" + "\t" + appt.Patient.Name);
+            sb.AppendLine();
+            sb.AppendLine(strings.ID + ":" + "\t" + appt.Patient.ID);
+            sb.AppendLine();
+            sb.AppendLine(strings.DOB + ":" + "\t" + appt.Patient.DOB.ToShortDateString());
+            sb.AppendLine();
+            sb.AppendLine(strings.Age + ":" + "\t" + appt.Patient.UserFriendlyAge);
+            sb.AppendLine();
+            s = appt.Patient.Sex == Sex.Male ? strings.Male : strings.Female;
+            sb.AppendLine(strings.Sex + ":" + "\t" + s);
+
+            // Draw them
+            sf3 = new StringFormat(System.Threading.Thread.CurrentThread.CurrentUICulture.TextInfo.IsRightToLeft ? StringFormatFlags.DirectionRightToLeft : 0);
+            sf3.SetTabStops(0, new float[] {75} );
+            sf3.SetDigitSubstitution(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID, StringDigitSubstitute.Traditional);
+            g.DrawString(sb.ToString(), fBody, Brushes.Black, personalInfoInnerRectangle, sf3);
+
+            // draw curved rectangle
+            Rectangle apptInfoRectangle = new Rectangle(e.MarginBounds.X + e.MarginBounds.Width - 280, printArea.Y + 30, 280, 300);
+            using (GraphicsPath path = GetRoundedRectPath(apptInfoRectangle, 10))
+            {
+                g.DrawPath(Pens.Black, path);
+            }
+
+            s = strings.ApptInfo;
+            // group header
+            g.DrawString(s, fGroupTitle, Brushes.Black, new Rectangle(apptInfoRectangle.X, apptInfoRectangle.Y - 20,apptInfoRectangle.Width, 20), sf3);
+
+            // Strings to write
+            sb = new StringBuilder();
+            sb.AppendLine(strings.Clinic + ":" + "\t" + appt.Resource);
+            sb.AppendLine();
+            sb.AppendLine(strings.Date + ":" + "\t" + appt.StartTime.ToShortDateString());
+            sb.AppendLine();
+            sb.AppendLine(strings.Day + ":" + "\t" + appt.StartTime.ToString("dddd"));
+            sb.AppendLine();
+            sb.AppendLine(strings.Time + ":" + "\t" + appt.StartTime.ToShortTimeString());
+
+            // Draw them
+            Rectangle apptInfoInnerRectangle = new Rectangle(apptInfoRectangle.X + 20, apptInfoRectangle.Y + 20, 280 - 40, 300 - 40);
+
+            // Draw them
+            g.DrawString(sb.ToString(), fBody, Brushes.Black, apptInfoInnerRectangle, sf3);
+
+            // Move Drawing Rectangle Down
+            printArea.Y += 300 + 30 + 20;
+            printArea.Height -= 300 + 30 + 20;
+
+            // Draw New Line
+            g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
+            printArea.Y += 5;
+            printArea.Height -= 5;
+
+            // Draw new Title
+            s = strings.ClinicInstructions;
+            g.DrawString(s, fTitle, Brushes.Black, printArea, sf); //title
+
+            // move down
+            titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height;
+            printArea.Y += titleHeight;
+            printArea.Height -= titleHeight;
+
+            // Draw New Line
+            g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
+            printArea.Y += 15;
+            printArea.Height -= 15;
+
+            // Get Resource Clinic Appointment Letter Text
+            DataTable resources = CGDocumentManager.Current.GlobalDataSet.Tables["Resources"];
+
+            string ltrTxt = (from resource in resources.AsEnumerable()
+                             where resource.Field<string>("RESOURCE_NAME") == appt.Resource
+                             select resource.Field<string>("LETTER_TEXT")).SingleOrDefault<string>();
+
+            if (String.IsNullOrWhiteSpace(ltrTxt)) ltrTxt = strings.NoInstructionsProvided;
+
+            g.DrawString(ltrTxt, fBody, Brushes.Black, printArea, sf3);
+
+            int ltrTxtHeight = (int)g.MeasureString(ltrTxt, fBody).Height;
+
+            printArea.Y += ltrTxtHeight + 15;
+            printArea.Height -= ltrTxtHeight + 15;
+
+            g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
+            printArea.Y += 5;
+            printArea.Height -= 5;
+
+            s = strings.Notes;
+            g.DrawString(s, fTitle, Brushes.Black, printArea, sf); // Notes title
+            
+            // move down
+            titleHeight = (int)g.MeasureString(s, fTitle, printArea.Width).Height;
+            printArea.Y += titleHeight;
+            printArea.Height -= titleHeight;
+
+            // Draw New Line
+            g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
+            printArea.Y += 15;
+            printArea.Height -= 15;
+
+            // Draw Notes Area
+            using (GraphicsPath path = GetRoundedRectPath(printArea, 15))
+            {
+                g.DrawPath(Pens.Black, path);
+            }
+
             //use sf0 to print the footer (center all the way)
-            s = "Printed: " + DateTime.Now.ToString();
+            s = strings.Printed + ": " + DateTime.Now.ToString();
             Font fFooter = new Font(FontFamily.GenericSerif, 7);
             g.DrawString(s, fFooter, Brushes.Black, footerArea, sf0);
@@ -510,13 +538,47 @@
         /// <param name="title">String to print for title</param>
         /// <param name="e">etc</param>
-        public virtual void PrintRoutingSlip(CGAppointment a, string title, PrintPageEventArgs e)
+        public virtual void PrintRoutingSlip(CGAppointment appt, int apptOrder, PrintPageEventArgs e)
         {
+            // Prep
+            Graphics g = e.Graphics;
             Rectangle printArea = e.MarginBounds;
-            Graphics g = e.Graphics;
+            Rectangle pageArea = e.PageBounds;
+            Rectangle headerArea = new Rectangle()
+            {
+                X = e.MarginBounds.X,
+                Y = e.PageBounds.Y,
+                Height = e.MarginBounds.Y - e.PageBounds.Y,
+                Width = e.MarginBounds.Width
+            };
+            Rectangle footerArea = new Rectangle()
+            {
+                X = e.MarginBounds.X,
+                Y = e.MarginBounds.Height + headerArea.Height,
+                Width = e.MarginBounds.Width,
+                Height = pageArea.Height - (e.MarginBounds.Height + headerArea.Height)
+            };
+
+            const int part1Height = 400;
+            string s;
+
+            // A few fonts
+            Font fTitle = new Font(FontFamily.GenericSerif, 24, FontStyle.Bold); //for title
+            Font fBody = new Font(FontFamily.GenericSerif, 12);
+            Font fGroupTitle = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold);
+
+            StringFormat sf0 = new StringFormat()
+            {
+                Alignment = StringAlignment.Center,
+                LineAlignment = StringAlignment.Center
+            };
+
+            // Draw Header
+            string division = CGDocumentManager.Current.ConnectInfo.DivisionName;
+            g.DrawString(division, fBody, Brushes.Black, headerArea, sf0);
+
+            // Draw Title
             StringFormat sf = new StringFormat();
-            sf.Alignment = StringAlignment.Center; //for title
-            Font fTitle = new Font(FontFamily.GenericSerif, 24, FontStyle.Bold); //for title
-            Font fBody = new Font(FontFamily.GenericSerif, 18);
-            Font fBodyEm = new Font(FontFamily.GenericSerif, 18, FontStyle.Bold);
+            sf.Alignment = StringAlignment.Center; //for title & header
+            string title = "Routing Slip";
             g.DrawString(title, fTitle, Brushes.Black, printArea, sf); //title
 
@@ -528,30 +590,107 @@
             // draw underline
             g.DrawLine(Pens.Black, printArea.Location, new Point(printArea.Right, printArea.Y));
-
-            // move down
             printArea.Y += 15;
             printArea.Height -= 15;
 
-            //construct what to print
-            string toprint = "Patient: " + a.PatientName + "\t" + "ID: " + a.HealthRecordNumber;
-            toprint += "\n\n";
-            toprint += "Clinic: " + a.Resource;
-            toprint += "\n\n";
-            toprint += "Appointment Time: " + a.StartTime;
-            toprint += "\n\n";
-            toprint += "Notes:\n" + a.Note;
-
-            //print
-            g.DrawString(toprint, fBody, Brushes.Black, printArea);
-
-            // Print Date Printed
-            //sf to move to bottom center
-            StringFormat sf2 = new StringFormat();
-            sf2.LineAlignment = StringAlignment.Far;
-            sf2.Alignment = StringAlignment.Center;
-
-            //Print
-            Font fFooter = new Font(FontFamily.GenericSerif, 8);
-            g.DrawString("Printed: " + DateTime.Now, fFooter, Brushes.Black, printArea, sf2);
+            // draw curved rectangle.
+            Rectangle personalInfoRectangle = new Rectangle(e.MarginBounds.X, printArea.Y + 30, 280, part1Height);
+            using (GraphicsPath path = GetRoundedRectPath(personalInfoRectangle, 10))
+            {
+                g.DrawPath(Pens.Black, path);
+            }
+
+            // group header
+            g.DrawString("Patient Information", fGroupTitle, Brushes.Black, new Point(personalInfoRectangle.X, personalInfoRectangle.Y - 20));
+
+            // inner rectangle for drawing strings:
+            Rectangle personalInfoInnerRectangle = new Rectangle(personalInfoRectangle.X + 20, personalInfoRectangle.Y + 20, personalInfoRectangle.Width - 40, personalInfoRectangle.Height - 40);
+
+            // Strings to write
+            StringBuilder sb = new StringBuilder(500);
+            sb.AppendLine("Name:" + "\t" + appt.Patient.Name);
+            sb.AppendLine();
+            sb.AppendLine("ID#:" + "\t" + appt.Patient.ID);
+            sb.AppendLine();
+            sb.AppendLine("DOB:" + "\t" + appt.Patient.DOB.ToShortDateString());
+            sb.AppendLine();
+            sb.AppendLine("Age:" + "\t" + appt.Patient.UserFriendlyAge);
+            sb.AppendLine();
+            sb.AppendLine("Sex:" + "\t" + appt.Patient.Sex.ToString());
+
+            // Draw them
+            g.DrawString(sb.ToString(), fBody, Brushes.Black, personalInfoInnerRectangle);
+
+            // draw curved rectangle
+            Rectangle apptInfoRectangle = new Rectangle(e.MarginBounds.X + e.MarginBounds.Width - 280, printArea.Y + 30, 280, part1Height);
+            using (GraphicsPath path = GetRoundedRectPath(apptInfoRectangle, 10))
+            {
+                g.DrawPath(Pens.Black, path);
+            }
+
+            // group header
+            g.DrawString("Appointment Information", fGroupTitle, Brushes.Black, new Point(apptInfoRectangle.X, apptInfoRectangle.Y - 20));
+
+            // Strings to write
+            sb = new StringBuilder();
+            sb.AppendLine("Clinic:");
+            sb.AppendLine(appt.Resource);
+            sb.AppendLine();
+            sb.AppendLine("Appointment Provider:"); 
+            sb.AppendLine((appt.Provider == null) ? "(none)" : appt.Provider.ToString());  //Appt Provider or (none) if null
+            sb.AppendLine();
+            sb.AppendLine("Patient Order:" + "\t" + apptOrder);
+            sb.AppendLine("Date: " + "\t" + appt.StartTime.ToShortDateString() + " " + appt.StartTime.ToShortTimeString());
+            sb.AppendLine();
+            sb.AppendLine("Appointment Note: ");
+            sb.AppendLine(String.IsNullOrWhiteSpace(appt.Note)? "(none)" : appt.Note);
+
+            // Draw them
+            Rectangle apptInfoInnerRectangle = new Rectangle(apptInfoRectangle.X + 20, apptInfoRectangle.Y + 20, apptInfoRectangle.Width - 40, apptInfoRectangle.Height - 40);
+
+            // Draw them
+            g.DrawString(sb.ToString(), fBody, Brushes.Black, apptInfoInnerRectangle);
+
+            // Move Drawing Rectangle Down
+            printArea.Y += apptInfoRectangle.Height + 30 + 20;
+            printArea.Height -= apptInfoRectangle.Height + 30 + 20;
+
+            // Draw New Line
+            using (Pen dashpen = new Pen(Color.Black))
+            {
+                dashpen.DashStyle = DashStyle.Dash;
+                g.DrawLine(dashpen, printArea.Location, new Point(printArea.Right, printArea.Y));
+            }
+
+            printArea.Y += 5;
+            printArea.Height -= 5;
+
+            s = "Scratch Area";
+            g.DrawString(s, fGroupTitle, Brushes.Black, printArea); 
+
+            // move down
+            printArea.Y += 300;
+            printArea.Height -= 300;
+
+            //TODO: Put Next Appointment Area
+            using (Pen dashpen = new Pen(Color.Black))
+            {
+                dashpen.DashStyle = DashStyle.Dot;
+                g.DrawLine(dashpen, printArea.Location, new Point(printArea.Right, printArea.Y));
+            }
+
+            printArea.Y += 5;
+            printArea.Height -= 5;
+
+            s = "Next Appointment Instructions";
+            g.DrawString(s, fGroupTitle, Brushes.Black, printArea);
+
+            // Draw Footer
+            //use sf0 to print the footer (center all the way)
+            s = "Printed: " + DateTime.Now.ToString();
+            Font fFooter = new Font(FontFamily.GenericSerif, 7);
+            g.DrawString(s, fFooter, Brushes.Black, footerArea, sf0);
+
+            g.Dispose();
+
         }
 
