function Calendar(domID){
	this.defaultURL = "ajaxServer.php?m=calendar";
	this.container = YAHOO.util.Dom.get(domID);
	this.loading = YAHOO.util.Dom.get("calendarLoading");
}
Calendar.prototype = {     
	constructor : Calendar,	
	defaultURL : '',
	container : null,
	loading : null,
		
	loadData : function(month){	
		if (sUrl == '' || sUrl == null) var sUrl = this.defaultURL;		
		var XHRcallbacks = {
			cache : false,  
		    success : function (o) {		    		    	
		        try {		        	
		            data = YAHOO.lang.JSON.parse(o.responseText);		                        
		        }
		        catch (x) {
		            //alert("JSON Parse failed!");
		            return;
		        }		        		        	        		               
		    	oCal.refreshCalendar(data);		    	
		    },
			failure : function (o){
				//alert("XHR response: failed. YAHOO.util.Connect.asyncRequest could not transfer requested data.")
			}					    
		}
		jsonPostData = {
			m : month			
		}
		var postData = "d="+YAHOO.lang.JSON.stringify(jsonPostData);
		var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, XHRcallbacks, postData);				
	},
	refreshCalendar : function(data){
	
		/*
		 * Build the title row  
		 */
						
		var titleRow = document.createElement("div");		
		YAHOO.util.Dom.addClass(titleRow, "titlerow");
		var leftPager = document.createElement("div");		
		YAHOO.util.Dom.addClass(leftPager, "pager");
		var rightPager = document.createElement("div");		
		YAHOO.util.Dom.addClass(rightPager, "pager");
		var title = document.createElement("div");		
		YAHOO.util.Dom.addClass(title, "title");
		leftPager.innerHTML = "<a href=\"#\" onclick=\"oCal.loadCalendarPage('prev');return false;\">&lt;</a>"
		rightPager.innerHTML = "<a href=\"#\" onclick=\"oCal.loadCalendarPage('next');return false;\">&gt;</a>"
		title.innerHTML = data.actual_year + ". " + data.actual_month;
		titleRow.appendChild(leftPager);
		titleRow.appendChild(title);
		titleRow.appendChild(rightPager);
		
		/*
		 * Build the weekdays row  
		 */
		 		 		
		var weekdaysRow = document.createElement("div");		
		YAHOO.util.Dom.addClass(weekdaysRow, "row");		
		for (var i in data.weekdays){
			var weekdayCell = document.createElement("div");			
			YAHOO.util.Dom.addClass(weekdayCell, "weekday");
			if (i == 1) YAHOO.util.Dom.addClass(weekdayCell, "weekdayLC");
			if (i == 7) YAHOO.util.Dom.addClass(weekdayCell, "weekdayRC");
			weekdayCell.innerHTML = data.weekdays[i];
			weekdaysRow.appendChild(weekdayCell);			
		}		
		
		/*
		 * Build up the days row  
		 */
		 
		var numDays = 0;
		var daysRow = document.createElement("div");		
		YAHOO.util.Dom.addClass(daysRow, "row");
		for (var i = 0; i < data.blankDays; i++){
			var dayCell = document.createElement("div");			
			YAHOO.util.Dom.addClass(dayCell, "dayBlank");			
			daysRow.appendChild(dayCell);			
		}
		for (var i in data.days){			
			var dayCell = document.createElement("div");
			
			if (typeof(data.days[i]["tP"]) == "object"){
				tooltipUrl = "displayTooltip.inc.php?ok";				
				
				tooltipUrl = tooltipUrl + "&date=" + data.days[i]["tP"]["date"];
				
				dayCell.innerHTML = "<div onmouseout=\"ajax_hideTooltip()\" onmouseover=\"ajax_showTooltip('" + tooltipUrl + "',this);return false\">" + data.days[i]["t"] + "</div>";
				YAHOO.util.Dom.addClass(dayCell, "dayHighlight");
			} else {				
				dayCell.innerHTML = data.days[i]["t"];
				YAHOO.util.Dom.addClass(dayCell, "day");
			}
			if (data.curDay == parseInt(data.days[i]["t"]) && data.curDay != 0) YAHOO.util.Dom.addClass(dayCell, "dayToday");
			daysRow.appendChild(dayCell);
			numDays++;			
		}
		trailBlank = (7-((data.blankDays+numDays) % 7));
		if (trailBlank < 7){
			for (var i = 0; i < trailBlank; i++){
				var dayCell = document.createElement("div");			
				YAHOO.util.Dom.addClass(dayCell, "dayBlank");			
				daysRow.appendChild(dayCell);			
			}
		}
		
		/*
		 * Build up the programs row  
		 */
		
		var programsRow = document.createElement("div");		
		YAHOO.util.Dom.addClass(programsRow, "row");
		for (var i in data.programs){
			var dateCell = document.createElement("div");			
			YAHOO.util.Dom.addClass(dateCell, "pDate");
			dateCell.innerHTML = data.programs[i]["d"];			
			programsRow.appendChild(dateCell);
			var titleCell = document.createElement("div");			
			YAHOO.util.Dom.addClass(titleCell, "pTitle");
			titleCell.innerHTML = "<a href=\"index.php?details&date=" + data.programs[i]["ts"] + "\">" + data.programs[i]["t"] + "</a>";			
			programsRow.appendChild(titleCell);			
		}
		
		/*
		 * Append rows  
		 */
		 
		this.container.innerHTML = "";
		this.container.appendChild(titleRow);
		this.container.appendChild(weekdaysRow);
		this.container.appendChild(daysRow);
		this.container.appendChild(programsRow);
		this.loading.style.display = "none";
	},
	loadCalendarPage : function(page){		
		this.loading.style.display = "block";
		switch (page){
			case "prev":
				this.loadData(data.curMonth-1);
				break;
			case "next":
				this.loadData(data.curMonth+1);
				break;
			default:
				this.loadData(0);
				break;
		}
	}
};	
