⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calendar.js

📁 联合国农粮署牵头开发的geonetwork源代码最新版
💻 JS
📖 第 1 页 / 共 4 页
字号:
			}		} else if (cal.hilitedYear) {			Calendar.removeClass(cal.hilitedYear, "hilite");		}	}	return Calendar.stopEvent(ev);};Calendar.tableMouseDown = function (ev) {	if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) {		return Calendar.stopEvent(ev);	}};Calendar.calDragIt = function (ev) {	var cal = Calendar._C;	if (!(cal && cal.dragging)) {		return false;	}	var posX;	var posY;	if (Calendar.is_ie) {		posY = window.event.clientY + document.body.scrollTop;		posX = window.event.clientX + document.body.scrollLeft;	} else {		posX = ev.pageX;		posY = ev.pageY;	}	cal.hideShowCovered();	var st = cal.element.style;	st.left = (posX - cal.xOffs) + "px";	st.top = (posY - cal.yOffs) + "px";	return Calendar.stopEvent(ev);};Calendar.calDragEnd = function (ev) {	var cal = Calendar._C;	if (!cal) {		return false;	}	cal.dragging = false;	with (Calendar) {		removeEvent(document, "mousemove", calDragIt);		removeEvent(document, "mouseup", calDragEnd);		tableMouseUp(ev);	}	cal.hideShowCovered();};Calendar.dayMouseDown = function(ev) {	var el = Calendar.getElement(ev);	if (el.disabled) {		return false;	}	var cal = el.calendar;	cal.activeDiv = el;	Calendar._C = cal;	if (el.navtype != 300) with (Calendar) {		if (el.navtype == 50) {			el._current = el.innerHTML;			addEvent(document, "mousemove", tableMouseOver);		} else			addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver);		addClass(el, "hilite active");		addEvent(document, "mouseup", tableMouseUp);	} else if (cal.isPopup) {		cal._dragStart(ev);	}	if (el.navtype == -1 || el.navtype == 1) {		if (cal.timeout) clearTimeout(cal.timeout);		cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250);	} else if (el.navtype == -2 || el.navtype == 2) {		if (cal.timeout) clearTimeout(cal.timeout);		cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250);	} else {		cal.timeout = null;	}	return Calendar.stopEvent(ev);};Calendar.dayMouseDblClick = function(ev) {	Calendar.cellClick(Calendar.getElement(ev), ev || window.event);	if (Calendar.is_ie) {		document.selection.empty();	}};Calendar.dayMouseOver = function(ev) {	var el = Calendar.getElement(ev);	if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) {		return false;	}	if (el.ttip) {		if (el.ttip.substr(0, 1) == "_") {			el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1);		}		el.calendar.tooltips.innerHTML = el.ttip;	}	if (el.navtype != 300) {		Calendar.addClass(el, "hilite");		if (el.caldate) {			Calendar.addClass(el.parentNode, "rowhilite");		}	}	return Calendar.stopEvent(ev);};Calendar.dayMouseOut = function(ev) {	with (Calendar) {		var el = getElement(ev);		if (isRelated(el, ev) || _C || el.disabled)			return false;		removeClass(el, "hilite");		if (el.caldate)			removeClass(el.parentNode, "rowhilite");		if (el.calendar)			el.calendar.tooltips.innerHTML = _TT["SEL_DATE"];		return stopEvent(ev);	}};/** *  A generic "click" handler :) handles all types of buttons defined in this *  calendar. */Calendar.cellClick = function(el, ev) {	var cal = el.calendar;	var closing = false;	var newdate = false;	var date = null;	if (typeof el.navtype == "undefined") {		if (cal.currentDateEl) {			Calendar.removeClass(cal.currentDateEl, "selected");			Calendar.addClass(el, "selected");			closing = (cal.currentDateEl == el);			if (!closing) {				cal.currentDateEl = el;			}		}		cal.date.setDateOnly(el.caldate);		date = cal.date;		var other_month = !(cal.dateClicked = !el.otherMonth);		if (!other_month && !cal.currentDateEl)			cal._toggleMultipleDate(new Date(date));		else			newdate = !el.disabled;		// a date was clicked		if (other_month)			cal._init(cal.firstDayOfWeek, date);	} else {		if (el.navtype == 200) {			Calendar.removeClass(el, "hilite");			cal.callCloseHandler();			return;		}		date = new Date(cal.date);		if (el.navtype == 0)			date.setDateOnly(new Date()); // TODAY		// unless "today" was clicked, we assume no date was clicked so		// the selected handler will know not to close the calenar when		// in single-click mode.		// cal.dateClicked = (el.navtype == 0);		cal.dateClicked = false;		var year = date.getFullYear();		var mon = date.getMonth();		function setMonth(m) {			var day = date.getDate();			var max = date.getMonthDays(m);			if (day > max) {				date.setDate(max);			}			date.setMonth(m);		};		switch (el.navtype) {		    case 400:			Calendar.removeClass(el, "hilite");			var text = Calendar._TT["ABOUT"];			if (typeof text != "undefined") {				text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : "";			} else {				// FIXME: this should be removed as soon as lang files get updated!				text = "Help and about box text is not translated into this language.\n" +					"If you know this language and you feel generous please update\n" +					"the corresponding file in \"lang\" subdir to match calendar-en.js\n" +					"and send it back to <mihai_bazon@yahoo.com> to get it into the distribution  ;-)\n\n" +					"Thank you!\n" +					"http://dynarch.com/mishoo/calendar.epl\n";			}			alert(text);			return;		    case -2:			if (year > cal.minYear) {				date.setFullYear(year - 1);			}			break;		    case -1:			if (mon > 0) {				setMonth(mon - 1);			} else if (year-- > cal.minYear) {				date.setFullYear(year);				setMonth(11);			}			break;		    case 1:			if (mon < 11) {				setMonth(mon + 1);			} else if (year < cal.maxYear) {				date.setFullYear(year + 1);				setMonth(0);			}			break;		    case 2:			if (year < cal.maxYear) {				date.setFullYear(year + 1);			}			break;		    case 100:			cal.setFirstDayOfWeek(el.fdow);			return;		    case 50:			var range = el._range;			var current = el.innerHTML;			for (var i = range.length; --i >= 0;)				if (range[i] == current)					break;			if (ev && ev.shiftKey) {				if (--i < 0)					i = range.length - 1;			} else if ( ++i >= range.length )				i = 0;			var newval = range[i];			el.innerHTML = newval;			cal.onUpdateTime();			return;		    case 0:			// TODAY will bring us here			if ((typeof cal.getDateStatus == "function") &&			    cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) {				return false;			}			break;		}		if (!date.equalsTo(cal.date)) {			cal.setDate(date);			newdate = true;		} else if (el.navtype == 0)			newdate = closing = true;	}	if (newdate) {		ev && cal.callHandler();	}	if (closing) {		Calendar.removeClass(el, "hilite");		ev && cal.callCloseHandler();	}};// END: CALENDAR STATIC FUNCTIONS// BEGIN: CALENDAR OBJECT FUNCTIONS/** *  This function creates the calendar inside the given parent.  If _par is *  null than it creates a popup calendar inside the BODY element.  If _par is *  an element, be it BODY, then it creates a non-popup calendar (still *  hidden).  Some properties need to be set before calling this function. */Calendar.prototype.create = function (_par) {	var parent = null;	if (! _par) {		// default parent is the document body, in which case we create		// a popup calendar.		parent = document.getElementsByTagName("body")[0];		this.isPopup = true;	} else {		parent = _par;		this.isPopup = false;	}	this.date = this.dateStr ? new Date(this.dateStr) : new Date();	var table = Calendar.createElement("table");	this.table = table;	table.cellSpacing = 0;	table.cellPadding = 0;	table.calendar = this;	Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown);	var div = Calendar.createElement("div");	this.element = div;	div.className = "calendar";	if (this.isPopup) {		div.style.position = "absolute";		div.style.display = "none";	}	div.appendChild(table);	var thead = Calendar.createElement("thead", table);	var cell = null;	var row = null;	var cal = this;	var hh = function (text, cs, navtype) {		cell = Calendar.createElement("td", row);		cell.colSpan = cs;		cell.className = "button";		if (navtype != 0 && Math.abs(navtype) <= 2)			cell.className += " nav";		Calendar._add_evs(cell);		cell.calendar = cal;		cell.navtype = navtype;		cell.innerHTML = "<div unselectable='on'>" + text + "</div>";		return cell;	};	row = Calendar.createElement("tr", thead);	var title_length = 6;	(this.isPopup) && --title_length;	(this.weekNumbers) && ++title_length;	hh("?", 1, 400).ttip = Calendar._TT["INFO"];	this.title = hh("", title_length, 300);	this.title.className = "title";	if (this.isPopup) {		this.title.ttip = Calendar._TT["DRAG_TO_MOVE"];		this.title.style.cursor = "move";		hh("&#x00d7;", 1, 200).ttip = Calendar._TT["CLOSE"];	}	row = Calendar.createElement("tr", thead);	row.className = "headrow";	this._nav_py = hh("&#x00ab;", 1, -2);	this._nav_py.ttip = Calendar._TT["PREV_YEAR"];	this._nav_pm = hh("&#x2039;", 1, -1);	this._nav_pm.ttip = Calendar._TT["PREV_MONTH"];	this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0);	this._nav_now.ttip = Calendar._TT["GO_TODAY"];	this._nav_nm = hh("&#x203a;", 1, 1);	this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"];	this._nav_ny = hh("&#x00bb;", 1, 2);	this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"];	// day names	row = Calendar.createElement("tr", thead);	row.className = "daynames";	if (this.weekNumbers) {		cell = Calendar.createElement("td", row);		cell.className = "name wn";		cell.innerHTML = Calendar._TT["WK"];	}	for (var i = 7; i > 0; --i) {		cell = Calendar.createElement("td", row);		if (!i) {			cell.navtype = 100;			cell.calendar = this;			Calendar._add_evs(cell);		}	}	this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild;	this._displayWeekdays();	var tbody = Calendar.createElement("tbody", table);	this.tbody = tbody;	for (i = 6; i > 0; --i) {		row = Calendar.createElement("tr", tbody);		if (this.weekNumbers) {			cell = Calendar.createElement("td", row);		}		for (var j = 7; j > 0; --j) {			cell = Calendar.createElement("td", row);			cell.calendar = this;			Calendar._add_evs(cell);		}	}	if (this.showsTime) {		row = Calendar.createElement("tr", tbody);		row.className = "time";		cell = Calendar.createElement("td", row);		cell.className = "time";		cell.colSpan = 2;		cell.innerHTML = Calendar._TT["TIME"] || "&nbsp;";		cell = Calendar.createElement("td", row);		cell.className = "time";		cell.colSpan = this.weekNumbers ? 4 : 3;		(function(){			function makeTimePart(className, init, range_start, range_end) {				var part = Calendar.createElement("span", cell);				part.className = className;				part.innerHTML = init;				part.calendar = cal;				part.ttip = Calendar._TT["TIME_PART"];				part.navtype = 50;				part._range = [];				if (typeof range_start != "number")					part._range = range_start;				else {					for (var i = range_start; i <= range_end; ++i) {						var txt;						if (i < 10 && range_end >= 10) txt = '0' + i;						else txt = '' + i;						part._range[part._range.length] = txt;					}				}				Calendar._add_evs(part);				return part;			};			var hrs = cal.date.getHours();			var mins = cal.date.getMinutes();			var t12 = !cal.time24;			var pm = (hrs > 12);			if (t12 && pm) hrs -= 12;			var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23);			var span = Calendar.createElement("span", cell);			span.innerHTML = ":";			span.className = "colon";			var M = makeTimePart("minute", mins, 0, 59);			var AP = null;			cell = Calendar.createElement("td", row);			cell.className = "time";			cell.colSpan = 2;			if (t12)				AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]);			else				cell.innerHTML = "&nbsp;";			cal.onSetTime = function() {				var pm, hrs = this.date.getHours(),					mins = this.date.getMinutes();				if (t12) {					pm = (hrs >= 12);					if (pm) hrs -= 12;					if (hrs == 0) hrs = 12;					AP.innerHTML = pm ? "pm" : "am";				}				H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs;				M.innerHTML = (mins < 10) ? ("0" + mins) : mins;			};			cal.onUpdateTime = function() {				var date = this.date;				var h = parseInt(H.innerHTML, 10);				if (t12) {					if (/pm/i.test(AP.innerHTML) && h < 12)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -