var storedDates = [];
//YAHOO.namespace("bburg.calendar");

var OSACalendar = Class.create({
    initialize: function(calId,calContainer) {
	  this.storedDates = $A();
	  this.cal = new YAHOO.widget.Calendar(calId,calContainer,{ 
														pagedate: this.getStartMonth(),
														selected: this.getStartDate()}
														); 	
	  this.cal.selectEvent.subscribe(		this.onEventCalSelect, 		 this.cal, true);
	  this.cal.changePageEvent.subscribe(	this.onChangePageEvent,   	 this.cal, true);
	  this.cal.addRenderer(				    this.getStartHighlighted(),  this.cal.renderCellStyleHighlight1); 		    
	  this.cal.master = this;
	  var master = this;
	  this.render();
    },
  
    getStartDate: function() {
      return $('startDateForCalendar').innerHTML;	
    },

    getStartMonth: function() {
	  var date = $('startDateForCalendar').innerHTML;
	  var month = date.split("/")[0];
	  var year = date.split("/")[2];
 	  return month + '/' + year;
    },

    render: function(){
	  this.cal.render();	
    },

    onEventCalSelect : function(type,args,obj) {
	  master = this.master;	
	  window.location = "/events/for_day/" + String(args[0]).split(",").join("/");
    },

    onChangePageEvent : function(type,args,obj) {
	  master = this.master;
	  var month = master.getMonth();
	  var year = master.getYear();
	  master.highlightEventDates(year + '/' + month);
    },
	
	getStartHighlighted: function(){
		var highlightDates =  $('startHighlighted').innerHTML;	
		var month = this.getMonth();
		var year = this.getYear();
		this.storedDates[year + '/' + month] = highlightDates;
		return highlightDates;
	},

	getMonth: function(){
		var month = this.cal.cfg.getProperty("pagedate").getMonth() + 1;
		if (month.toString().length == 1) {
			month = "0" + month;
		}
		return month;
	},

	getYear: function(){
		var year = this.cal.cfg.getProperty("pagedate").getFullYear();
		return year;
	},

	highlightEventDates: function(dateString){		
		var master = this;
		if(this.storedDates[dateString] != null){
			//this.cal.addRenderer("4/22", this.cal.renderBodyCellRestricted);
			this.cal.addRenderer(this.storedDates[dateString], this.cal.renderCellStyleHighlight1);
			 		    
			this.render();		
		}else{
			new Ajax.Request('/get_events/' + dateString,{
				method:'get',
			    onSuccess: function(transport){
			    	highlightDates = transport.responseText || "";
				  	master.storedDates[dateString] = highlightDates;
				  	master.cal.addRenderer(highlightDates, master.cal.renderCellStyleHighlight1); 		    
				  	master.render();	    
				}
			});		
		}
	}
});

YAHOO.util.Event.onDOMReady(initCalendars);
function initCalendars(){	
	var mainCalender = 		new OSACalendar("eventcal","calendar");
	//var addFormCalendar = 	new AddFormCalendar("addFormcal","addFormCalContainer");
	//var editFormCalendar =  new EditFormCalendar("editFormcal","editFormCalContainer");

}

