function cEventCalendar (iMonth, iDay, iYear) {
  var oCurrentDate=new Date();
  //Month is 0-11 so need to subtract 1 from passed month
  oCurrentDate.setFullYear(iYear,iMonth-1,1);

  this.iMonth = oCurrentDate.getMonth()+1;
  this.iYear = oCurrentDate.getUTCFullYear();
  this.iDay = 1;
  var bLoaded = false;

  /////////////////////////
  // Event Calendar AJAX //
  /////////////////////////
  this.getCalendar = function getCalendar(sNext, iMarketID) {
    this.sNext = sNext;
    http.open('post', 'print_calendar.php');
    http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http.onreadystatechange =   function () {
      if (http.readyState == 4) {
        var res = http.responseText;
        document.getElementById('calendar_div').innerHTML = res;
        if (sNext == 'addCallback' && !bLoaded){
          bLoaded = true;
          getRecentEvents(iMarketID);
        }
      }
    }
    http.send('iMonth=' + this.iMonth + '&iYear=' + this.iYear + '&iMarketID='+iMarketID);
  }

  function getRecentEvents(iMarketID) {
    http.open('post', 'recent_events.php');
    http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http.onreadystatechange = function(){
      if (http.readyState == 4) {
        var res = http.responseText;
        document.getElementById('recent_events_div').innerHTML = res;
        bLoaded = false;
      }
    }
    http.send('iMarketID='+iMarketID);
  }

  this.nextMonth = function nextMonth(iMarketID) {
    oCurrentDate.setMonth(oCurrentDate.getMonth()+1);
    
    //Month is 0-11 so need to add 1 to js month
    this.iMonth = oCurrentDate.getMonth()+1;
    this.iYear = oCurrentDate.getUTCFullYear();
    
    this.getCalendar('None', iMarketID);
  }

  this.previousMonth = function previousMonth(iMarketID) {
    oCurrentDate.setMonth(oCurrentDate.getMonth()-1);
    
    //Month is 0-11 so need to add 1 to js month
    this.iMonth = oCurrentDate.getMonth()+1;
    this.iYear = oCurrentDate.getUTCFullYear();
    
    this.getCalendar('None', iMarketID);
  }

  this.getSingleEvent = function getSingleEvent(iCE_ID) {
    http.open('post', 'list_events.php');
    http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http.onreadystatechange = this.handleSingleEvent;
    http.send('iCE_ID=' + iCE_ID);
  }
  this.handleSingleEvent = function handleSingleEvent() {
    if (http.readyState == 4) {
      var res = http.responseText;
      document.getElementById('event_tab').innerHTML = res;
      setButtons();
    }
  }

  this.getEventList = function getEventList(iDay,iMarketID,iStartRecord) {
    this.iDay = iDay;
    document.getElementById('iStartRecord').value = iStartRecord; //Set the new start record value
    http.open('post', 'list_events.php');
    http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http.onreadystatechange = this.handleSingleEvent;
    http.send('iMonth=' + this.iMonth + '&iDay=' + iDay + '&iYear=' + this.iYear + '&iStartRecord=' + iStartRecord + "&iMarketID=" + iMarketID);
  }
  this.handleSingleEvent = function handleSingleEvent() {
    if (http.readyState == 4) {
      var res = http.responseText;
      document.getElementById('event_tab').innerHTML = res;
      setButtons();
    }
  }

  function setButtons() {
    if (document.getElementById('iStartRecord').value > 0) {
        document.getElementById('spanPrevious').style.display = "block";
      } else {
        document.getElementById('spanPrevious').style.display = "none";
      }
      if (document.getElementById('iCount') && document.getElementById('iCount').value > 3) {
         document.getElementById('spanNext').style.display = "block";
      } else {
        document.getElementById('spanNext').style.display = "none";
    }
  }
}