var req;
var events;
var totalEvents;
var beginCal;
var endCal;
var debug = false;
var today = new Date();
var month = new Array(12)
var today_text;
month[0] = 'January';
month[1] = 'February';
month[2] = 'March';
month[3] = 'April';
month[4] = 'May';
month[5] = 'June';
month[6] = 'July';
month[7] = 'August';
month[8] = 'September';
month[9] = 'October';
month[10] = 'November';
month[11] = 'December';
var weekdays = new Array(7);
weekdays[0] = 'S';
weekdays[1] = 'M';
weekdays[2] = 'T';
weekdays[3] = 'W';
weekdays[4] = 'T';
weekdays[5] = 'F';
weekdays[6] = 'S';

function _gel(x) {
	return document.getElementById(x);
}

function myEvent() {
	this.id = arguments[0];
	this.cid = arguments[1];
	this.day = arguments[2];
	this.title = arguments[3];
	this.description = arguments[4];
	this.location = arguments[5];
}

function myDate() {
	var tempDate = new Date();
	tempDate.setDate(1);
	if(typeof arguments[0] != 'undefined') {
		tempDate.setFullYear(arguments[0])
	}
	if(typeof arguments[1] != 'undefined') {
		tempDate.setMonth(arguments[1]);
	}
	if(typeof arguments[2] != 'undefined') {
		tempDate.setDate(arguments[2])
	}
	return tempDate;
}

function pause(x)
{
	date = new Date();
	var curDate = null;

	do { var curDate = new Date(); }
	while(curDate-date < x);
}

var beginXMLLoad;
function loadXMLDoc(url) {
	beginXMLLoad = new Date().getTime();
	req = false;
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
		// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = false;
			}
		}
	}
	
	if(req) {
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
	}
}

function writeEvent(x,mm,dd) {
	_gel('eventLog').innerHTML = '<span class="noEventItem"><b style="text-align:center;">' + mm + ' ' + dd + '</b>' + x + '</span>';
}

function clearEvents() {
	/*if(today_text != undefined) {
		_gel('eventLog').innerHTML = today_text;
	}
	else {
	_gel('eventLog').innerHTML = '';
	}*/
}

function processReqChange() {
	// only if req shows "loaded"
	if ((req.readyState >= 1) && (req.readyState <= 3)) {

	}
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200) {
			buildEvents();
			drawCalendar();
		} else {
			alert("There was a problem retrieving the XML data:\n" + req.statusText);
		}
	}
}

function buildEvents() {
	events = new Array();
	if(req.responseXML != undefined) {
	eventXML = req.responseXML.getElementsByTagName('event');
	totalEvents = eventXML.length;
	for(var i=0;i<eventXML.length;i++) {
		events[i] = new myEvent(eventXML[i].getElementsByTagName('id')[0].firstChild.nodeValue, eventXML[i].getElementsByTagName('cid')[0].firstChild.nodeValue, eventXML[i].getElementsByTagName('day')[0].firstChild.nodeValue, eventXML[i].getElementsByTagName('title')[0].firstChild.nodeValue, eventXML[i].getElementsByTagName('description')[0].firstChild.nodeValue, eventXML[i].getElementsByTagName('location')[0].firstChild.nodeValue);
	}
	}
}

function initCalendar() {
	beginCal = new Date().getTime();
	if((typeof arguments[0] != 'undefined') && (typeof arguments[1] != 'undefined')) {
		today.setDate(1);
		today.setMonth(arguments[0]);
		today.setFullYear(arguments[1])
	}
	var url = '/calendarevents.asp?month=' + (today.getMonth()+1) + '&year=' + today.getFullYear();
	loadXMLDoc(url);
}

function drawCalendar() {
	var i;
	var firstDay = myDate(today.getFullYear(),today.getMonth(),1);
	var lastDay = myDate(today.getFullYear(),(today.getMonth()+1),0);
	var currentDay = myDate(today.getFullYear(),today.getMonth(),1);
	var prevDateLink = myDate(today.getFullYear(),today.getMonth(),0);
	var nextDateLink = myDate(today.getFullYear(),(today.getMonth()+1));

	var calHTML;
	calHTML  = '<table width="100%" class="CalendarContainer" border="0" cellpadding="0" cellspacing="0">';
	calHTML += ' <tr>';
	calHTML += '  <td align="left"><a href="#" onclick="initCalendar(' + prevDateLink.getMonth() + ',' + prevDateLink.getFullYear() + ');return false;"><img src="images/calendar_previous.gif" alt="Previous Month" border="0" /></a></td>';
	calHTML += '  <td align="center" width="100%">' + month[firstDay.getMonth()] + ' ' + firstDay.getFullYear() + '</td>';
	calHTML += '  <td align="right"><a href="#" onclick="initCalendar(' + nextDateLink.getMonth() + ',' + nextDateLink.getFullYear() + ');return false;"><img src="images/calendar_next.gif" alt="Next Month" border="0" /></a></td>';
	calHTML += ' </tr>';
	calHTML += ' <tr>';
	calHTML += '  <td colspan="3">';
	calHTML += '   <table width="100%" class="CalendarItems" style="border-collapse:collapse;" border="0" cellpadding="0" cellspacing="1">';
	calHTML += '    <tr>';
	for(i=0;i<weekdays.length;i++) {
		calHTML += '     <th class="weekdays">' + weekdays[i] + '</th>';
	}
	calHTML += '    </tr>';
	calHTML += '    <tr>';
	if(firstDay.getDay() != 0) {
		for(var i=1;i<=firstDay.getDay();i++) {
			calHTML += '     <td valign="top" align="center" class="blankItem">&nbsp;</td>';
		}
	}
	var eventText = new Array();
	for(i=1;i<=lastDay.getDate();i++) {
		eventText[i] = '';
		currentDay.setDate(i);
		var numEvents = 0;
		if (totalEvents > 0) {
			var firstEventFlag = 0;
			var cid,nid,linkURL;
			for(var j = 0;j<events.length;j++) {
				if (i == events[j].day) {
					numEvents++;
					if (events[j].location == "community") {
						linkURL = 'communitynews_item.asp?c=' + events[j].cid + '&n=' + events[j].id;
					}
					else if (events[j].location == "event") {
							linkURL = 'events_item.asp?n=' + events[j].id;
					}
					else {
						/*if (events[j].cid == 0) {
							linkURL = 'communitynews.asp';
						}
						else {
							linkURL = 'constructionnews.asp';
						}*/
						
						linkURL = 'constructionnews_item.asp?c=' + events[j].cid  + '&n=' + events[j].id; //Redirect all events to construction page where all upcoming events are now listed
					}
					eventText[i] += '<br /><a class=headline href=' + linkURL + '><strong>' + events[j].title + '</strong></a><br />' + events[j].description + ' '; //No quotes due to errors
					if (firstEventFlag == 0) {
						cid = events[j].cid;
						nid = events[j].id;
						if (events[j].location == "community") {
							linkURL = 'communitynews_item.asp?c=' + events[j].cid + '&n=' + events[j].id;
						}
						else if (events[j].location == "event") {
							linkURL = 'events_item.asp?n=' + events[j].id;
						}
						else {
							/*if (events[j].cid == 0) {
								linkURL = 'communitynews.asp';
							}
							else {
								linkURL = 'constructionnews.asp';
							}*/
							linkURL = 'constructionnews_item.asp?c=' + events[j].cid  + '&n=' + events[j].id; //Redirect all events to construction page where all upcoming events are now listed
						}
						firstEventFlag = 1;
					}
				}
			}
		}
		calHTML += '     <td valign="top" align="center"';
		var z = 0;
		if(numEvents > 0) {
			var yy = currentDay.getYear();
			var year = (yy < 1000) ? yy + 1900 : yy;
			var nowDate = new Date();
			var eventClass;
			if(nowDate.getDate() == i ) {
				eventClass = 'eventItemToday';
				today_text = eventText[i];
				today_text = today_text.replace("'","&#39");
				today_text = today_text.replace("\"","&quot");
				writeEvent(today_text,"Today's ", "Event");
			}
			else {
				eventClass = 'eventItem';
			}
			
			currentLineText = eventText[i];
			currentLineText = currentLineText.replace("&#39;","&rsquo;");
			currentLineText = currentLineText.replace("'","&rsquo;");

			calHTML += ' class="' + eventClass + '" style="cursor:pointer;" onmouseover="writeEvent(\'' + currentLineText + '\',\'' + month[firstDay.getMonth()] + '\',' + i + ');" onmouseout="clearEvents()" onclick="location.href=\'' + linkURL + '\'"' ;
			
		} else {
			var nowDate = new Date();
			//calHTML += ' class="noEventItem"';
			if(nowDate.getDate() == i) {
				if(today.getMonth() == nowDate.getMonth()) {
					today_text = "No events today";
					writeEvent(today_text,"Today's ", "Event<br/>");
					calHTML += ' class="EventItemToday"';
				}
				else {
					calHTML += ' class="noEventItem"';
				}
			}
			else {
				calHTML += ' class="noEventItem"';
			}
		}
		calHTML += '>' + i;
		calHTML += '     </td>';
		if(((i + firstDay.getDay()) % 7) == 0) {
			calHTML += '    </tr><tr>';
		}
	}

	if(lastDay.getDay() != 6) {
		for(i=lastDay.getDay();i<6;i++) {
			calHTML += '     <td valign="top" align="center" class="blankItem">&nbsp;</td>';
		}
	}

	calHTML += '    </tr>';
	calHTML += '   </table>';
	calHTML += '  </td>';
	calHTML += ' </tr>';
	calHTML += '</table>';
	_gel('calendar').innerHTML = calHTML;
}
