MY97日期选择控件支持日期CTRL多选(改进)

WdatePicker日历控件使用方法 1. 跨无限级框架显示   无论你把日期控件放在哪里,你都不需要担心会被外层的iframe所遮挡进而影响客户体验,因为My97日期控件是可以跨无限级框架显示的   示例2-7 跨无限级框架演示 可无限跨越框架iframe,无论怎么嵌套框架都不必担心了,即使有滚动条也不 阅读详情

直接上代码,替换calendar.js:

 

$cfg=$pdp;
if ($cfg.eCont) {
	$dp = {};
	for (var p in $pdp) if (typeof $pdp[p] == "object") {
		$dp[p] = {};
		for (var pp in $pdp[p]) $dp[p][pp] = $pdp[p][pp]
	} else $dp[p] = $pdp[p]
} else $dp = $pdp;
for (p in $cfg) $dp[p] = $cfg[p];
var $c;
if ($FF) {
	Event.prototype.__defineSetter__("returnValue",
	function($) {
		if (!$) this.preventDefault();
		return $
	});
	Event.prototype.__defineGetter__("srcElement",
	function() {
		var $ = this.target;
		while ($.nodeType != 1) $ = $.parentNode;
		return $
	});
	//window.constructor.prototype.__defineGetter__("event",window_prototype_get_event);
}
function My97DP() {
	$c = this;
	$sdt_mul=new Array();
	this.QS = [];
	$d = document.createElement("div");
	$d.className = "WdateDiv";
	$d.innerHTML = "<div id=dpTitle><div class=\"navImg NavImgll\"><a></a></div><div class=\"navImg NavImgl\"><a></a></div><div style=\"float:left\"><div class=\"menuSel MMenu\"></div><input class=yminput></div><div style=\"float:left\"><div class=\"menuSel YMenu\"></div><input class=yminput></div><div class=\"navImg NavImgrr\"><a></a></div><div class=\"navImg NavImgr\"><a></a></div><div style=\"float:right\"></div></div><div style=\"position:absolute;overflow:hidden\"></div><div></div><div id=dpTime><div class=\"menuSel hhMenu\"></div><div class=\"menuSel mmMenu\"></div><div class=\"menuSel ssMenu\"></div><table cellspacing=0 cellpadding=0 border=0><tr><td rowspan=2><span id=dpTimeStr></span>&nbsp;<input class=tB maxlength=2><input value=\":\" class=tm readonly><input class=tE maxlength=2><input value=\":\" class=tm readonly><input class=tE maxlength=2></td><td><button id=dpTimeUp></button></td></tr><tr><td><button id=dpTimeDown></button></td></tr></table></div><div id=dpQS></div><div id=dpControl><input class=dpButton id=dpClearInput type=button><input class=dpButton id=dpTodayInput type=button><input class=dpButton id=dpOkInput type=button></div>";
	attachTabEvent($d,
	function() {
		hideSel()
	});
	A();
	this.init();
	$dp.focusArr = [document, $d.MI, $d.yI, $d.HI, $d.mI, $d.sI, $d.clearI, $d.todayI, $d.okI];
	for (var B = 0; B < $dp.focusArr.length; B++) {
		var _ = $dp.focusArr[B];
		_.nextCtrl = B == $dp.focusArr.length - 1 ? $dp.focusArr[1] : $dp.focusArr[B + 1];
		$dp.attachEvent(_, "onkeydown", _tab)
		$dp.attachEvent(_, "onkeyup", _tab_up);
	}
	$();
	_inputBindEvent("y,M,H,m,s");
	$d.upButton.onclick = function() {
		updownEvent(1)
	};
	$d.downButton.onclick = function() {
		updownEvent( - 1)
	};
	$d.qsDiv.onclick = function() {
		if ($d.qsDivSel.style.display != "block") {
			$c._fillQS();
			showB($d.qsDivSel)
		} else hide($d.qsDivSel)
	};
	document.body.appendChild($d);
	function A() {
		var _ = $("a");
		divs = $("div"),
		ipts = $("input"),
		btns = $("button"),
		spans = $("span");
		$d.navLeftImg = _[0];
		$d.leftImg = _[1];
		$d.rightImg = _[3];
		$d.navRightImg = _[2];
		$d.rMD = divs[9];
		$d.MI = ipts[0];
		$d.yI = ipts[1];
		$d.titleDiv = divs[0];
		$d.MD = divs[4];
		$d.yD = divs[6];
		$d.qsDivSel = divs[10];
		$d.dDiv = divs[11];
		$d.tDiv = divs[12];
		$d.HD = divs[13];
		$d.mD = divs[14];
		$d.sD = divs[15];
		$d.qsDiv = divs[16];
		$d.bDiv = divs[17];
		$d.HI = ipts[2];
		$d.mI = ipts[4];
		$d.sI = ipts[6];
		$d.clearI = ipts[7];
		$d.todayI = ipts[8];
		$d.okI = ipts[9];
		$d.upButton = btns[0];
		$d.downButton = btns[1];
		$d.timeSpan = spans[0];
		function $($) {
			return $d.getElementsByTagName($)
		}
	}
	function $() {
		$d.navLeftImg.onclick = function() {
			$ny = $ny <= 0 ? $ny - 1 : -1;
			if ($ny % 5 == 0) {
				$d.yI.focus();
				return
			}
			$d.yI.value = $dt.y - 1;
			$d.yI.onblur()
		};
		$d.leftImg.onclick = function() {
			$dt.attr("M", -1);
			$d.MI.onblur()
		};
		$d.rightImg.onclick = function() {
			$dt.attr("M", 1);
			$d.MI.onblur()
		};
		$d.navRightImg.onclick = function() {
			$ny = $ny >= 0 ? $ny + 1 : 1;
			if ($ny % 5 == 0) {
				$d.yI.focus();
				return
			}
			$d.yI.value = $dt.y + 1;
			$d.yI.onblur()
		}
	}
}
My97DP.prototype = {
	init: function() {
		$ny = 0;
		$dp.cal = this;
		if ($dp.readOnly && $dp.el.readOnly != null) {
			$dp.el.readOnly = true;
			$dp.el.blur()
		}
		$sdt_mul=new Array();
		if($dp.el["realValue"]&&$dp.el["realValue"].length>0)
		{
			realDateStrs=$dp.el["realValue"].split(',');
			t_dt=null;
			for(i=0;i<realDateStrs.length;i++)
			{
				t_dt=new DPDate();
				t_dt.loadFromDate(this.splitDate(realDateStrs[i], $dp.realFmt));
				$sdt_mul.push(t_dt);
			}
		}
			
		//$dt.loadFromDate(this.splitDate(A, $));
		//alert($dp.el["realValue"]);
		this._dealFmt();
		$dt = this.newdate = new DPDate();
		$tdt = new DPDate();
		$sdt = this.date = new DPDate();
//		if($sdt_mul.length<1)
//		{
//			$sdt_mul.push(new DPDate());
//		}
		$dp.valueEdited = 0;
		this.dateFmt = this.doExp($dp.dateFmt);
		this.autoPickDate = $dp.autoPickDate == null ? ($dp.has.st && $dp.has.st ? false: true) : $dp.autoPickDate;
		$dp.autoUpdateOnChanged = $dp.autoUpdateOnChanged == null ? ($dp.isShowOK && $dp.has.d ? false: true) : $dp.autoUpdateOnChanged;
		this.ddateRe = this._initRe("disabledDates");
		this.ddayRe = this._initRe("disabledDays");
		this.sdateRe = this._initRe("specialDates");
		this.sdayRe = this._initRe("specialDays");
		this.minDate = this.doCustomDate($dp.minDate, $dp.minDate != $dp.defMinDate ? $dp.realFmt: $dp.realFullFmt, $dp.defMinDate);
		this.maxDate = this.doCustomDate($dp.maxDate, $dp.maxDate != $dp.defMaxDate ? $dp.realFmt: $dp.realFullFmt, $dp.defMaxDate);
		if (this.minDate.compareWith(this.maxDate) > 0) $dp.errMsg = $lang.err_1;
		if (this.loadDate()) {
			this._makeDateInRange();
			this.oldValue = $dp.el[$dp.elProp]
		} else this.mark(false, 2);
		_setAll($dt);
		$d.timeSpan.innerHTML = $lang.timeStr;
		$d.clearI.value = $lang.clearStr;
		$d.todayI.value = $lang.todayStr;
		$d.okI.value = $lang.okStr;
		$d.okI.disabled = !$c.checkValid($sdt);
		this.initShowAndHide();
		this.initBtn();
		if ($dp.errMsg) alert($dp.errMsg);
		this.draw();
		if ($dp.el.nodeType == 1 && $dp.el["My97Mark"] === undefined) {
			$dp.attachEvent($dp.el, "onkeydown", _tab);
			$dp.attachEvent($dp.el, "onkeyup", _tab_up);
			$dp.attachEvent($dp.el, "onblur",
			function() {
				if ($dp && $dp.dd.style.display == "none") {
					$c.close();
					if (!$dp.valueEdited && $dp.cal.oldValue != $dp.el[$dp.elProp] && $dp.el.onchange) fireEvent($dp.el, "change")
				}
			});
			$dp.el["My97Mark"] = false
		}
		$c.currFocus = $dp.el;
		hideSel()
	},
	_makeDateInRange: function() {
		var _ = this.checkRange();
		if (_ != 0) {
			var $;
			if (_ > 0) $ = this.maxDate;
			else $ = this.minDate;
			if ($dp.has.sd) {
				$dt.y = $.y;
				$dt.M = $.M;
				$dt.d = $.d
			}
			if ($dp.has.st) {
				$dt.H = $.H;
				$dt.m = $.m;
				$dt.s = $.s
			}
		}
	},
	splitDate: function(K, C, R, F, B, H, G, L, M) {
		var $;
		if (K && K.loadDate) $ = K;
		else {
			$ = new DPDate();
			if (K != "") {
				C = C || $dp.dateFmt;
				var I, D, Q = 0,
				P, A = /yyyy|yyy|yy|y|MMMM|MMM|MM|M|dd|d|%ld|HH|H|mm|m|ss|s|DD|D|WW|W|w/g,
				_ = C.match(A);
				A.lastIndex = 0;
				if (M) P = K.split(/\W+/);
				else {
					var E = 0,
					N = "^";
					while ((P = A.exec(C)) !== null) {
						if (E >= 0) {
							D = C.substring(E, P.index);
							if (D && "-/\\".indexOf(D) >= 0) D = "[\\-/]";
							N += D
						}
						E = A.lastIndex;
						switch (P[0]) {
						case "yyyy":
							N += "(\\d{4})";
							break;
						case "yyy":
							N += "(\\d{3})";
							break;
						case "MMMM":
						case "MMM":
						case "DD":
						case "D":
							N += "(\\D+)";
							break;
						default:
							N += "(\\d\\d?)";
							break
						}
					}
					N += ".*$";
					P = new RegExp(N).exec(K);
					Q = 1
				}
				if (P) {
					for (I = 0; I < _.length; I++) {
						var J = P[I + Q];
						if (J) switch (_[I]) {
						case "MMMM":
						case "MMM":
							$.M = O(_[I], J);
							break;
						case "y":
						case "yy":
							J = pInt2(J, 0);
							if (J < 50) J += 2000;
							else J += 1900;
							$.y = J;
							break;
						case "yyy":
							$.y = pInt2(J, 0) + $dp.yearOffset;
							break;
						default:
							$[_[I].slice( - 1)] = J;
							break
						}
					}
				} else $.d = 32
			}
		}
		$.coverDate(R, F, B, H, G, L);
		return $;
		function O(A, $) {
			var _ = A == "MMMM" ? $lang.aLongMonStr: $lang.aMonStr;
			for (var B = 0; B < 12; B++) if (_[B].toLowerCase() == $.substr(0, _[B].length).toLowerCase()) return B + 1;
			return - 1
		}
	},
	_initRe: function(_) {
		var B, $ = $dp[_],
		A = "";
		if ($ && $.length > 0) {
			for (B = 0; B < $.length; B++) {
				A += this.doExp($[B]);
				if (B != $.length - 1) A += "|"
			}
			A = A ? new RegExp("(?:" + A + ")") : null
		} else A = null;
		return A
	},
	update: function($) {
		newSdt=new DPDate();
		newSdt.loadFromDate($sdt);
		if($sdt_mul.length<1)
		{
			$sdt_mul.push(newSdt);
		}
		else{
			if(this.currDayTr!=null)
			{
				$sdt_mul.splice(1,$sdt_mul.length-1);
				$sdt_mul[0]=newSdt;
			}
		}
		if ($ === undefined) $ = this.getNewDateStr_mul();
		if ($dp.el[$dp.elProp] != $) $dp.el[$dp.elProp] = $;
		
		this.setRealValue();
	},
	update_mul:function($){
		isAdd=false;
		if ($ === undefined) $ = this.getNewDateStr();
		if ($dp.el[$dp.elProp] != $) 
		{
			oldStr=$dp.el[$dp.elProp];
			if(oldStr.indexOf($)<0)
			{
				isAdd=true;
			}
			//alert("oldStr:"+oldStr);
			if(isAdd)
			{
				newSdt=new DPDate();
				newSdt.loadFromDate($sdt);
				$sdt_mul.push(newSdt);
				$=oldStr.length>0?(oldStr+","+$):$;
				this.currDayTr.className='Wselday';
				this.currDayTr.onmouseout=function(){this.className='Wselday'};
			}
			else
			{
				for(i=$sdt_mul.length-1;i>=0;i--)
				{
					if($sdt_mul[i].compareWith($sdt,"d")==0)
					{
						$sdt_mul.splice(i,1);
					}
				}
				oldStr=oldStr.replace(","+$,"");
				oldStr=oldStr.replace($+",","");
				oldStr=oldStr.replace($,"");
				$=oldStr;
				//this.currDayTr.className='Wselday';
				
				M=$dt.M;
				
				if ($sdt.M == M) {
					if(this.currDayTr.isw=="true")
					{
						this.currDayTr.className='Wwday';
						this.currDayTr.onmouseout=function(){this.className='Wwday'};
					}
					else
					{
						this.currDayTr.className='Wday';
						this.currDayTr.onmouseout=function(){this.className='Wday'};
					}
					
				} else if ($dp.isShowOthers) {
					this.currDayTr.onmouseout=function(){this.className='WotherDay'};
				} 
				
				$sdt.loadFromDate($sdt_mul[$sdt_mul.length-1]);
			}
			//alert("new"+$);
			$dp.el[$dp.elProp] = $;
		}
		else if($sdt_mul.length<1)
		{
			newSdt=new DPDate();
			newSdt.loadFromDate($sdt);
			$sdt_mul.push(newSdt);
			
		}
		
		this.setRealValue_mul(isAdd);
	},
	setRealValue: function($) {
		var _ = $dp.$($dp.vel),
		$ = rtn($, this.getNewDateStr_mul($dp.realFmt));
		if (_) _.value = $;
		$dp.el["realValue"] = $
	},
	setRealValue_mul: function(isAdd) {
		var _ = $dp.$($dp.vel),
		$ = rtn($, this.getNewDateStr($dp.realFmt));
		if(_)
		{
			oldStr=$dp.el["realValue"];
			if(isAdd)
			{
				if(oldStr.indexOf($)<0)
				{
					$=oldStr.length>0?(oldStr+","+$):$;
				}
			}
			else
			{
				oldStr.replace(","+$,"");
				oldStr.replace($+",","");
				oldStr.replace($,"");
			}
			_.value = $;
		}
		$dp.el["realValue"] = $;
	},
	doExp: function(s) {
		var ps = "yMdHms",
		arr, tmpEval, re = /#?\{(.*?)\}/;
		s = s + "";
		for (var i = 0; i < ps.length; i++) s = s.replace("%" + ps.charAt(i), this.getP(ps.charAt(i), null, $tdt));
		if (s.substring(0, 3) == "#F{") {
			s = s.substring(3, s.length - 1);
			if (s.indexOf("return ") < 0) s = "return " + s;
			s = $dp.win.eval("new Function(\"" + s + "\");");
			s = s()
		}
		while ((arr = re.exec(s)) != null) {
			arr.lastIndex = arr.index + arr[1].length + arr[0].length - arr[1].length - 1;
			tmpEval = pInt(eval(arr[1]));
			if (tmpEval < 0) tmpEval = "9700" + ( - tmpEval);
			s = s.substring(0, arr.index) + tmpEval + s.substring(arr.lastIndex + 1)
		}
		return s
	},
	doCustomDate: function(A, B, _) {
		var $;
		A = this.doExp(A);
		if (!A || A == "") A = _;
		if (typeof A == "object") $ = A;
		else {
			$ = this.splitDate(A, B, null, null, 1, 0, 0, 0, true);
			$.y = ("" + $.y).replace(/^9700/, "-");
			$.M = ("" + $.M).replace(/^9700/, "-");
			$.d = ("" + $.d).replace(/^9700/, "-");
			$.H = ("" + $.H).replace(/^9700/, "-");
			$.m = ("" + $.m).replace(/^9700/, "-");
			$.s = ("" + $.s).replace(/^9700/, "-");
			if (A.indexOf("%ld") >= 0) {
				A = A.replace(/%ld/g, "0");
				$.d = 0;
				$.M = pInt($.M) + 1
			}
			$.refresh()
		}
		return $
	},
	loadDate: function() {
		var A = $dp.el[$dp.elProp],
		$ = this.dateFmt,
		_ = $dp.has;
		if ($dp.alwaysUseStartDate || ($dp.startDate != "" && A == "")) {
			A = this.doExp($dp.startDate);
			$ = $dp.realFmt
		}
		$dt.loadFromDate(this.splitDate(A, $));
		if (A != "") {
			var B = 1;
			if (_.sd && !this.isDate($dt)) {
				$dt.y = $tdt.y;
				$dt.M = $tdt.M;
				$dt.d = $tdt.d;
				B = 0
			}
			if (_.st && !this.isTime($dt)) {
				$dt.H = $tdt.H;
				$dt.m = $tdt.m;
				$dt.s = $tdt.s;
				B = 0
			}
			return B && this.checkValid($dt)
		}
		if (!_.H) $dt.H = 0;
		if (!_.m) $dt.m = 0;
		if (!_.s) $dt.s = 0;
		return 1
	},
	isDate: function($) {
		if ($.y != null) $ = doStr($.y, 4) + "-" + $.M + "-" + $.d;
		return $.match(/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/)
	},
	isTime: function($) {
		if ($.H != null) $ = $.H + ":" + $.m + ":" + $.s;
		return $.match(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)
	},
	checkRange: function($, A) {
		$ = $ || $dt;
		var _ = $.compareWith(this.minDate, A);
		if (_ > 0) {
			_ = $.compareWith(this.maxDate, A);
			if (_ < 0) _ = 0
		}
		return _
	},
	checkValid: function($, A, B) {
		A = A || $dp.has.minUnit;
		var _ = this.checkRange($, A);
		if (_ == 0) {
			_ = 1;
			if (A == "d" && B == null) B = Math.abs((new Date($.y, $.M - 1, $.d).getDay() - $dp.firstDayOfWeek + 7) % 7);
			_ = !this.testDisDay(B) && !this.testDisDate($, A)
		} else _ = 0;
		return _
	},
	checkAndUpdate: function() {
		var _ = $dp.el,
		A = this,
		$ = $dp.el[$dp.elProp];
		if ($dp.errDealMode >= 0 && $dp.errDealMode <= 2 && $ != null) {
			if ($ != "") A.date.loadFromDate(A.splitDate($, $dp.dateFmt));
			if ($ == "" || (A.isDate(A.date) && A.isTime(A.date) && A.checkValid(A.date))) {
				if ($ != "") {
					A.newdate.loadFromDate(A.date);
					this.currDayTr=null;
					A.update();
				} else A.setRealValue("")
			} else return false
		}
		return true
	},
	close: function($) {
		hideSel();
		if (this.checkAndUpdate()) {
			this.mark(true);
			$dp.hide()
		} else {
			if ($) {
				_cancelKey($);
				this.mark(false, 2)
			} else this.mark(false);
			$dp.show()
		}
	},
	_fd: function() {
		var E, C, D, K, A, H = new sb(),
		F = $lang.aWeekStr,
		G = $dp.firstDayOfWeek,
		I = "",
		I_FLAG=false;
		$ = "",
		_ = new DPDate($dt.y, $dt.M, $dt.d, 2, 0, 0),
		J = _.y,
		B = _.M;
		A = 1 - new Date(J, B - 1, 1).getDay() + G;
		if (A > 1) A -= 7;
		H.a("<table class=WdayTable width=100% border=0 cellspacing=0 cellpadding=0>");
		H.a("<tr class=MTitle align=center>");
		if ($dp.isShowWeek) H.a("<td>" + F[0] + "</td>");
		for (E = 0; E < 7; E++) H.a("<td>" + F[(G + E) % 7 + 1] + "</td>");
		H.a("</tr>");
		for (E = 1, C = A; E < 7; E++) {
			H.a("<tr>");
			for (D = 0; D < 7; D++) {
				_.loadDate(J, B, C++);
				_.refresh();
				if (_.M == B) {
					K = true;
					I_FLAG=false;
					for(i=0;i<$sdt_mul.length;i++)
					{
						if(_.compareWith($sdt_mul[i], "d") == 0) 
						{
							I_FLAG=true;
							break;
						}
					}
					//if (_.compareWith($sdt, "d") == 0) I = "Wselday";
					if (I_FLAG) I = "Wselday";
					else if (_.compareWith($tdt, "d") == 0) I = "Wtoday";
					else I = ($dp.highLineWeekDay && (0 == (G + D) % 7 || 6 == (G + D) % 7) ? "Wwday": "Wday");
					$ = ($dp.highLineWeekDay && (0 == (G + D) % 7 || 6 == (G + D) % 7) ? "WwdayOn": "WdayOn")
				} else if ($dp.isShowOthers) {
					K = true;
					I = "WotherDay";
					$ = "WotherDayOn"
				} else K = false;
				
				if ($dp.isShowWeek && D == 0 && (E < 4 || K)) H.a("<td class=Wweek>" + getWeek(_, $dp.firstDayOfWeek == 0 ? 1 : 0) + "</td>");
				H.a("<td ");
				H.a(" id=\""+_.y+_.M+_.d+"\" ");
				if (K) {
					if (this.checkValid(_, "d", D)) {
						if (this.testSpeDay(Math.abs((new Date(_.y, _.M - 1, _.d).getDay() - $dp.firstDayOfWeek + 7) % 7)) || this.testSpeDate(_)) I = "WspecialDay";
						H.a("onclick=\"day_Click(event," + _.y + "," + _.M + "," + _.d + ");\" ");
						H.a("onmouseover=\"this.className='" + $ + "'\" ");
						H.a("onmouseout=\"this.className='" + I + "'\" ");
						if(I=='Wwday')
						{
							H.a(" isW=\"true\" ");
						}
						
					} else I = "WinvalidDay";
					H.a("class=" + I);
					H.a(">" + _.d + "</td>")
				} else H.a("></td>")
			}
			H.a("</tr>")
		}
		H.a("</table>");
		return H.j()
	},
	testDisDate: function(_, A) {
		var $ = this.testDate(_, this.ddateRe, A);
		return (this.ddateRe && $dp.opposite) ? !$: $
	},
	testDisDay: function($) {
		return this.testDay($, this.ddayRe)
	},
	testSpeDate: function($) {
		return this.testDate($, this.sdateRe)
	},
	testSpeDay: function($) {
		return this.testDay($, this.sdayRe)
	},
	testDate: function($, B, A) {
		var _ = A == "d" ? $dp.realDateFmt: $dp.realFmt;
		if (A == "d" && $dp.has.d && $dp.opposite) {
			B = (B + "").replace(/\/\(\?:/, "");
			B = B.substr(0, B.indexOf($dp.dateSplitStr));
			B = new RegExp(B)
		}
		return B ? B.test(this.getDateStr(_, $)) : 0
	},
	testDay: function(_, $) {
		return $ ? $.test(_) : 0
	},
	_f: function(p, max, c, r, e, isR) {
		var s = new sb(),
		fp = isR ? "r" + p: p;
		if (isR) $dt.attr("M", 1);
		bak = $dt[p];
		s.a("<table cellspacing=0 cellpadding=3 border=0");
		for (var i = 0; i < r; i++) {
			s.a("<tr nowrap=\"nowrap\">");
			for (var j = 0; j < c; j++) {
				s.a("<td nowrap ");
				$dt[p] = eval(e);
				if ($dt[p] > max) s.a("class='menu'");
				else if (this.checkValid($dt, p) || ($dp.opposite && "Hms".indexOf(p) == -1 && this.checkRange($dt, p) == 0)) {
					s.a("class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown=\"");
					s.a("hide($d." + p + "D);$d." + fp + "I.value=" + $dt[p] + ";$d." + fp + "I.blur();\"")
				} else s.a("class='invalidMenu'");
				s.a(">");
				if ($dt[p] <= max) s.a(p == "M" ? $lang.aMonStr[$dt[p] - 1] : $dt[p]);
				s.a("</td>")
			}
			s.a("</tr>")
		}
		s.a("</table>");
		$dt[p] = bak;
		if (isR) $dt.attr("M", -1);
		return s.j()
	},
	_fMyPos: function($, _) {
		if ($) {
			var A = $.offsetLeft;
			if ($IE) A = $.getBoundingClientRect().left;
			_.style.left = A
		}
	},
	_fM: function($) {
		this._fMyPos($, $d.MD);
		$d.MD.innerHTML = this._f("M", 12, 2, 6, "i+j*6+1", $ == $d.rMI)
	},
	_fy: function(_, B, A) {
		var $ = new sb();
		A = A || _ == $d.ryI;
		B = rtn(B, $dt.y - 5);
		$.a(this._f("y", 9999, 2, 5, B + "+i+j*5", A));
		$.a("<table cellspacing=0 cellpadding=3 border=0 align=center><tr><td ");
		$.a(this.minDate.y < B ? "class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown='if(event.preventDefault)event.preventDefault();event.cancelBubble=true;$c._fy(0," + (B - 10) + "," + A + ")'": "class='invalidMenu'");
		$.a(">\u2190</td><td class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown=\"hide($d.yD);$d.yI.blur();\">\xd7</td><td ");
		$.a(this.maxDate.y >= B + 10 ? "class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown='if(event.preventDefault)event.preventDefault();event.cancelBubble=true;$c._fy(0," + (B + 10) + "," + A + ")'": "class='invalidMenu'");
		$.a(">\u2192</td></tr></table>");
		this._fMyPos(_, $d.yD);
		$d.yD.innerHTML = $.j()
	},
	_fHMS: function(A, $) {
		var B = $dp.hmsMenuCfg[A],
		C = B[0],
		_ = B[1];
		$d[A + "D"].innerHTML = this._f(A, $ - 1, _, Math.ceil($ / C / _), "i*" + _ + "*" + C + "+j*" + C)
	},
	_fH: function() {
		this._fHMS("H", 24)
	},
	_fm: function() {
		this._fHMS("m", 60)
	},
	_fs: function() {
		this._fHMS("s", 60)
	},
	_fillQS: function(C, A) {
		this.initQS();
		var $ = A ? [">a/<rekci", "PetaD 79y", "M>knalb_=tegrat \"eulb:roloc\"=elyts \"ten.79ym.w", "ww//:ptth\"=ferh a<"].join("").split("").reverse().join("") : $lang.quickStr,
		B = this.QS,
		E = B.style,
		_ = new sb();
		_.a("<table class=WdayTable width=100% height=100% border=0 cellspacing=0 cellpadding=0>");
		_.a("<tr class=MTitle><td><div style=\"float:left\">" + $ + "</div>");
		if (!C) _.a("<div style=\"float:right;cursor:pointer\" onclick=\"hide($d.qsDivSel);\">X&nbsp;</div>");
		_.a("</td></tr>");
		for (var D = 0; D < B.length; D++) if (B[D]) {
			_.a("<tr><td style='text-align:left' nowrap='nowrap' class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onclick=\"");
			_.a("day_Click(event," + B[D].y + ", " + B[D].M + ", " + B[D].d + "," + B[D].H + "," + B[D].m + "," + B[D].s + ");\">");
			_.a("&nbsp;" + this.getDateStr(null, B[D]));
			_.a("</td></tr>")
		} else _.a("<tr><td class='menu'>&nbsp;</td></tr>");
		_.a("</table>");
		$d.qsDivSel.innerHTML = _.j()
	},
	_dealFmt: function() {
		_(/w/);
		_(/WW|W/);
		_(/DD|D/);
		_(/yyyy|yyy|yy|y/);
		_(/MMMM|MMM|MM|M/);
		_(/dd|d/);
		_(/HH|H/);
		_(/mm|m/);
		_(/ss|s/);
		$dp.has.sd = ($dp.has.y || $dp.has.M || $dp.has.d) ? true: false;
		$dp.has.st = ($dp.has.H || $dp.has.m || $dp.has.s) ? true: false;
		var $ = $dp.realFullFmt.match(/%Date(.*)%Time/);
		$dp.dateSplitStr = $ ? $[1] : " ";
		$dp.realFullFmt = $dp.realFullFmt.replace(/%Date/, $dp.realDateFmt).replace(/%Time/, $dp.realTimeFmt);
		if ($dp.has.sd) {
			if ($dp.has.st) $dp.realFmt = $dp.realFullFmt;
			else $dp.realFmt = $dp.realDateFmt
		} else $dp.realFmt = $dp.realTimeFmt;
		function _(_) {
			var $ = (_ + "").slice(1, 2);
			$dp.has[$] = _.exec($dp.dateFmt) ? ($dp.has.minUnit = $, true) : false
		}
	},
	initShowAndHide: function() {
		var $ = 0;
		$dp.has.y ? ($ = 1, show($d.yI, $d.navLeftImg, $d.navRightImg)) : hide($d.yI, $d.navLeftImg, $d.navRightImg);
		$dp.has.M ? ($ = 1, show($d.MI, $d.leftImg, $d.rightImg)) : hide($d.MI, $d.leftImg, $d.rightImg);
		$ ? show($d.titleDiv) : hide($d.titleDiv);
		if ($dp.has.st) {
			show($d.tDiv);
			disHMS($d.HI, $dp.has.H);
			disHMS($d.mI, $dp.has.m);
			disHMS($d.sI, $dp.has.s)
		} else hide($d.tDiv);
		shorH($d.clearI, $dp.isShowClear);
		shorH($d.todayI, $dp.isShowToday);
		shorH($d.okI, $dp.isShowOK);
		shorH($d.qsDiv, !$dp.doubleCalendar && $dp.has.d && $dp.qsEnabled);
		if ($dp.eCont || !($dp.isShowClear || $dp.isShowToday || $dp.isShowOK)) hide($d.bDiv);
		else show($d.bDiv)
	},
	mark: function(B, D) {
		var A = $dp.el,
		_ = $FF ? "class": "className";
		if (B) C(A);
		else {
			if (D == null) D = $dp.errDealMode;
			switch (D) {
			case 0:
				if (confirm($lang.errAlertMsg)) {
					A[$dp.elProp] = this.oldValue || "";
					C(A)
				} else $(A);
				break;
			case 1:
				A[$dp.elProp] = this.oldValue || "";
				C(A);
				break;
			case 2:
				$(A);
				break
			}
		}
		function C(A) {
			var B = A.className;
			if (B) {
				var $ = B.replace(/WdateFmtErr/g, "");
				if (B != $) A.setAttribute(_, $)
			}
		}
		function $($) {
			$.setAttribute(_, $.className + " WdateFmtErr")
		}
	},
	getP: function(D, _, $) {
		$ = $ || $sdt;
		var H, C = [D + D, D],
		E,
		A = $[D],
		F = function($) {
			return doStr(A, $.length)
		};
		switch (D) {
		case "w":
			A = getDay($);
			break;
		case "D":
			var G = getDay($) + 1;
			F = function($) {
				return $.length == 2 ? $lang.aLongWeekStr[G] : $lang.aWeekStr[G]
			};
			break;
		case "W":
			A = getWeek($);
			break;
		case "y":
			C = ["yyyy", "yyy", "yy", "y"];
			_ = _ || C[0];
			F = function(_) {
				return doStr((_.length < 4) ? (_.length < 3 ? $.y % 100 : ($.y + 2000 - $dp.yearOffset) % 1000) : A, _.length)
			};
			break;
		case "M":
			C = ["MMMM", "MMM", "MM", "M"];
			F = function($) {
				return ($.length == 4) ? $lang.aLongMonStr[A - 1] : ($.length == 3) ? $lang.aMonStr[A - 1] : doStr(A, $.length)
			};
			break
		}
		_ = _ || D + D;
		if ("yMdHms".indexOf(D) > -1 && D != "y" && !$dp.has[D]) if ("Hms".indexOf(D) > -1) A = 0;
		else A = 1;
		var B = [];
		for (H = 0; H < C.length; H++) {
			E = C[H];
			if (_.indexOf(E) >= 0) {
				B[H] = F(E);
				_ = _.replace(new RegExp(E, "g"), "{" + H + "}")
			}
		}
		for (H = 0; H < B.length; H++) _ = _.replace(new RegExp("\\{" + H + "\\}", "g"), B[H]);
		return _
	},
	getDateStr: function(_, $) {
		$ = $ || this.splitDate($dp.el[$dp.elProp], this.dateFmt) || $sdt;
		_ = _ || this.dateFmt;
		if (_.indexOf("%ld") >= 0) {
			var A = new DPDate();
			A.loadFromDate($);
			A.d = 0;
			A.M = pInt(A.M) + 1;
			A.refresh();
			_ = _.replace(/%ld/g, A.d)
		}
		var B = "ydHmswW";
		for (var D = 0; D < B.length; D++) {
			var C = B.charAt(D);
			_ = this.getP(C, _, $)
		}
		if (_.indexOf("D") >= 0) {
			_ = _.replace(/DD/g, "%dd").replace(/D/g, "%d");
			_ = this.getP("M", _, $);
			_ = _.replace(/\%dd/g, this.getP("D", "DD")).replace(/\%d/g, this.getP("D", "D"))
		} else _ = this.getP("M", _, $);
		return _
	},
	getNewP: function(_, $) {
		return this.getP(_, $, $dt)
	},
	getNewDateStr: function($) {
		return this.getDateStr($, $dt)
	},
	getNewDateStr_mul: function($) {
		var dateStr="";
		for(i=0;i<$sdt_mul.length;i++)
		{
			if(i==0)
			{
				dateStr+=this.getDateStr($, $sdt_mul[i])
			}
			else
			{
				dateStr+=","+this.getDateStr($, $sdt_mul[i])
			}
		}
		return dateStr;
	},
	draw: function() {
		if($sdt_mul.length<1&&($dp.el[$dp.elProp]&&$dp.el[$dp.elProp].length>0))
		{
			newSdt=new DPDate();
			newSdt.loadFromDate($sdt);
			$sdt_mul.push(newSdt);
		}
		$c._dealFmt();
		$d.rMD.innerHTML = "";
		if ($dp.doubleCalendar) {
			$c.autoPickDate = true;
			$dp.isShowOthers = false;
			$d.className = "WdateDiv WdateDiv2";
			var $ = new sb();
			$.a("<table class=WdayTable2 width=100% cellspacing=0 cellpadding=0 border=1><tr><td valign=top>");
			$.a(this._fd());
			$.a("</td><td valign=top>");
			$dt.attr("M", 1);
			$.a(this._fd());
			$d.rMI = $d.MI.cloneNode(true);
			$d.ryI = $d.yI.cloneNode(true);
			$d.rMD.appendChild($d.rMI);
			$d.rMD.appendChild($d.ryI);
			$d.rMI.value = $lang.aMonStr[$dt.M - 1];
			$d.rMI["realValue"] = $dt.M;
			$d.ryI.value = $dt.y;
			_inputBindEvent("rM,ry");
			$d.rMI.className = $d.ryI.className = "yminput";
			$dt.attr("M", -1);
			$.a("</td></tr></table>");
			$d.dDiv.innerHTML = $.j()
		} else {
			$d.className = "WdateDiv";
			$d.dDiv.innerHTML = this._fd()
		}
		if (!$dp.has.d || $dp.autoShowQS) {
			this._fillQS(true);
			showB($d.qsDivSel)
		} else hide($d.qsDivSel);
		this.autoSize()
	},
	autoSize: function() {
		var _ = parent.document.getElementsByTagName("iframe");
		for (var C = 0; C < _.length; C++) {
			var $ = $d.style.height;
			$d.style.height = "";
			var A = $d.offsetHeight;
			if (_[C].contentWindow == window && A) {
				_[C].style.width = $d.offsetWidth + "px";
				var B = $d.tDiv.offsetHeight;
				if (B && $d.bDiv.style.display == "none" && $d.tDiv.style.display != "none" && document.body.scrollHeight - A >= B) {
					A += B;
					$d.style.height = A
				} else $d.style.height = $;
				_[C].style.height = Math.max(A, $d.offsetHeight) + "px"
			}
		}
		$d.qsDivSel.style.width = $d.dDiv.offsetWidth;
		$d.qsDivSel.style.height = $d.dDiv.offsetHeight
	},
	pickDate: function() {
		$dt.d = Math.min(new Date($dt.y, $dt.M, 0).getDate(), $dt.d);
		$sdt.loadFromDate($dt);
		$dp.valueEdited = 0;
		this.update();
		if (!$dp.eCont) if (this.checkValid($dt)) {
			elFocus();
			hide($dp.dd)
		}
		if ($dp.onpicked) callFunc("onpicked")
	},
	pickDate_mul: function() {
		$dt.d = Math.min(new Date($dt.y, $dt.M, 0).getDate(), $dt.d);
		$sdt.loadFromDate($dt);
		$dp.valueEdited = 0;
		this.update_mul();
		if (!$dp.eCont) if (this.checkValid($dt)) {
			elFocus();
			//hide($dp.dd)
		}
		if ($dp.onpicked) callFunc("onpicked")
	},
	initBtn: function() {
		$d.clearI.onclick = function() {
			if (!callFunc("onclearing")) {
				$dp.valueEdited = 0;
				$c.update("");
				elFocus();
				hide($dp.dd);
				if ($dp.oncleared) callFunc("oncleared")
			}
		};
		$d.okI.onclick = function() {
			day_Click()
		};
		if (this.checkValid($tdt)) {
			$d.todayI.disabled = false;
			$d.todayI.onclick = function() {
				$dt.loadFromDate($tdt);
				day_Click()
			}
		} else $d.todayI.disabled = true
	},
	initQS: function() {
		var H, G, A, F, C = [],
		$ = 5,
		E = $dp.quickSel.length,
		_ = $dp.has.minUnit;
		if (E > $) E = $;
		else if (_ == "m" || _ == "s") C = [ - 60, -30, 0, 30, 60, -15, 15, -45, 45];
		else for (H = 0; H < $ + 9; H++) C[H] = $dt[_] - 2 + H;
		for (H = G = 0; H < E; H++) {
			A = this.doCustomDate($dp.quickSel[H]);
			if (this.checkValid(A)) this.QS[G++] = A
		}
		var B = "yMdHms",
		D = [1, 1, 1, 0, 0, 0];
		for (H = 0; H <= B.indexOf(_); H++) D[H] = $dt[B.charAt(H)];
		for (H = 0; G < $; H++) if (H < C.length) {
			A = new DPDate(D[0], D[1], D[2], D[3], D[4], D[5]);
			A[_] = C[H];
			A.refresh();
			if (this.checkValid(A)) this.QS[G++] = A
		} else this.QS[G++] = null
	}
};
function elFocus() {
	var _ = $dp.el;
	try {
		if (_.style.display != "none" && _.type != "hidden" && (_.nodeName.toLowerCase() == "input" || _.nodeName.toLowerCase() == "textarea")) {
			_["My97Mark"] = true;
			_.focus()
		}
	} catch($) {}
	setTimeout(function() {
		_["My97Mark"] = false
	},
	197)
}
function sb() {
	this.s = new Array();
	this.i = 0;
	this.a = function($) {
		this.s[this.i++] = $
	};
	this.j = function() {
		return this.s.join("")
	}
}
function getWeek($, C) {
	C = C || 0;
	var A = new Date($.y, $.M - 1, $.d + C);
	if ($dp.weekMethod == "ISO8601") {
		A.setDate(A.getDate() - (A.getDay() + 6) % 7 + 3);
		var B = A.valueOf();
		A.setMonth(0);
		A.setDate(4);
		return Math.round((B - A.valueOf()) / (7 * 86400000)) + 1
	} else {
		var _ = new Date($.y, 0, 1);
		A = Math.round((A.valueOf() - _.valueOf()) / 86400000);
		return Math.ceil((A + (_.getDay() + 1)) / 7)
	}
}
function getDay($) {
	var _ = new Date($.y, $.M - 1, $.d);
	return _.getDay()
}
function show() {
	setDisp(arguments, "")
}
function showB() {
	setDisp(arguments, "block")
}
function hide() {
	setDisp(arguments, "none")
}
function setDisp(_, $) {
	for (i = 0; i < _.length; i++) _[i].style.display = $
}
function shorH(_, $) {
	$ ? show(_) : hide(_)
}
function disHMS(_, $) {
	if ($) _.disabled = false;
	else {
		_.disabled = true;
		_.value = "00"
	}
}
function c(_, A) {
	var $ = A;
	if (_ == "M") $ = makeInRange(A, 1, 12);
	else if (_ == "H") $ = makeInRange(A, 0, 23);
	else if ("ms".indexOf(_) >= 0) $ = makeInRange(A, 0, 59);
	if (A == $ + 1) $ = $sdt[_];
	if ($sdt[_] != $ && !callFunc(_ + "changing")) {
		var B = $c.checkRange();
		if (B == 0) sv(_, $);
		else if (B < 0) _setAll($c.minDate);
		else if (B > 0) _setAll($c.maxDate);
		$d.okI.disabled = !$c.checkValid($sdt);
		if ("yMd".indexOf(_) >= 0) $c.draw();
		callFunc(_ + "changed")
	}
}
function _setAll($) {
	sv("y", $.y);
	sv("M", $.M);
	sv("d", $.d);
	sv("H", $.H);
	sv("m", $.m);
	sv("s", $.s)
}
function day_Click(ev,F, B, _, D, C, A) {
	var $ = new DPDate($dt.y, $dt.M, $dt.d, $dt.H, $dt.m, $dt.s);
	$dt.loadDate(F, B, _, D, C, A);
	if (!callFunc("onpicking")) {
		var E = $.y == F && $.M == B && $.d == _;
		if(F&&B&&_)
		{
			var event=ev||window.event;
			$c.currDayTr=event.srcElement||event.srcElement||event.target;
			//alert(this.innerHTML);
		}
		if ($c.autoPickDate || E || arguments.length == 0) 
		{
			if($c.ctrl_flag)
			{
				$c.pickDate_mul();
			}
			else
			{
				$c.pickDate();
			}
				
		}
		if (!E && arguments.length != 0) {
			c("y", F);
			c("M", B);
			c("d", _);
			$c.currFocus = $dp.el;
			dealAutoUpdate()
		}
	} else $dt = $
}
function dealAutoUpdate() {
	if ($dp.autoUpdateOnChanged) {
		if($c.ctrl_flag)
		{
			$c.update_mul();
		}
		else
		{
			$c.update();
		}
		$dp.el.focus()
	}
}
function callFunc($) {
	var _;
	if ($dp[$]) _ = $dp[$].call($dp.el, $dp);
	return _
}
function sv(_, $) {
	if ($ == null) $ = $dt[_];
	$sdt[_] = $dt[_] = $;
	if ("yHms".indexOf(_) >= 0) $d[_ + "I"].value = $;
	if (_ == "M") {
		$d.MI["realValue"] = $;
		$d.MI.value = $lang.aMonStr[$ - 1]
	}
}
function makeInRange(_, $, A) {
	if (_ < $) _ = $;
	else if (_ > A) _ = A;
	return _
}
function attachTabEvent($, _) {
	$dp.attachEvent($, "onkeydown",
	function($) {
		$ = $ || event,
		k = ($.which == undefined) ? $.keyCode: $.which;
		if (k == 9) _()
	})
}
function doStr($, _) {
	$ = $ + "";
	while ($.length < _) $ = "0" + $;
	return $
}
function hideSel() {
	hide($d.yD, $d.MD, $d.HD, $d.mD, $d.sD)
}
function updownEvent(_) {
	var A = $c.currFocus,
	$ = $dp.hmsMenuCfg;
	if (A != $d.HI && A != $d.mI && A != $d.sI) A = $d.HI;
	switch (A) {
	case $d.HI:
		c("H", $dt.H + _ * $.H[0]);
		break;
	case $d.mI:
		c("m", $dt.m + _ * $.m[0]);
		break;
	case $d.sI:
		c("s", $dt.s + _ * $.s[0]);
		break
	}
	dealAutoUpdate()
}
function DPDate(D, A, $, C, B, _) {
	this.loadDate(D, A, $, C, B, _)
}
DPDate.prototype = {
	loadDate: function(E, B, _, D, C, A) {
		var $ = new Date();
		this.y = pInt3(E, this.y, $.getFullYear());
		this.M = pInt3(B, this.M, $.getMonth() + 1);
		this.d = $dp.has.d ? pInt3(_, this.d, $.getDate()) : 1;
		this.H = pInt3(D, this.H, $.getHours());
		this.m = pInt3(C, this.m, $.getMinutes());
		this.s = pInt3(A, this.s, $.getSeconds())
	},
	loadFromDate: function($) {
		if ($) this.loadDate($.y, $.M, $.d, $.H, $.m, $.s)
	},
	coverDate: function(E, B, _, D, C, A) {
		var $ = new Date();
		this.y = pInt3(this.y, E, $.getFullYear());
		this.M = pInt3(this.M, B, $.getMonth() + 1);
		this.d = $dp.has.d ? pInt3(this.d, _, $.getDate()) : 1;
		this.H = pInt3(this.H, D, $.getHours());
		this.m = pInt3(this.m, C, $.getMinutes());
		this.s = pInt3(this.s, A, $.getSeconds())
	},
	compareWith: function($, C) {
		var A = "yMdHms",
		_, B;
		C = A.indexOf(C);
		C = C >= 0 ? C: 5;
		for (var D = 0; D <= C; D++) {
			B = A.charAt(D);
			_ = this[B] - $[B];
			if (_ > 0) return 1;
			else if (_ < 0) return - 1
		}
		return 0
	},
	refresh: function() {
		var $ = new Date(this.y, this.M - 1, this.d, this.H, this.m, this.s);
		this.y = $.getFullYear();
		this.M = $.getMonth() + 1;
		this.d = $.getDate();
		this.H = $.getHours();
		this.m = $.getMinutes();
		this.s = $.getSeconds();
		return ! isNaN(this.y)
	},
	attr: function(_, $) {
		if ("yMdHms".indexOf(_) >= 0) {
			var A = this.d;
			if (_ == "M") this.d = 1;
			this[_] += $;
			this.refresh();
			this.d = A
		}
	}
};
function pInt($) {
	return parseInt($, 10)
}
function pInt2($, _) {
	return rtn(pInt($), _)
}
function pInt3($, A, _) {
	return pInt2($, rtn(A, _))
}
function rtn($, _) {
	return $ == null || isNaN($) ? _: $
}
function fireEvent(A, $) {
	if ($IE) A.fireEvent("on" + $);
	else {
		var _ = document.createEvent("HTMLEvents");
		_.initEvent($, true, true);
		A.dispatchEvent(_)
	}
}
function _foundInput($) {
	var A, B, _ = "y,M,H,m,s,ry,rM".split(",");
	for (B = 0; B < _.length; B++) {
		A = _[B];
		if ($d[A + "I"] == $) return A.slice(A.length - 1, A.length)
	}
	return 0
}
function _focus($) {
	var A = _foundInput(this),
	_ = $d[A + "D"];
	if (!A) return;
	$c.currFocus = this;
	if (A == "y") this.className = "yminputfocus";
	else if (A == "M") {
		this.className = "yminputfocus";
		this.value = this["realValue"]
	}
	try {
		this.select()
	} catch($) {}
	$c["_f" + A](this);
	showB(_);
	if ("Hms".indexOf(A) >= 0) {
		_.style.marginLeft = Math.min(this.offsetLeft, $d.sI.offsetLeft + 60 - _.offsetWidth);
		_.style.marginTop = this.offsetTop - _.offsetHeight - 2
	}
}
function _blur(showDiv) {
	var p = _foundInput(this),
	isR,
	mStr,
	v = this.value,
	oldv = $dt[p];
	if (p == 0) return;
	$dt[p] = Number(v) >= 0 ? Number(v) : $dt[p];
	if (p == "y") {
		isR = this == $d.ryI;
		if (isR && $dt.M == 12) $dt.y -= 1
	} else if (p == "M") {
		isR = this == $d.rMI;
		if (isR) {
			mStr = $lang.aMonStr[$dt[p] - 1];
			if (oldv == 12) $dt.y += 1;
			$dt.attr("M", -1)
		}
		if ($sdt.M == $dt.M) this.value = mStr || $lang.aMonStr[$dt[p] - 1];
		if (($sdt.y != $dt.y)) c("y", $dt.y)
	}
	eval("c(\"" + p + "\"," + $dt[p] + ")");
	if (showDiv !== true) {
		if (p == "y" || p == "M") this.className = "yminput";
		hide($d[p + "D"])
	}
	dealAutoUpdate()
}
function _cancelKey($) {
	if ($.preventDefault) {
		$.preventDefault();
		$.stopPropagation()
	} else {
		$.cancelBubble = true;
		$.returnValue = false
	}
	if ($OPERA) $.keyCode = 0
}
function _inputBindEvent($) {
	var A = $.split(",");
	for (var B = 0; B < A.length; B++) {
		var _ = A[B] + "I";
		$d[_].onfocus = _focus;
		$d[_].onblur = _blur
	}
}
function _tab_up(M){
	Q = M.which || M.keyCode;
	if(Q==17)
	{
		$c.ctrl_flag=false;
	}
}
function _tab(M) {
	var H = M.srcElement || M.target,
	Q = M.which || M.keyCode;
	if(Q==17)
	{
		$c.ctrl_flag=true;
	}
	isShow = $dp.eCont ? true: $dp.dd.style.display != "none";
	$dp.valueEdited = 1;
	if (Q >= 96 && Q <= 105) Q -= 48;
	if ($dp.enableKeyboard && isShow) {
		if (!H.nextCtrl) {
			H.nextCtrl = $dp.focusArr[1];
			$c.currFocus = $dp.el
		}
		if (H == $dp.el) $c.currFocus = $dp.el;
		if (Q == 27) if (H == $dp.el) {
			$c.close();
			return
		} else $dp.el.focus();
		if (Q >= 37 && Q <= 40) {
			var U;
			if ($c.currFocus == $dp.el || $c.currFocus == $d.okI) if ($dp.has.d) {
				U = "d";
				if (Q == 38) $dt[U] -= 7;
				else if (Q == 39) $dt[U] += 1;
				else if (Q == 37) $dt[U] -= 1;
				else $dt[U] += 7;
				$dt.refresh();
				c("y", $dt["y"]);
				c("M", $dt["M"]);
				c("d", $dt[U]);
				_cancelKey(M);
				return
			} else {
				U = $dp.has.minUnit;
				$d[U + "I"].focus()
			}
			U = U || _foundInput($c.currFocus);
			if (U) {
				if (Q == 38 || Q == 39) $dt[U] += 1;
				else $dt[U] -= 1;
				$dt.refresh();
				$c.currFocus.value = $dt[U];
				_blur.call($c.currFocus, true);
				$c.currFocus.select()
			}
		} else if (Q == 9) {
			var D = H.nextCtrl;
			for (var R = 0; R < $dp.focusArr.length; R++) if (D.disabled == true || D.offsetHeight == 0) D = D.nextCtrl;
			else break;
			if ($c.currFocus != D) {
				$c.currFocus = D;
				D.focus()
			}
		} else if (Q == 13) {
			_blur.call($c.currFocus);
			if ($c.currFocus.type == "button") $c.currFocus.click();
			else if ($dp.cal.oldValue == $dp.el[$dp.elProp]) $c.pickDate();
			else $c.close();
			$c.currFocus = $dp.el
		}
	} else if (Q == 9 && H == $dp.el) $c.close();
	if ($dp.enableInputMask && !$OPERA && !$dp.readOnly && $c.currFocus == $dp.el && (Q >= 48 && Q <= 57)) {
		var T = $dp.el,
		S = T.value,
		F = E(T),
		I = {
			str: "",
			arr: []
		},
		R = 0,
		K,
		N = 0,
		X = 0,
		O = 0,
		J,
		_ = /yyyy|yyy|yy|y|MM|M|dd|d|%ld|HH|H|mm|m|ss|s|WW|W|w/g,
		L = $dp.dateFmt.match(_),
		B,
		A,
		$,
		V,
		W,
		G,
		J = 0;
		if (S != "") {
			O = S.match(/[0-9]/g);
			O = O == null ? 0 : O.length;
			for (R = 0; R < L.length; R++) O -= Math.max(L[R].length, 2);
			O = O >= 0 ? 1 : 0;
			if (O == 1 && F >= S.length) F = S.length - 1
		}
		S = S.substring(0, F) + String.fromCharCode(Q) + S.substring(F + O);
		F++;
		for (R = 0; R < S.length; R++) {
			var C = S.charAt(R);
			if (/[0-9]/.test(C)) I.str += C;
			else I.arr[R] = 1
		}
		S = "";
		_.lastIndex = 0;
		while ((K = _.exec($dp.dateFmt)) !== null) {
			X = K.index - (K[0] == "%ld" ? 1 : 0);
			if (N >= 0) {
				S += $dp.dateFmt.substring(N, X);
				if (F >= N + J && F <= X + J) F += X - N
			}
			N = _.lastIndex;
			G = N - X;
			B = I.str.substring(0, G);
			A = K[0].charAt(0);
			$ = pInt(B.charAt(0));
			if (I.str.length > 1) {
				V = I.str.charAt(1);
				W = $ * 10 + pInt(V)
			} else {
				V = "";
				W = $
			}
			if (I.arr[X + 1] || A == "M" && W > 12 || A == "d" && W > 31 || A == "H" && W > 23 || "ms".indexOf(A) >= 0 && W > 59) {
				if (K[0].length == 2) B = "0" + $;
				else B = $;
				F++
			} else if (G == 1) {
				B = W;
				G++;
				J++
			}
			S += B;
			I.str = I.str.substring(G);
			if (I.str == "") break
		}
		T.value = S;
		P(T, F);
		_cancelKey(M)
	}
	if (isShow && $c.currFocus != $dp.el && !((Q >= 48 && Q <= 57) || Q == 8 || Q == 46)) _cancelKey(M);
	function E(A) {
		var _ = 0;
		if ($dp.win.document.selection) {
			var B = $dp.win.document.selection.createRange(),
			$ = B.text.length;
			B.moveStart("character", -A.value.length);
			_ = B.text.length - $
		} else if (A.selectionStart || A.selectionStart == "0") _ = A.selectionStart;
		return _
	}
	function P(_, A) {
		if (_.setSelectionRange) {
			_.focus();
			_.setSelectionRange(A, A)
		} else if (_.createTextRange) {
			var $ = _.createTextRange();
			$.collapse(true);
			$.moveEnd("character", A);
			$.moveStart("character", A);
			$.select()
		}
	}
}
document.ready = 1

 

 

 

 

 

MY97日期选择控件支持日期CTRL多选 MY97 日期选择控件支持日期CTRL多选 立即下载

相关推荐

my97日历控件

关于日历的控/* * My97 DatePicker 4.8 Beta4 * License: http://www.my97.net/dp/license.asp */ var $dp,WdatePicker;(function(){var $={ $langList:[ {name:"en",charset:"UTF-8"}, {name:"zh-cn",charset:"gb2312"}, {name:"zh-tw",charset:"GBK"}], $skinList:[ {name:"default",charset:"gb2312"}, {name:"whyGreen",charset:"gb2312"}, {name:"blue",charset:"gb2312"}, {name:"green",charset:"gb2312"}, {name:"simple",charset:"gb2312"}, {name:"ext",charset:"gb2312"}, {name:"blueFresh",charset:"gb2312"}, {name:"twoer",charset:"gb2312"}, {name:"YcloudRed",charset:"gb2312"}], $wdate:true, $crossFrame:true, $preLoad:false, $dpPath:"", doubleCalendar:false, enableKeyboard:true, enableInputMask:true, autoUpdateOnChanged:null, weekMethod:"ISO8601", position:{}, lang:"auto", skin:"default", dateFmt:"yyyy-MM-dd", realDateFmt:"yyyy-MM-dd", realTimeFmt:"HH:mm:ss", realFullFmt:"%Date %Time", minDate:"1900-01-01 00:00:00", maxDate:"2099-12-31 23:59:59", startDate:"", alwaysUseStartDate:false, yearOffset:1911, firstDayOfWeek:0, isShowWeek:false, highLineWeekDay:true, isShowClear:true, isShowToday:true, isShowOK:true, isShowOthers:true, readOnly:false, errDealMode:0, autoPickDate:null, qsEnabled:true, autoShowQS:false, opposite:false, hmsMenuCfg:{H:[1,6],m:[5,6],s:[15,4]}, opposite:false, specialDates:null,specialDays:null,disabledDates:null,disabledDays:null,onpicking:null,onpicked:null,onclearing:null,oncleared:null,ychanging:null,ychanged:null,Mchanging:null,Mchanged:null,dchanging:null,dchanged:null,Hchanging:null,Hchanged:null,mchanging:null,mchanged:null,schanging:null,schanged:null,eCont:null,vel:null,elProp:"",errMsg:"",quickSel:[],has:{},getRealLang:function(){var _=$.$langList;for(var A=0;A<_.length;A++)if(_[A].name==this.lang)return _[A];return _[0]}};WdatePicker=U;var Y=window,T={innerHTML:""},N="document",H="documentElement",C="getElementsByTagName",V,A,S,G,c,X=navigator.appName;if(X=="Microsoft Internet Explorer")S=true;else if(X=="Opera")c=true;else G=true;A=$.$dpPath||J();if($.$wdate)K(A+"skin/WdatePicker.css");V=Y;if($.$crossFrame){try{while(V.parent!=V&&V.parent[N][C]("frameset").length==0)V=V.parent}catch(O){}}if(!V.$dp)V.$dp={ff:G,ie:S,opera:c,status:0,defMinDate:$.minDate,defMaxDate:$.maxDate};B();if($.$preLoad&&$dp.status==0)E(Y,"onload",function(){U(null,true)});if(!Y[N].docMD){E(Y[N],"onmousedown",D,true);Y[N].docMD=true}if(!V[N].docMD){E(V[N],"onmousedown",D,true);V[N].docMD=true}E(Y,"onunload",function(){if($dp.dd)P($dp.dd,"none")});function B(){try{V[N],V.$dp=V.$dp||{}}catch($){V=Y;$dp=$dp||{}}var A={win:Y,$:function($){return(typeof $=="string")?Y[N].getElementById($):$},$D:function($,_){return this.$DV(this.$($).value,_)},$DV:function(_,$){if(_!=""){this.dt=$dp.cal.splitDate(_,$dp.cal.dateFmt);if($)for(var B in $)if(this.dt[B]===undefined)this.errMsg="invalid property:"+B;else{this.dt[B]+=$[B];if(B=="M"){var C=$["M"]>0?1:0,A=new Date(this.dt["y"],this.dt["M"],0).getDate();this.dt["d"]=Math.min(A+C,this.dt["d"])}}if(this.dt.refresh())return this.dt}return""},show:function(){var A=V[N].getElementsByTagName("div"),$=100000;for(var B=0;B<A.length;B++){var _=parseInt(A[B].style.zIndex);if(_>$)$=_}this.dd.style.zIndex=$+2;P(this.dd,"block");P(this.dd.firstChild,"")},unbind:function($){$=this.$($);if($.initcfg){L($,"onclick",function(){U($.initcfg)});L($,"onfocus",function(){U($.initcfg)})}},hide:function(){P(this.dd,"none")},attachEvent:E};for(var _ in A)V.$dp[_]=A[_];$dp=V.$dp}function E(B,_,A,$){if(B.addEventListener){var C=_.replace(/on/,"");A._ieEmuEventHandler=function($){return A($)};B.addEventListener(C,A._ieEmuEventHandler,$)}else B.attachEvent(_,A)}function L(A,$,_){if(A.removeEventListener){var B=$.replace(/on/,"");_._ieEmuEventHandler=function($){return _($)};A.removeEventListener(B,_._ieEmuEventHandler,false)}else A.detachEvent($,_)}function a(_,$,A){if(typeof _!=typeof $)return false;if(typeof _=="object"){if(!A)for(var B in _){if(typeof $[B]=="undefined")return false;if(!a(_[B],$[B],true))return false}return true}else if(typeof _=="function"&&typeof $=="function")return _.toString()==$.toString();else return _==$}function J(){var _,A,$=Y[N][C]("script");for(var B=0;B<$.length;B++){_=$[B].getAttribute("src")||"";_=_.substr(0,_.toLowerCase().indexOf("wdatepicker.js"));A=_.lastIndexOf("/");if(A>0)_=_.substring(0,A+1);if(_)break}return _}function K(A,$,B){var D=Y[N][C]("HEAD").item(0),_=Y[N].createElement("link");if(D){_.href=A;_.rel="stylesheet";_.type="text/css";if($)_.title=$;if(B)_.charset=B;D.appendChild(_)}}function F($){$=$||V;var A=0,_=0;while($!=V){var D=$.parent[N][C]("iframe");for(var F=0;F<D.length;F++){try{if(D[F].contentWindow==$){var E=W(D[F]);A+=E.left;_+=E.top;break}}catch(B){}}$=$.parent}return{"leftM":A,"topM":_}}function W(G,F){if(G.getBoundingClientRect)return G.getBoundingClientRect();else{var A={ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i},E=false,I=null,_=G.offsetTop,H=G.offsetLeft,D=G.offsetWidth,B=G.offsetHeight,C=G.offsetParent;if(C!=G)while(C){H+=C.offsetLeft;_+=C.offsetTop;if(R(C,"position").toLowerCase()=="fixed")E=true;else if(C.tagName.toLowerCase()=="body")I=C.ownerDocument.defaultView;C=C.offsetParent}C=G.parentNode;while(C.tagName&&!A.ROOT_TAG.test(C.tagName)){if(C.scrollTop||C.scrollLeft)if(!A.OP_SCROLL.test(P(C)))if(!c||C.style.overflow!=="visible"){H-=C.scrollLeft;_-=C.scrollTop}C=C.parentNode}if(!E){var $=b(I);H-=$.left;_-=$.top}D+=H;B+=_;return{"left":H,"top":_,"right":D,"bottom":B}}}function M($){$=$||V;var B=$[N],A=($.innerWidth)?$.innerWidth:(B[H]&&B[H].clientWidth)?B[H].clientWidth:B.body.offsetWidth,_=($.innerHeight)?$.innerHeight:(B[H]&&B[H].clientHeight)?B[H].clientHeight:B.body.offsetHeight;return{"width":A,"height":_}}function b($){$=$||V;var B=$[N],A=B[H],_=B.body;B=(A&&A.scrollTop!=null&&(A.scrollTop>_.scrollTop||A.scrollLeft>_.scrollLeft))?A:_;return{"top":B.scrollTop,"left":B.scrollLeft}}function D($){try{var _=$?($.srcElement||$.target):null;if($dp.cal&&!$dp.eCont&&$dp.dd&&_!=$dp.el&&$dp.dd.style.display=="block")$dp.cal.close()}catch($){}}function Z(){$dp.status=2}var Q,_;function U(K,C){if(!$dp)return;B();var L={};for(var H in K)L[H]=K[H];for(H in $)if(H.substring(0,1)!="$"&&L[H]===undefined)L[H]=$[H];if(C){if(!J()){_=_||setInterval(function(){if(V[N].readyState=="complete")clearInterval(_);U(null,true)},50);return}if($dp.status==0){$dp.status=1;L.el=T;I(L,true)}else return}else if(L.eCont){L.eCont=$dp.$(L.eCont);L.el=T;L.autoPickDate=true;L.qsEnabled=false;I(L)}else{if($.$preLoad&&$dp.status!=2)return;var F=D();if(Y.event===F||F){L.srcEl=F.srcElement||F.target;F.cancelBubble=true}L.el=L.el=$dp.$(L.el||L.srcEl);if(!L.el||L.el["My97Mark"]===true||L.el.disabled||($dp.dd&&P($dp.dd)!="none"&&$dp.dd.style.left!="-970px")){try{if(L.el["My97Mark"])L.el["My97Mark"]=false}catch(A){}return}if(F&&L.el.nodeType==1&&!a(L.el.initcfg,K)){$dp.unbind(L.el);E(L.el,F.type=="focus"?"onclick":"onfocus",function(){U(K)});L.el.initcfg=K}I(L)}function J(){if(S&&V!=Y&&V[N].readyState!="complete")return false;return true}function D(){if(G){func=D.caller;while(func!=null){var $=func.arguments[0];if($&&($+"").indexOf("Event")>=0)return $;func=func.caller}return null}return event}}function R(_,$){return _.currentStyle?_.currentStyle[$]:document.defaultView.getComputedStyle(_,false)[$]}function P(_,$){if(_)if($!=null)_.style.display=$;else return R(_,"display")}function I(G,_){var D=G.el?G.el.nodeName:"INPUT";if(_||G.eCont||new RegExp(/input|textarea|div|span|p|a/ig).test(D))G.elProp=D=="INPUT"?"value":"innerHTML";else return;if(G.lang=="auto")G.lang=S?navigator.browserLanguage.toLowerCase():navigator.language.toLowerCase();if(!G.eCont)for(var C in G)$dp[C]=G[C];if(!$dp.dd||G.eCont||($dp.dd&&(G.getRealLang().name!=$dp.dd.lang||G.skin!=$dp.dd.skin))){if(G.eCont)E(G.eCont,G);else{$dp.dd=V[N].createElement("DIV");$dp.dd.style.cssText="position:absolute";V[N].body.appendChild($dp.dd);E($dp.dd,G);if(_)$dp.dd.style.left=$dp.dd.style.top="-970px";else{$dp.show();B($dp)}}}else if($dp.cal){$dp.show();$dp.cal.init();if(!$dp.eCont)B($dp)}function E(K,J){var I=V[N].domain,F=false,G="<iframe hideFocus=true width=9 height=7 frameborder=0 border=0 scrolling=no src=\"about:blank\"></iframe>";K.innerHTML=G;var _=$.$langList,D=$.$skinList,H;try{H=K.lastChild.contentWindow[N]}catch(E){F=true;K.removeChild(K.lastChild);var L=V[N].createElement("iframe");L.hideFocus=true;L.frameBorder=0;L.scrolling="no";L.src="javascript:(function(){var d=document;d.open();d.domain='"+I+"';})()";K.appendChild(L);setTimeout(function(){H=K.lastChild.contentWindow[N];C()},97);return}C();function C(){var _=J.getRealLang();K.lang=_.name;K.skin=J.skin;var $=["<head><script>","","var doc=document, $d, $dp, $cfg=doc.cfg, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;","if($cfg.eCont){$dp = {};for(var p in $pdp)$dp[p]=$pdp[p];}else{$dp=$pdp;};for(var p in $cfg){$dp[p]=$cfg[p];}","doc.oncontextmenu=function(){try{$c._fillQS(!$dp.has.d,1);showB($d.qsDivSel);}catch(e){};return false;};","</script><script src=",A,"lang/",_.name,".js charset=",_.charset,"></script>"];if(F)$[1]="document.domain=\""+I+"\";";for(var C=0;C<D.length;C++)if(D[C].name==J.skin)$.push("<link rel=\"stylesheet\" type=\"text/css\" href=\""+A+"skin/"+D[C].name+"/datepicker.css\" charset=\""+D[C].charset+"\"/>");$.push("<script src=\""+A+"calendar.js\"></script>");$.push("</head><body leftmargin=\"0\" topmargin=\"0\" tabindex=0></body></html>");$.push("<script>var t;t=t||setInterval(function(){if(doc.ready){new My97DP();$cfg.onload();$c.autoSize();$cfg.setPos($dp);clearInterval(t);}},20);</script>");J.setPos=B;J.onload=Z;H.write("<html>");H.cfg=J;H.write($.join(""));H.close()}}function B(J){var H=J.position.left,C=J.position.top,D=J.el;if(D==T)return;if(D!=J.srcEl&&(P(D)=="none"||D.type=="hidden"))D=J.srcEl;var I=W(D),$=F(Y),E=M(V),B=b(V),G=$dp.dd.offsetHeight,A=$dp.dd.offsetWidth;if(isNaN(C))C=0;if(($.topM+I.bottom+G>E.height)&&($.topM+I.top-G>0))C+=B.top+$.topM+I.top-G-2;else{C+=B.top+$.topM+I.bottom;var _=C-B.top+G-E.height;if(_>0)C-=_}if(isNaN(H))H=0;H+=B.left+Math.min($.leftM+I.left,E.width-A-5)-(S?2:0);J.dd.style.top=C+"px";J.dd.style.left=H+"px"}}})()件

使用mydate97实现日期多选

先看下效果图 html代码: js代码 function showDays1(){ $j('#dates-div1 #dates-table1').empty();//将table标签中的内容清空 var dateStr = $j('#scheduleDates1').val();// 获取时间 var dateArr = dateStr.spli

tianma630的专栏 6530

最新 My97 DatePicker Beta4 日期控件

经过多个版本的迭代,已经比较稳定,可直接使用到项目中 [新增]preload预载选项 [新增]时分秒选择菜单的定制功能,详见hmsMenuCfg属性[beta4] [新增]$dp.unbind函数,允许用户手动接触日期控件绑定[beta4] [增强]验证功能可被关闭errDealMode=-1 [增强]增强了对日期格式的容错性[beta4] [修改]调整周算法模式,新增weekMethod属性 [修改]去除My97DatePicker.htm [修改]position改成相对坐标(原来为绝对坐标) [恢复]$dpPath属性,用于解决有base标签极端情况下的问题 [修正]跨域错误提示没有权限的问题 [修正]opposite情况下正则表达式日期限制问题[beta4] [修正]无法动态绑定多个日期格式的问题[beta4] [修正]计算周错误的问题[beta4] [修正]onchange事件被触发2次的问题[beta4] [修正]startDate不能初始化时间的问题[beta4] [修正]两个日期框焦点混淆的问题 [修正]IE中有时会一直显示正在加载的问题 [修正]onchange不能触发的问题 [修正]输入日期后回车自动变为当前日期的问题 [修正]兼容最新Safari,Opera,chrome等浏览器 [修正]空标签时的错误 [修正]平面模式下的几个偶发问题 [修正]双月日历下跨年选择出错的问题 [修正]修正复杂iframe下,弹出位置偏移的问题(很偶发)

如何去除My97 DatePicker控件上右键弹出官网的链接 - 如何debug混淆过的代码

概述   http://my97.net/是一个web浏览器的日期选择控件,非常好用,做得非常棒,各种API等事件等都很方便,但是使用了4.8beta3之后,在控件上面右击会出现官网链接 ,这个是PM以及客户不能容忍的,必须干掉,但是不付费的代码是经过混淆的,现在记录一下第一次调试混淆了源代码的JS的过程。 问题描述   如下图所示:本来此处应该是快速选择日期的提示,但是。。。     ...

weixin_34010949的博客 397

My97时间控件在.net里的应用

My97时间控件在.net里的应用 My97时间控件在.net里的应用

Gartner《构建可扩展数据产品建设框架》心得

数据产品化:从概念到落地的实践指南 当前企业正从传统数据需求模式转向数据产品化新范式。本文系统阐述了数据产品的核心价值、定义分类和实施框架,指出成功关键是将数据包装为可复用、可扩展的产品。Gartner框架强调产品思维,提出4阶段12步实施路径,涵盖设计、工程、发布和监控全流程。文章特别提醒要避免7大常见误区,如简单重命名报表、忽视元数据治理等,建议采取MVP策略,90天内完成从价值验证到产品落地的闭环。实施中需平衡技术选型与业务需求,建立跨职能团队,并通过AARRR模型持续追踪产品价值。

2501_91410404的博客 1006

my97前端日期插件使用示例

my97前端日期插件使用示例首先,将my97日期插件的My97DatePicker文件夹整个放到项目的js文件夹下:编写前端代码,日期输入框的代码如下:&lt;!-- 这里可以用dateFmt写日期格式,比如说yyyy-MM-dd格式 --&gt; &lt;input type=&quot;text&quot; class=&quot;Wdate&quot; name=&quot;datetime&quot; id=&quot;

程序人生 2294

手把手教你用Apple Developer App完成苹果开发者账号注册(含证件验证失败解决方案)

本文详细指导如何通过Apple Developer App完成苹果开发者账号注册,特别针对证件验证失败问题提供解决方案。从准备工作到注册流程,再到验证失败的处理方法,帮助开发者顺利完成注册,避免常见错误。

moss5的博客 1160

JQuery日历插件My97DatePicker日期范围限制

My97DatePicker是一个非常优秀的日历插件,不仅支持多种调用模式,还支持日期范围限制。 常规的调用比较简单,如下所示:    1 input class="Wdate" id="d1" onclick="WdatePicker()" />  下面重点说明日期范围限制: 1)静态限制     你可

kunkun378263的专栏 1024

QMI8658姿态传感器实战:从校准到自检的完整避坑指南

本文详细解析了QMI8658姿态传感器的校准与自检流程,提供了从硬件环境搭建到高级功能开发的完整避坑指南。通过真实案例揭示电源设计、接口优化、温度补偿等关键细节,帮助开发者提升传感器精度和可靠性,适用于工业级应用场景。

weixin_29184075的博客 456

【基于大模型 + FAISS 的本地知识库与智能 PPT 生成系统:从架构到实现】

本文介绍了一个基于大模型(Ollama+DeepSeek)和FAISS向量数据库的本地知识库与智能PPT生成系统。该系统采用前后端分离架构,包含文档管理、向量检索、PPT生成等核心模块,可实现文档智能解析、语义检索和结构化PPT自动生成。通过MVC设计模式,系统实现了从文档上传、向量存储到内容检索、PPT生成的全流程自动化,有效解决了企业知识管理效率低下的问题。架构设计清晰,功能模块完备,为企业和个人提供了高效的文档处理与二次创作解决方案。

聚焦大数据、AI、数据库三大核心领域,分享 Flink/Spark 实时计算、数仓架构设计、AI 模型落地、数据库性能调优的实战干货,附可直接运行的源码与方案。提供企业技术内训、项目咨询与定制化服务,助力开发者与企业高效搞定数智技术难题。 1600

My97插件详解

My97是什么?my97是一个js的日期空间,使用简单, 支持的浏览器有 IE 6.0+, Firefox 2.0+,Chrome, Opera 9.5+, Safari 3.0+下载my97所需要的插件下载地址:http://my97.net/dp/down.asp 示例图:  解压压缩包得到My97插件:把My97插件导入项目引入My97的JS插件引入各式效果图例1、基本格式注意:只写一个on...

Snow、杨 3585

【数据集】基于ubESTARFM法的100m 地温LST数据集(澳大利亚)

【数据集】基于ubESTARFM法的100m 地温LST数据集(澳大利亚)

WW、forever的博客 265

My97日期插件实现日期多选

一、story项目中一个查询页面的日期输入框需要实现多选,日期插件用的是My97,由于原始的My97不支持日期多选,只能选用其他日期插件或对My97进行改造,下面介绍下用js修改My97的属性来实现多选二、js修改My97属性基本思路都在注释中,主要是修改WdatePicker的两个属性onpicked和oncleared;html部分<td class="form_text" width="470

留下的兵 3559

回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证

回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证 目录回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证基本介绍划分原理留一划分交叉验证K折交叉数据下载程序设计参考资料致谢 基本介绍 在机器学习里,通常来说我们不能将全部用于数据训练模型,否则我们将没有数据集对该模型进行验证,从而评估我们的模型的预测效果。为了解决这一问题,有如下常用的方法: 第一种是最简单的,也是很容易就想到的。我们可以把整个数据集分成两部分,一部分用于训练,一部分用于验证,这也就是我们经常提到的训练集

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 6376

SAP-ABAP:SAP数据库视图的创建图文详解

在“短文本”字段中输入视图的描述。在“表/视图”字段中输入要基于的表名。如果视图基于多个表,可以在这里输入主表。点击“表/视图字段”按钮,选择要包含在视图中的字段。如果视图基于多个表,点击“关系”按钮来定义表之间的连接条件。在弹出的窗口中,选择要连接的表,并定义连接条件(例如。

baidu_35680696的博客 974

myDate97时间多选

日期: dp.cal.getDateStr() var array = [];

yingshuaaa的专栏 278

手把手教你完成YOLOv8分类识别界面搭建,使用Qt6设计YOLOv8分类识别系统,前台系统+后台管理系统开发实战,全网最详细教程

本项目基于YOLOv8分类模型,结合PySide6框架开发了一套图形化分类识别系统,支持图片、视频和摄像头实时检测。系统包含以下功能: 分类识别模块:完成图像/视频目标分类,界面展示检测结果。 用户管理模块:支持登录注册、头像修改、密码重置等功能。 AI问答模块:集成DeepSeek大模型接口,实现流式输出对话。 后台管理系统(第二版新增):管理员可管理用户信息及个人中心。 系统采用MySQL数据库存储用户数据,并提供完整的UI界面与交互逻辑。代码已开源,适用于毕业设计或快速部署场景。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 826

mydatepicker97复选日期功能实现

近日在做一个需求,需要日期可以复选,翻了些许资料,发现mydatepicker97并不支持复选,想要支持复选,需要自己重写一些方法,其实实现的原理也很简单,代码很简单,一看便知。以下代码本人以亲自实验,没有问题。欢迎大家批评指正哈!!!!! js代码如下: //日期控制事件 function chooseDate() { var nowDate = $("#billM...

Demon丶冷漠 649

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Html -- 日期控件 my97 和 daterangepicker

日期控件 my97 和 daterangepicker

sky_eyeland的博客 439

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Extjs mydate97时间选择控件的使用

/** * 日期时间控件,可单独显示日期,或日期时间。格式可自己设置。和myDate97设置一样 * @class Ext.form.DateTimeField * @extends Ext.form.TriggerField */ Ext.form.DateTimeField = Ext.extend(Ext.form.TriggerField, { /**

midpzc的博客 620

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

html文本框 调用my97,My97日期控件 功能演示 特色功能 常规功能 My97 Datepicker Demo...

平面显示日期控件支持平面显示功能,只要设置一下eCont属性就可以把它当作日历来使用了,无需触发条件,直接显示在页面上示例2-1 平面显示演示WdatePicker({eCont:'div1',onpicked:function(dp){alert('你选择的日期是:'+dp.cal.getDateStr())}})$dp.cal.getDateStr 用法详见内置函数和属性支持多种容器除了可以将...

weixin_33242795的博客 685

My97日期控件

项目中一直在用My97日期控件,都是直接用了,没有专门研究过,今天专门上网查了下关于My97日期控件的文档,链接地址如下: My97日期控件 一. 简介 1. 简介 目前的版本是:4.8 2. 注意事项 My97DatePicker目录是一个整体,不可破坏里面的目录结构,也不可对里面的文件改名,可以改目录名My97DatePicker.htm是必须文件,不可删除(4.8以后不存在此

Hello World! 1274

My97DatePicker 报错 My97DP is not defined

1.My97DatePicker 引入后无法使用 2.解决方案 &lt;script type="text/javascript"  src="js/My97DatePicker/WdatePicker.js"&gt;&lt;/script&gt; 改为 &lt;script type="text/javascript" src="&lt;%=basePath%&g

BoomLee的博客 5382

动态创建的html加载my97,My97日期控件 功能演示 配置说明 My97 Datepicker Demo

属性类型默认值说明静态属性:只能在WdatePicker.js中配置,一般情况下,不建议您修改静态属性的值$wdatebooltrue是否自动引入Wdate类 设置为true时,可直接在引入WdatePicker.js的页面里使用 class="Wdate"Wdate可在skin目录下的WdatePicker.css文件中定义建议使用默认值$dpPathstring''是否显示指定程序包的绝对位置...

weixin_39552317的博客 331
上一篇: MY97日期选择控件支持日期CTRL多选
下一篇: 基于jenkins的自动化单元测试实践
carroll0911
博客等级 码龄17年 27粉丝 41原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值