//
// System.Windows.Forms.MonthCalendar.cs
//
// Author:
//   stubbed out by Paul Osman (paul.osman@sympatico.ca)
//	Dennis Hayes (dennish@raytek.com)
//
// (C) 2002/3 Ximian, Inc
//
using System.Drawing;
using System.ComponentModel;
using System.Runtime.Remoting;
namespace System.Windows.Forms {

	// <summary>
	// </summary>

	public class MonthCalendar : Control {

		//
		//  --- Constructor
		//
		[MonoTODO]
		public MonthCalendar() {
			
		}

		//
		//  --- Public Methods
		//
		[MonoTODO]
		public void AddAnnuallyBoldedDate(DateTime date) {
			//FIXME:
		}
		[MonoTODO]
		public void AddBoldedDate(DateTime date) {
			//FIXME:
		}
		[MonoTODO]
		public void AddMonthlyBoldedDate(DateTime date) {
			//FIXME:
		}
		[MonoTODO]
		public void RemoveAllAnnuallyBoldedDates() {
			//FIXME:
		}
		[MonoTODO]
		public void RemoveAllBoldedDates() {
			//FIXME:
		}
		[MonoTODO]
		public void RemoveAllMonthlyBoldedDates() {
			//FIXME:
		}
		[MonoTODO]
		public void RemoveAnnuallyBoldedDate(DateTime date) {
			//FIXME:
		}
		[MonoTODO]
		public void RemoveBoldedDate(DateTime date) {
			//FIXME:
		}
		[MonoTODO]
		public void RemoveMonthlyBoldedDate(DateTime date) {
			//FIXME:
		}
		[MonoTODO]
		public void SetCalendarDimensions(int x, int y) {
			//FIXME:
		}
		[MonoTODO]
		public void SetDate(DateTime date) {
			//FIXME:
		}
		[MonoTODO]
		public void SetSelectionRange(DateTime date1, DateTime date2) {
			//FIXME:
		}
		[MonoTODO]
		public void UpdateBoldedDates() {
			//FIXME:
		}
		[MonoTODO]
		public object EndEnvoke(IAsyncResult asyncResult) {
			throw new NotImplementedException ();
		}
		[MonoTODO]
		public SelectionRange GetDisplayRange(bool visible) {
			throw new NotImplementedException ();
		}
		[MonoTODO]
		public HitTestInfo HitTest(Point point) {
			throw new NotImplementedException ();
		}
		[MonoTODO]
		public HitTestInfo HitTest(int x, int y) {
			throw new NotImplementedException ();
		}
		[MonoTODO]
		public override string ToString() {
			//FIXME:
			return base.ToString();
		}

		//
		//  --- Public Properties
		//
		[MonoTODO]
		public override bool AllowDrop  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public override AnchorStyles Anchor  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public DateTime[] AnnuallyBoldedDates  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public override Color BackColor  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public override Image BackgroundImage  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public override BindingContext BindingContext  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public DateTime[] BoldedDates  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public Size CalendarDimensions  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public Day FirstDayOfWeek  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public override Color ForeColor  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public DateTime MaxDate  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public int MaxSelectionCount  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public DateTime MinDate  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public DateTime[] MonthlyBoldedDates  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public int ScrollChange  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public DateTime SelectionEnd  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public SelectionRange SelectionRange  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public DateTime SelectionStart  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public bool ShowToday  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public bool ShowTodayCircle  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public bool ShowWeekNumbers  {
			get {
				throw new NotImplementedException ();
			}
			set {
				throw new NotImplementedException ();
			}
		}
		[MonoTODO]
		public Size SingleMonthSize  {
			get {
				throw new NotImplementedException ();
			}
		}
		[MonoTODO]
		public override string Text  {
			get {
				//FIXME:
				return base.Text;
			}
			set {
				//FIXME:
				base.Text = value;
			}
		}
		[MonoTODO]
		public Color TitleBackColor  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public Color TitleForeColor  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public DateTime TodayDate  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}
		[MonoTODO]
		public bool TodayDateSet  {
			get {
				throw new NotImplementedException ();
			}
		}
		[MonoTODO]
		public Color TrailingForeColor  {
			get {
				throw new NotImplementedException ();
			}
			set {
				//FIXME:
			}
		}

		//
		//  --- Protected Methods
		//
		[MonoTODO]
		protected override void CreateHandle() {
			//FIXME:
			base.CreateHandle();
		}
		[MonoTODO]
		protected override bool IsInputKey(Keys keyData) {
			throw new NotImplementedException ();
		}
		[MonoTODO]
		protected override void OnBackColorChanged(EventArgs e) {
			//FIXME:
		}
		[MonoTODO]
		protected override void OnHandleCreated(EventArgs e) {
			//FIXME:
		}
		[MonoTODO]
		protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified) {
			//FIXME:
		}
		[MonoTODO]
		protected override void WndProc(ref Message m) {
			//FIXME:
		}
		protected override void Dispose(bool disposing)
		{
			//FIXME:
		}
		[MonoTODO]
		protected virtual void OnDateChanged(DateRangeEventArgs drevent) {
			//FIXME:
		}
		[MonoTODO]
		protected virtual void OnDateSelected(DateRangeEventArgs drevent) {
			//FIXME:
		}
		[MonoTODO]
		protected override void OnFontChanged(EventArgs e) {
			//FIXME:
		}
		[MonoTODO]
		protected override void OnForeColorChanged(EventArgs e) {
			//FIXME:
		}

		//
		//  --- Protected Properties
		//
		[MonoTODO]
		protected override CreateParams CreateParams {
			get {
				//FIXME:
				return base.CreateParams;
			}
		}
		[MonoTODO]
		protected override ImeMode DefaultImeMode {
			get {
				throw new NotImplementedException ();
			}
		}
		[MonoTODO]
		protected override Size DefaultSize {
			get {
				return new Size (100, 100);
			}
		}

		public enum HitArea {
			Nowhere = 0,
			TitleBackground = 1,
			TitleMonth = 2,
			TitleYear = 3,
			NextMonthButton = 4,
			PrevMonthButton = 5,
			CalendarBackground = 6,
			Date = 7,
			NextMonthDate = 8,
			PrevMonthDate = 9,
			DayOfWeek = 10,
			WeekNumbers = 11,
			TodayLink = 12
		}


		//
		//  --- Public Events
		//
		public event DateRangeEventHandler DateChanged;
		public event DateRangeEventHandler DateSelected;

		//
		// System.Windows.Forms.MonthCalendar.HitTestInfo.cs
		//
		// Author:
		//   stubbed out by Paul Osman (paul.osman@sympatico.ca)
		//
		// (C) 2002 Ximian, Inc
		//

		// <summary>
		// </summary>

		public sealed class HitTestInfo {

			//
			//  --- Public Properties
			//
			[MonoTODO]
			public MonthCalendar.HitArea HitArea {
				get {
					throw new NotImplementedException ();
				}
			}
			[MonoTODO]
			public Point Point {
				get {
					throw new NotImplementedException ();
				}
			}
			[MonoTODO]
			public DateTime Time {
				get {
					throw new NotImplementedException ();
				}
			}
		}
	}
}
