using System;
//using WebForms = System.Web.UI.WebControls;
using WinForms = System.Windows.Forms;

namespace JXC_MIS.MyClass
{
	/// <summary>
	/// Common提供一些通用方法,供Web与Win开发使用。
	/// </summary>
	public sealed class ClsCommon
	{
		private ClsCommon(){}

		/// <summary>
		/// 获取系统日期
		/// </summary>
		/// <returns></returns>
		public static string GetSysDate()
		{
			return DateValue(System.DateTime.Now.ToString());
		}

		/// <summary>
		/// 以字符串形式传入布尔值并以字符串形式返回，真统一用1，假统一用0表示
		/// </summary>
		/// <param name="p_BoolVal">传入的布尔值，包括真值 -1、1、True 假值NULL、0、False，其它非零即为真</param>
		/// <returns></returns>
		public static string BoolValue(string p_BoolVal)
		{
			string strVal = null;
			switch (p_BoolVal.ToUpper())
			{
					//假值
				case "0":
					strVal = "0";
					break;
				case "NULL":
					strVal = "0";
					break;
				case "FALSE":
					strVal = "0";
					break;

					//真值
				case "1":
					strVal = "1";
					break;
				case "-1":
					strVal = "1";
					break;
				case "TRUE":
					strVal = "1";
					break;

				default:
					strVal = "1";		
					break;
			}
			return strVal;
		}

		/// <summary>
		/// 以字符串形式传入日期值并统一以形如"YYYY-MM-DD"的字符串形式返回，其中分隔符可以指定。
		/// 不合法、NULL、"1900-01-01"的返回指定的无效字符串。
		/// </summary>
		public static string DateValue(string p_DateVal)
		{
			return DateValue(p_DateVal,"");
		}

		/// <summary>
		/// 以字符串形式传入日期值并统一以形如"YYYY-MM-DD"的字符串形式返回，其中分隔符可以指定。
		/// 不合法、NULL、"1900-01-01"的返回指定的无效字符串。
		/// </summary>
		public static string DateValue(string p_DateVal,string p_ReturnInvalidVal)
		{
			return DateValue(p_DateVal,"","-");
		}

		/// <summary>
		/// 以字符串形式传入日期值并统一以形如"YYYY-MM-DD"的字符串形式返回，其中分隔符可以指定。
		/// 不合法、NULL、"1900-01-01"的返回指定的无效字符串。
		/// </summary>
		/// <param name="p_DateVal">日期值</param>
		/// <param name="p_ReturnInvalidVal">当指的日期值不合法时返回的字符串，默认""空串</param>
		/// <param name="p_SplitChar">YYYY-MM-DD分隔符，默认"-"</param>
		/// <returns></returns>
		public static string DateValue(string p_DateVal,string p_ReturnInvalidVal,string p_SplitChar)
		{
			string strVal=null;	
			if (p_DateVal == "1900-1-1 0:00:00")
				return p_ReturnInvalidVal;

			DateTime dt = new DateTime(2003,9,8);
			try
			{
				dt = DateTime.Parse(p_DateVal);
				strVal = dt.Year.ToString() + p_SplitChar;
				strVal += (dt.Month > 9?dt.Month.ToString():("0" + dt.Month.ToString())) + p_SplitChar;
				strVal += (dt.Day > 9?dt.Day.ToString():("0" + dt.Day.ToString()));
			}
			catch
			{
				strVal = p_ReturnInvalidVal ;
			}

			return strVal;			
		}



		/// <summary>
		/// 是否为数字
		/// </summary>
		/// <param name="p_NumberVal">传入的值</param>
		/// <returns></returns>
		public static bool IsNum(string p_NumberVal)
		{
			double d=0;
			try
			{
				d = double.Parse(p_NumberVal);
			}
			catch
			{
				return false;
			}

			return true;			
		}

		/// <summary>
		/// 以字符串形式传入数字值并统一以字符串形式返回,非数字返回0
		/// </summary>
		/// <param name="p_NumberVal">传入的值</param>
		/// <returns></returns>
		public static string NumValue(string p_NumberVal)
		{
			if (!IsNum(p_NumberVal))
				return "0";
			else
				return p_NumberVal;			
		}


		/// <summary>
		/// 是否为日期
		/// </summary>
		/// <param name="p_DateVal">传入的值</param>
		/// <returns></returns>
		public static bool IsDate(string p_DateVal)
		{
			DateTime d; 
			try
			{
				d = DateTime.Parse(p_DateVal);
			}
			catch
			{
				return false;
			}

			return true;			
		}

//
//		/// <summary>
//		/// 为派生于ListControl基类的控件确定选择值，如果此值已加载于控件中，则选择之，否则添加之
//		/// </summary>
//		/// <param name="cbo">派生于ListControl基类的控件</param>
//		/// <param name="item">SelectedValue字符串</param>
//		public static void SelectedValue(WebForms.ListControl cbo,string item)
//		{
//			WebForms.ListItem itemfind = null;
//			itemfind = cbo.Items.FindByValue(item);
//			if (itemfind == null)
//			{	
//				//如果没有，增加一个Item，如果不增加直接用cbo.SelectedValue = itemfind.Value会出错
//				WebForms.ListItem listitem = new WebForms.ListItem(item,item);
//				cbo.Items.Add(listitem);
//				cbo.SelectedValue = listitem.Value;
//			}
//			else
//			{
//				cbo.SelectedValue = itemfind.Value;				
//			}		
//		}

//		/// <summary>
//		/// 根据记录状态,控制增加、修改、取消、保存等按钮是否可用，注意具体编程时再改索引号或用别的方法做通用，如传各个按钮的顺序
//		/// </summary>
//		public static void SetToolBarState(Enumeration.EditState state,WinForms.ComboBox cboReceiptNo,WinForms.ToolBar toolbar)
//		{
//			switch (state)
//			{
//				case Enumeration.EditState.View:		//浏览 、放弃、保存
//					goto case Enumeration.EditState.Save;
//				case Enumeration.EditState.Browse:
//					goto case Enumeration.EditState.Save;
//				case Enumeration.EditState.Manager:
//					goto case Enumeration.EditState.Save;
//				case Enumeration.EditState.Cancel:
//					goto case Enumeration.EditState.Save;
//				case Enumeration.EditState.Save:
//					cboReceiptNo.Enabled = true;
//					toolbar.Buttons[1].Enabled = true;	//AddNewButton
//					//有单据
//					if (cboReceiptNo.Items.Count <=0)
//					{
//						toolbar.Buttons[1].Enabled = false;	//ModifyButton
//						toolbar.Buttons[1].Enabled = false;	//QueryButton					
//					}
//					else
//					{
//						toolbar.Buttons[1].Enabled = true;	//ModifyButton
//						toolbar.Buttons[1].Enabled = true;	//QueryButton										
//					}
//
//					toolbar.Buttons[1].Enabled = false;	//SaveButton
//					toolbar.Buttons[1].Enabled = false;	//CancleButton										
//
//					toolbar.Buttons[1].Enabled = false;	//InsertRowButton
//					toolbar.Buttons[1].Enabled = false;	//DelRowButton										
//					
//					break;
//
//				case Enumeration.EditState.Insert:	//新增、编辑
//					goto case Enumeration.EditState.Update;
//				case Enumeration.EditState.Update:
//					cboReceiptNo.Enabled  = false;
//	                
//					toolbar.Buttons[1].Enabled = false;		//AddNewButton
//					toolbar.Buttons[1].Enabled = false;		//ModifyButton
//					toolbar.Buttons[1].Enabled = false;		//QueryButton
//
//					toolbar.Buttons[1].Enabled = true;		//SaveButton
//					toolbar.Buttons[1].Enabled = true;		//CancleButton
//
//					toolbar.Buttons[1].Enabled = true;		//InsertRowButton
//					toolbar.Buttons[1].Enabled = true;		//DelRowButton
//					break;				
//			}
//		}                
//
//		/// <summary>
//		/// 根据记录状态,控制增加、修改、取消、保存、查询、插行、删行 等按钮是否可用与否状态
//		/// </summary>
//		public static void SetToolBarState(Enumeration.EditState state,WebForms.DropDownList cboReceiptNo,WebForms.LinkButton btnAddNew,WebForms.LinkButton btnModify,WebForms.LinkButton btnCancel,WebForms.LinkButton btnSave)
//		{
//			SetToolBarState(state,cboReceiptNo,btnAddNew,btnModify,btnCancel,btnSave,null,null,null);
//		}
//
//		/// <summary>
//		/// 根据记录状态,控制增加、修改、取消、保存、查询、插行、删行 等按钮是否可用与否状态
//		/// </summary>
//		public static void SetToolBarState(Enumeration.EditState state,WebForms.DropDownList cboReceiptNo,WebForms.LinkButton btnAddNew,WebForms.LinkButton btnModify,WebForms.LinkButton btnCancel,WebForms.LinkButton btnSave,WebForms.LinkButton btnQuery,WebForms.LinkButton btnInsertRow,WebForms.LinkButton btnDeleteRow)
//		{
//			switch (state)
//			{
//				case Enumeration.EditState.Manager:		//管理 、放弃、保存
//					goto case Enumeration.EditState.Save;
//				case Enumeration.EditState.Cancel:
//					goto case Enumeration.EditState.Save;
//				case Enumeration.EditState.Save:
//					cboReceiptNo.Enabled = true;
//					btnAddNew.Enabled = true;	//AddNewButton
//					//有单据
//					if (cboReceiptNo.Items.Count <=0)
//					{
//						btnModify.Enabled = false;	//ModifyButton
//						if (btnQuery != null)
//							btnQuery.Enabled = false;	//QueryButton					
//					}
//					else
//					{
//						btnModify.Enabled = true;	//ModifyButton
//						if (btnQuery != null)
//							btnQuery.Enabled = true;	//QueryButton					
//					}
//
//					btnSave.Enabled = false;	//SaveButton
//					btnCancel.Enabled = false;	//CancleButton										
//
//					if (btnInsertRow != null)
//						btnInsertRow.Enabled = false;	//InsertRowButton
//					if (btnDeleteRow != null)
//						btnDeleteRow.Enabled = false;	//DeleteRowButton										
//					
//					break;
//
//				case Enumeration.EditState.Insert:	//新增、编辑
//					goto case Enumeration.EditState.Update;
//				case Enumeration.EditState.Update:
//					cboReceiptNo.Enabled  = false;
//	                
//					btnAddNew.Enabled = false;		//AddNewButton
//					btnModify.Enabled = false;		//ModifyButton
//					if (btnQuery != null)
//						btnQuery.Enabled = false;	//QueryButton					
//
//					btnSave.Enabled = true;			//SaveButton
//					btnCancel.Enabled = true;		//CancleButton
//
//					if (btnInsertRow != null)
//						btnInsertRow.Enabled = true;	//InsertRowButton
//					if (btnDeleteRow != null)
//						btnDeleteRow.Enabled = true;	//DeleteRowButton	
//									
//					break;
//					//					case Enumeration.EditState.View:		//浏览(只读)
//					//					case Enumeration.EditState.Browse:
//				default:
//					cboReceiptNo.Enabled  = true;	                
//					btnAddNew.Enabled = false;		//AddNewButton
//					btnModify.Enabled = false;		//ModifyButton
//					if (btnQuery != null)
//						btnQuery.Enabled = false;	//QueryButton					
//
//					btnSave.Enabled = false;			//SaveButton
//					btnCancel.Enabled = false;		//CancleButton
//
//					if (btnInsertRow != null)
//						btnInsertRow.Enabled = false;	//InsertRowButton
//					if (btnDeleteRow != null)
//						btnDeleteRow.Enabled = false;	//DeleteRowButton										
//
//					break;				
//			}
//		}   

	}//End Class

}//End NameSpace
