<!--
/******************************************************************************************************************/
// "within-page" navigation; one DIV (of id "objid") is displayed while making previous book invisible.
var objDiv = null;										// old (or previous) book
function doShow(objid) {
	if (objDiv) objDiv.style.display="none";	// blank any book that is displayed
	objDiv=getObject(objid);							// get referenced object
	objDiv.style.display = "block";					// display it
}

// returns the "name" Object
function getObject(name) {
	return (document.getElementById?document.getElementById(name):document.all?document.all[name]:document.layers?eval("document.layers[\"" + name + "\"]"):null);
}

// doCopy places the copyright on the page
function doCopy(full) {
	var msg='<div class="copy">Copyright &copy; <a href="mailto:joelw@uottawa.ca">Joel Westheimer</a> 2007-2011';
	if (full) msg+= ';  web by <a href="mailto:adrian@woodsgood.ca">adrian jones</a>, <a target="_blank" href="http://woodsgood.ca">woodsgood.ca</a>';
	msg+='</div>';
	document.write(msg);
}

var timer;
function scrolltop() {
	var tt=getObject("toTop");
	tt.style.top=document.body.scrollTop;
	timer=setTimeout("scrolltop()",1000);
}
function stoptimer() {clearTimeout(timer);}

////////////////////////////// Event Routines ///////////////////////////////////////

// Calendar and events global variables
mText = new Array('','January','February','March','April','May','June','July','August','September','October','November','December');
var d=document;


function doToday() {
	var date = new Date();
	var dy = date.getDate();if(day<10) dy="0"+dy
	var mn = date.getMonth()+1;if(mn<10) mn="0"+mn
	var yr = ""+date.getFullYear()+"";yr=yr.substr(2,3);
	var today=""+yr+""+mn+""+dy+"";								// build today's date as "yymmdd" format
	doShowEvent(today);												// show any events that occur today
}

/* 		doShowEvent(dInfo) displays ALL events that match the given year, month and day
			(dInfo) is in "yymmdd" format
*/
function doShowEvent(dInfo) {
	var yr = parseInt(dInfo.substr(0,2),10);				// year
	var mn = parseInt(dInfo.substr(2,2),10);				// month
	var dy = parseInt(dInfo.substr(4,2),10);				// day
	var ne = ev.length;											// total number of events
	var evHTML="";var found=false;							// reset unique date write flag
	for (i=0;i<ne;i++) {
		var eI = ev[i][evDateNum]; 			  				// date information of event
		var ey = parseInt(eI.substr(0,2),10);				// year
		var em = parseInt(eI.substr(2,2),10);				// month
		var ed = parseInt(eI.substr(4,2),10);				// day
		if (ey == yr && em == mn && ed == dy) {
			if(!found) {											// write out date of event
				var day=dayofweek(ed,em,(2000+ey));			// day of week then date
				evHTML += '<div class="calEventDate">'+day+', '+ed+' '+mText[em]+', '+(2000+ey)+'</div>';
				found=true;											// set flag... maybe more than one event this day
			}															// write out each unique event
			evHTML += '<div class="calEventHead">'+ev[i][evTimeTxt]+':&nbsp;&nbsp;'+ev[i][evNameTxt]+'</div>';
			if (ev[i][evVenueTxt]!="") {						// only if there is some
				evHTML += '<div class="calEventText">'
				if (ev[i][evLinkTxt]!="") {					// only if there is a link
					evHTML += '<a target="_blank" href="'+ev[i][evLinkTxt]+'"><img src="images/arrow2.gif" ';
					evHTML += 'alt="arrow" class="catEventImg"></a>&nbsp;';
				}
				evHTML += ev[i][evVenueTxt]+'.</div>';
			}
		}
	}
//	alert(evHTML)
   evBox = getObject("eventBox");
   evBox.innerHTML = (evHTML);
}

/* 			Write out complete month's list of events
				Format is (y,m) where y=200x and m = 1-12
*/
function doShowEvents(y,m) {
	var evHTML="";
	var yr = parseInt(y,10)-2000;									// year
	var mn = parseInt(m,10);										// month
	for (dy=1;dy<32;dy++) {											// cycle through days
		var found=false;												// reset unique date write flag
		for (i=0;i<ev.length;i++) {								// cycle through all events
 			var eI = ev[i][evDateNum]; 							// date information of event
			var ey = parseInt(eI.substr(0,2),10);				// year
  			var em = parseInt(eI.substr(2,2),10);				// month
			var ed = parseInt(eI.substr(4,2),10);				// month
			if (ey == yr && em == mn && ed == dy) {			// if match...
				if(!found) {											// write out date of event
					var day=dayofweek(ed,em,(2000+ey));			// day of week then date
					evHTML += '<div class="calEventDate">'+day+', '+ed+' '+mText[em]+', '+(2000+ey)+'</div>';
					found=true;											// set flag... maybe more than one event this day
				}															// write out each unique event
				evHTML += '<div class="calEventHead">'+ev[i][evTimeTxt]+':&nbsp;&nbsp;'+ev[i][evNameTxt]+'</div>';
				if (ev[i][evVenueTxt]!="") {
					evHTML += '<div class="calEventText">'
		 			if (ev[i][evLinkTxt]!="") {
						evHTML += '<a target="_blank" href="'+ev[i][evLinkTxt]+'">';
						evHTML += '<img src="images/arrow2.gif" alt="arrow" class="catEventImg"></a>&nbsp;';
					}
					evHTML += ev[i][evVenueTxt]+'.</div>';
  				}
  			}
		}
	}
   evBox = getObject("eventBox");
   evBox.innerHTML = (evHTML);
}

/* creates link if date match is found in event dataBase [ev] */
function eventlink(mn,dy,yr){
	for (i=0; i<ev.length; i++){
		var eI = ev[i][evDateNum]; 							// date information of event
		var ey = 2000+parseInt(eI.substr(0,2),10);		// year
		var em = parseInt(eI.substr(2,2),10);				// month
		var ed = parseInt(eI.substr(4,2),10);				// day
		eIText = ""+eI+"";
		if (ey == yr && em == mn && ed == dy) {return '<a title="see day\'s events" class="evDay" href="javascript:doShowEvent(\''+eIText+'\');">'+dy+'</a>';}
	}
	return dy;
}

/////////////////////////////// Calendar ////////////////////////////////////////////////

var doneToday = false;
function calendar(date) {
	//If no parameter is passed use the current date.
	if(date == null) date = new Date();
	day = date.getDate();
	month = date.getMonth();
	year = date.getFullYear();
	months = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
	this_month = new Date(year, month, 1);
	next_month = new Date(year, month + 1, 1);
	previous_month= new Date(year, month - 1, 1);

	//Find out when this month starts and ends.
   first_week_day = this_month.getDay();
   days_in_this_month = Math.floor((next_month.getTime() - this_month.getTime()) / (1000 * 60 * 60 * 24));
   var mT=year*100+month;
  	calendar_html = '';
   calendar_html += '<table id="datetable" cellspacing="0" cellpadding="0">';
   calendar_html += '<tr><td class="datetableHead"><a title="last month" href="javaScript:calendar(previous_month)">&#171;</a>';
   calendar_html += '</td><td colspan="5" align="center" class="datetableHead">';
   calendar_html += '<a title="see events for this month" href="javascript:doShowEvents(\''+year+'\',\''+(month+1)+'\');">'+months[month] + ' ' + year + '</a>';
   calendar_html += '</td><td class="datetableHead"><a title="next month" href="javaScript:calendar(next_month)">&#187;</a></td></tr>';
	calendar_html += '<tr>';

	//Fill the first week of the month with the appropriate number of blanks.
	for (week_day = 0; week_day < first_week_day; week_day++) {
		calendar_html += '<td class="datetableCells"> </td>';
	}
	week_day = first_week_day;
	for (day_counter = 1; day_counter <= days_in_this_month; day_counter++) {
		week_day %= 7;
		if (week_day == 0) calendar_html += '</tr><tr>';

	//Do something different for the current day.
		if(day == day_counter && !doneToday) {
			calendar_html += '<td class="datetableToday">'+eventlink(month+1,day_counter,year)+ '</td>';
			doneToday = true;
		} else {
			calendar_html += '<td class="datetableCells">'+eventlink(month+1,day_counter,year)+ '</td>';
		}
 		week_day++;
	}
	calendar_html += '</tr>';
	calendar_html += '</table>';
	calendar_html += '<div id="calHelp"><a href="javascript:doCalHelp()"><img src="images/help.png" alt="help" class="calHelpImg" title="Help to use calendar"></a></div>';
	cal = getObject("calendarBox")
	cal.innerHTML = calendar_html;		//Display the calendar.
}

cHlp=false;
function doCalHelp () {
	var h=getObject("calIns");
	h.style.display = (!cHlp)? "block":"none";
	cHlp=!cHlp;
}

/*
==============================================================================
      Day of Week Function (http://www.mistupid.com/months/weekdaycalc.htm)
==============================================================================
*/
// Days of Week Array
var days = new Array();
days[0]="Saturday";days[1]="Sunday";days[2]="Monday";days[3]="Tuesday";days[4]="Wednesday";days[5]="Thursday";days[6]="Friday"

function dayofweek(d,m,y) {
  	var val1 = parseInt(d,10);
   var val2 = parseInt(m,10);
   var val2x =parseInt(m,10);
   var val3 = parseInt(y,10);		// 20xy format
   if (val2 == 1) {val2x = 13;val3 = val3-1};
   if (val2 == 2) {val2x = 14;val3 = val3-1};
   var val4 = parseInt(((val2x+1)*3)/5,10);
   var val5 = parseInt(val3/4,10);
   var val6 = parseInt(val3/100,10);
   var val7 = parseInt(val3/400,10);
   var val8 = val1+(val2x*2)+val4+val3+val5-val6+val7+2;
   var val9 = parseInt(val8/7,10);
   var val0 = val8-(val9*7);
   return(days[val0]);
}   
-->


