var year=2007;
var firstJanIsA = 'Monday';
var cellWidth = 95; 
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
var baseLeapyear = 2004;
var days = new Array();
days['January'] = 31;
days['February'] = (((year-baseLeapyear) % 4) == 0) ? 29: 28;
days['March'] = 31;
days['April'] = 30;
days['May'] = 31;
days['June'] = 30;
days['July'] = 31;
days['August'] = 31;
days['September'] = 30;
days['October'] = 31;
days['November'] = 30;
days['December'] = 31;
var weekdays = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'];
for(var firstJanIndex=0; firstJanIndex<weekdays.length;firstJanIndex++) {if(weekdays[firstJanIndex]==firstJanIsA) break;}
var bgColours = new Array(); 
var dayNumbers = new Array(); 
var monthNames = new Array(); 
var mtRows = new Array(); 
function showEventDetails(day, month, time, text, description, moreInfo) {
  var url = 'eventDetail.htm?y=' + year + '&m=' + month + '&d=' + day + '&evt=' + escape(text) + '&time=' + escape(time) +'&desc=' + escape(description) + '&more=' + escape(moreInfo);
  var features = 'left=40px, top=40px, width=470px, height=300px, scrollbars';
  window.open(url, '', features, true);
}
function initCalendarGrid() {
  var month = 0; 
  var day = 1; 
  daytotal = days[months[0]]; 
  var done = false, notStarted = false;
  var monthColour = 1;
  var monthName = 'January';
  var row=0;
  var rowColours = new Array();
  var rowDayNumbers = new Array();
  var rowMonths = new Array();
  while(!done) {
	for(d=0; d<7; d++) {
	  if((row==0) && (d < firstJanIndex)) notStarted = true; 
	  else {
	    notStarted = false;
		if(day > daytotal) { 
		  if(month == 11) done = true;
		  else {
		    day=1;
		    daytotal = days[months[++month]];
			monthName = months[month];
		    monthColour = ((month%2) == 0) ? 1 : 2; 
		  }
		}
	  }
	  if(done || notStarted) {
	    rowColours[rowColours.length] = 0;
	    rowDayNumbers[rowDayNumbers.length] = 0;
		rowMonths[rowMonths.length] = 'NotAMonth'
	  }
	  else {
	    rowColours[rowColours.length] = monthColour;
	    rowDayNumbers[rowDayNumbers.length] = day++;	    
		rowMonths[rowMonths.length] = monthName;
	  }
	} 
	bgColours[row] = rowColours.join(); rowColours = new Array();
	dayNumbers[row] = rowDayNumbers.join(); rowDayNumbers = new Array();
	monthNames[row] = rowMonths.join(); rowMonths = new Array();
	row++;
  } 
}
function calcMonthTransitionRows() {
  var lookingFor = 1; 
  var month = 0;
  for(var row=0; row<bgColours.length; row++) {
    monthname = '&nbsp;';
    var rowColours = bgColours[row];
	if(lookingFor == 1) {
	  if(rowColours == '1,1,1,1,1,1,1') { 
		monthname = months[month++];
		lookingFor = 2;
	  }
	}
	else if(lookingFor == 2) {
	  if(rowColours == '2,2,2,2,2,2,2') { 
		monthname = months[month++];
		lookingFor = 1;
	  }
	}
    mtRows[row] = monthname;
  }
}
function generateCalendarHTML() {
  initCalendarGrid();
  calcMonthTransitionRows();
  document.write('<table class="calendarTable" width="'+(8*cellWidth)+'" border="0" cellpadding="2" cellspacing="0">');  
  document.write('<td colspan="8"><p align="right" class="pageSubHeadingWhite">Events Calendar '+year+'</p></td>');
  document.write('<tr>');
  document.write('<td><p class="blankMonth">&nbsp;</p></td>'); 
  for(var c=0; c<7; c++) {
	document.write('<td class="weekdayHeading"><p class="weekdayHeading">'+weekdays[c]+'</p></td>');
  }
  document.write('</tr>'); 
  for(r=0; r<dayNumbers.length; r++) {
    document.write('<tr>');
	if(mtRows[r] == '&nbsp;')
	  document.write('<td><p class="blankMonth">'+mtRows[r]+'</p></td>');
	else
	  document.write('<td><p class="month">'+mtRows[r]+'</p></td>');
	var rowColours = bgColours[r].split(',');
	var rowDayNumbers = dayNumbers[r].split(',');
	var rowMonths = monthNames[r].split(',');
    for(c=0; c<7; c++) {
	  document.write('<td class="calendarCell'+rowColours[c]+'" width="'+cellWidth+'">');
	  var currentDay = rowDayNumbers[c];
	  if(currentDay == 0) 
	    document.write('<p class="date">&nbsp;</p>');
	  else {
		var currentMonth = rowMonths[c];
		var evt = window['event_' + currentMonth + currentDay];
	    if(evt) { 
		  document.write('<p class="date">'+((currentDay < 10)?currentDay+'&nbsp;':currentDay)+'&nbsp;');
		  if(!evt.moreInfo) evt.moreInfo = 'noinfo';
		  var eventLink = 'javascript:showEventDetails(\''+currentDay+'\',\''+currentMonth+'\',\''+evt.time+'\',\''+evt.text+'\',\''+evt.description+'\',\''+evt.moreInfo+'\'); void 0;';
		  document.write('<a class="calendarLink" href="' + eventLink + '">');
		  if(evt.img)
		    document.write('<img src="'+ evt.img +'" align="center">');
		  else
		    document.write(evt.text);
		  document.write('</a></p>');
	    }
		else
		  document.write('<p class="date">'+currentDay+'</p>');
	  }
	  document.write('</td>');
    }
  }
}
generateCalendarHTML();
