Index: /Scheduling/trunk/cs/bsdx0200GUISourceCode/CGDocument.cs
===================================================================
--- /Scheduling/trunk/cs/bsdx0200GUISourceCode/CGDocument.cs	(revision 1069)
+++ /Scheduling/trunk/cs/bsdx0200GUISourceCode/CGDocument.cs	(revision 1070)
@@ -113,19 +113,4 @@
 			{
 				this.m_dSelectedDate = value;
-				bool bRet = false;
-				if (m_sResourcesArray.Count == 1)
-				{
-					bRet = this.WeekNeedsRefresh(1, m_dSelectedDate, out this.m_dStartDate, out this.m_dEndDate);
-				}
-				else
-				{
-					this.m_dStartDate = m_dSelectedDate;
-					this.m_dEndDate = m_dSelectedDate;
-					this.m_dEndDate = this.m_dEndDate.AddHours(23);
-					this.m_dEndDate = this.m_dEndDate.AddMinutes(59);
-					this.m_dEndDate = this.m_dEndDate.AddSeconds(59);
-				}
-
-				bRet = RefreshSchedule();
 			}
 		}
@@ -303,27 +288,21 @@
 		}
 
-		private void SetDate(DateTime dDate)
-		{
-			bool bRet = false;
-			if (m_ScheduleType == ScheduleType.Resource)
-			{
-				bRet = this.WeekNeedsRefresh(2,dDate, out this.m_dStartDate, out this.m_dEndDate);
-			}
-			else
-			{
-				this.m_dStartDate = dDate;
-				this.m_dEndDate = dDate;
-				this.m_dEndDate = this.m_dEndDate.AddHours(23);
-				this.m_dEndDate = this.m_dEndDate.AddMinutes(59);
-				this.m_dEndDate = this.m_dEndDate.AddSeconds(59);
-			}
+		public void RefreshDocument()
+		{
+            bool bRet = false;
+            if (m_sResourcesArray.Count == 1)
+            {
+                bRet = this.WeekNeedsRefresh(1, m_dSelectedDate, out this.m_dStartDate, out this.m_dEndDate);
+            }
+            else
+            {
+                this.m_dStartDate = m_dSelectedDate;
+                this.m_dEndDate = m_dSelectedDate;
+                this.m_dEndDate = this.m_dEndDate.AddHours(23);
+                this.m_dEndDate = this.m_dEndDate.AddMinutes(59);
+                this.m_dEndDate = this.m_dEndDate.AddSeconds(59);
+            }
 
 			bRet = RefreshSchedule();
-			this.UpdateAllViews();
-		}
-
-		public void RefreshDocument()
-		{
-			bool bRet = RefreshSchedule();
 			this.UpdateAllViews();
 		}
@@ -356,4 +335,5 @@
 				CGView view = null;
 				//If this document already has a view, the use it
+                //SAM: Why do this again???
 				Hashtable h = CGDocumentManager.Current.Views;		
 				CGDocument d;
@@ -590,6 +570,6 @@
 			//TODO:  Test that resource is not currently in list, that it IS a resource, etc
 			this.m_sResourcesArray.Add(sResource);
-            //UpdateAllViews: Redraws all the open views. But does not call server.
-			this.UpdateAllViews();
+            //SAM: removing: Remove UpdateAllViews: Redraws all the open views. But does not call server.
+			//this.UpdateAllViews();
 		}
 
Index: /Scheduling/trunk/cs/bsdx0200GUISourceCode/CGDocumentManager.cs
===================================================================
--- /Scheduling/trunk/cs/bsdx0200GUISourceCode/CGDocumentManager.cs	(revision 1069)
+++ /Scheduling/trunk/cs/bsdx0200GUISourceCode/CGDocumentManager.cs	(revision 1070)
@@ -198,4 +198,5 @@
 
             //Create the first empty document
+            //SAM: Good place for break point
             CGDocument doc = new CGDocument();
             doc.DocManager = _current;
@@ -281,10 +282,4 @@
 		#region Methods & Events
 
-        
-		private void StartSplash(object form)
-		{
-            ((DSplash)form).ShowDialog();
-		}
-
         /// <summary>
         /// See InitializeApp(bool) below
@@ -325,5 +320,5 @@
 
             //Start new thread for the Splash screen.
-            Thread threadSplash = new Thread(new ParameterizedThreadStart(StartSplash));
+            Thread threadSplash = new Thread(new ParameterizedThreadStart(frm => ((DSplash)frm).ShowDialog()));
             threadSplash.IsBackground = true; //expendable thread -- exit even if still running.
             threadSplash.Name = "Splash Thread";
Index: /Scheduling/trunk/cs/bsdx0200GUISourceCode/CGView.cs
===================================================================
--- /Scheduling/trunk/cs/bsdx0200GUISourceCode/CGView.cs	(revision 1069)
+++ /Scheduling/trunk/cs/bsdx0200GUISourceCode/CGView.cs	(revision 1070)
@@ -651,5 +651,4 @@
             this.tvSchedules.Sorted = true;
             this.tvSchedules.TabIndex = 1;
-            this.tvSchedules.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.tvSchedules_BeforeSelect);
             this.tvSchedules.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvSchedules_AfterSelect);
             this.tvSchedules.Click += new System.EventHandler(this.tvSchedules_Click);
@@ -820,7 +819,7 @@
             this.calendarGrid1.TabIndex = 0;
             this.calendarGrid1.TimeScale = 20;
-            this.calendarGrid1.CGAppointmentAdded += new CalendarGrid.CGAppointmentChangedHandler(this.calendarGrid1_CGAppointmentAdded);
-            this.calendarGrid1.CGAppointmentChanged += new CalendarGrid.CGAppointmentChangedHandler(this.calendarGrid1_CGAppointmentChanged);
-            this.calendarGrid1.CGSelectionChanged += new CalendarGrid.CGSelectionChangedHandler(this.calendarGrid1_CGSelectionChanged);
+            this.calendarGrid1.CGAppointmentChanged += new IndianHealthService.ClinicalScheduling.CalendarGrid.CGAppointmentChangedHandler(this.calendarGrid1_CGAppointmentChanged);
+            this.calendarGrid1.CGAppointmentAdded += new IndianHealthService.ClinicalScheduling.CalendarGrid.CGAppointmentChangedHandler(this.calendarGrid1_CGAppointmentAdded);
+            this.calendarGrid1.CGSelectionChanged += new IndianHealthService.ClinicalScheduling.CalendarGrid.CGSelectionChangedHandler(this.calendarGrid1_CGSelectionChanged);
             this.calendarGrid1.DoubleClick += new System.EventHandler(this.calendarGrid1_DoubleClick);
             // 
@@ -1494,11 +1493,12 @@
 		}
 
-
+        /// <summary>
+        /// Opens a view of the Schedule a user requested to open at a specific date
+        /// </summary>
+        /// <param name="sSelectedTreeResourceArray">A set of resources to open (?pending more investigation)</param>
+        /// <param name="dDate">Date at which to show the Grid</param>
 		private void OpenSelectedSchedule(ArrayList sSelectedTreeResourceArray, DateTime dDate)
 		{
 			//If resource already open, then navigate to its window
-            //XXX: Why is this doc definition here? Should be under else scope
-            //XXX: Use Bananna peeling instead of if/else
-			CGDocument doc;
 			CGView v =this.DocManager.GetViewByResource(sSelectedTreeResourceArray);
 			if (v != null) 
@@ -1506,118 +1506,119 @@
 				v.Activate();
 				v.dateTimePicker1.Value = dDate;
+                return;
+			}
+
+			//If this Document has no resources then use it (happens when the GUI has nothing open, typically after log-in)
+			//Else, create a new document
+            CGDocument doc;
+            if (this.Document.m_sResourcesArray.Count == 0)
+			{
+                doc = this.Document;
 			}
 			else 
 			{
-				//If not already open, open it
-				//If current document has a resource, then open a new window 
-				//with the selected resource.
-				//Otherwise just use the current document.
-				if (this.Document.m_sResourcesArray.Count > 0)
-				{
-					doc = new CGDocument();
-					doc.DocManager = this.DocManager;
-				}
-				else 
-				{
-					doc = this.Document;
-				}
-				for (int j=0; j < sSelectedTreeResourceArray.Count; j++)
-				{
-                    // Investigate this. This draws the grid when there is nothing to draw!!!
-					doc.AddResource((string) sSelectedTreeResourceArray[j]);
-				}
-
-				doc.DocName = this.m_sDocName;
+                doc = new CGDocument();
+                doc.DocManager = this.DocManager;				
+			}
+
+            //Add resources to Document
+			for (int j=0; j < sSelectedTreeResourceArray.Count; j++)
+			{
+				doc.AddResource((string) sSelectedTreeResourceArray[j]);
+			}
+
+			doc.DocName = this.m_sDocName;
 				
-                try
-				{
-					doc.OnOpenDocument();
-				}
+            try
+			{
+				doc.OnOpenDocument();
+			}
 				
-                catch (Exception ex)
-				{
-					MessageBox.Show("Unable to open " + m_sDocName + " schedule.  " +  ex.Message, "Clinical Scheduling");
-					this.m_DocManager.CloseAllViews(doc);
-					return;
-				}
-				v =this.DocManager.GetViewByResource(sSelectedTreeResourceArray);
-				v.dateTimePicker1.Value = dDate;
-
-				//Get preferred time scale from resource info
-				//If more than one resource, get smallest time scale
-				CalendarGrid cg = v.CGrid;
-				DataTable dt = this.DocManager.GlobalDataSet.Tables["Resources"];
-				DataView dv = new DataView(dt, "", "RESOURCE_NAME ASC", DataViewRowState.OriginalRows);
-				int nScale = 60;
-				int nTest=0;
-				string sResource;
-				int nDataRow;
-				DataRowView drv;
-				for (int j=0; j < sSelectedTreeResourceArray.Count; j++)
-				{
-					sResource = (string) sSelectedTreeResourceArray[j];
-					nDataRow = dv.Find(sResource);
-					Debug.Assert(nDataRow != -1);
-					drv = dv[nDataRow];
-					if (drv["TIMESCALE"].ToString() == "")
-					{
-						nTest = 15; //15 minute default
-					}
-					else
-					{
-						nTest = (int) drv["TIMESCALE"];
-					}
-					nScale = (nTest < nScale)?nTest : nScale ;
-				}
-
-				cg.TimeScale = nScale;
-
-				cg.PositionGrid(7);
-
-				//Get the OverBook and ModifySchedule permissions from ResourceUser table
-				//and populate the hashtables
-				string	sOverbook;
-				string	sModSchedule;
-				string	sModAppts;
-				bool	bOverbook;
-				bool	bModSchedule;
-				bool	bModAppts;
-				v.m_htOverbook = new Hashtable(sSelectedTreeResourceArray.Count);
-				v.m_htModifySchedule = new Hashtable(sSelectedTreeResourceArray.Count);
-				v.m_htChangeAppts = new Hashtable(sSelectedTreeResourceArray.Count);
-				dt = this.DocManager.GlobalDataSet.Tables["ResourceUser"];
-				dv = new DataView(dt, "", "RESOURCENAME ASC", DataViewRowState.OriginalRows);
-				dv.RowFilter = "USERNAME = '" + this.DocManager.ConnectInfo.UserName + "'";
-				for (int j=0; j < dv.Count; j++)
-				{
-					drv = dv[j];
-					sResource = drv["RESOURCENAME"].ToString();
-					sOverbook = drv["OVERBOOK"].ToString();
-					bOverbook = (sOverbook == "YES")?true:false;
-					sModSchedule = drv["MODIFY_SCHEDULE"].ToString();
-					bModSchedule = (sModSchedule == "YES")?true:false;
-					sModAppts = drv["MODIFY_APPOINTMENTS"].ToString();
-					bModAppts = (sModAppts == "YES")?true:false;
-					v.m_htOverbook[sResource] = bOverbook;
-					v.m_htModifySchedule[sResource] = bModSchedule;
-					v.m_htChangeAppts[sResource] = bModAppts;
-				}
-
-				//For programmers and scheduling managers, set all permissions for all resources
-				if (this.DocManager.ScheduleManager == true)
-				{
-					dt = this.DocManager.GlobalDataSet.Tables["Resources"];
-					foreach (DataRow dr in dt.Rows)
-					{
-						sResource = dr["RESOURCE_NAME"].ToString();
-						v.m_htOverbook[sResource] = true;
-						v.m_htModifySchedule[sResource] = true;
-						v.m_htChangeAppts[sResource] = true;
-					}
-				}
-
-				v.calendarGrid1.SetOverlapTable();
-				v.calendarGrid1.Refresh();
-			}
+            catch (Exception ex)
+			{
+				MessageBox.Show("Unable to open " + m_sDocName + " schedule.  " +  ex.Message, "Clinical Scheduling");
+				this.m_DocManager.CloseAllViews(doc);
+				return;
+			}
+
+            //We are doing this--Again?
+			v =this.DocManager.GetViewByResource(sSelectedTreeResourceArray);
+			v.dateTimePicker1.Value = dDate;
+
+			//Get preferred time scale from resource info
+			//If more than one resource, get smallest time scale
+			CalendarGrid cg = v.CGrid;
+			DataTable dt = this.DocManager.GlobalDataSet.Tables["Resources"];
+			DataView dv = new DataView(dt, "", "RESOURCE_NAME ASC", DataViewRowState.OriginalRows);
+			int nScale = 60;
+			int nTest=0;
+			string sResource;
+			int nDataRow;
+			DataRowView drv;
+			for (int j=0; j < sSelectedTreeResourceArray.Count; j++)
+			{
+				sResource = (string) sSelectedTreeResourceArray[j];
+				nDataRow = dv.Find(sResource);
+				Debug.Assert(nDataRow != -1);
+				drv = dv[nDataRow];
+				if (drv["TIMESCALE"].ToString() == "")
+				{
+					nTest = 15; //15 minute default
+				}
+				else
+				{
+					nTest = (int) drv["TIMESCALE"];
+				}
+				nScale = (nTest < nScale)?nTest : nScale ;
+			}
+
+			cg.TimeScale = nScale;
+
+			cg.PositionGrid(7);
+
+			//Get the OverBook and ModifySchedule permissions from ResourceUser table
+			//and populate the hashtables
+			string	sOverbook;
+			string	sModSchedule;
+			string	sModAppts;
+			bool	bOverbook;
+			bool	bModSchedule;
+			bool	bModAppts;
+			v.m_htOverbook = new Hashtable(sSelectedTreeResourceArray.Count);
+			v.m_htModifySchedule = new Hashtable(sSelectedTreeResourceArray.Count);
+			v.m_htChangeAppts = new Hashtable(sSelectedTreeResourceArray.Count);
+			dt = this.DocManager.GlobalDataSet.Tables["ResourceUser"];
+			dv = new DataView(dt, "", "RESOURCENAME ASC", DataViewRowState.OriginalRows);
+			dv.RowFilter = "USERNAME = '" + this.DocManager.ConnectInfo.UserName + "'";
+			for (int j=0; j < dv.Count; j++)
+			{
+				drv = dv[j];
+				sResource = drv["RESOURCENAME"].ToString();
+				sOverbook = drv["OVERBOOK"].ToString();
+				bOverbook = (sOverbook == "YES")?true:false;
+				sModSchedule = drv["MODIFY_SCHEDULE"].ToString();
+				bModSchedule = (sModSchedule == "YES")?true:false;
+				sModAppts = drv["MODIFY_APPOINTMENTS"].ToString();
+				bModAppts = (sModAppts == "YES")?true:false;
+				v.m_htOverbook[sResource] = bOverbook;
+				v.m_htModifySchedule[sResource] = bModSchedule;
+				v.m_htChangeAppts[sResource] = bModAppts;
+			}
+
+			//For programmers and scheduling managers, set all permissions for all resources
+			if (this.DocManager.ScheduleManager == true)
+			{
+				dt = this.DocManager.GlobalDataSet.Tables["Resources"];
+				foreach (DataRow dr in dt.Rows)
+				{
+					sResource = dr["RESOURCE_NAME"].ToString();
+					v.m_htOverbook[sResource] = true;
+					v.m_htModifySchedule[sResource] = true;
+					v.m_htChangeAppts[sResource] = true;
+				}
+			}
+
+			v.calendarGrid1.SetOverlapTable();
+			v.calendarGrid1.Refresh();
 		}
 
@@ -2491,9 +2492,4 @@
         }
 
-		private void tvSchedules_BeforeSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
-		{
-
-		}
-
 		private void tvSchedules_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
 		{
@@ -3095,8 +3091,14 @@
         void RequestRefreshGrid()
         {
-            DateTime dDate = dateTimePicker1.Value;
-            dDate = dDate.Date;
-            // This below is responsible for redrawing the grid when you change the date.
+            DateTime dDate = dateTimePicker1.Value.Date;
+            // Change Date on Document
             this.Document.SelectedDate = dDate;
+            
+            //Splash when loading and change Cursor
+            this.Cursor = Cursors.WaitCursor;
+            LoadSplash();
+
+            this.Cursor = Cursors.Default;
+            this.Document.RefreshDocument();
             
             if (this.Document.Resources.Count == 1)
@@ -3115,8 +3117,34 @@
                 this.StartDate = this.Document.SelectedDate;
             }
-            //Is this needed?
+
+            //Is this needed? -- Yes it is. There is a bug in the drawing code for the calendar
+            //First time it draws, it draws appointments, but not availability slots
+            //Second time it draws, it both appointments and availabilites
+            //XXX: Need to investigate
             this.Document.UpdateAllViews();
-            //Is this needed?
-            this.calendarGrid1.Invalidate();
+
+            StopSplash();
+            this.Cursor = Cursors.Default;
+        }
+
+        LoadingSplash _loadingSplash; // Splash object a data point in class
+
+        /// <summary>
+        /// Loads a splash that says "Loading"
+        /// </summary>
+        private void LoadSplash()
+        {
+            _loadingSplash = new LoadingSplash();
+            _loadingSplash.StartPosition = FormStartPosition.CenterScreen;  //XXX: Don't like this, but will do for now.
+            _loadingSplash.UseWaitCursor = true;    // tell user we are working
+            Thread threadSplash = new Thread(new ThreadStart(() => _loadingSplash.ShowDialog())); // lambda
+            threadSplash.IsBackground = true; //expendable thread -- exit even if still running.
+            threadSplash.Name = "Loading Thread";
+            threadSplash.Start();
+        }
+
+        private void StopSplash()
+        {
+            _loadingSplash.RemoteClose();
         }
 
Index: /Scheduling/trunk/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj
===================================================================
--- /Scheduling/trunk/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj	(revision 1069)
+++ /Scheduling/trunk/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj	(revision 1070)
@@ -67,5 +67,5 @@
     <ConfigurationOverrideFile>
     </ConfigurationOverrideFile>
-    <DefineConstants>TRACE;DEBUG</DefineConstants>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DocumentationFile>
     </DocumentationFile>
@@ -178,5 +178,4 @@
     <Compile Include="CGAppointment.cs" />
     <Compile Include="CGAppointmentChangedArgs.cs" />
-    <Compile Include="CGAppointmentChangedHandler.cs" />
     <Compile Include="CGAppointments.cs" />
     <Compile Include="CGAvailability.cs" />
@@ -199,5 +198,4 @@
     </Compile>
     <Compile Include="CGSelectionChangedArgs.cs" />
-    <Compile Include="CGSelectionChangedHandler.cs" />
     <Compile Include="CGView.cs">
       <SubType>Form</SubType>
@@ -296,4 +294,10 @@
       <DependentUpon>DMassSlotDelete.cs</DependentUpon>
     </Compile>
+    <Compile Include="LoadingSplash.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="LoadingSplash.Designer.cs">
+      <DependentUpon>LoadingSplash.cs</DependentUpon>
+    </Compile>
     <Compile Include="Options.cs" />
     <Compile Include="Printing.cs" />
@@ -402,4 +406,7 @@
       <DependentUpon>DSplash.cs</DependentUpon>
       <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="LoadingSplash.resx">
+      <DependentUpon>LoadingSplash.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="UCPatientAppts.resx">
Index: /Scheduling/trunk/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj.user
===================================================================
--- /Scheduling/trunk/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj.user	(revision 1069)
+++ /Scheduling/trunk/cs/bsdx0200GUISourceCode/ClinicalScheduling.csproj.user	(revision 1070)
@@ -37,5 +37,6 @@
     </RemoteDebugMachine>
     <StartAction>Project</StartAction>
-    <StartArguments>/s=172.16.16.108 /p=9250 /a=abeer12 /v=abc,4321</StartArguments>
+    <StartArguments>
+    </StartArguments>
     <StartPage>
     </StartPage>
@@ -56,5 +57,6 @@
     </RemoteDebugMachine>
     <StartAction>Project</StartAction>
-    <StartArguments>/s=172.16.17.51 /p=9260 /a=shabiel12 /v=abc,123!</StartArguments>
+    <StartArguments>
+    </StartArguments>
     <StartPage>
     </StartPage>
Index: /Scheduling/trunk/cs/bsdx0200GUISourceCode/LoadingSplash.Designer.cs
===================================================================
--- /Scheduling/trunk/cs/bsdx0200GUISourceCode/LoadingSplash.Designer.cs	(revision 1070)
+++ /Scheduling/trunk/cs/bsdx0200GUISourceCode/LoadingSplash.Designer.cs	(revision 1070)
@@ -0,0 +1,71 @@
+﻿namespace IndianHealthService.ClinicalScheduling
+{
+    partial class LoadingSplash
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.lblLoading = new System.Windows.Forms.Label();
+            this.SuspendLayout();
+            // 
+            // lblLoading
+            // 
+            this.lblLoading.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.lblLoading.AutoSize = true;
+            this.lblLoading.Font = new System.Drawing.Font("Tahoma", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.lblLoading.Location = new System.Drawing.Point(228, 181);
+            this.lblLoading.Name = "lblLoading";
+            this.lblLoading.Size = new System.Drawing.Size(255, 77);
+            this.lblLoading.TabIndex = 0;
+            this.lblLoading.Text = "Loading";
+            this.lblLoading.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // LoadingSplash
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BackColor = System.Drawing.SystemColors.ControlLightLight;
+            this.ClientSize = new System.Drawing.Size(722, 449);
+            this.Controls.Add(this.lblLoading);
+            this.ForeColor = System.Drawing.SystemColors.ControlLight;
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.Name = "LoadingSplash";
+            this.Opacity = 0.8D;
+            this.ShowIcon = false;
+            this.ShowInTaskbar = false;
+            this.Text = "Form1";
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label lblLoading;
+    }
+}
Index: /Scheduling/trunk/cs/bsdx0200GUISourceCode/LoadingSplash.cs
===================================================================
--- /Scheduling/trunk/cs/bsdx0200GUISourceCode/LoadingSplash.cs	(revision 1070)
+++ /Scheduling/trunk/cs/bsdx0200GUISourceCode/LoadingSplash.cs	(revision 1070)
@@ -0,0 +1,36 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace IndianHealthService.ClinicalScheduling
+{
+    public partial class LoadingSplash : Form
+    {
+        public LoadingSplash()
+        {
+            InitializeComponent();
+        }
+
+        //Generic Delegate for fancy remote invokations
+        public delegate void dAny();
+
+        /// <summary>
+        /// Close a form from another thread
+        /// </summary>
+        public void RemoteClose()
+        {
+            if (InvokeRequired == true)
+            {
+                dAny d = new dAny(this.Close);
+                this.Invoke(d);
+            }
+            else
+                this.Close();
+        }
+    }
+}
Index: /Scheduling/trunk/cs/bsdx0200GUISourceCode/LoadingSplash.resx
===================================================================
--- /Scheduling/trunk/cs/bsdx0200GUISourceCode/LoadingSplash.resx	(revision 1070)
+++ /Scheduling/trunk/cs/bsdx0200GUISourceCode/LoadingSplash.resx	(revision 1070)
@@ -0,0 +1,120 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
