Index: Scheduling/trunk/cs/bsdx0200GUISourceCode/Printing.cs
===================================================================
--- Scheduling/trunk/cs/bsdx0200GUISourceCode/Printing.cs	(revision 1126)
+++ Scheduling/trunk/cs/bsdx0200GUISourceCode/Printing.cs	(revision 1131)
@@ -136,4 +136,7 @@
                 apptPrinting++;
             }
+
+
+            g.Dispose();
         }
 
@@ -164,4 +167,5 @@
             };
 
+            string s;
 
             // A few fonts
@@ -170,5 +174,5 @@
             Font fGroupTitle = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold);
 
-            StringFormat sf0 = new StringFormat()
+            StringFormat sfCenterCenter = new StringFormat()
             {
                  Alignment = StringAlignment.Center,
@@ -178,13 +182,19 @@
             // Draw Header
             string division = CGDocumentManager.Current.ConnectInfo.DivisionName;
-            g.DrawString(division, fBody, Brushes.Black, headerArea, sf0);
-            
+            g.DrawString(division, fBody, Brushes.Black, headerArea, sfCenterCenter);
+
+            const int watermarkLength = 75;
+
+            // Move down for optional form paper
+            printArea.Y += watermarkLength;
+            printArea.Height -= watermarkLength;
+
             // Draw Title
-            StringFormat sf = new StringFormat();
-            sf.Alignment = StringAlignment.Center; //for title & header
+            StringFormat sfCenter = new StringFormat();
+            sfCenter.Alignment = StringAlignment.Center; //for title & header
 
             //string s = "Appointment Reminder Slip";
-            string s = strings.ApptReminderSlip;
-            g.DrawString(s, fTitle, Brushes.Black, printArea, sf); //title
+            s = strings.ApptReminderSlip;
+            g.DrawString(s, fTitle, Brushes.Black, printArea, sfCenter); //title
 
             // move down
@@ -270,5 +280,5 @@
             // Draw new Title
             s = strings.ClinicInstructions;
-            g.DrawString(s, fTitle, Brushes.Black, printArea, sf); //title
+            g.DrawString(s, fTitle, Brushes.Black, printArea, sfCenter); //title
 
             // move down
@@ -303,5 +313,5 @@
 
             s = strings.Notes;
-            g.DrawString(s, fTitle, Brushes.Black, printArea, sf); // Notes title
+            g.DrawString(s, fTitle, Brushes.Black, printArea, sfCenter); // Notes title
             
             // move down
@@ -324,6 +334,7 @@
             s = strings.Printed + ": " + DateTime.Now.ToString();
             Font fFooter = new Font(FontFamily.GenericSerif, 7);
-            g.DrawString(s, fFooter, Brushes.Black, footerArea, sf0);
-
+            g.DrawString(s, fFooter, Brushes.Black, footerArea, sfCenterCenter);
+
+            g.Dispose();
         }
 
@@ -404,4 +415,6 @@
             address.AppendLine(ptRow.CITY + ", " + ptRow.STATE + " " + ptRow.ZIP);
             g.DrawString(address.ToString(), fBody, Brushes.Black, printArea, sf);
+
+            g.Dispose();
         }
        
@@ -460,4 +473,6 @@
             address.AppendLine(ptRow.CITY + ", " + ptRow.STATE + " " + ptRow.ZIP);
             g.DrawString(address.ToString(), fBody, Brushes.Black, printArea, sf);
+
+            g.Dispose();
         }
 
@@ -518,4 +533,5 @@
             g.DrawString(address.ToString(), fBody, Brushes.Black, printArea, sf);
 
+            g.Dispose();
         }
 
@@ -530,4 +546,5 @@
             e.Graphics.DrawString(msg, new Font(FontFamily.GenericSerif, 14),
                 Brushes.Black, e.MarginBounds);
+            e.Graphics.Dispose();
         }
 
@@ -577,8 +594,14 @@
             g.DrawString(division, fBody, Brushes.Black, headerArea, sf0);
 
+            const int watermarkLength = 75;
+
+            // Move down for optional form paper
+            printArea.Y += watermarkLength;
+            printArea.Height -= watermarkLength;
+
             // Draw Title
             StringFormat sf = new StringFormat();
             sf.Alignment = StringAlignment.Center; //for title & header
-            string title = "Routing Slip";
+            string title = strings.RoutingSlip;
             g.DrawString(title, fTitle, Brushes.Black, printArea, sf); //title
 
@@ -601,5 +624,11 @@
 
             // group header
-            g.DrawString("Patient Information", fGroupTitle, Brushes.Black, new Point(personalInfoRectangle.X, personalInfoRectangle.Y - 20));
+            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);
+
+            StringFormat sf4 = new StringFormat(System.Threading.Thread.CurrentThread.CurrentUICulture.TextInfo.IsRightToLeft ? StringFormatFlags.DirectionRightToLeft : 0);
+            sf4.SetTabStops(0, new float[] { 75 });
+            sf4.SetDigitSubstitution(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID, StringDigitSubstitute.Traditional);
 
             // inner rectangle for drawing strings:
@@ -608,16 +637,16 @@
             // 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(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();
             //sb.AppendLine("Sex:" + "\t" + appt.Patient.Sex.ToString());
 
             // Draw them
-            g.DrawString(sb.ToString(), fBody, Brushes.Black, personalInfoInnerRectangle);
+            g.DrawString(sb.ToString(), fBody, Brushes.Black, personalInfoInnerRectangle, sf4);
 
             // draw curved rectangle
@@ -629,19 +658,20 @@
 
             // group header
-            g.DrawString("Appointment Information", fGroupTitle, Brushes.Black, new Point(apptInfoRectangle.X, apptInfoRectangle.Y - 20));
+            s = strings.ApptInfo;
+            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("Clinic:");
+            sb.AppendLine(strings.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);
+            sb.AppendLine(strings.AppointmentProvider + ":"); 
+            sb.AppendLine((appt.Provider == null) ? strings.none : appt.Provider.ToString());  //Appt Provider or (none) if null
+            sb.AppendLine();
+            sb.AppendLine(strings.PatientOrder + ":" + "\t" + apptOrder);
+            sb.AppendLine(strings.Date + ":" + "\t" + appt.StartTime.ToShortDateString() + " " + appt.StartTime.ToShortTimeString());
+            sb.AppendLine();
+            sb.AppendLine(strings.AppointmentNote + ":");
+            sb.AppendLine(String.IsNullOrWhiteSpace(appt.Note)? strings.none : appt.Note);
 
             // Draw them
@@ -649,5 +679,5 @@
 
             // Draw them
-            g.DrawString(sb.ToString(), fBody, Brushes.Black, apptInfoInnerRectangle);
+            g.DrawString(sb.ToString(), fBody, Brushes.Black, apptInfoInnerRectangle, sf4);
 
             // Move Drawing Rectangle Down
@@ -665,12 +695,11 @@
             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
+            s = strings.ScratchArea;
+            g.DrawString(s, fGroupTitle, Brushes.Black, printArea, sf3); 
+
+            // move down
+            printArea.Y += 240;
+            printArea.Height -= 240;
+
             using (Pen dashpen = new Pen(Color.Black))
             {
@@ -682,10 +711,10 @@
             printArea.Height -= 5;
 
-            s = "Next Appointment Instructions";
-            g.DrawString(s, fGroupTitle, Brushes.Black, printArea);
+            s = strings.NextAppointmentInstructions;
+            g.DrawString(s, fGroupTitle, Brushes.Black, printArea, sf3);
 
             // Draw Footer
             //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);
