var kCalendar = { currPopupElem : null, currRefElem : null, needsKilled : false, timerHandle : -1, //---------------------------------- generateCalendar : function (eventList, monthOffset, showDayRow) { var date = new Date(); var day = date.getDate(); var month = date.getMonth() + ((monthOffset)? monthOffset:0); var year = date.getFullYear(); var months = ['january','february','march','april','may','june', 'july','august','september','october','november','december']; var days = ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"]; var currMonth = new Date(year, month, 1); var nextMonth = new Date(year, (month%12)+1, 1); var monthsEventList = eventList[month+1]; if (!monthsEventList) monthsEventList = {}; var firstDayOfWeek = currMonth.getDay(); var daysInCurrMonth = Math.round((nextMonth.getTime() - currMonth.getTime()) / (1000 * 60 * 60 * 24)); var el = aardvarkTools.createElement; var tbody, cal, tr, td; var cal = el("table", {cellSpacing:"0", cellPadding:"0", className:"calendar"}, el("caption", null, /*el("a", {className:"nav", title:"previous month", href:"#"}, "<<" ), */ " " + months[month] + " " /*, el("a", {className:"nav", title:"next month", href:"#"}, ">>" ) */ ) ); cal.appendChild (tbody = el("tbody")); //if (showDayRow) { tbody.appendChild (tr = el("tr")); for (var i=0; i0) s += "
" s += "" + eventObj.title + "
when: " + dayEventList.dateString; if (eventObj.time) s += ", " + eventObj.time; if (eventObj.location) s += "
where: " + eventObj.location; if (eventObj.deets) s += "
details: " + eventObj.deets; if (eventObj.url) s += "
more info at: " + eventObj.url + "
(click date to go to web site)
"; if (eventObj.map) s += "
(click date for map)
"; } elem.innerHTML = s; var k = Karmatics; var dims = k.getWindowDimensions(); k.moveElem(elem, 1, dims.scrollY+1); elem.style.display = ""; var pos = k.getPos (refElem); var refWidth = refElem.width; if (refElem.tagName == "TD") { var table = refElem; while (table && table.tagName != "TABLE") table = table.parentNode; var pos2 = k.getPos(table); pos.x = pos2.x; refWidth = table.offsetWidth; isTD = true; } var yPos = pos.y + (refElem.offsetHeight/2) - (elem.offsetHeight/2); var xPos = pos.x + refWidth; var bottom = dims.scrollY + dims.height; if(xPos < 0) xPos = 0; k.moveElem(elem, xPos, yPos); elem.style.visibility = "visible"; kCalendar.currPopupElem = elem; }, //-------------------------------------------------------------- killPopup : function (refElem) { // refElem not used? kCalendar.timerHandle = -1; if (kCalendar.needsKilled && kCalendar.currPopupElem) { kCalendar.currRefElem.style.backgroundColor = ""; kCalendar.currPopupElem.parentNode.removeChild (kCalendar.currPopupElem); kCalendar.currPopupElem = null; kCalendar.currRefElem = null; kCalendar.needsKilled = false; } }, //-------------------------------------------------------------- mouseOver : function(dayEvent, refElem) { if (kCalendar.timerHandle != -1) { aardvarkTools.cancelTimerFunction (kCalendar.timerHandle); kCalendar.timerHandle = -1; } if (refElem == kCalendar.currRefElem) { kCalendar.needsKilled = false; return; } kCalendar.needsKilled = true; kCalendar.killPopup (refElem); kCalendar.showPopup (dayEvent, refElem); }, //-------------------------------------------------------------- mouseOut : function() { kCalendar.needsKilled = true; kCalendar.timerHandle = aardvarkTools.setTimerFunction (10, kCalendar.killPopup, kCalendar.currRefElem); }, //-------------------------------------------------------------- click : function(dayEventList) { for (var i=0; i