/*********************************************************************************************
 * Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
 * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
 * ------------------------------------------------------------------------------
 * $Workfile: VEdt.cs $     $Revision: 1 $
 * $Author: Kathy $   $Date: 7/27/04 8:35a $
 *
 * $History: VEdt.cs $
 * 
 * *****************  Version 1  *****************
 * User: Kathy        Date: 7/27/04    Time: 8:35a
 * Created in $/LibSource/Utils
 *********************************************************************************************/

using System;

namespace Utils
{
	/// <summary>
	/// Summary description for VEdt.
	/// </summary>
	public class VEDateTime
	{
		public DateTime dt;
		public string dtstr;

		public VEDateTime(long tm)
		{ 
			System.Globalization.CultureInfo info =
				new System.Globalization.CultureInfo("en-US", false);

			System.Globalization.Calendar calendar = info.Calendar;
    
		
			// do some conversion so that proms will be able to use this
			// date/time. Proms had it in seconds since 00:00:00 1/1/1970.
			// .NET has it in ticks since 00:00:00 1/1/1
			DateTime promsdt = new DateTime(1970,1,1,0,0,0,0); // Jan 1, 1970
			
			//
			// Get the offset time between this time zone and UTC (GMT) time.
			// Convert the offset to seconds.
			// Subtract the offset from the UTC time gotten for Jan 1, 1970
			ThisTimeZone TZ = new ThisTimeZone();
			TimeSpan TimeZoneSpan = TZ.GetUtcOffset(promsdt); // Time Zone offset from UTC
			long TimeZoneAdj = Math.Abs(TimeZoneSpan.Ticks / 10000000); // convert to seconds
			DateTime cnv = promsdt.AddSeconds(tm-TimeZoneAdj);
			dtstr = cnv.ToLongDateString() + "  " + cnv.ToLongTimeString();
		}
	}
	/*
	 * TimeZone is an Abstract Class.  You need to inherit the TimeZone Class
	 * and overload a couple of it's functions in order to use it.
	 * - called in CalculatePromsDate() above.
	 */ 
	public class ThisTimeZone : TimeZone
	{
		private TimeZone curTZ;
		public TimeSpan SpanTZ;

		public ThisTimeZone()
		{
			curTZ = CurrentTimeZone;  // local timezone
		}

		// get the UTC (GMT) value for the given date/time
		public override TimeSpan GetUtcOffset(DateTime ForThisDate)
		{
			SpanTZ = curTZ.GetUtcOffset(ForThisDate); 
			return SpanTZ;
		}

		// Name of the local Daylight savings time zone
		public override string DaylightName
		{
			get
			{
				return curTZ.DaylightName;
			}
		}

		// Name of the local standard time zone
		public override string StandardName
		{
			get
			{
				return curTZ.StandardName;
			}
		}

		// Get the start and end dates for daylight savings
		public override System.Globalization.DaylightTime GetDaylightChanges(int year)
		{
			return curTZ.GetDaylightChanges(year);
		}
	}
}

