var eventsQuery = new google.gdata.calendar.CalendarEventQuery(feedUri);
	eventsQuery.setOrderBy('starttime');
	eventsQuery.setSortOrder('ascending');
	eventsQuery.setFutureEvents(true);
	eventsQuery.setSingleEvents(true);

	var EPCalQueryMaxResults = calQuery.getMaxResults();

var EPMinStartYear = curDate.getFullYear()-2, EPDisplayMonth = curDate.getMonth(), EPDisplayYear = curDate.getFullYear();

var EPEventsArry;

function retrieveEPList()
{
	document.getElementById("eplist").style.display="none";
	document.getElementById("epcal").style.display="inline";
	document.getElementById("upcoming_events").innerHTML = '<img src="images/load.gif" alt="Loading List View..." \/>';
	eventCalendarService.getEventsFeed(eventsQuery, showEPList, handleError);
	setCookie("pref", "list", 365);
}

function retrieveEPCal()
{
	document.getElementById("epcal").style.display="none";
	document.getElementById("eplist").style.display="inline";
	document.getElementById("upcoming_events").innerHTML = '<img src="images/load.gif" alt="Loading Calendar View..." \/>';
	eventCalendarService.getEventsFeed(calQuery, showEPCal, handleError);
	setCookie("pref", "cal", 365);
}

function retrieveCalendar()
{
	eventCalendarService.getEventsFeed(calQuery, calCallback, handleError);
}

function setCookie(c_name,value,exdays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate() + exdays);
	var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
	document.cookie=c_name + "=" + c_value;
}

function getCookie(c_name)
{
	var i,x,y,ARRcookies=document.cookie.split(";");
	for (i=0;i<ARRcookies.length;i++)
	{
		x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
		y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
		x=x.replace(/^\s+|\s+$/g,"");
		if (x==c_name)
		{
			return unescape(y);
		}
	}
}

function retrieveEPEvents()
{
	var pref=getCookie("pref");
	if (pref!=null && pref!="")
	{
		if (pref=="cal")
		{
			retrieveEPCal();
		}
		else
		{
			retrieveEPList();
		}
	}
	else
	{
		retrieveEPCal();
	}
}

function showEPList(feedRoot)
{
	var entries = feedRoot.feed.getEntries();
	var eventDiv = document.getElementById('upcoming_events');
	if (eventDiv.childNodes.length > 0)
	{
		eventDiv.removeChild(eventDiv.childNodes[0]);
	}
	if (entries.length == 0)
	{
		eventDiv.innerHTML = "<p class=\"EPWeeklyEvent\">No current events posted.<br\>To see past events, switch to Calendar View.<\/p>";
	}
	else
	{
		var listDiv = document.createElement('div');
		listDiv.setAttribute('id', "listDiv");
		eventDiv.appendChild(listDiv);
		var len = entries.length;
		for (var i = 0; i < len; i++)
		{
			var entry = entries[i];
			var title = entry.getTitle().getText();
			var description = entry.getContent().getText().replace(/\n/g,"<br\/>");
			var location = entry.getLocations()[0].getValueString();
			var startDate = null;
			var endDate = null;
			var times = entry.getTimes();
			if (times.length > 0)
			{
				startDate = times[0].getStartTime().getDate();
				endDate = times[0].getEndTime().getDate();
			}
			var h3 = document.createElement('h3');
			var a = document.createElement('a');
			a.setAttribute('href', "#");
			a.innerHTML = title;
			h3.appendChild(a);
			listDiv.appendChild(h3);
			var div = document.createElement('div');
			var p = document.createElement('p');
			p.innerHTML = formatDate(startDate, endDate) + "<br\>";
			if (location != "")
			{
				if (location.charAt(0) == '+')
				{
					if(location.lastIndexOf('|') != -1)
						p.innerHTML += "Location: " + location.substr(1,(location.length)).split('|')[0] + "&nbsp;&nbsp;<a target=\'blank\' href=\'http://maps.google.com/maps?hl=en&q=" + encodeURIComponent(location.substr(1,(location.length)).split('|')[1].replace(/\'/g,"%27")) + "\'>Map<\/a><br\>";
					else
						p.innerHTML += "Location: " + location.substr(1,(location.length)) + "&nbsp;&nbsp;<a target=\'blank\' href=\'http://maps.google.com/maps?hl=en&q=" + encodeURIComponent(location.substr(1,(location.length))) + "\'>Map<\/a><br\>";

				}
				else if(location.charAt(0) == '-')
					p.innerHTML += "Location: " + location.substr(1,(location.length)) + "<br\>";
				else
					p.innerHTML += "Location: " + location + "<br\>";
			}
			if (description != "")
			{
				p.innerHTML += "Description:<br\>" + description;
			}
			div.appendChild(p);
			listDiv.appendChild(div);
		}

		$(function()
			{
				$( "#listDiv" ).accordion(
					{
						autoHeight: false
					}
				);
			}
		);
	}
}

function showEPCal(feedRoot)
{
	EPEventsArry = new Array();
		var eventDiv = document.getElementById('upcoming_events');
		if (eventDiv.childNodes.length > 0)
		{
			eventDiv.removeChild(eventDiv.childNodes[0]);
		}

		var EPEventsDialogDiv = document.createElement('div');
		EPEventsDialogDiv.setAttribute('id', "EPEventsDialogDiv");
		EPEventsDialogDiv.setAttribute('title', "Event Details");
		eventDiv.appendChild(EPEventsDialogDiv);

		var EPCalDivPosition = document.createElement('div');
		EPCalDivPosition.setAttribute('id', "EPCalDivPosition");

		var EPCalDivOuter = document.createElement('div');
		EPCalDivOuter.setAttribute('id', "EPCalDivOuter");
		EPCalDivPosition.appendChild(EPCalDivOuter);

		var EPCalDivInner = document.createElement('div');
		EPCalDivInner.setAttribute('id', "EPCalDivInner");
		EPCalDivOuter.appendChild(EPCalDivInner);

		var EPCalArea = document.createElement('table');
		EPCalArea.setAttribute('border', "0px");
		EPCalArea.setAttribute('cellspacing', "2px");
		EPCalArea.setAttribute('cellpadding', "0px");
		EPCalArea.setAttribute('id', "EPCalArea");


			var tr0 = document.createElement('tr');
			EPCalArea.appendChild(tr0);

				var td00 = document.createElement('td');
				td00.setAttribute('style', "padding-bottom:2px;");
				tr0.appendChild(td00);

					var triangleLeft = document.createElement('img');
					triangleLeft.setAttribute('id', "EPTriangleLeft");
					triangleLeft.setAttribute('onclick', "EPAdjMonth(-1);");
					triangleLeft.setAttribute('src', "images/triangle_left.gif");
					td00.appendChild(triangleLeft);

					var EPMonthDiv = document.createElement('div');
					EPMonthDiv.setAttribute('id', "EPMonthDiv");
					EPMonthDiv.setAttribute('class', "EPSelectedMY");

						var EPMonthDivInner = document.createElement('div');
						EPMonthDivInner.setAttribute('id', "EPMonthDivInner");
						EPMonthDivInner.setAttribute('class', "EPSelectedMYInner");
						EPMonthDiv.appendChild(EPMonthDivInner);

							var EPMonthPosition1 = document.createElement('div');
							EPMonthPosition1.setAttribute('class', "EPMYPosition1");

								var EPMonthPosition2 = document.createElement('div');
								EPMonthPosition2.setAttribute('id', "EPMonthPosition2");
								EPMonthPosition2.setAttribute('class', "EPMYPosition2");

									var M0 = document.createElement('div');
									M0.setAttribute('id', "EPM0");
									M0.setAttribute('onclick', "EPChangeMonth(0);");
									M0.setAttribute('class', "EPMYDiv");
									M0.innerHTML = "January";

									var M1 = document.createElement('div');
									M1.setAttribute('id', "EPM1");
									M1.setAttribute('onclick', "EPChangeMonth(1);");
									M1.setAttribute('class', "EPMYDiv");
									M1.innerHTML = "February";

									var M2 = document.createElement('div');
									M2.setAttribute('id', "EPM2");
									M2.setAttribute('onclick', "EPChangeMonth(2);");
									M2.setAttribute('class', "EPMYDiv");
									M2.innerHTML = "March";

									var M3 = document.createElement('div');
									M3.setAttribute('id', "EPM3");
									M3.setAttribute('onclick', "EPChangeMonth(3);");
									M3.setAttribute('class', "EPMYDiv");
									M3.innerHTML = "April";

									var M4 = document.createElement('div');
									M4.setAttribute('id', "EPM4");
									M4.setAttribute('onclick', "EPChangeMonth(4);");
									M4.setAttribute('class', "EPMYDiv");
									M4.innerHTML = "May";

									var M5 = document.createElement('div');
									M5.setAttribute('id', "EPM5");
									M5.setAttribute('onclick', "EPChangeMonth(5);");
									M5.setAttribute('class', "EPMYDiv");
									M5.innerHTML = "June";

									var M6 = document.createElement('div');
									M6.setAttribute('id', "EPM6");
									M6.setAttribute('onclick', "EPChangeMonth(6);");
									M6.setAttribute('class', "EPMYDiv");
									M6.innerHTML = "July";

									var M7 = document.createElement('div');
									M7.setAttribute('id', "EPM7");
									M7.setAttribute('onclick', "EPChangeMonth(7);");
									M7.setAttribute('class', "EPMYDiv");
									M7.innerHTML = "August";

									var M8 = document.createElement('div');
									M8.setAttribute('id', "EPM8");
									M8.setAttribute('onclick', "EPChangeMonth(8);");
									M8.setAttribute('class', "EPMYDiv");
									M8.innerHTML = "September";

									var M9 = document.createElement('div');
									M9.setAttribute('id', "EPM9");
									M9.setAttribute('onclick', "EPChangeMonth(9);");
									M9.setAttribute('class', "EPMYDiv");
									M9.innerHTML = "October";

									var M10 = document.createElement('div');
									M10.setAttribute('id', "EPM10");
									M10.setAttribute('onclick', "EPChangeMonth(10);");
									M10.setAttribute('class', "EPMYDiv");
									M10.innerHTML = "November";

									var M11 = document.createElement('div');
									M11.setAttribute('id', "EPM11");
									M11.setAttribute('onclick', "EPChangeMonth(11);");
									M11.setAttribute('class', "EPMYDiv");
									M11.innerHTML = "December";

									EPMonthPosition2.appendChild(M0);
									EPMonthPosition2.appendChild(M1);
									EPMonthPosition2.appendChild(M2);
									EPMonthPosition2.appendChild(M3);
									EPMonthPosition2.appendChild(M4);
									EPMonthPosition2.appendChild(M5);
									EPMonthPosition2.appendChild(M6);
									EPMonthPosition2.appendChild(M7);
									EPMonthPosition2.appendChild(M8);
									EPMonthPosition2.appendChild(M9);
									EPMonthPosition2.appendChild(M10);
									EPMonthPosition2.appendChild(M11);

								EPMonthPosition1.appendChild(EPMonthPosition2);

							EPMonthDiv.appendChild(EPMonthPosition1);

						td00.appendChild(EPMonthDiv);

						var EPYearDiv = document.createElement('div');
						EPYearDiv.setAttribute('id', "EPYearDiv");
						EPYearDiv.setAttribute('class', "EPSelectedMY");

							var EPYearDivInner = document.createElement('div');
							EPYearDivInner.setAttribute('id', "EPYearDivInner");
							EPYearDivInner.setAttribute('class', "EPSelectedMYInner");
							EPYearDiv.appendChild(EPYearDivInner);

							var EPYearPosition1 = document.createElement('div');
							EPYearPosition1.setAttribute('class', "EPMYPosition1");

								var EPYearPosition2 = document.createElement('div');
								EPYearPosition2.setAttribute('class', "EPMYPosition2");
								var thisYear = curDate.getFullYear();


									for(var i=thisYear-1; i<=thisYear+1; i++)
									{
										var EPYearDivi = document.createElement('div');
										EPYearDivi.setAttribute('id', i);
										EPYearDivi.setAttribute('class', "EPMYDiv");
										EPYearDivi.setAttribute('onclick', "EPChangeYear("+i+")");
										EPYearDivi.innerHTML = i;
										EPYearPosition2.appendChild(EPYearDivi);
									}



								EPYearPosition1.appendChild(EPYearPosition2);
							EPYearDiv.appendChild(EPYearPosition1);
						td00.appendChild(EPYearDiv);

						var triangleRight = document.createElement('img');
						triangleRight.setAttribute('id', "EPTriangleRight");
						triangleRight.setAttribute('onclick', "EPAdjMonth(1);");
						triangleRight.setAttribute('src', "images/triangle_right.gif");
						td00.appendChild(triangleRight);

			var tr1 = document.createElement('tr');
				var EPCalCell = document.createElement('td');
				EPCalCell.setAttribute('id', "EPCalCell");
				EPCalCell.setAttribute('align', "center");

					var EPCalendar = document.createElement('table');
					EPCalendar.setAttribute('id', "EPCalendar");
					EPCalendar.setAttribute('border', "0px");
					EPCalendar.setAttribute('cellspacing', "1px");
					EPCalendar.setAttribute('cellspacing', "3px");
						var caltr0 = document.createElement('tr');
							var caltdsu = document.createElement('td');
							caltdsu.setAttribute('id', "EPsu");
							caltdsu.setAttribute('class', "EPDayName");
							caltdsu.innerHTML = "Sunday";
							caltr0.appendChild(caltdsu);
							var caltdmo = document.createElement('td');
							caltdmo.setAttribute('id', "EPmo");
							caltdmo.setAttribute('class', "EPDayName");
							caltdmo.innerHTML = "Monday";
							caltr0.appendChild(caltdmo);
							var caltdtu = document.createElement('td');
							caltdtu.setAttribute('id', "EPtu");
							caltdtu.setAttribute('class', "EPDayName");
							caltdtu.innerHTML = "Tuesday";
							caltr0.appendChild(caltdtu);
							var caltdwe = document.createElement('td');
							caltdwe.setAttribute('id', "EPwe");
							caltdwe.setAttribute('class', "EPDayName");
							caltdwe.innerHTML = "Wednesday";
							var caltdth = document.createElement('td');
							caltdth.setAttribute('id', "EPth");
							caltdth.setAttribute('class', "EPDayName");
							caltdth.innerHTML = "Thursday";
							caltr0.appendChild(caltdth);
							var caltdfr = document.createElement('td');
							caltdfr.setAttribute('id', "EPfr");
							caltdfr.setAttribute('class', "EPDayName");
							caltdfr.innerHTML = "Friday";
							caltr0.appendChild(caltdfr);
							var caltdsa = document.createElement('td');
							caltdsa.setAttribute('id', "EPsa");
							caltdsa.setAttribute('class', "EPDayName");
							caltdsa.innerHTML = "Saturday";
							caltr0.appendChild(caltdsa);
						EPCalendar.appendChild(caltr0);

					EPCalCell.appendChild(EPCalendar);

				tr1.appendChild(EPCalCell);
			EPCalArea.appendChild(tr1);
		EPCalDivInner.appendChild(EPCalArea);
		eventDiv.appendChild(EPCalDivPosition);

		var thisMonth = curDate.getMonth();
		document.getElementById("EPMonthDivInner").innerHTML = document.getElementById(thisMonth).innerHTML;

		document.getElementById("EPYearDivInner").innerHTML = document.getElementById(thisYear).innerHTML;


	var todayYear = curDate.getFullYear();
	var todayMonth = curDate.getMonth();
	var entries = feedRoot.feed.getEntries();
	var len = entries.length;
	for (var i = 0; i< len; i++)
	{
		var entry = entries[i];
		var title = entry.getTitle().getText();
		var startDateTime = null;
		var startJSDate = null;
		var endDateTime = null;
		var endJSDate = null;
		var times = entry.getTimes();
		if (times.length > 0)
		{
			startDateTime = times[0].getStartTime();
			startJSDate = startDateTime.getDate();
			endDateTime = times[0].getEndTime();
			endJSDate = endDateTime.getDate();
		}

		var description = entry.getContent().getText();
		var location = entry.getLocations()[0].getValueString();

		var stringTimes = new String();
		stringTimes = formatDate(startJSDate, endJSDate);
	
		if ((startJSDate.getDate()!= endJSDate.getDate()) || (startJSDate.getMonth() != endJSDate.getMonth()))
		{
			var startDate = new Date();
			startDate.setFullYear(startJSDate.getFullYear(), startJSDate.getMonth(), startJSDate.getDate());
			var endDate = new Date();
			endDate.setFullYear(endJSDate.getFullYear(), endJSDate.getMonth(), endJSDate.getDate());

			var diff = (endDate - startDate);
			var length = (diff / 24 / 60 / 60 / 1000);
			var actualLength = length.toFixed(0);

			if ((endJSDate.getHours() != "0") || (endJSDate.getMinutes() != "0"))
			{
				actualLength++;
			}

			for (j = 0; j < actualLength; j++)
			{
				var eventDate = new Date();
				eventDate.setFullYear(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());

				eventDate.setDate(eventDate.getDate() + j);
				var arrayDate = eventDate.getFullYear() + "." + (eventDate.getMonth() + 1) + "." + eventDate.getDate();

				if(EPEventsArry[arrayDate] == null)
				{
					EPEventsArry[arrayDate] = new Array(1);
					EPEventsArry[arrayDate][0] = [null,title,stringTimes,location,description,null];
				}
				else
				{
					EPEventsArry[arrayDate].push([null,title,stringTimes,location,description,null]);
				}
			}
		}

		else
		{
			var arrayDate = startJSDate.getFullYear() + "." + (startJSDate.getMonth() + 1) + "." + startJSDate.getDate();
			if(EPEventsArry[arrayDate] == null)
			{
				EPEventsArry[arrayDate] = new Array(1);
				EPEventsArry[arrayDate][0] = [null,title,stringTimes,location,description,null];
			}
			else
			{
				EPEventsArry[arrayDate].push([null,title,stringTimes,location,description,null]);
			}
		}
	}
	writeEPGCal(EPDisplayYear,EPDisplayMonth);
}

function writeEPGCal(y, m)
{
	var displaymonth = new Date();
	var eventsArray = new Array();
	eventsArray = EPEventsArry;
	var today = displaymonth.getFullYear()+"."+(displaymonth.getMonth()+1)+"."+displaymonth.getDate();
	displaymonth.setFullYear(y,m,1);
	var selectedmonth = document.getElementById("EPMonthDivInner");
	selectedmonth.value = m;
	var selectedyear = document.getElementById("EPYearDivInner");
	selectedmonth.innerHTML = document.getElementById(m).innerHTML;
	selectedyear.innerHTML = y;
	var currentday = 1;
	var numdays = numDays(displaymonth);
	var newcaltable = "<table id='EPCalendar' border='0px' cellspacing='1px' cellpadding='3px'><tr><td id='EPsu' class='EPDayName'>Sunday</td><td id='EPmo' class='EPDayName'>Monday</td><td id='EPtu' class='EPDayName'>Tuesday</td><td id='EPwe' class='EPDayName'>Wednesday</td><td id='EPth' class='EPDayName'>Thursday</td><td id='EPfr' class='EPDayName'>Friday</td><td id='EPsa' class='EPDayName'>Saturday</td></tr><tr>";
	//FIRST EMPTY CELLS
	if(displaymonth.getDay() > 0)
	{
		for(var i=0; i<displaymonth.getDay(); i++)
		{
			newcaltable += "<td class='EPCalDayNoDate'>&nbsp;</td>";
		}
	}
	//REST OF FIRST ROW
	for(var i=displaymonth.getDay(); i<7; i++)
	{
		var eventmonth = displaymonth.getMonth()+1;
		var eventdate = displaymonth.getFullYear()+"."+eventmonth+"."+currentday;
		var title = new String();
		if(eventsArray[eventdate] != null)
		{
			newcaltable += "<td class='EPEventDay'";
			for(var j=0; j<eventsArray[eventdate].length; j++)
			{
				title += "<p value=\"";
				title += eventsArray[eventdate][j][1].replace(/\"/g,"&#34;") + "<br\/>" + eventsArray[eventdate][j][2].replace(/\"/g,"&#34;");
				if (eventsArray[eventdate][j][3] != "")
				{
						if (eventsArray[eventdate][j][3].charAt(0) == '+')
						{
							if(eventsArray[eventdate][j][3].lastIndexOf('|') != -1)
								title += "<br\/>Location: " + eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length)).split('|')[0].replace(/\"/g,"&#34;") + "&nbsp;&nbsp;<a target=\'blank\' href=\'http://maps.google.com/maps?hl=en&q=" + encodeURIComponent(eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length-1)).split('|')[1].replace(/\'/g,"%27")) + "\'>Map<\/a>";
							else
								title += "<br\/>Location: " + eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length)).replace(/\"/g,"&#34;") + "&nbsp;&nbsp;<a target=\'blank\' href=\'http://maps.google.com/maps?hl=en&q=" + encodeURIComponent(eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length-1)).replace(/\'/g,"%27")) + "\'>Map<\/a>";
						}
						else if(eventsArray[eventdate][j][3].charAt(0) == '-')
							title += "<br\/>Location: " + eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length)) + "<br\>";
						else
							title += "<br\/>Location: " + eventsArray[eventdate][j][3].replace(/\"/g,"&#34;");
				}
				if (eventsArray[eventdate][j][4] != "")
				{
					title += "<br\/>Description: <br\/>"+eventsArray[eventdate][j][4].replace(/\"/g,"&#34;").replace(/\n/g,"<br\/>");
				}
				if ((eventsArray[eventdate][j][1]).length < 15)
				{
					title += "\">" + eventsArray[eventdate][j][1].replace(/\"/g,"&#34;") + "<\/p>";
				}
				else
				{
					title += "\">" + eventsArray[eventdate][j][1].substr(0,15).replace(/\"/g,"&#34;") + "...<\/p>";
				}
			}
		}
		else
		{
			newcaltable += "<td class='EPCalDay'";
		}
		if(eventdate == today)
		{
			newcaltable += " style='text-decoration:underline;'";
		}
		newcaltable += ">"+currentday + title +"<\/td>";
		currentday++;
	}
	newcaltable += "</tr>";
	//MAIN CALENDAR ROWS
	while(currentday+7 <= numdays)
	{
		newcaltable += "<tr>";
		for(var i=0; i<7; i++)
		{
			var eventmonth = displaymonth.getMonth()+1;
			var eventdate = displaymonth.getFullYear()+"."+eventmonth+"."+currentday;
			var title = new String();
			if(eventsArray[eventdate] != null)
			{
				newcaltable += "<td class='EPEventDay'";
				for(var j=0; j<eventsArray[eventdate].length; j++)
				{
					title += "<p value=\"";
					title += eventsArray[eventdate][j][1].replace(/\"/g,"&#34;") + "<br\/>" + eventsArray[eventdate][j][2].replace(/\"/g,"&#34;");
					if (eventsArray[eventdate][j][3] != "")
					{
							if (eventsArray[eventdate][j][3].charAt(0) == '+')
							{
								if(eventsArray[eventdate][j][3].lastIndexOf('|') != -1)
									title += "<br\/>Location: " + eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length)).split('|')[0].replace(/\"/g,"&#34;") + "&nbsp;&nbsp;<a target=\'blank\' href=\'http://maps.google.com/maps?hl=en&q=" + encodeURIComponent(eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length-1)).split('|')[1].replace(/\'/g,"%27")) + "\'>Map<\/a>";
								else
									title += "<br\/>Location: " + eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length)).replace(/\"/g,"&#34;") + "&nbsp;&nbsp;<a target=\'blank\' href=\'http://maps.google.com/maps?hl=en&q=" + encodeURIComponent(eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length-1)).replace(/\'/g,"%27")) + "\'>Map<\/a>";
							}
							else if(eventsArray[eventdate][j][3].charAt(0) == '-')
								title += "<br\/>Location: " + eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length)) + "<br\>";
							else
								title += "<br\/>Location: " + eventsArray[eventdate][j][3].replace(/\"/g,"&#34;");
					}
					if (eventsArray[eventdate][j][4] != "")
					{
						title += "<br\/>Description: <br\/>"+eventsArray[eventdate][j][4].replace(/\"/g,"&#34;").replace(/\n/g,"<br\/>");
					}
					if ((eventsArray[eventdate][j][1]).length < 15)
					{
						title += "\">" + eventsArray[eventdate][j][1].replace(/\"/g,"&#34;") + "<\/p>";
					}
					else
					{
						title += "\">" + eventsArray[eventdate][j][1].substr(0,15).replace(/\"/g,"&#34;") + "...<\/p>";
					}
				}
			}
			else
			{
				newcaltable += "<td class='EPCalDay'";
			}
			if(eventdate == today)
			{
				newcaltable += " style='text-decoration:underline;'";
			}
			newcaltable += ">"+currentday + title +"<\/td>";
			currentday++;
		}
		newcaltable += "</tr>";
	}
	//LAST ROW
	displaymonth.setDate(numdays);
	newcaltable += "<tr>";
	for(var i=0; i<=displaymonth.getDay(); i++)
	{
		var eventmonth = displaymonth.getMonth()+1;
		var eventdate = displaymonth.getFullYear()+"."+eventmonth+"."+currentday;
		var title = new String();
		if(eventsArray[eventdate] != null)
		{
			newcaltable += "<td class='EPEventDay'";
			for(var j=0; j<eventsArray[eventdate].length; j++)
			{
				title += "<p value=\"";
				title += eventsArray[eventdate][j][1].replace(/\"/g,"&#34;") + "<br\/>" + eventsArray[eventdate][j][2].replace(/\"/g,"&#34;");
				if (eventsArray[eventdate][j][3] != "")
				{
						if (eventsArray[eventdate][j][3].charAt(0) == '+')
						{
							if(eventsArray[eventdate][j][3].lastIndexOf('|') != -1)
								title += "<br\/>Location: " + eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length)).split('|')[0].replace(/\"/g,"&#34;") + "&nbsp;&nbsp;<a target=\'blank\' href=\'http://maps.google.com/maps?hl=en&q=" + encodeURIComponent(eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length-1)).split('|')[1].replace(/\'/g,"%27")) + "\'>Map<\/a>";
							else
								title += "<br\/>Location: " + eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length)).replace(/\"/g,"&#34;") + "&nbsp;&nbsp;<a target=\'blank\' href=\'http://maps.google.com/maps?hl=en&q=" + encodeURIComponent(eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length-1)).replace(/\'/g,"%27")) + "\'>Map<\/a>";
						}
						else if(eventsArray[eventdate][j][3].charAt(0) == '-')
							title += "<br\/>Location: " + eventsArray[eventdate][j][3].substr(1,(eventsArray[eventdate][j][3].length)) + "<br\>";
						else
							title += "<br\/>Location: " + eventsArray[eventdate][j][3].replace(/\"/g,"&#34;");
				}
				if (eventsArray[eventdate][j][4] != "")
				{
					title += "<br\/>Description: <br\/>"+eventsArray[eventdate][j][4].replace(/\"/g,"&#34;").replace(/\n/g,"<br\/>");
				}
				if ((eventsArray[eventdate][j][1]).length < 15)
				{
					title += "\">" + eventsArray[eventdate][j][1].replace(/\"/g,"&#34;") + "<\/p>";
				}
				else
				{
					title += "\">" + eventsArray[eventdate][j][1].substr(0,15).replace(/\"/g,"&#34;") + "...<\/p>";
				}
			}
		}
		else
		{
			newcaltable += "<td class='EPCalDay'";
		}
		if(eventdate == today)
		{
			newcaltable += " style='text-decoration:underline;'";
		}
		newcaltable += ">"+currentday + title +"<\/td>";
		currentday++;
	}
	//LAST EMPTY CELLS
	if(displaymonth.getDay() % 7 < 6)
		{
			for(var i = displaymonth.getDay()+1 % 7; i<7; i++)
			{
				newcaltable += "<td class='EPCalDayNoDate'>&nbsp;</td>";
			}
		}
	newcaltable += "</table>";
	var calcell = document.getElementById("EPCalCell");
	calcell.innerHTML = newcaltable;
	document.getElementById("EPCalArea").style.width = document.getElementById("EPCalArea").offsetWidth+"px";
	$("td.EPEventDay p").click(function()
		{
			$("#EPEventsDialogDiv").html($(this).attr("value"));
			$( "#EPEventsDialogDiv" ).dialog( "open" );
			return false;
		}
	);
	$(function()
		{
			$( "#EPEventsDialogDiv" ).dialog(
				{
					autoOpen: false,
					position: 'center',
					show: "fade",
					hide: "fade",
					width: 460
				}
			);
		}
	);
	$("div.EPSelectedMYInner").hover(function(event){EPShowMYMenu(event);},function(event){EPHideMYMenu(event);});
	$("div.EPMYPosition2").hover(function(event){EPShowMYMenu(event);},function(event){EPHideMYMenu(event);});
	$("div.EPMYDiv").hover(function(event){EPShowMYMenu(event);},function(event){EPHideMYMenu(event);});
}

function EPChangeMonth(m)
{
	$("#EPMonthPosition2").slideUp();
	var EPMonthDivInner = document.getElementById("EPMonthDivInner");
	EPMonthDivInner.innerHTML = document.getElementById(m).innerHTML;
	EPMonthDivInner.value = m;
	EPDisplayYear = m;
	writeEPGCal(document.getElementById("EPYearDivInner").innerHTML,m);
}
function EPChangeYear(y)
{
	$("#EPYearPosition2").slideUp();
	document.getElementById("EPYearDivInner").innerHTML = y;
	EPDisplayYear = y;
	writeEPGCal(y,document.getElementById("EPMonthDivInner").value);
}

function EPAdjMonth(plusminus)
{
	var selectedmonth = document.getElementById("EPMonthDivInner");
	var selectedyear = document.getElementById("EPYearDivInner");
	var newmonth = (parseInt(selectedmonth.value) + 12 + plusminus) % 12;
	selectedmonth.innerHTML = document.getElementById(newmonth).innerHTML;
	selectedmonth.value = newmonth;
	if((newmonth==0 && plusminus==1) || (newmonth==11 && plusminus==-1))
	{
		selectedyear.innerHTML = parseInt(selectedyear.innerHTML) + plusminus;
	}
	EPDisplayYear = parseInt(selectedyear.innerHTML);
	EPDisplayMonth = parseInt(selectedmonth.value);
	if (EPDisplayYear != EPMinStartYear)
		writeEPGCal(EPDisplayYear, EPDisplayMonth);
	else {
		EPMinStartYear = EPDisplayYear - 2;
		EPCalQueryMaxResults += 2000;
		var tempCalQuery = new google.gdata.calendar.CalendarEventQuery(feedUri);
		tempCalQuery.setOrderBy('starttime');
		tempCalQuery.setSortOrder('ascending');
		tempCalQuery.setSingleEvents(true);
		tempCalQuery.setMaxResults(EPCalQueryMaxResults + 2000);
		tempCalQuery.setMinimumStartTime(EPDisplayYear + "-01-01");

		document.getElementById("EPCalCell").innerHTML = '<div style="background-color:#E2D6C0;height:' + document.getElementById("EPCalCell").offsetHeight + 'px;"><img style="padding-top:' + (document.getElementById("EPCalCell").offsetHeight / 2 - 50) + 'px;" src="images/load.gif" alt="Loading Calendar View..." /></div>';
		eventCalendarService.getEventsFeed(tempCalQuery, showEPCal, handleError);
	}
}

function EPShowMYMenu(event)
{
	var oParentMenu = $(event.relatedTarget).parents("div.EPSelectedMY");
	var nParentMenu = $(event.currentTarget).parents("div.EPSelectedMY");
	var nMenu = nParentMenu.find("div.EPMYPosition2");
	if(nMenu.length > 0)
	{
		if((oParentMenu.attr("id") != nParentMenu.attr("id")) && (event.currentTarget.className == "EPSelectedMYInner"))
		{
			nMenu.stop(true,true);
			nMenu.delay("fast").slideDown();
		}
	}
}

function EPHideMYMenu(event)
{
	var oParentMenu = $(event.currentTarget).parents("div.EPSelectedMY");
	var nParentMenu = $(event.relatedTarget).parents("div.EPSelectedMY");
	if(oParentMenu.attr("id") != nParentMenu.attr("id"))
	{
		var oParentSubMenu = oParentMenu.find("div.EPMYPosition2");
		if(oParentSubMenu.length > 0)
		{
			if(oParentSubMenu.queue().length > 1)  //Try to account for the delay function on the queue (there may be other situations where length>1)
			{
				oParentSubMenu.stop(true,true);
			}
			oParentSubMenu.slideUp();
		}
	}
}

function handleError(error)
{
	alert("Error: " + error);
}

