cal_days_labels=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];cal_months_labels=['January','February','March','April','May','June','July','August','September','October','November','December'];cal_current_date=new Date();todayMonth=cal_current_date.getMonth();todayDay=cal_current_date.getDate();todayYear=cal_current_date.getFullYear();var curMonth;var curYear;var urlPrefix;function Calendar(month,year,url){this.month=(month===''||month==null)?cal_current_date.getMonth():month;this.year=(year===''||year==null)?cal_current_date.getFullYear():year;curMonth=this.month;curYear=this.year;urlPrefix=url;this.html=''}Calendar.prototype.generateHTML=function(){var bd=new Date(this.year,this.month,1);var bc=bd.getDay();var d=new Date(this.year,this.month+1,0);var monthLength=d.getDate();var monthName=cal_months_labels[this.month];var html='<table>';html+='<caption>'+monthName+"&nbsp;"+this.year+'</caption>';html+='<thead><tr class="calendar-nav">';html+='<th><a href="#" onclick="javascript:cal.prevYear(this,\''+urlPrefix+'\'); return false;" title="previous year"><span class="arrow">&#171;</span><span class="mini-bg"></span><span class="mini-bg mini-bg-2"></span></a></th>';html+='<th><a href="#" onclick="javascript:cal.prevMonth(this,\''+urlPrefix+'\'); return false;" title="previous month"><span class="arrow">&#139;</span><span class="mini-bg"></span><span class="mini-bg mini-bg-2"></span></a></th>';html+='<th colspan="3"><a href="#" onclick="javascript:cal.today(this,\''+urlPrefix+'\'); return false;"><span class="arrow">today</span><span class="mini-bg"></span><span class="mini-bg mini-bg-2"></span></a></th>';if(isTodayMonth()){html+='<th class="calendar-nav-off"><div title="next month"><span class="arrow">&#155;</span><span class="mini-bg"></span><span class="mini-bg mini-bg-2"></span></div></th>';html+='<th class="calendar-nav-off"><div title="next year"><span class="arrow">&#187;</span><span class="mini-bg"></span><span class="mini-bg mini-bg-2"></span></div></th>'}else{html+='<th><a href="#" onclick="javascript:cal.nextMonth(this,\''+urlPrefix+'\'); return false;" title="next month"><span class="arrow">&#155;</span><span class="mini-bg"></span><span class="mini-bg mini-bg-2"></span></a></th>';html+='<th><a href="#" onclick="javascript:cal.nextYear(this,\''+urlPrefix+'\'); return false;" title="next year"><span class="arrow">&#187;</span><span class="mini-bg"></span><span class="mini-bg mini-bg-2"></span></a></th>'}html=html+'</tr><tr class="calendar-weekdays">';for(var i=0;i<=6;i++){html+='<th>'+cal_days_labels[i]+'</th>'}html=html+'</tr></thead><tbody><tr>';var day=1;var be=curMonth+1;var bf=curYear;var bh=Math.ceil((monthLength+bc)/7);for(var i=0;i<bh;i++){for(var j=0;j<=6;j++){if(isTodayMonth()&&day==todayDay){html+='<td class="calendar-day-today">'}else{html+='<td>'}if(day<=monthLength&&(i>0||j>=bc)){html+='<a href="'+urlPrefix+be+'%2f'+day+'%2f'+bf+'">'+day+'</a>';day++}else{html+='&nbsp;'}html=html+'</td>'}html=html+'</tr><tr>'}html=html+'</tr></tbody></table>';this.html=html};Calendar.prototype.getHTML=function(){return this.html};Calendar.prototype.today=function(lnk,url){var ba=getCurCal(lnk);var cal=new Calendar('','',url);cal.generateHTML();var bb=cal.getHTML();ba.parentNode.innerHTML=bb};Calendar.prototype.prevMonth=function(lnk,url){var ba=getCurCal(lnk);var prevMonth=curMonth-1<0?11:curMonth-1;var prevYear=curMonth-1<0?curYear-1:curYear;var cal=new Calendar(prevMonth,prevYear,url);cal.generateHTML();var bb=cal.getHTML();ba.parentNode.innerHTML=bb};Calendar.prototype.nextMonth=function(lnk,url){var ba=getCurCal(lnk);var nextMonth=curMonth+1>11?0:curMonth+1;var nextYear=curMonth+1>11?curYear+1:curYear;var cal=new Calendar(nextMonth,nextYear,url);cal.generateHTML();var bb=cal.getHTML();ba.parentNode.innerHTML=bb};Calendar.prototype.prevYear=function(lnk,url){var ba=getCurCal(lnk);var prevYear=curYear-1;var cal=new Calendar(curMonth,prevYear,url);cal.generateHTML();var bb=cal.getHTML();ba.parentNode.innerHTML=bb};Calendar.prototype.nextYear=function(lnk,url){var ba=getCurCal(lnk);var nextYear=curYear+1;var cal;if(nextYear>todayYear){cal=new Calendar('','',url);}else{cal=new Calendar(curMonth,nextYear,url);}cal.generateHTML();var bb=cal.getHTML();ba.parentNode.innerHTML=bb};function getCurCal(lnk){return lnk.parentNode.parentNode.parentNode.parentNode.parentNode.getElementsByTagName('TABLE')[0]}function isTodayMonth(){var bi=curMonth==todayMonth&&curYear==todayYear;return bi}