function do_calendar(start_date,end_date) {
   var month=new Array(12);
   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 startDate = new Date(start_date);
   startDate.setDate(1);
   var endDate = new Date(end_date);
   endDate = find_last_day_of_month(endDate);
   var currentDate = new Date(start_date);
   var cal = new String();
   while (currentDate.getTime() <= endDate.getTime()) {
       //alert('Outer loop: ' + currentDate + ' End Date is ' + endDate);
       cal += get_header(month[currentDate.getMonth()] + ' ' + currentDate.getFullYear()); 
       var day_of_month = new Date(currentDate);
       var last_day_of_month = find_last_day_of_month(day_of_month);
       var running_day = 0;
       cal += '<tr class="cal_week">';
       for (var x = 0; x < currentDate.getDay(); x++) {
           cal += '<td width="14%" class="cal_day">&nbsp;</td>';
           running_day++;
       }
       while (day_of_month.getTime() <= last_day_of_month.getTime()) {
           if (running_day > 6) {
              cal += '</tr><tr class="cal_week">';
              running_day = 0;
           }
           var md = day_of_month.getMonth() + 1;
           if (md < 10) {
               md = '0' + md.toString();
           }
           var dd = day_of_month.getDate();
           if (dd < 10) {
               dd = '0' + dd.toString();
           }
           cal += '<td valign="top" width="14%" id="date' + day_of_month.getFullYear() + md + dd + '" class="cal_day"><font size="6">' + day_of_month.getDate() + '</font></td>';
           running_day++;
           day_of_month = find_next_day(day_of_month);
       }
       while (running_day++ < 7) {
           cal += '<td width="14%" class="cal_day">&nbsp;</td>';
       }
       cal += '</tr>';
       currentDate = find_next_month(currentDate);
       cal += '</table>';
   }
   document.getElementById("theCalendar").innerHTML=cal;
}

function get_header(monthYear) {
   var hdr = new String();
   hdr = '<div style="page-break-before: always"><h2>Calendar of Events</h2></div>';
   hdr += '<table class="calendar">';
   hdr += '<tr class="cal_header"><th colspan="7">' + monthYear + '</th></tr>';
   hdr += '<th class="cal_header" align="center" valign="top" width="14%">Sunday</font></th>';
   hdr += '<th class="cal_header" align="center" valign="top" width="14%">Monday</font></th>';
   hdr += '<th class="cal_header" align="center" valign="top" width="14%">Tuesday</font></th>';
   hdr += '<th class="cal_header" align="center" valign="top" width="14%">Wednesday</font></th>';
   hdr += '<th class="cal_header" align="center" valign="top" width="14%">Thursday</font></th>';
   hdr += '<th class="cal_header" align="center" valign="top" width="14%">Friday</font></th>';
   hdr += '<th class="cal_header" align="center" valign="top" width="14%">Saturday</font></th>';
   hdr += '</tr>';
   return hdr;
}

function find_next_day(theDate) {
   var newDate = new Date(theDate);
   //document.write('The date was: ' + newDate);
   var theTime = newDate.getTime();
   //document.write(' The time was: ' + theTime);
   var newTime = theTime + (1000*60*60*26);
   //document.write(' The new time: ' + newTime);
   newDate.setTime(newTime);
   newDate.setHours(0);
   //document.write(' The new date: ' + newDate + '<br>');
   return newDate;
}
   
function find_next_month(theDate) {
   var newDate = find_last_day_of_month(theDate);
   newDate = find_next_day(newDate);
   return newDate;
}

function find_last_day_of_month(theDate) {
   var newDate = new Date(theDate);
   //alert('in last day. newDate = ' + newDate);
   var current_month = newDate.getMonth();
   var new_month = current_month;
   var highest_day = newDate.getDate();
   //alert('in last day. highest_day = ' + highest_day);
   while (new_month == current_month) {
       var highest_day = newDate.getDate();
       //alert('in loop hd= ' + highest_day + ' the date ' + newDate);
       newDate = find_next_day(newDate);
       new_month = newDate.getMonth();
   }
   var returnDate = new Date(theDate);
   returnDate.setDate(highest_day);
   //alert('returning ' + returnDate);
   return returnDate;
}

function add_calendar_item(theDate,theImage,theFlyer,theColor,theText) {
   var newDate = new Date(theDate);
   var md = newDate.getMonth() + 1;
   if (md < 10) {
       md = '0' + md.toString();
   }
   var dd = newDate.getDate();
   if (dd < 10) {
       dd = '0' + dd.toString();
   }
   var dateID = 'date' + newDate.getFullYear() + md + dd;
   var theEl = document.getElementById(dateID);
   if (theEl) {
       var new_content = '<table valign="top" border="0" cellpadding="0" cellspacing="0"><tr>';
       new_content += '<td valign="top">';
       new_content += theEl.innerHTML;
       new_content += '</td><td valign="top">';
       if (theFlyer) {
           new_content += '<a href="calendar/' + theFlyer + '">';
       }
       if (theImage) {
           new_content += '<img src="calendar/' + theImage + '" height="80">';
       }
       if (theFlyer) {
           new_content += '</a>';
       }
       new_content += '</td></tr><td class="cal_day" colspan="2">';
       if (theFlyer) {
           new_content += '<a href="calendar/' + theFlyer + '">';
       }
       if (theText) {
           new_content += '<font color="' + theColor + '">' + theText + '</font>';
       }
       if (theFlyer) {
           new_content += '</a>';
       }
       new_content += '</td></tr></table>';
       theEl.innerHTML = new_content;
   }
}
