var gDateYear;var gDateMonth;var gDateDay;var gDateDaysInMonth;var gMode;var gMonthOffset;var gCalendarEvents;var gGIFpath;var gCalendarDays=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");var gCalendarMonths=new Array("January","February","March","April","May","June","July","August","September","October","November","December");var gCalendarMonthsShort=new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");function buildCalendar(xmlFeed,monthOffset,GIFpath)
{gGIFpath=GIFpath;gMonthOffset=monthOffset;var url=window.location.href.toString();var parts=url.split("/");if(xmlFeed.substring(0,1)=="/")
{xmlFeed=parts[0]+"//"+parts[2]+xmlFeed;}
else
{url="";for(var i=0;i<(parts.length-1);i++)
url+=parts[i]+"/";xmlFeed=url+xmlFeed;}
var httpRequest=new XMLHttpRequest();httpRequest.onreadystatechange=function()
{if(httpRequest.readyState==4&&httpRequest.status!=200)
alert("Unable to load data.");else if(httpRequest.readyState==4)
{gCalendarEvents=httpRequest.responseXML.firstChild;if(gCalendarEvents.childNodes[0].nodeName=="date")
finishBuildCalendar();else
alert("Unable to load data.");}};httpRequest.open("GET",xmlFeed,true);httpRequest.send(null);}
function finishBuildCalendar()
{var tbody,tr,td,a;document.getElementById("calendarDay").onclick=function(){setCalendarMode("day",false);return false;}
document.getElementById("calendarWeek").onclick=function(){setCalendarMode("week",false);return false;}
document.getElementById("calendarMonth").onclick=function(){setCalendarMode("month",false);return false;}
date=new Date();gDateYear=parseInt(gCalendarEvents.childNodes[0].firstChild.nodeValue.substring(0,4),10);gDateMonth=parseInt(gCalendarEvents.childNodes[0].firstChild.nodeValue.substring(5,7),10)-1;gMonthOffset=parseInt(gCalendarEvents.childNodes[1].firstChild.nodeValue,10);;if(date.getFullYear()==gDateYear&&date.getMonth()==gDateMonth)
gDateDay=date.getDate();else
gDateDay=1;date.setFullYear(gDateYear,gDateMonth+1,0);gDateDaysInMonth=date.getDate();setElementText(document.getElementById("calendarMonthTitle"),gCalendarMonths[gDateMonth]+" "+gDateYear);var previousMonth="";var nextMonth="";var firstMonth=gMonthOffset;var lastMonth=gMonthOffset;for(var i=0;i<gOtherMonths.length;i++)
{if(gOtherMonths[i].offset==(gMonthOffset+1))
nextMonth=gOtherMonths[i].path;if(gOtherMonths[i].offset==(gMonthOffset-1))
previousMonth=gOtherMonths[i].path;if(gOtherMonths[i].offset<firstMonth)
firstMonth=gOtherMonths[i].offset;if(gOtherMonths[i].offset>lastMonth)
lastMonth=gOtherMonths[i].offset;}
if(previousMonth!="")
document.getElementById("prevMonthLink").href=previousMonth;else
clearElement(document.getElementById("prevMonthLink"));if(nextMonth!="")
document.getElementById("nextMonthLink").href=nextMonth;else
clearElement(document.getElementById("nextMonthLink"));document.getElementById("prevMonthLink").onclick=function(){window.location.href=this.href+"#"+gMode;return false;}
document.getElementById("nextMonthLink").onclick=function(){window.location.href=this.href+"#"+gMode;return false;}
tbody=document.getElementById("calendarMonthsBody");clearElement(tbody);for(var i=firstMonth,j=0,c=gDateMonth+firstMonth-gMonthOffset,cYear=gDateYear;i<=lastMonth;i++,j++,c++)
{while(c<0)
{c+=12;cYear--;}
while(c>=12)
{c-=12;cYear++;}
if(j==0)
tr=document.createElement("tr");td=document.createElement("td");a=document.createElement("a");a.href="#";for(var k=0;k<gOtherMonths.length;k++)
{if(i==gOtherMonths[k].offset)
a.href=gOtherMonths[k].path+"#month";}
td.style.width="33%";if(i==gMonthOffset)
td.className="on";setElementText(a,gCalendarMonthsShort[c]+" "+(cYear.toString()).substring(2));td.appendChild(a);tr.appendChild(td);if(j==2)
{tbody.appendChild(tr);j=-1;}}
if(j>0)
{for(;j<3;j++)
{td=document.createElement("td");td.style.width="33%";tr.appendChild(td);}
tbody.appendChild(tr);}
tbody=document.getElementById("calendarBody");clearElement(tbody);var date=new Date();date.setFullYear(gDateYear,gDateMonth,1);var d=0-date.getDay()+1;while(d<=gDateDaysInMonth)
{tr=document.createElement("tr");for(var i=0;i<7;i++,d++)
{td=document.createElement("td");if(d>0&&d<=gDateDaysInMonth)
{td.id="date"+d;a=document.createElement("a");a.href="#";a.onclick=function(){gDateDay=parseInt(this.parentNode.id.substring(4),10);setCalendarMode(gMode,true);return false;};setElementText(a,d);td.appendChild(a);}
tr.appendChild(td);}
tbody.appendChild(tr);}
var hash=window.location.hash.substring(1);if(hash=="month")
setCalendarMode("month",true);else if(hash=="week")
setCalendarMode("week",true);else
setCalendarMode("day",true);}
function setCalendarMode(mode,forceUpdate)
{if(mode==gMode&&!forceUpdate)
return;if(mode=="day")
{document.getElementById("calendarDay").className="on";document.getElementById("calendarWeek").className="off";document.getElementById("calendarMonth").className="off";resetCalendarLeftColumn("Events For:");addCalendarLeft(true,gDateDay,gDateMonth,gDateYear);if(gMode!="day"&&gMode!="week")
showCalendarDays();highlightDay();}else if(mode=="week"){document.getElementById("calendarDay").className="off";document.getElementById("calendarWeek").className="on";document.getElementById("calendarMonth").className="off";var date=new Date;date.setFullYear(gDateYear,gDateMonth,gDateDay);var first=gDateDay-date.getDay();var last=first+6;if(first<1)
{var m,y;m=gDateMonth-1;y=gDateYear;if(m<1)
{m+=12;y--;}
var date2=new Date;date2.setFullYear(y,m+1,0);var daysInMonth=date2.getDate();resetCalendarLeftColumn("Events For "+gCalendarMonths[m]+" "+(daysInMonth+first)+" - "+gCalendarMonths[gDateMonth]+" "+last);}
else if(last>gDateDaysInMonth)
{var m,y;m=gDateMonth+1;y=gDateYear;if(m>12)
{m-=12;y++;}
resetCalendarLeftColumn("Events For "+gCalendarMonths[gDateMonth]+" "+first+" - "+gCalendarMonths[m]+" "+(last-gDateDaysInMonth));}
else
resetCalendarLeftColumn("Events For "+gCalendarMonths[gDateMonth]+" "+first+" - "+last);for(var i=first;i<=last;i++)
{if(i<1)
{var m,y;m=gDateMonth-1;y=gDateYear;if(m<1)
{m+=12;y--;}
var date2=new Date;date2.setFullYear(y,m+1,0);var daysInMonth=date2.getDate();addCalendarLeft(false,daysInMonth+i,m,y);}
if(i>gDateDaysInMonth)
{var m,y;m=gDateMonth+1;y=gDateYear;if(m>12)
{m-=12;y++;}
addCalendarLeft(false,i-gDateDaysInMonth,m,y);}
else
addCalendarLeft(false,i,gDateMonth,gDateYear);}
if(gMode!="day"&&gMode!="week")
showCalendarDays();highlightWeek();}else if(mode=="month"){document.getElementById("calendarDay").className="off";document.getElementById("calendarWeek").className="off";document.getElementById("calendarMonth").className="on";resetCalendarLeftColumn("Events for "+gCalendarMonths[gDateMonth]);for(var i=1;i<=gDateDaysInMonth;i++)
addCalendarLeft(false,i,gDateMonth,gDateYear);if(gMode!="month")
showCalendarMonths();}
gMode=mode;}
function showCalendarDays()
{document.getElementById("calendarTable").style.display="block";document.getElementById("calendarMonths").style.display="none";}
function showCalendarMonths()
{document.getElementById("calendarTable").style.display="none";document.getElementById("calendarMonths").style.display="block";}
function highlightDay()
{for(var i=1;i<=gDateDaysInMonth;i++)
{if(i==gDateDay)
document.getElementById("date"+i).className="on";else
document.getElementById("date"+i).className="off";}}
function highlightWeek()
{var date=new Date;date.setFullYear(gDateYear,gDateMonth,gDateDay);var s=gDateDay-date.getDay();for(var i=1;i<=gDateDaysInMonth;i++)
{if(i>=s&&i<(s+7))
document.getElementById("date"+i).className="on";else
document.getElementById("date"+i).className="off";}}
function resetCalendarLeftColumn(text)
{var leftColumn=document.getElementById("calendarLeft");clearElement(leftColumn);var heading=document.createElement("h3");setElementText(heading,text);leftColumn.appendChild(heading);}
function addCalendarLeft(force,d,m,y)
{var dateStr=y+"-";if(m<9)
dateStr+="0";dateStr+=(m+1)+"-";if(d<10)
dateStr+="0";dateStr+=d;var found=false;for(var i=0;i<gCalendarEvents.childNodes.length&&!found;i++)
{if(gCalendarEvents.childNodes[i].nodeName=="event")
{if(safeGetValue(gCalendarEvents.childNodes[i].childNodes[1])==dateStr)
found=true;}}
if(!found&&!force)
return;var date=new Date();date.setFullYear(y,m,d);var leftColumn=document.getElementById("calendarLeft");var heading2=document.createElement("h2");setElementText(heading2,gCalendarDays[date.getDay()]+", "+gCalendarMonths[date.getMonth()]+" "+date.getDate()+", "+date.getFullYear());leftColumn.appendChild(heading2);var heading5=document.createElement("h5");var heading5img=document.createElement("img");heading5img.src=gGIFpath;heading5img.alt="";heading5.appendChild(heading5img);leftColumn.appendChild(heading5);if(!found)
{var div=document.createElement("div");setElementText(div,"There are no events for this date.")
leftColumn.appendChild(div);return;}
for(var i=0;i<gCalendarEvents.childNodes.length;i++)
{if(gCalendarEvents.childNodes[i].nodeName=="event")
{if(safeGetValue(gCalendarEvents.childNodes[i].childNodes[1])==dateStr)
{addCalendarLeftEvent(force,i,safeGetValue(gCalendarEvents.childNodes[i].childNodes[0]),safeGetValue(gCalendarEvents.childNodes[i].childNodes[2]),safeGetValue(gCalendarEvents.childNodes[i].childNodes[4]),safeGetValue(gCalendarEvents.childNodes[i].childNodes[5]));}}}}
function addCalendarLeftEvent(force,id,title,begin,end,location)
{var leftColumn=document.getElementById("calendarLeft");var heading4=document.createElement("h4");setElementText(heading4,title);leftColumn.appendChild(heading4);var div=document.createElement("div");div.style.marginBottom="2px";setElementText(div,calendarFormatTime(begin)+" - "+calendarFormatTime(end)+": "+location)
leftColumn.appendChild(div);var div=document.createElement("div");div.innerHTML=safeGetValue(gCalendarEvents.childNodes[id].childNodes[6]);leftColumn.appendChild(div);if(gCalendarEvents.childNodes[id].childNodes[7].childNodes.length)
{var div=document.createElement("div");var a=document.createElement("a");setElementText(a,"Click here for more information");a.href="#";for(var j=0;j<gCalendarEvents.childNodes[id].childNodes[7].childNodes.length;j++)
{if(gCalendarEvents.childNodes[id].childNodes[7].childNodes[j].nodeName=="website")
a.href=gCalendarEvents.childNodes[id].childNodes[7].childNodes[j].firstChild.nodeValue;if(gCalendarEvents.childNodes[id].childNodes[7].childNodes[j].nodeName=="websitelabel")
setElementText(a,gCalendarEvents.childNodes[id].childNodes[7].childNodes[j].firstChild.nodeValue);}
div.style.marginTop="14px";div.appendChild(a);leftColumn.appendChild(div);}
var br1=document.createElement("br");leftColumn.appendChild(br1);var br2=document.createElement("br");leftColumn.appendChild(br2);}
function calendarFormatTime(t)
{var local=t.substring(0,8);var parts=local.split(":");var am=true;var hour=parseInt(parts[0],10);var minute=parseInt(parts[1],10);var second=parseInt(parts[2],10);if(hour>12)
{hour-=12;am=false;}else if(!hour)
hour=12;else if(hour==12)
am=false;var result=hour;if(minute)
result+=":"+minute;if(second)
result+=":"+second;if(am)
result+="am";else
result+="pm";return result;}
function safeGetValue(n)
{return n.firstChild?n.firstChild.nodeValue:"";}
function setElementText(o,t)
{var text=document.createTextNode(t);while(o.firstChild)
o.removeChild(o.firstChild);o.appendChild(text);}
function clearElement(o)
{while(o.firstChild)
o.removeChild(o.firstChild);}