/*
 * My97 DatePicker 4.2 SITE: http://dp.my97.net BLOG: http://my97.cnblogs.com
 * MAIL: smallcarrot@163.com
 */
var $dp, WdatePicker;
(function() {
	var $ = {

		$wdate : true,
		$crossFrame : false,
		$dpPath : "",
		position : {},
		lang : "auto",
		skin : "default",
		dateFmt : "MM/dd/yyyy",
		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,
		isShowWeek : false,
		highLineWeekDay : true,
		isShowClear : true,
		isShowToday : true,
		isShowOthers : true,
		readOnly : true,
		errDealMode : 0,
		autoPickDate : null,
		qsEnabled : true,

		disabledDates : null,
		disabledDays : null,
		opposite : false,
		onpicking : null,
		onpicked : null,
		onclearing : null,
		oncleared : null,
		eCont : null,
		vel : null,
		errMsg : "",
		quickSel : [],
		has : {}
	};
	WdatePicker = S;
	var V = window, N = "document", H = "documentElement", A = "getElementsByTagName", T, _, R, G, Z;
	switch (navigator.appName) {
		case "Microsoft Internet Explorer" :
			R = true;
			break;
		case "Opera" :
			Z = true;
			break;
		default :
			G = true;
			break
	}
	T = V;
	if ($.$crossFrame) {
		try {
			while (T.parent[N] != T[N]
					&& T.parent[N][A]("frameset").length == 0)
				T = T.parent
		} catch (P) {
		}
	}
	_ = J();
	if ($.$wdate)
		K(_ + "skin/WdatePicker.css");
	var L;
	if (T.$dp) {
		try {
			L = (T.$dp.$("MY") == "lIkEmY97")
		} catch (P) {
			L = P.number == -2146823277 ? true : false
		}
	}
	if (!T.$dp || L) {
		$dp = Q({
			ff : G,
			ie : R,
			opera : Z,
			el : null,
			win : V,
			status : L ? 2 : 0,
			defMinDate : $.minDate,
			defMaxDate : $.maxDate,
			$ : function(_) {
				try {
					this.win[N]
				} catch ($) {
					return "lIkEmY97"
				}
				return (typeof _ == "string")
						? this.win[N].getElementById(_)
						: _
			},
			$D : function($, _) {
				return this.$DV(this.$($).value, _)
			},
			$DV : function(_, $) {
				if (_ != "") {
					this.dt = $dp.cal.splitDate(_, $dp.cal.dateFmt);
					if ($)
						for (var A in $) {
							if (this.dt[A] === undefined)
								this.errMsg = "invalid property:" + A;
							this.dt[A] += $[A]
						}
					if (this.dt.refresh())
						return this.dt
				}
				return ""
			},
			show : function() {
				if (this.dd)
					this.dd.style.display = "block"
			},
			hide : function() {
				if (this.dd)
					this.dd.style.display = "none"
			},
			attachEvent : C
		});
		if (!L)
			X(T, function() {
				S(null, true)
			})
	} else
		$dp = T.$dp;
	if (!V[N].docMD) {
		C(V[N], "onmousedown", B);
		V[N].docMD = true
	}
	if (!T[N].docMD) {
		C(T[N], "onmousedown", B);
		T[N].docMD = true
	}
	C(V, "onunload", function() {
		$dp.hide()
	});
	function Q(_) {
		T.$dp = T.$dp || {};
		for (var $ in _)
			T.$dp[$] = _[$];
		return T.$dp
	}
	function C(A, $, _) {
		if (R)
			A.attachEvent($, _);
		else {
			var B = $.replace(/on/, "");
			_._ieEmuEventHandler = function($) {
				return _($)
			};
			A.addEventListener(B, _._ieEmuEventHandler, false)
		}
	}
	function J() {
		var _, A, $ = document.getElementsByTagName("script");
		for (var B = 0; B < $.length; B++) {
			_ = $[B].src.substring(0, $[B].src.toLowerCase()
					.indexOf("wdatepicker.js"));
			A = _.lastIndexOf("/");
			if (A > 0)
				_ = _.substring(0, A + 1);
			if (_)
				break
		}
		return _
	}
	function D(F) {
		var E, C;
		if (F.substring(0, 1) != "/" && F.indexOf("://") == -1) {
			E = T.location.href;
			C = location.href;
			if (E.indexOf("?") > -1)
				E = E.substring(0, E.indexOf("?"));
			if (C.indexOf("?") > -1)
				C = C.substring(0, C.indexOf("?"));
			var _ = "", D = "", A = "", H, G, B = "";
			for (H = 0; H < Math.max(E.length, C.length); H++)
				if (E.charAt(H).toLowerCase() != C.charAt(H).toLowerCase()) {
					G = H;
					while (E.charAt(G) != "/") {
						if (G == 0)
							break;
						G -= 1
					}
					_ = E.substring(G + 1, E.length);
					_ = _.substring(0, _.lastIndexOf("/"));
					D = C.substring(G + 1, C.length);
					D = D.substring(0, D.lastIndexOf("/"));
					break
				}
			if (_ != "")
				for (H = 0; H < _.split("/").length; H++)
					B += "../";
			if (D != "")
				B += D + "/";
			F = B + F
		}
		$.$dpPath = F
	}
	function K(C, $, D) {
		var B = V[N], E = B[A]("HEAD").item(0), _ = B.createElement("link");
		_.href = C;
		_.rel = "stylesheet";
		_.type = "text/css";
		if ($)
			_.title = $;
		if (D)
			_.charset = D;
		E.appendChild(_)
	}
	function X($, _) {
		C($, "onload", _)
	}
	function E($) {
		$ = $ || T;
		var B = 0, _ = 0;
		while ($ != T) {
			var D = $.parent[N][A]("iframe");
			for (var F = 0; F < D.length; F++) {
				try {
					if (D[F].contentWindow == $) {
						var E = U(D[F]);
						B += E.left;
						_ += E.top;
						break
					}
				} catch (C) {
				}
			}
			$ = $.parent
		}
		return {
			"leftM" : B,
			"topM" : _
		}
	}
	function U(E) {
		if (R)
			return E.getBoundingClientRect();
		else {
			var A = {
				ROOT_TAG : /^body|html$/i,
				OP_SCROLL : /^(?:inline|table-row)$/i
			}, G = null, _ = E.offsetTop, F = E.offsetLeft, D = E.offsetWidth, B = E.offsetHeight, C = E.offsetParent;
			if (C != E)
				while (C) {
					F += C.offsetLeft;
					_ += C.offsetTop;
					if (C.tagName.toLowerCase() == "body")
						G = C.ownerDocument.defaultView;
					C = C.offsetParent
				}
			C = E.parentNode;
			while (C.tagName && !A.ROOT_TAG.test(C.tagName)) {
				if (C.scrollTop || C.scrollLeft)
					if (!A.OP_SCROLL.test(C.style.display))
						if (!Z || C.style.overflow !== "visible") {
							F -= C.scrollLeft;
							_ -= C.scrollTop
						}
				C = C.parentNode
			}
			var $ = Y(G);
			F -= $.left;
			_ -= $.top;
			D += F;
			B += _;
			return {
				"left" : F,
				"top" : _,
				"right" : D,
				"bottom" : B
			}
		}
	}
	function M($) {
		$ = $ || T;
		var _ = $[N];
		_ = _[H] && _[H].clientHeight
				&& _[H].clientHeight <= _.body.clientHeight ? _[H] : _.body;
		return {
			"width" : _.clientWidth,
			"height" : _.clientHeight
		}
	}
	function Y($) {
		$ = $ || T;
		var B = $[N], A = B[H], _ = B.body;
		B = (A && A.scrollTop != null && (A.scrollTop > _.scrollLeft || A.scrollLeft > _.scrollLeft))
				? A
				: _;
		return {
			"top" : B.scrollTop,
			"left" : B.scrollLeft
		}
	}
	function B(_) {
		src = _ ? (_.srcElement || _.target) : null;
		if ($dp && $dp.dd && $dp.dd.style.display == "block" && src != $dp.el) {
			var A = $dp.el, B = $dp.cal, $ = $dp.el[$dp.elProp];
			if ($ != null) {
				$dp.$w.hideSel();
				if ($ != "" && !$dp.readOnly)
					B.date.loadFromDate(B.splitDate($, B.dateFmt));
				if ($ == ""
						|| (B.isDate(B.date) && B.isTime(B.date) && B
								.checkValid(B.date))) {
					B.mark(true);
					if ($ != "")
						B.update();
					else
						B.setRealValue("");
					$dp.hide()
				} else
					B.mark(false)
			} else
				$dp.hide()
		}
	}
	var O = [];
	function W() {
		$dp.status = 2;
		F()
	}
	function F() {
		if (O.length > 0) {
			var $ = O.shift();
			$.el = {
				innerHTML : ""
			};
			$.eCont = $dp.$($.eCont);
			$.autoPickDate = true;
			$.qsEnabled = false;
			I($)
		}
	}
	function S(C, $) {
		$dp.win = V;
		C = C || {};
		if ($) {
			$dp.status = 1;
			I({
				el : {
					innerHTML : ""
				}
			}, true)
		} else if (C.eCont) {
			O.push(C);
			if ($dp.status == 2)
				F()
		} else {
			if ($dp.status == 0)
				$dp.status = 1;
			if ($dp.status != 2)
				return;
			var B, A = _();
			if (A) {
				B = A.srcElement || A.target;
				A.cancelBubble = true
			}
			C.el = $dp.$(C.el || B);
			if (!C.el
					|| C.el
					&& C.el.disabled
					|| (C.el == $dp.el && $dp.dd.style.display != "none" && $dp.dd.style.left != "-1970px"))
				return;
			I(C)
		}
		function _() {
			if (G) {
				func = _.caller;
				while (func != null) {
					var $ = func.arguments[0];
					if ($ && ($ + "").indexOf("Event") >= 0)
						return $;
					func = func.caller
				}
				return null
			}
			return event
		}
	}
	function I(G, A) {
		for (var F in $)
			if (F.substring(0, 1) != "$")
				$dp[F] = $[F];
		for (F in G)
			if ($dp[F] === undefined)
				$dp.errMsg = "invalid property:" + F;
			else
				$dp[F] = G[F];
		$dp.elProp = $dp.el && $dp.el.nodeName == "INPUT"
				? "value"
				: "innerHTML";
		if ($dp.el[$dp.elProp] == null)
			return;
		if ($dp.lang == "auto")
			$dp.lang = R
					? navigator.browserLanguage.toLowerCase()
					: navigator.language.toLowerCase();
		if (!$dp.dd || $dp.eCont
				|| ($dp.lang && $dp.realLang && $dp.realLang.name != $dp.lang)) {
			if ($dp.dd && !$dp.eCont)
				T[N].body.removeChild($dp.dd);
			if ($.$dpPath == "")
				D(_);
			var B = "<iframe src=\""
					+ $.$dpPath
					+ "My97DatePicker.htm\" frameborder=\"0\" border=\"0\" scrolling=\"no\"></iframe>";
			if ($dp.eCont) {
				$dp.eCont.innerHTML = B;
				X($dp.eCont.childNodes[0], W)
			} else {
				$dp.dd = T[N].createElement("DIV");
				$dp.dd.style.cssText = "position:absolute;z-index:19700";
				$dp.dd.innerHTML = B;
				T[N].body.appendChild($dp.dd);
				X($dp.dd.childNodes[0], W);
				if (A)
					$dp.dd.style.left = $dp.dd.style.top = "-1970px";
				else {
					$dp.show();
					C()
				}
			}
		} else if ($dp.cal) {
			$dp.show();
			$dp.cal.init();
			C()
		}
		function C() {
			var F = $dp.position.left, B = $dp.position.top, G = U($dp.el), $ = E(V), C = M(T), A = Y(T), D = $dp.dd.offsetHeight, _ = $dp.dd.offsetWidth;
			if (isNaN(B)) {
				if (B == "above"
						|| (B != "under" && (($.topM + G.bottom + D > C.height) && ($.topM
								+ G.top - D > 0))))
					B = A.top + $.topM + G.top - D - 3;
				else
					B = A.top + $.topM + G.bottom;
				B += R ? -1 : 1
			} else
				B += A.top + $.topM;
			if (isNaN(F))
				F = A.left + Math.min($.leftM + G.left, C.width - _ - 5)
						- (R ? 2 : 0);
			else
				F += A.left + $.leftM;
			$dp.dd.style.top = B + "px";
			$dp.dd.style.left = F + "px"
		}
	}
})()
