/// <summary>
        /// This function takes a string that points to a Day folder 'folder' and returns all the hour folders.
        ///  The dayStartUnixTime is the UnixTime of the year-month-day
        /// combination from the Day folder.
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="dayStartUnixTime"></param>
        /// <returns></returns>
        private static HourFolderNode[] GetHourFolderInformation(string folder, double dayStartUnixTime)
        {
            if (folder == null || folder.Length < 1)
            {
                return(null);
            }


            FileSystemInfo[] fi  = null;
            FileSystemInfo[] fia = null;
            DirectoryInfo    di  = null;

            HourFolderNode[] ret;


            //Get the directory info based on the path
            di = new DirectoryInfo(folder);

            fi = di.GetFileSystemInfos(HourFolderNode.HOUR_FOLDER_SP);

            if (fi == null || fi.Length == 0)
            {
                //The  directory does not have hour information
                return(null);
            }


            Array.Sort(fi, new FileSystemInfoNameComparer());

            ret = new HourFolderNode[fi.Length];
            int ind = 0;

            foreach (FileSystemInfo fsi in fi)
            {
                //Get the directory info based on the path
                di = new DirectoryInfo(fsi.FullName);
                //Find any data files in the specified directory
                fia = di.GetFileSystemInfos();
                if (fia == null || fia.Length == 0)
                {
                    //The passed directory does not suit our needs
                    continue;
                }

                ret[ind]            = new HourFolderNode();
                ret[ind].folderName = fsi.FullName;
                try
                {
                    ret[ind].hour = Int32.Parse(fsi.Name);
                }
                catch {}
                ret[ind].startUnixTime = dayStartUnixTime + (ret[ind].hour * UnixTime.MilliInHour);
                ret[ind].endUnixTime   = ret[ind].startUnixTime + UnixTime.MilliInHour - 1;
                ind++;
            }



            return(ret);
        }
		/// <summary>
		/// This function takes a string that points to a Day folder 'folder' and returns all the hour folders that
		/// have a file in them that matches 'fileRegex'. The dayStartUnixTime is the UnixTime of the year-month-day 
		/// combination from the Day folder. 
		/// </summary>
		/// <param name="folder"></param>
		/// <param name="dayStartUnixTime"></param>
		/// <param name="fileRegex"></param>
		/// <returns></returns>
		private static HourFolderNode[] GetHourFolderInformation(string folder, double dayStartUnixTime, string fileRegex)
		{
			if(folder == null || folder.Length<1)
				return null;

			
			FileSystemInfo[] fi =null;
			FileSystemInfo[] fia =null;
			DirectoryInfo di=null;
			HourFolderNode[] ret;
			

			//Get the directory info based on the path
			di = new DirectoryInfo(folder);
			fi =  di.GetFileSystemInfos(HourFolderNode.HOUR_FOLDER_SP);
			if(fi == null || fi.Length ==0)
			{
				//The  directory does not have hour information
				return null;
			}
			
			ret = new HourFolderNode[fi.Length];
			int ind =0;
			foreach(FileSystemInfo fsi in fi )
			{

				//Get the directory info based on the path
				di = new DirectoryInfo(fsi.FullName);
				//Find any data files in the specified directory
				 fia = di.GetFileSystemInfos(fileRegex );
				if(fia == null || fia.Length ==0)
				{
					//The passed directory does not suit our needs
					continue;

				}
				
				ret[ind] = new HourFolderNode();
				ret[ind].folderName = fsi.FullName;
				try
				{
					ret[ind].hour = Int32.Parse(fsi.Name);
				}
				catch{}
				ret[ind].startUnixTime = dayStartUnixTime+ (ret[ind].hour*UnixTime.MilliInHour);
				ret[ind].endUnixTime = ret[ind].startUnixTime+ UnixTime.MilliInHour-1;
				ind++;
			}

				
				
			return ret; 

		}