function EventsCalendar() {  
this.diaryDiv = null;
this.calendarDiv = null;
this.setDiaryDiv = function(htmlEl) {
this.diaryDiv = htmlEl;
};
this.getDiaryDiv = function() {
if (!this.diaryDiv) {
this.setDiaryDiv(getElementsByClass('diary', this.getCalendarDiv())[0]);
}
return this.diaryDiv;
};
this.setCalendarDiv = function(htmlEl) {
this.calendarDiv = htmlEl;
};
this.getCalendarDiv = function() {
if (!this.calendarDiv) {
this.setCalendarDiv(document.getElementById("calendar"));
}
return this.calendarDiv;
};
this.doMonth = function(month, year) {
var url = "http://www.bulldogclub.com/ajax/calendar/" + month + "/" + year + ".xml";
this.sendRequest(url);
};
this.doMonthByProperty = function(month, year, property) {
var url = "http://www.bulldogclub.com/ajax/property-calendar/" + property + "/" + month + "/" + year + ".xml";
this.sendRequest(url);
};
this.doMonthByRegion = function(month, year, region) {
var url = "http://www.bulldogclub.com/ajax/region-calendar/" + region + "/" + month + "/" + year + ".xml";
this.sendRequest(url);
};
this.showLoader = function() {
var diary = this.getDiaryDiv();
if (diary) {
diary.className = diary.className + " loading";
}
};
this.hideLoader = function() {
var diary = this.getDiaryDiv();
if (diary) {
diary.className = diary.className.replace(/ loading/, "");
}
};
this.sendRequest = function(url) {
this.showLoader();
var ajax = new Ajax();
ajax.setHandlerErr(this.handleAjaxError);
ajax.doGet(url, this.changeMonth, 'xml');
};
this.changeMonth = function(xml) {
var calendar = eventsCalendar.getCalendarDiv();
deleteChildren(calendar);
var string = getXMLNodeSerialisation(xml);
calendar.innerHTML = string;
eventsCalendar.setDiaryDiv(getElementsByClass('diary', calendar)[0]);
eventsCalendar.hideLoader();
};
this.handleAjaxError = function(resp) {
eventsCalendar.hideLoader();
alert(serverResp(resp));
};
}
var eventsCalendar = new EventsCalendar();