var $c21events = {

  startup: function() {
 
    var rightDiv = document.getElementById('right');

    if (rightDiv) {
      $.get('/rss/c21calendar.xml', '', function(data) {
        if (data && data.documentElement) $c21events.parseCalendarRSS(data.documentElement, rightDiv);
      }, 'xml');
    }



  },
  
  
  getMonthString: function(i) {
    monthString = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
    
    return monthString[i - 1];
  },

  getDayOfWeek: function(month, day, year) {
    var dow= ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];

    var theDate = new Date();

    theDate.setDate(day); /* 1 - 31 */
    theDate.setFullYear(year);
    theDate.setMonth(month); /* 0 - 11 */

    return dow[theDate.getDay()];

  },

  parseCalendarRSS: function(el, calendarDiv) {    
    var currdate = new Date();
    var today_day = currdate.getDate();
    var today_year = currdate.getFullYear();
    var today_month = currdate.getMonth() + 1;
    var today_month_string = '';
    
    
    if (today_month=="1") today_month_string="January";
    if (today_month=="2") today_month_string="February";
    if (today_month=="3") today_month_string="March";
    if (today_month=="4") today_month_string="April";
    if (today_month=="5") today_month_string="May";
    if (today_month=="6") today_month_string="June";
    if (today_month=="7") today_month_string="July";
    if (today_month=="8") today_month_string="August";
    if (today_month=="9") today_month_string="September";
    if (today_month=="10") today_month_string="October";
    if (today_month=="11") today_month_string="November";
    if (today_month=="12") today_month_string="December";
    
    var elToday = document.getElementById('today');
    if (elToday) elToday.appendChild(document.createTextNode('Events Calendar - ' + today_month_string + ' ' + today_day + ', ' + today_year));
  
    var items = el.getElementsByTagName('item');
    
    var doOnce = true;
    var hasOneEvent = false;
    var table = document.createElement('table');

    table.id = 'eventcalendar';

    var tablebody = document.createElement('tbody');
    
    
    var previousDay = 0;
    var previousMonth = 0;
    
    table.appendChild(tablebody);

	var totalCount = 0;
    
    for (var i = items.length; i > 0; i--) {    
      var item = items[i - 1];
      
      
      var item_day, item_month, item_year, item_desc, item_start;
  
      if (el.getElementsByTagNameNS) {
        var bceNS = 'http://www.bc.edu/rss/1.0/bcevents/';
        item_day = item.getElementsByTagNameNS(bceNS, 'day')[0].firstChild.nodeValue;
        item_month = item.getElementsByTagNameNS(bceNS, 'month')[0].firstChild.nodeValue;
        item_year = item.getElementsByTagNameNS(bceNS, 'year')[0].firstChild.nodeValue;
        item_start = item.getElementsByTagNameNS(bceNS, 'gmt_start')[0].firstChild.nodeValue;
      } else {
        item_day = item.getElementsByTagName('bce:day')[0].firstChild.nodeValue;
        item_month = item.getElementsByTagName('bce:month')[0].firstChild.nodeValue;
        item_year = item.getElementsByTagName('bce:year')[0].firstChild.nodeValue;
        item_start = item.getElementsByTagName('bce:gmt_start')[0].firstChild.nodeValue;
      }
     

      var dow = $c21events.getDayOfWeek(parseInt(item_month) - 1, item_day, item_year);

      if ((parseInt(item_month) >= parseInt(today_month) && parseInt(item_day) >= parseInt(today_day)) || (parseInt(item_month) > parseInt(today_month))) {
        hasOneEvent = true;
		totalCount++;
        if (doOnce) {
		  if (document.getElementById('all-events')) {
			calendarDiv.insertBefore(table, document.getElementById('all-events'))
		  } else {
            calendarDiv.appendChild(table);
		  }
          doOnce = false;
        }
        
  
        var dStart = new Date();
        dStart.setTime(parseInt(item_start) * 1000);
        var hours = dStart.getHours();
  
        var minutes = '00' + dStart.getMinutes();
        
        if (minutes.length == 4) {
          minutes = minutes.substr(2, 2);   
        } else {
          minutes = minutes.substr(1, 2);      
        }
  
        var ampm = '';        
        if (hours >= 12) {
          ampm = 'pm';
          if (hours > 12) {
            hours = hours - 12;
          }
        } else {
          ampm = 'am';
        }
        
        
        var tr, td1, td2;
          
        if (item_month != previousMonth || item_day != previousDay) {

          tr = document.createElement('tr');
          td1 = document.createElement('td');
          
          td1.colSpan = 2;
          td1.colspan = 2;
          td1.className = 'date';
          td1.appendChild(document.createTextNode(dow + ', ' + $c21events.getMonthString(parseInt(item_month)) + ' ' + item_day))
          
          tr.appendChild(td1);
          
          tablebody.appendChild(tr);
        
          previousMonth = parseInt(item_month);
          previousDay = parseInt(item_day);
        } 
          
          
        tr = document.createElement('tr');
        td1 = document.createElement('td');
        td2 = document.createElement('td');   
        
        var timeStr = hours + ':' + minutes + ampm;
        
        if (timeStr == '0:00a') {
          timeStr = 'tba';
        }
        td1.appendChild(document.createTextNode(timeStr));
        td1.className = 'time';
        td2.className = 'text';
        
        var a = document.createElement('a');
        a.href = item.getElementsByTagName('link')[0].firstChild.nodeValue.replace(/&amp;/g, '&');
        a.appendChild(document.createTextNode(item.getElementsByTagName('title')[0].firstChild.nodeValue));
  
        td2.appendChild(a);
        tr.appendChild(td1);
        tr.appendChild(td2);


        if (i > 1 && items[i - 2]) {

          var next_item_day, next_item_month, next_item_year;

          if (el.getElementsByTagNameNS) {
            next_item_day = items[i - 2].getElementsByTagNameNS(bceNS, 'day')[0].firstChild.nodeValue;
          } else {
            next_item_day = items[i - 2].getElementsByTagName('bce:day')[0].firstChild.nodeValue;
          }

          if (next_item_day == item_day) {
             tr.className = 'item_separator';
          }
     
        }



        tablebody.appendChild(tr);
      }
      
		if (totalCount == 5) {
		  break;
		}

    }
    
    if (hasOneEvent == false) {
      var p = document.createElement('p');
      p.appendChild(document.createTextNode('No Events'));

		if (document.getElementById('all-events')) {
			calendarDiv.insertBefore(p, document.getElementById('all-events'))
		} else {
			calendarDiv.appendChild(p);
		}

    }


  
  }





}


$(document).ready($c21events.startup);