var Calendar=function(month,date,year){var today=new Date();this.month=(isNaN(month)||month==null)?today.getMonth():month;this.year=(isNaN(year)||year==null)?today.getFullYear():year;this.date=(isNaN(date)||date==null)?today.getDate():date;}
Calendar.prototype.addMonth=function(){this.month=this.month+1==12?0:this.month+1;this.year=this.month==0?this.year+1:this.year;}
Calendar.prototype.subtractMonth=function(){this.month=this.month-1==-1?11:this.month-1;this.year=this.month==11?this.year-1:this.year;}
Calendar.prototype.setStart=function(month,date,year){var today=new Date();this.month=(isNaN(month)||month==null)?today.getMonth():month;this.year=(isNaN(year)||year==null)?today.getFullYear():year;this.date=(isNaN(date)||date==null)?today.getDate():date;}
Calendar.prototype.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Calendar.prototype.monthLabels=['January','February','March','April','May','June','July','August','September','October','November','December']
Calendar.prototype.dayLabels=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];Calendar.prototype.retrieveMonth=function(month){return month==null?this.monthLabels[this.month]:this.monthLabels[month];}
Calendar.prototype.viewDate=function(format){if(format=="y"){var monthName=this.retrieveMonth(this.Month);var dateName=this.date;var year=this.year;return monthName+" "+dateName+", "+year;}else{var theMonth=this.month+1;return theMonth+"-"+this.date+"-"+this.year;}}
Calendar.prototype.getDaysInMonth=function(month,year){if(month==null&&year==null){month=this.month;year=this.year;}
if((month==1)&&(year%4==0)&&((year%100!=0)||(year%400==0))){return 29;}else{return this.daysInMonth[month];}}
Calendar.prototype.drawCalendar=function(){var firstDay=new Date(this.year,this.month,1);var startingDay=firstDay.getDay();var monthLength=this.daysInMonth[this.month];if(this.month==1){if((this.year%4==0&&this.year%100!=0)||this.year%400==0){monthLength=29;}}
var monthName=this.monthLabels[this.month]
var html='<table cellspacing="0" class="calendar-table">';html+='<tr><th colspan="7">';html+=monthName+"&nbsp;"+this.year;html+='</th></tr>';html+='<tr class="calendar-header">';for(var i=0;i<=6;i++){html+='<td class="calendar-header-day">';html+=this.dayLabels[i];html+='</td>';}
html+='</tr><tr>';var day=1;for(var i=0;i<9;i++){for(var j=0;j<=6;j++){html+='<td class="calendar-day">';if(day<=monthLength&&(i>0||j>=startingDay)){html+='<a href="#">'+day+'</a>';day++;}
html+='</td>';}
if(day>monthLength){break;}else{html+='</tr><tr>';}}
html+='</tr></table>';return html;}
function addLoadEvent(func){var oldonload=window.onload;if(typeof window.onload!='function'){window.onload=func;}else{window.onload=function(){oldonload();func();}}}
var createCalendar={setContents:function(calendar){var holder=document.getElementById("calendar");holder.innerHTML=calendar.drawCalendar();var theNext=document.createElement("a");theNext.setAttribute("id","next");theNext.setAttribute("href","#");var nextText=document.createTextNode("Next >>");theNext.appendChild(nextText);var thePrev=document.createElement("a");thePrev.setAttribute("id","prev");thePrev.setAttribute("href","#");var prevText=document.createTextNode("<< Prev");thePrev.appendChild(prevText);holder.appendChild(thePrev);holder.appendChild(theNext);},getTarget:function(x){x=x||window.event;return x.target||x.srcElement;},setData:function(resp){var main=document.getElementById("events");main.innerHTML=resp;},init:function(){var mine=new Calendar();var holder=document.getElementById("calendar");holder.innerHTML=mine.drawCalendar();var theNext=document.createElement("a");theNext.setAttribute("id","next");theNext.setAttribute("href","#");var nextText=document.createTextNode("Next >>");theNext.appendChild(nextText);var thePrev=document.createElement("a");thePrev.setAttribute("id","prev");thePrev.setAttribute("href","#");var prevText=document.createTextNode("<< Prev");thePrev.appendChild(prevText);holder.appendChild(thePrev);holder.appendChild(theNext);holder.onclick=function(e){var target=createCalendar.getTarget(e);if(target.nodeName==="A"){var theId=target.id;if(theId=="next"){mine.addMonth();createCalendar.setContents(mine);return false;}else if(theId=="prev"){mine.subtractMonth();createCalendar.setContents(mine);return false;}else{var main=document.getElementById("events");main.innerHTML="<img src='images/loading.gif' alt='Loading'/>";var theDay=target.innerHTML;mine.setStart(mine.month,theDay,mine.year);var theMonth=mine.month+1;var request = new ajaxObject("retrieveEvents.asp", createCalendar.setData);request.update("m="+theMonth+"&d="+theDay+"&y="+mine.year);return false;}}}}}
addLoadEvent(createCalendar.init);