//====================================================================================================਍⼀⼀ 嬀툀ൎ嵹 樀儀甀攀爀礀 䐀愀琀攀吀椀洀攀䴀愀猀欀ഀഀ
//----------------------------------------------------------------------------------------------------਍⼀⼀ 嬀케⁣   嶏 樀儀甀攀爀礀 䐀愀琀攀吀椀洀攀䴀愀猀欀ὥꥧţ퉸౎菿⽛辶蹗橎儀甀攀爀礀笀鍼౞黿끛虳橎猀ᨀⲁ蹧畎折蒗ٶ뭒ɹ擄[⩎啎䱓ඈഀ
//			  文本框，你只要需要写：$("input_id").DateTimeMask();就能完美的实现输入控制，目前能实现5种日਍⼀⼀ऀऀऀ  ἀꥧţꝸ㙣ɒ⠰楗攀㘀⸀　谀晔椀爀攀昀漀砀㌀⸀　଀͎햌᪋자ʏⰰ퉧읎⢑䵵溑潏葠ᵶౠ惿筎纏楧啢챜抑蒗൶ഀ
//			  功能，从而符合自己的业务逻辑需要਍⼀⼀ⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀഀഀ
// [作者网名] 猫冬	਍⼀⼀ 嬀⁥   ἀ嵧 ㈀　　㠀ⴀ　㈀ⴀ　㐀ऀഀഀ
// [邮    箱] wzmaodong@126.com਍⼀⼀ 嬀尀Տ媀ꉓ嵛 栀琀琀瀀㨀⼀⼀眀稀洀愀漀搀漀渀最⸀挀渀戀氀漀最猀⸀挀漀洀ഀഀ
//====================================================================================================਍␀⸀昀渀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀 㴀 昀甀渀挀琀椀漀渀⠀猀攀琀琀椀渀最猀⤀笀ഀഀ
	var options = {਍ऀऀ猀愀昀攀洀漀搀攀氀㨀 琀爀甀攀Ⰰऀऀऀऀऀ⼀⼀褀桛⅑ཪୟ౎෿﵎颀㑼಍෿﵎횀쥢ൢഀ
		masktype: "3",						//1:yyyy-MM-dd HH:mm:ss 2:yyyy-MM-dd HH:mm 3:yyyy-MM-dd 4:HH:mm 5:HH:mm:ss ਍ऀऀ椀猀渀甀氀氀㨀 昀愀氀猀攀Ⰰऀऀऀऀऀऀ⼀⼀⼀♦桎﶐⾐てഀഀ
		lawlessmessage: "你输入的格式错误",	//非法格式的提示信息਍ऀऀ漀渀氀礀挀漀渀琀爀漀氀欀攀礀搀漀眀渀㨀 昀愀氀猀攀Ⰰऀऀऀ⼀⼀ꝓ㙣鍒斏൑ഀ
		focuscssname: "",					//获得焦点的样式਍ऀऀ漀氀搀挀氀愀猀猀渀愀洀攀㨀 ∀∀Ⰰऀऀऀऀऀ⼀⼀뀀喋卟䵟葒㝶ཨൟഀ
		isnow: false,਍ऀऀ椀猀洀漀渀琀栀猀琀愀爀琀㨀 昀愀氀猀攀Ⰰഀഀ
		whenfocus:function(){},				//获得焦点时候的回调函数。无返回值。਍ऀऀ眀栀攀渀戀氀甀爀㨀 昀甀渀挀琀椀漀渀⠀⤀笀爀攀琀甀爀渀 琀爀甀攀㬀紀ऀ⼀⼀㄀뭙♓륱ᥥ葐͖ﶌ灑ɥ爰攀琀甀爀渀 琀甀爀攀 栀㪈鵹ᚘ⅙豨ႚ齢᭒狿攀琀甀爀渀 昀愀氀猀攀㨀戀ൠす൒上次的值਍ऀ紀㬀ഀഀ
	settings = settings || {};਍ऀ␀⸀攀砀琀攀渀搀⠀漀瀀琀椀漀渀猀Ⰰ 猀攀琀琀椀渀最猀⤀㬀ഀഀ
	return this.each(function(){਍ऀऀ⼀⼀ᴀ쭒ᙙ൓ഀ
		if(options.isnow || options.ismonthstart) this.value = $.DateTimeMask.getDateTime(options);਍ऀऀ␀⠀琀栀椀猀⤀⸀愀琀琀爀⠀∀愀甀琀漀挀漀洀瀀氀攀琀攀∀Ⰰ ∀漀昀昀∀⤀㬀ഀഀ
		if (options.safemodel) {਍ऀऀऀ椀昀 ⠀␀⸀戀爀漀眀猀攀爀⸀洀猀椀攀⤀ 笀ഀഀ
				this.ondragenter = function(){return false;};਍ऀऀऀऀ琀栀椀猀⸀漀渀瀀愀猀琀攀 㴀 昀甀渀挀琀椀漀渀⠀⤀笀爀攀琀甀爀渀 昀愀氀猀攀㬀紀㬀ഀഀ
			}਍ऀऀ紀ഀഀ
਍ऀऀ␀⠀琀栀椀猀⤀⸀欀攀礀搀漀眀渀⠀昀甀渀挀琀椀漀渀⠀攀瘀攀渀琀⤀笀ഀഀ
			$.DateTimeMask.KeyDown(this,event,options);਍ऀऀ紀⤀ഀഀ
		if (!options.onlycontrolkeydown) {਍ऀऀऀ␀⠀琀栀椀猀⤀⸀昀漀挀甀猀⠀昀甀渀挀琀椀漀渀⠀⤀笀ഀഀ
				$.DateTimeMask.SetFocus(this,options);਍ऀऀऀऀ漀瀀琀椀漀渀猀⸀眀栀攀渀昀漀挀甀猀⠀⤀㬀ഀഀ
			});਍ऀऀऀ␀⠀琀栀椀猀⤀⸀戀氀甀爀⠀昀甀渀挀琀椀漀渀⠀⤀笀ഀഀ
਍ऀऀऀऀ椀昀⠀℀␀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀⸀䰀漀猀琀䘀漀挀甀猀⠀琀栀椀猀Ⰰ漀瀀琀椀漀渀猀⤀⤀ഀഀ
				{਍ऀऀऀऀऀ椀昀⠀℀漀瀀琀椀漀渀猀⸀眀栀攀渀戀氀甀爀⠀琀栀椀猀⸀瘀愀氀甀攀⤀⤀ 琀栀椀猀⸀瘀愀氀甀攀 㴀 琀栀椀猀⸀漀氀搀瘀愀氀甀攀㬀ഀഀ
				}਍ऀऀऀ紀⤀㬀ഀഀ
		}਍ऀ紀⤀㬀ഀഀ
};਍ഀഀ
$.DateTimeMask = ਍笀ഀഀ
	//获得焦点时候的处理函数਍ऀ匀攀琀䘀漀挀甀猀 㨀 昀甀渀挀琀椀漀渀⠀漀戀樀Ⰰ漀瀀琀椀漀渀猀⤀ഀഀ
	{਍ऀऀ漀戀樀⸀漀氀搀瘀愀氀甀攀 㴀 漀戀樀⸀瘀愀氀甀攀㬀ഀഀ
		if(obj.focuscssname && obj.focuscssname!="")਍ऀऀ笀ഀഀ
			obj.oldClassName = obj.className;਍ऀऀऀ漀戀樀⸀挀氀愀猀猀一愀洀攀 㴀 漀戀樀⸀昀漀挀甀猀挀猀猀渀愀洀攀㬀ഀഀ
		}਍ऀ紀Ⰰഀഀ
਍ऀ⼀⼀㄀뭙♓륱ᥥ葐Ѷٙﵴ灑൥ഀ
	LostFocus : function(obj,options) ਍ऀ笀ഀഀ
		var ls_date,ls_time;਍ऀऀ瘀愀爀 氀戀开攀爀爀漀爀 㴀 昀愀氀猀攀㬀ഀഀ
		switch(options.masktype)਍ऀऀ笀ഀഀ
			case "1":਍ऀऀऀऀ氀猀开搀愀琀攀 㴀 漀戀樀⸀瘀愀氀甀攀⸀猀甀戀猀琀爀⠀　Ⰰ㄀　⤀㬀ഀഀ
				ls_time = obj.value.substr(11);਍ऀऀऀऀ椀昀⠀漀戀樀⸀瘀愀氀甀攀 㴀㴀 ∀　　　　ⴀ　　ⴀ　　 　　㨀　　㨀　　∀⤀ഀഀ
				{਍ऀऀऀऀऀ椀昀⠀℀漀瀀琀椀漀渀猀⸀椀猀渀甀氀氀⤀ 氀戀开攀爀爀漀爀 㴀 琀爀甀攀㬀ഀഀ
				}਍ऀऀऀऀ攀氀猀攀ഀഀ
				{਍ऀऀऀऀऀ椀昀⠀℀⠀␀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀⸀椀猀嘀愀氀椀搀䐀愀琀攀⠀氀猀开搀愀琀攀⤀ ☀☀ ␀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀⸀椀猀嘀愀氀椀搀吀椀洀攀⠀氀猀开琀椀洀攀⤀⤀⤀ 氀戀开攀爀爀漀爀 㴀 琀爀甀攀㬀ഀഀ
				}਍ऀऀऀऀ戀爀攀愀欀㬀ഀഀ
			case "2":਍ऀऀऀऀ氀猀开搀愀琀攀 㴀 漀戀樀⸀瘀愀氀甀攀⸀猀甀戀猀琀爀⠀　Ⰰ㄀　⤀㬀ഀഀ
				ls_time = obj.value.substr(11)+":00";਍ऀऀऀऀ椀昀⠀漀戀樀⸀瘀愀氀甀攀 㴀㴀 ∀　　　　ⴀ　　ⴀ　　 　　㨀　　∀⤀ഀഀ
				{਍ऀऀऀऀऀ椀昀⠀℀漀瀀琀椀漀渀猀⸀椀猀渀甀氀氀⤀ 氀戀开攀爀爀漀爀 㴀 琀爀甀攀㬀ഀഀ
				}਍ऀऀऀऀ攀氀猀攀ഀഀ
				{਍ऀऀऀऀऀ椀昀⠀℀⠀␀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀⸀椀猀嘀愀氀椀搀䐀愀琀攀⠀氀猀开搀愀琀攀⤀ ☀☀ ␀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀⸀椀猀嘀愀氀椀搀吀椀洀攀⠀氀猀开琀椀洀攀⤀⤀⤀ 氀戀开攀爀爀漀爀 㴀 琀爀甀攀㬀ഀഀ
				}਍ऀऀऀऀ戀爀攀愀欀㬀ഀഀ
			case "3":਍ऀऀऀऀ氀猀开搀愀琀攀 㴀 漀戀樀⸀瘀愀氀甀攀㬀ഀഀ
				if(ls_date == "0000-00-00")਍ऀऀऀऀ笀ഀഀ
					if(!options.isnull) lb_error = true;਍ऀऀऀऀ紀ഀഀ
				else਍ऀऀऀऀ笀ഀഀ
					if(!$.DateTimeMask.isValidDate(ls_date)) lb_error = true;਍ऀऀऀऀ紀ഀഀ
				break;਍ऀऀऀ挀愀猀攀 ∀㐀∀㨀ഀഀ
				ls_time = obj.value+":00";;਍ऀऀऀऀ椀昀⠀漀戀樀⸀瘀愀氀甀攀 㴀㴀 ∀　　㨀　　∀⤀ഀഀ
				{਍ऀऀऀऀऀ椀昀⠀℀漀瀀琀椀漀渀猀⸀椀猀渀甀氀氀⤀ 氀戀开攀爀爀漀爀 㴀 琀爀甀攀㬀ऀഀഀ
				}਍ऀऀऀऀ攀氀猀攀ഀഀ
				{਍ऀऀऀऀऀ椀昀⠀℀␀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀⸀椀猀嘀愀氀椀搀吀椀洀攀⠀氀猀开琀椀洀攀⤀⤀ 氀戀开攀爀爀漀爀 㴀 琀爀甀攀㬀ഀഀ
				}਍ऀऀऀऀ戀爀攀愀欀㬀ഀഀ
			case "5":਍ऀऀऀऀ氀猀开琀椀洀攀 㴀 漀戀樀⸀瘀愀氀甀攀㬀ഀഀ
				if(ls_time == "00:00:00")਍ऀऀऀऀ笀ഀഀ
					if(!options.isnull) lb_error = true;਍ऀऀऀऀ紀ഀഀ
				else਍ऀऀऀऀ笀ഀഀ
					if(!$.DateTimeMask.isValidTime(ls_time)) lb_error = true;਍ऀऀऀऀ紀ഀഀ
				break;਍ऀऀ紀ഀഀ
		if(lb_error){਍ऀऀऀ椀昀⠀℀漀瀀琀椀漀渀猀⸀氀愀眀氀攀猀猀洀攀猀猀愀最攀 簀簀 漀瀀琀椀漀渀猀⸀氀愀眀氀攀猀猀洀攀猀猀愀最攀℀㴀∀∀⤀ 愀氀攀爀琀⠀漀瀀琀椀漀渀猀⸀氀愀眀氀攀猀猀洀攀猀猀愀最攀⤀㬀ഀഀ
			obj.value = obj.oldvalue;਍ऀऀ紀ഀഀ
		if (obj.focuscssname && obj.focuscssname!="") obj.className = obj.oldClassName;਍ऀऀ爀攀琀甀爀渀 氀戀开攀爀爀漀爀㬀ഀഀ
	},਍ഀഀ
	//按键时候的处理函数਍ऀ䬀攀礀䐀漀眀渀 㨀 昀甀渀挀琀椀漀渀⠀漀戀樀吀攀砀琀䈀漀砀Ⰰ攀瘀攀渀琀Ⰰ漀瀀琀椀漀渀猀⤀  ഀഀ
	{ ਍ऀ    ⼀⼀ऀ⹣㢕콞එഀ
	    var KEY = {਍ऀऀऀ䈀䄀䌀䬀匀倀䄀䌀䔀㨀 㠀Ⰰഀഀ
		    TAB: 9,਍ऀऀ    䔀一吀䔀刀㨀 ㄀㌀Ⰰഀഀ
			END: 35,਍ऀऀऀ䠀伀䴀䔀㨀 ㌀㘀Ⰰഀഀ
		    LEFT: 37,਍ऀऀऀ刀䤀䜀吀䠀㨀 ㌀㤀Ⰰഀഀ
		    DEL: 46਍ऀ    紀㬀ഀഀ
	    var nKeyCode = event.keyCode; ਍ऀ    ⼀⼀ 礀該ѫٙ葴ॶ⹣ₕഀഀ
	    switch(nKeyCode){਍ऀ        挀愀猀攀 䬀䔀夀⸀吀䄀䈀㨀ഀഀ
			case KEY.HOME:਍ऀऀऀ挀愀猀攀 䬀䔀夀⸀䔀一䐀㨀ഀഀ
	        case KEY.LEFT:਍ऀ        挀愀猀攀 䬀䔀夀⸀刀䤀䜀吀䠀㨀ഀഀ
	            return;਍ऀ        挀愀猀攀 䬀䔀夀⸀䔀一吀䔀刀㨀ഀഀ
				event.preventDefault();਍ऀऀऀ    椀昀⠀漀瀀琀椀漀渀猀⸀䔀渀琀攀爀䴀漀瘀攀吀漀一攀砀琀⤀ 攀瘀攀渀琀⸀欀攀礀䌀漀搀攀 㴀 㤀㬀ഀഀ
	            return;਍ऀ    紀ഀഀ
	    //只读就不执行任何操作਍ऀ    椀昀⠀漀戀樀吀攀砀琀䈀漀砀⸀刀攀愀搀伀渀氀礀⤀ 笀ഀഀ
		    event.returnValue = false;਍ऀऀ    爀攀琀甀爀渀㬀ഀഀ
	    }਍ऀ    ⼀⼀ 匀䵟蝒ⱥ䙧⵨葎蝶ⱥ⁧ഀഀ
	    var strText =objTextBox.value; ਍ऀ    ⼀⼀ 蜀ⱥ罧ꚕ⁞ഀഀ
	    var nTextLen=strText.length; ਍ऀ    ⼀⼀ 匀䵟䥒ݑ䵨湏ⁿഀഀ
	    var nCursorPos = $.DateTimeMask.GetCursor(objTextBox).start;਍ऀऀ⼀⼀ﴀ敟ॵ⹣ඕഀ
	    event.returnValue = false; ਍ऀऀ⼀⼀㬀抖鉫൬ഀ
		event.preventDefault();਍ऀ    ⼀⼀ 䲁҈ٙॴ깣ₔഀഀ
	    switch (nKeyCode) ਍ऀ    笀 ഀഀ
	        case KEY.BACKSPACE:਍ऀ            椀昀⠀渀䌀甀爀猀漀爀倀漀猀 㸀 　⤀ഀഀ
	            { ਍ऀ                昀爀漀渀琀琀攀砀琀 㴀 猀琀爀吀攀砀琀⸀猀甀戀猀琀爀⠀渀䌀甀爀猀漀爀倀漀猀 ⴀ ㄀Ⰰ㄀⤀㬀 ഀഀ
	                if(fronttext!="-" && fronttext!=":" && fronttext!=" ")਍ऀ                笀 ഀഀ
	                    fronttext="0"; ਍ऀ                    猀琀爀吀攀砀琀 㴀  猀琀爀吀攀砀琀⸀猀甀戀猀琀爀⠀　Ⰰ渀䌀甀爀猀漀爀倀漀猀 ⴀ ㄀⤀ ⬀ 昀爀漀渀琀琀攀砀琀 ⬀ 猀琀爀吀攀砀琀⸀猀甀戀猀琀爀⠀渀䌀甀爀猀漀爀倀漀猀Ⰰ 渀吀攀砀琀䰀攀渀ⴀ渀䌀甀爀猀漀爀倀漀猀⤀㬀 ഀഀ
	                } ਍ऀ                渀䌀甀爀猀漀爀倀漀猀ⴀⴀ㬀 ഀഀ
	            } ਍ऀ            戀爀攀愀欀㬀 ഀഀ
	        case KEY.DEL:਍ऀ            椀昀⠀渀䌀甀爀猀漀爀倀漀猀㰀渀吀攀砀琀䰀攀渀⤀ ഀഀ
	            { ਍ऀ                戀攀栀椀渀搀琀攀砀琀 㴀 猀琀爀吀攀砀琀⸀猀甀戀猀琀爀⠀渀䌀甀爀猀漀爀倀漀猀Ⰰ㄀⤀㬀 ഀഀ
	                if(behindtext!="-" && behindtext!=":" && behindtext!=" ") behindtext="0"; ਍ऀ                椀昀⠀渀䌀甀爀猀漀爀倀漀猀 ⬀ ㄀ 㴀㴀 渀吀攀砀琀䰀攀渀⤀ ഀഀ
	                    strText =  strText.substr(0,nCursorPos) + behindtext; ਍ऀ                攀氀猀攀 ഀഀ
	                    strText =  strText.substr(0,nCursorPos) + behindtext + strText.substr(nCursorPos+1,nTextLen-nCursorPos-1); ਍ऀ                渀䌀甀爀猀漀爀倀漀猀⬀⬀㬀 ഀഀ
	            } ਍ऀ            戀爀攀愀欀㬀 ഀഀ
	        default : ਍ऀ            椀昀⠀渀䌀甀爀猀漀爀倀漀猀㴀㴀渀吀攀砀琀䰀攀渀⤀ 戀爀攀愀欀㬀 ഀഀ
				if(!(nKeyCode >=48 && nKeyCode<=57 || nKeyCode >=96 && nKeyCode<=105)) break;਍ऀऀऀऀ椀昀 ⠀渀䬀攀礀䌀漀搀攀 㸀 㤀㔀⤀ 渀䬀攀礀䌀漀搀攀 ⴀ㴀 ⠀㤀㔀ⴀ㐀㜀⤀㬀 ഀഀ
	            behindtext = strText.substr(nCursorPos,1); ਍ऀ            椀昀⠀戀攀栀椀渀搀琀攀砀琀℀㴀∀ⴀ∀ ☀☀ 戀攀栀椀渀搀琀攀砀琀℀㴀∀㨀∀ ☀☀ 戀攀栀椀渀搀琀攀砀琀℀㴀∀ ∀⤀ ഀഀ
	            { ਍ऀ                瘀愀爀 欀攀礀挀漀搀攀 㴀 匀琀爀椀渀最⸀昀爀漀洀䌀栀愀爀䌀漀搀攀⠀渀䬀攀礀䌀漀搀攀⤀㬀 ഀഀ
	                preText = strText.substr(0,nCursorPos) + keycode + strText.substr(nCursorPos+1,nTextLen); ਍ऀ                椀昀⠀℀␀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀⸀䐀攀愀氀圀椀琀栀⠀漀瀀琀椀漀渀猀⸀洀愀猀欀琀礀瀀攀Ⰰ瀀爀攀吀攀砀琀Ⰰ渀䌀甀爀猀漀爀倀漀猀⤀⤀ 戀爀攀愀欀㬀 ഀഀ
	                strText = preText; ਍ऀ                渀䌀甀爀猀漀爀倀漀猀⬀⬀㬀 ഀഀ
	            } ਍ऀ            椀昀 ⠀渀䌀甀爀猀漀爀倀漀猀㸀猀琀爀吀攀砀琀⸀氀攀渀最琀栀⤀ ഀഀ
	            { ਍ऀ                渀䌀甀爀猀漀爀倀漀猀㴀猀琀爀吀攀砀琀⸀氀攀渀最琀栀㬀 ഀഀ
	            } ਍ऀ            ⼀⼀錀斏๑ⱔ脀㦉湨卣䵟䵒湏덿驑⽛♦腔Ή璌䵥湏ɿ퐰艫끙へ≒㨀∀  ∀ⴀ∀  ∀ ∀ഀഀ
	            if(options.masktype<="3"){਍ऀ                椀昀⠀渀䌀甀爀猀漀爀倀漀猀㴀㴀㐀 簀簀 渀䌀甀爀猀漀爀倀漀猀㴀㴀㜀 簀簀 渀䌀甀爀猀漀爀倀漀猀㴀㴀㄀　 簀簀 渀䌀甀爀猀漀爀倀漀猀㴀㴀㄀㌀ 簀簀 渀䌀甀爀猀漀爀倀漀猀㴀㴀㄀㘀⤀ 渀䌀甀爀猀漀爀倀漀猀⬀⬀㬀 ഀഀ
			    }਍ऀ            攀氀猀攀笀ഀഀ
	                if(nCursorPos==2 || nCursorPos==5 ) nCursorPos++;਍ऀऀऀ    紀ഀഀ
	            break; ਍ऀ    紀 ഀഀ
	    objTextBox.value = strText; ਍ऀ    ␀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀⸀匀攀氀攀挀琀椀漀渀⠀漀戀樀吀攀砀琀䈀漀砀Ⰰ渀䌀甀爀猀漀爀倀漀猀Ⰰ渀䌀甀爀猀漀爀倀漀猀⤀㬀 ഀഀ
	},਍ऀഀഀ
	//根据光标所在的位置，判断输入的字符是否合法਍ऀ䐀攀愀氀圀椀琀栀 㨀 昀甀渀挀琀椀漀渀⠀洀愀猀欀琀礀瀀攀Ⰰ椀渀瀀甀琀Ⰰ渀䌀甀爀猀漀爀倀漀猀⤀ ഀഀ
	{਍ऀ    瘀愀爀 氀猀开搀愀琀攀Ⰰ氀猀开琀椀洀攀㬀ഀഀ
	    if(masktype <= "3")਍ऀ    笀ഀഀ
	        ls_year = input.substr(0,4);  ਍ऀ        椀昀⠀氀猀开礀攀愀爀㴀㴀∀　　　　∀⤀ 氀猀开礀攀愀爀 㴀 ∀㈀　　㄀∀㬀  ഀഀ
	        ls_month = input.substr(5,2);  ਍ऀ        椀昀⠀氀猀开洀漀渀琀栀㴀㴀∀　　∀⤀ 氀猀开洀漀渀琀栀 㴀 ∀　㄀∀㬀  ഀഀ
	        ls_day = input.substr(8,2);  ਍ऀ        椀昀⠀氀猀开搀愀礀㴀㴀∀　　∀⤀ 氀猀开搀愀礀 㴀 ∀　㄀∀㬀  ഀഀ
	        ls_date = ls_year +"-"+ ls_month +"-"+ ls_day; ਍ऀ        氀猀开琀椀洀攀 㴀 ∀　　㨀　　㨀　　∀㬀ഀഀ
	        if(masktype=="1") {				਍ऀ            氀猀开琀椀洀攀 㴀 椀渀瀀甀琀⸀猀甀戀猀琀爀⠀㄀㄀⤀㬀ഀഀ
			}਍ऀ        攀氀猀攀 笀ഀഀ
				if(masktype=="2") ls_time = input.substr(11) + ":00";਍ऀऀऀ紀ഀഀ
	        //光标所在的位置进行判断当前字符串是否合法਍ऀऀऀ爀攀琀甀爀渀 ⠀渀䌀甀爀猀漀爀倀漀猀㰀㴀㄀　㼀␀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀⸀椀猀嘀愀氀椀搀䐀愀琀攀⠀氀猀开搀愀琀攀⤀㨀␀⸀䐀愀琀攀吀椀洀攀䴀愀猀欀⸀椀猀嘀愀氀椀搀吀椀洀攀⠀氀猀开琀椀洀攀⤀⤀ഀഀ
	    }਍ऀ    攀氀猀攀ഀഀ
	    {਍ऀ        氀猀开琀椀洀攀 㴀 椀渀瀀甀琀㬀ഀഀ
	        if(masktype=="4") ls_time = ls_time + ":00";਍ऀ        ⼀⼀䤀ݑ䁨⡢著䵶湏䲏⒈굒卥䵟坒♛㉻⽎♦ࡔ핔൬ഀ
	        return $.DateTimeMask.isValidTime(ls_time); ਍ऀ    紀ഀഀ
	    return true; ਍ऀ紀Ⰰഀഀ
਍ऀ⼀⼀ꠀ屒ᩏ럿횃䥓ݑ䁨⡢著䵶湏౿׿睢쮍䵙湏豿퍔彾䵧湏ൿഀ
	GetCursor : function(textBox){਍ऀऀ瘀愀爀 漀戀樀 㴀 渀攀眀 伀戀樀攀挀琀⠀⤀㬀ഀഀ
		var start = 0,end = 0;਍ऀऀ椀昀 ⠀␀⸀戀爀漀眀猀攀爀⸀洀漀稀椀氀氀愀⤀ 笀ഀഀ
			start = textBox.selectionStart;਍ऀऀऀ攀渀搀 㴀 琀攀砀琀䈀漀砀⸀猀攀氀攀挀琀椀漀渀䔀渀搀㬀ഀഀ
		}਍ऀऀ椀昀 ⠀␀⸀戀爀漀眀猀攀爀⸀洀猀椀攀⤀ 笀ഀഀ
			var range=textBox.createTextRange(); ਍ऀऀऀ瘀愀爀 琀攀砀琀 㴀 爀愀渀最攀⸀琀攀砀琀㬀ഀഀ
			var selrange = document.selection.createRange();਍ऀऀऀ瘀愀爀 猀攀氀琀攀砀琀 㴀 猀攀氀爀愀渀最攀⸀琀攀砀琀㬀ഀഀ
			while(selrange.compareEndPoints("StartToStart",range)>0){ ਍ऀऀऀऀ猀攀氀爀愀渀最攀⸀洀漀瘀攀匀琀愀爀琀⠀∀挀栀愀爀愀挀琀攀爀∀Ⰰⴀ㄀⤀㬀 ഀഀ
				start ++;਍ऀऀऀ紀ഀഀ
			while(selrange.compareEndPoints("EndToStart",range)>0){ ਍ऀऀऀऀ猀攀氀爀愀渀最攀⸀洀漀瘀攀䔀渀搀⠀∀挀栀愀爀愀挀琀攀爀∀Ⰰⴀ㄀⤀㬀 ഀഀ
				end ++;਍ऀऀऀ紀ഀഀ
		}਍ऀऀ漀戀樀⸀猀琀愀爀琀 㴀 猀琀愀爀琀㬀ഀഀ
		obj.end = end;਍ऀऀ爀攀琀甀爀渀 漀戀樀㬀ഀഀ
	},਍ऀഀഀ
	//动作：让field的start到end被选中਍ऀ匀攀氀攀挀琀椀漀渀 㨀 昀甀渀挀琀椀漀渀⠀昀椀攀氀搀Ⰰ 猀琀愀爀琀Ⰰ 攀渀搀⤀ ഀഀ
	{਍ऀऀ椀昀⠀ 昀椀攀氀搀⸀挀爀攀愀琀攀吀攀砀琀刀愀渀最攀 ⤀笀ഀഀ
			var r = field.createTextRange();਍ऀऀऀ爀⸀洀漀瘀攀匀琀愀爀琀⠀✀挀栀愀爀愀挀琀攀爀✀Ⰰ猀琀愀爀琀⤀㬀ഀഀ
			r.collapse(true);਍ऀऀऀ爀⸀猀攀氀攀挀琀⠀⤀㬀 ഀഀ
		} else if( field.setSelectionRange ){਍ऀऀऀ昀椀攀氀搀⸀猀攀琀匀攀氀攀挀琀椀漀渀刀愀渀最攀⠀猀琀愀爀琀Ⰰ 攀渀搀⤀㬀ഀഀ
		} else {਍ऀऀऀ椀昀⠀ 昀椀攀氀搀⸀猀攀氀攀挀琀椀漀渀匀琀愀爀琀 ⤀笀ഀഀ
				field.selectionStart = start;਍ऀऀऀऀ昀椀攀氀搀⸀猀攀氀攀挀琀椀漀渀䔀渀搀 㴀 攀渀搀㬀ഀഀ
			}਍ऀऀ紀ഀഀ
		field.focus();਍ऀ紀Ⰰഀഀ
	਍ऀ⼀⼀⼀♦㩔ὥ൧ഀ
	isValidDate : function(strDate)਍ऀ笀ഀഀ
		var ls_regex = "^((((((0[48])|([13579][26])|([2468][048]))00)|([0-9][0-9]((0[48])|([13579][26])|([2468][048]))))-02-29)|(((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9][0-9])|([1-9][0-9][0-9][0-9]))-((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30))|(((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-8]))))))$";਍ऀऀ瘀愀爀 攀砀瀀 㴀 渀攀眀 刀攀最䔀砀瀀⠀氀猀开爀攀最攀砀Ⰰ ∀椀∀⤀㬀ഀഀ
		return exp.test(strDate);਍ऀ紀Ⰰഀഀ
	਍ऀ⼀⼀⼀♦㩔ඕഀ
	isValidTime : function(strTime)਍ऀ笀ഀഀ
		var a = strTime.match(/^(\d{2,2})(:)?(\d{2,2})\2(\d{2,2})$/);਍        椀昀 ⠀℀愀 簀簀 愀嬀㄀崀㸀㈀㌀ 簀簀 愀嬀㌀崀㸀㔀㤀 簀簀 愀嬀㐀崀㸀㔀㤀⤀ 爀攀琀甀爀渀 昀愀氀猀攀㬀ഀഀ
        return true;਍ऀ紀Ⰰഀഀ
਍ऀ最攀琀䐀愀琀攀吀椀洀攀 㨀 昀甀渀挀琀椀漀渀⠀漀瀀琀椀漀渀猀⤀ഀഀ
	{਍ऀऀ瘀愀爀 搀 㴀 渀攀眀 䐀愀琀攀⠀⤀㬀ഀഀ
		var vYear = d.getFullYear();਍ऀऀ瘀愀爀 瘀䴀漀渀 㴀 搀⸀最攀琀䴀漀渀琀栀⠀⤀ ⬀ ㄀㬀ഀഀ
		vMon = (vMon<10 ? "0" + vMon : vMon);਍ऀऀ瘀愀爀 瘀䐀愀礀 㴀 搀⸀最攀琀䐀愀琀攀⠀⤀㬀ഀഀ
		var ls_date = vYear+"-"+vMon+"-"+(vDay<10 ?  "0"+ vDay : vDay );਍ऀऀ瘀愀爀 瘀䠀漀甀爀 㴀 搀⸀最攀琀䠀漀甀爀猀⠀⤀㬀ഀഀ
		var vMin = d.getMinutes();਍ऀऀ瘀愀爀 瘀匀攀挀 㴀 搀⸀最攀琀匀攀挀漀渀搀猀⠀⤀㬀ഀഀ
		var ls_time = (vHour<10 ? "0" + vHour : vHour) + ":"+(vMin<10 ? "0" + vMin : vMin)+":"+(vSec<10 ?  "0"+ vSec : vSec );਍ऀऀ猀眀椀琀挀栀⠀漀瀀琀椀漀渀猀⸀洀愀猀欀琀礀瀀攀⤀ഀഀ
		{਍ऀऀऀ挀愀猀攀 ∀㄀∀㨀ഀഀ
				return options.isnow?(ls_date + " " + ls_time):(vYear+"-"+vMon+"-"+"01 00:00:00");਍ऀऀऀ挀愀猀攀 ∀㈀∀㨀ഀഀ
				return options.isnow?(ls_date + " " + ls_time.substr(0,5)):(vYear+"-"+vMon+"-"+"01 00:00");਍ऀऀऀ挀愀猀攀 ∀㌀∀㨀ഀഀ
				return options.isnow?ls_date:(vYear+"-"+vMon+"-"+"01");਍ऀऀऀ挀愀猀攀 ∀㐀∀㨀ഀഀ
				return ls_time.substr(0,5);਍ऀऀऀ挀愀猀攀 ∀㔀∀㨀ഀഀ
				return ls_time;਍ऀऀ紀ഀഀ
		਍ऀ紀ഀഀ
}