var net=new Object();
net.READY_STATE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;
net.ContentLoader=function(url,onload,onerror){
	this.url=url;
	this.req=null;
	this.onload=onload;
	this.onerror=(onerror) ? onerror:this.defaultError;
	this.loadXMLDoc(url);
}
net.ContentLoader.prototype={
	loadXMLDoc:function(url){
		if (window.XMLHttpRequest){
			this.req=new XMLHttpRequest();
		} else if (window.ActiveXObject){
			this.req=new ActiveXObject("Microsoft.XMLHTTP");
		}
		if (this.req){
			try{
				var loader=this;
				this.req.onreadystatechange=function(){
					loader.onReadyState.call(loader);
				}
				var keepAliveDate = new Date();
				url += (url.indexOf("?") == -1) ? "?keepAliveParam=" + keepAliveDate.getTime():"&keepAliveParam=" + keepAliveDate.getTime();
				this.req.open('GET',url,true);
				this.req.send(null);
			}catch (err){
				this.onerror.call(this);
			}	
		}
	},
	onReadyState:function(){
		var req=this.req;
		var ready=req.readyState;
		if (ready==net.READY_STATE_COMPLETE) {
			var httpStatus=req.status;
			if(httpStatus==200 || httpStatus==0) {
				this.onload.call(this);
			}else {
				this.onerror.call(this);
			}
		}	
	},
	defaultError:function(){
		alert("Error Retrieving Data!"
			+"\n\nurl: " +this.url
			+"\n\nreadyState: " +this.req.readyState
			+"\n\nstatus: " +this.req.status
			+"\n\nheaders: " +this.req.getAllResponseHeaders()); 
	}
}

/*Code that changes the calendar months in the left column*/
function changeDates(selMonth,selYear){
	void changeCalendar(selMonth,selYear);
	return false;			
}
function changeCalendar(selectedMonth,selectedYear){
	var url = "/CALENDAR.cfm?";
	//Grab the dates
	url += "&Month=" + selectedMonth;
	url += "&Year=" + selectedYear;
	//call the AJax function
	void getCalenderContent(url);			
}
function getCalenderContent(url){	
	var calendarAjax = new net.ContentLoader(url,displayUpdatedCalendar);						
}			
function displayUpdatedCalendar(){
	document.getElementById("calendarDiv").innerHTML = this.req.responseText;
}

/*Code that replaces main header with Calendar header*/
function header(selHeader){
	void changeHeader(selHeader);
	return false;			
}
function changeHeader(selHeader){
	var url = "/getHeader.cfm?";
	//get new header
	url += "&headerImage=" + selHeader;
	//call the AJax function
	void getNewHeader(url);			
}
function getNewHeader(url){	
	var headerAjax = new net.ContentLoader(url,displayUpdatedHeader);						
}			

function displayUpdatedHeader(){
	document.getElementById("headerMain").innerHTML = this.req.responseText;
}

/*Code that changes the events content in the main area of homepage*/
function events(selMonth,selDay,selYear){
	void getEvents(selMonth,selDay,selYear);
	return false;			
}
function getEvents(selectedMonth,selectedDay,selectedYear){
	var url = "/getEvents.cfm?";
	//Grab the dates  month=#LastMonth#&year=#LastYear#
	url += "Month=" + selectedMonth;
	url += "&Day=" + selectedDay;
	url += "&year=" + selectedYear;
	//call the AJax function
	void getCalendarEventsContent(url);			
}
function getCalendarEventsContent(url){	
	var calendarEventsAjax = new net.ContentLoader(url,displayEvents);						
}
function displayEvents(){
	document.getElementById("contentMain").innerHTML = this.req.responseText;
}

