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

📄 event-calendar.js

📁 zapatec suite 最新版 20070204,非常棒的ajax widgets 工具包
💻 JS
字号:
// $Id: event-calendar.js 4432 2006-09-14 07:45:55Z shacka $/** * * Copyright (c) 2004-2006 by Zapatec, Inc. * http://www.zapatec.com * 1700 MLK Way, Berkeley, California, * 94709, U.S.A. * All rights reserved. */Zapatec.EventCalendar = function (el, firstDayOfWeek, date, addDiv) {	if (typeof el == "string")		el = document.getElementById(el);	if (typeof addDiv == "string")		addDiv = document.getElementById(addDiv);	if (!el) {		alert("EventCalendar:\n  Can't find parent element for the calendar.");		return false;	}	this.div = el;	this.addInf = addDiv;	div = this.addInf;	while (div.firstChild) {		div.removeChild(div.firstChild);	}	this.cellWidth = 60;	this.cellHeight = 50;	this.events = new Array();	this.loadFromHost = null;	this.firstTime = true;	this.emptyCell = "&nbsp";		evCal = this;	this.dateText = function (date, y, m, d) {		if (evCal.loadFromHost && evCal.date && (d == 1) && !evCal.refresh) {			if ((evCal.firstTime) || (evCal.date.getMonth() != evCal.calendar.date.getMonth()) || (evCal.date.getFullYear() != evCal.calendar.date.getFullYear())) {				evCal.firstTime = false;				evCal.date = evCal.calendar.date;				var url = evCal.loadFromHost + "?month=" + (evCal.date.getMonth() + 1) + "&year=" + evCal.date.getFullYear();				Zapatec.Transport.fetchJsonObj({				    url: url,					reliable : true,				    onLoad: function(result){ 								if (evCal.events[y]) {									evCal.events[y][m - 1] = null;								}								for(var i in result) {									evCal.addEvent(result[i].id, result[i].div1, result[i].div2, result[i].day, evCal.date.getMonth(), evCal.date.getFullYear(), result[i].start_time, true);								}								evCal.refreshView();							},					onError: function(type, error){								alert("Error fetching:" + url + "\nError: " + type.errorDescription);							}				});			}		}		var text = evCal.getEventText(d, m - 1, y);		Zapatec.EventCalendar.triggerEvent = function (ev, el) {			var posX = ev.pageX || ev.clientX + window.document.body.scrollLeft || 0;			var posY = ev.pageY || ev.clientY + window.document.body.scrollTop || 0;			// Get mouse button			var button;			if (ev.button) {				button = ev.button;			}	else {				button = ev.which;			}			while (!el.caldate) {				el = el.parentNode;			}			d = el.caldate[2];			m = el.caldate[1];			y = el.caldate[0];			var event = Zapatec.Utils.getTargetElement(ev), id;			while (!(id = event.id.match(/^zapatec_event_(\d+)$/)) && event != el) {				event = event.parentNode;			}			if (!window.opera) {				if (button > 1) {					setTimeout(function() {evCal.menu.showMenu(posX, posY)}, 100);					if (evCal.menu.updateAnchor.customClick) {Zapatec.Utils.removeEvent(evCal.menu.updateAnchor, "click", evCal.menu.updateAnchor.customClick);}					Zapatec.Utils.addEvent(evCal.menu.updateAnchor, "click", evCal.menu.updateAnchor.customClick = function () {						if (!win.winDiv) {							win.create("center", "center", 615, 452);						}						win.setContentUrl(evCal.dateWizardHost + "newEvent.php?id=" + id[1] + "&no_auth=true&action=update");						win.show();												return false;					});					if (evCal.menu.deleteAnchor.customClick) {Zapatec.Utils.removeEvent(evCal.menu.deleteAnchor, "click", evCal.menu.deleteAnchor.customClick);}					Zapatec.Utils.addEvent(evCal.menu.deleteAnchor, "click", evCal.menu.deleteAnchor.customClick = function () {						var win1 = new Zapatec.ConfirmWindow("Do you realy want to delete this event?", {title : "Delete"});						win1.getResponse(function (res) {							if (res == true) {								Zapatec.Transport.fetch({								    url: evCal.dateWizardHost + "deleteEvent.php?id=" + id[1] + "&no_auth=true&action=delete",									onLoad: function(result) {									},									onError: function(type, error){										alert("Error communicating with the server.");									}								});								evCal.events[y][m][d] = null;								evCal.calendar.reinit();							}						}); 												return false;					});					return Zapatec.Utils.stopEvent(ev);				}			}		};		Zapatec.Utils.addEvent(window.document, 'mouseup',			function(ev) {				setTimeout(function() {evCal.menu.hideMenu()}, 50);				return Zapatec.Utils.stopEvent(ev);			}		);		if (text != "") {			return d + "<div style='width : " + evCal.cellWidth + "px; height : " + evCal.cellHeight + "px; overflow : hidden; text-align : left;'" + (Zapatec.EventCalendar.triggerEvent ? (" onmouseup='if (Zapatec.is_ie) {ev = window.event;} else {ev = event;} Zapatec.EventCalendar.triggerEvent(ev, this);'") : ("")) + ">" + text + "</div>";		}		return d + "<div style='width : " + evCal.cellWidth + "px; height : " + evCal.cellHeight + "px;'>" + evCal.emptyCell + "</div>";	}	this.onSelect = function (cal, date) {		var dateObj = cal.date,		y = dateObj.getFullYear(),		m = dateObj.getMonth(),		d = dateObj.getDate(),		div = evCal.addInf;		while (div.firstChild) {			div.removeChild(div.firstChild);		}		var inf = evCal.getEventAddInf(d, m - 1, y);		if (inf) div.appendChild(inf);		if (evCal.onSelectDate) {			evCal.onSelectDate(dateObj, (inf ? false : true), evCal);		}	}	this.calendar = cal = new Zapatec.Calendar(firstDayOfWeek, date, this.onSelect);	this.calendar.showsOtherMonths = false;	this.calendar.showsTime = false;	this.calendar.time24 = "24";	this.calendar.weekNumbers = true;	this.calendar.sortOrder = "asc";	this.calendar.setRange(1900, 2999);	this.calendar.setDateStatusHandler(null);	this.calendar.getDateText = this.dateText;	this.calendar.create(this.div);	this.date = this.calendar.date;	var ul = document.createElement("ul");	ul.style.display = "none";	var li = Zapatec.Utils.createElement("li", ul);	li.innerHTML = "<a>update</a>";	var updateAnchor = li.firstChild;	li = Zapatec.Utils.createElement("li", ul);	li.innerHTML = "<a>delete</a>";	var deleteAnchor = li.firstChild;	el.appendChild(ul);	Zapatec.Utils.addEvent(window, 'load', function () {evCal.menu.hideMenu();});	this.menu = new Zapatec.Menu(ul, {zIndex : 100, vertical:true});	this.menu.hideMenu();	window.document.oncontextmenu = new Function("return false");	this.menu.updateAnchor = updateAnchor;	this.menu.deleteAnchor = deleteAnchor;};Zapatec.EventCalendar.triggerEvent = null;Zapatec.EventCalendar.prototype.addEvent = function (id, div1, div2, d, m, y, startTime, dontReinit) {	evCal = this;	y = parseInt(y); m = parseInt(m); d = parseInt(d); 	if (isNaN(y) || isNaN(m) || isNaN(d)) {		return false;	}	--m;	if (!evCal.events[y]) {		evCal.events[y] = new Array();	}	if (!evCal.events[y][m]) {		evCal.events[y][m] = new Array();	}	if (!evCal.events[y][m][d]) {		evCal.events[y][m][d] = [];		evCal.events[y][m][d][startTime] = {"id" : id, "div1" : String(div1), "div2" : String(div2)};	} else {		var unique = true;		var next = null;		for (var i in evCal.events[y][m][d]) {			if (i == startTime) {				evCal.events[y][m][d][i].id = id;				evCal.events[y][m][d][i].div1 = div1;				evCal.events[y][m][d][i].div2 = div2;				unique = false;			}			if (next == null && i > startTime) {				next = i;			}		}		if (unique) {			evCal.events[y][m][d] = Zapatec.Utils.Array.insertBefore(evCal.events[y][m][d], {"id" : id, "div1" : String(div1), "div2" : String(div2)}, startTime, next);		}	}	if (!dontReinit) evCal.refreshView();};Zapatec.EventCalendar.prototype.show = function () {	this.calendar.reinit();	this.calendar.show();};Zapatec.EventCalendar.prototype.refreshView = function () {	this.refresh = true;	this.calendar.reinit();	this.refresh = false;};Zapatec.EventCalendar.prototype.getEventText = function(d, m, y) {	var text = "";	var event = null;	if (event = this.eventExists(d, m, y)) {		for (var i in event) {			text += "<div id='zapatec_event_" + event[i].id + "'>" + i + "<br>" + event[i].div1 + "</div>";		}	}		return text;}Zapatec.EventCalendar.prototype.getEventAddInf = function (d, m, y) {	var div = null;	var event = null;	if (event = this.eventExists(d, m, y)) {		div = document.createElement("div");		for (var i in event) {			div.innerHTML += "<div>" + event[i].div2 + "</div>";		}	}	return div;}Zapatec.EventCalendar.prototype.eventExists = function (d, m, y) {	if (yy = evCal.events["each"]) {		if (mm = yy["each"]) {			if (dd = mm["each"]) {				return dd;			}			if (dd = mm[d]) {				return dd;			}		}		if (mm = yy[m]) {			if (dd = mm["each"]) {				return dd;			}			if (dd = mm[d]) {				return dd;			}		}	}	if (yy = evCal.events[y]) {		if (mm = yy["each"]) {			if (dd = mm["each"]) {				return dd;			}			if (dd = mm[d]) {				return dd;			}		}		if (mm = yy[m]) {			if (dd = mm["each"]) {				return dd;			}			if (dd = mm[d]) {				return dd;			}		}	}		return null;}

⌨️ 快捷键说明

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