function pageInit(){
	if(calendarData.time_start.m != ""){
		renderCalendar(calendarData.time_start.m,calendarData.time_start.y);
	}
}

function swapMonth(dir,mode){
	
	var tm = calendarData.current_view.m + dir;
	var ty = calendarData.current_view.y;	

	if(tm == 13){
		tm = 1;
		ty++;
	}
	if(tm == 0){
		tm = 12;
		ty--;
	}
	
	renderCalendar(tm,ty);
	
}


function viewDate(d){
	
	//var t = (addZero(cal.month) + "/" + addZero(d) + "/" + cal.year);
	//window.location = t;

}

function stripZero(n){
	if(n < "10"){
		return n.charAt(1);
	}else{
		return n;
	}
}

function addZero(n){
	if(parseInt(n) < 10){
		return "0"+n;
	}else{
		return n;
	}
}

function removeElement(div) {
	var t = document.getElementById(div);
	t.parentNode.removeChild(t);
}

function inRange(day){
	
	var ret = false;
		
	switch(calendarData.time_period){
	
		case 'day':
			
			if((calendarData.time_start.m == calendarData.current_view.m) &&
			   (calendarData.time_start.y == calendarData.current_view.y) &&
			   (calendarData.time_start.d == day)){			   
				   ret = true;			   
			   }
		
		break;
		
		case 'week':
		
			
			if(calendarData.time_start.m != calendarData.time_end.m){
				//in start month		
				if((calendarData.current_view.m == calendarData.time_start.m) && (calendarData.current_view.y == calendarData.time_start.y)){
					
					if(day >= calendarData.time_start.d){
						ret = true;
						
					}
					
				}
				
				//in end month
				if((calendarData.current_view.m == calendarData.time_end.m) && (calendarData.current_view.y == calendarData.time_end.y)){
				
					if(day <= calendarData.time_end.d){
						ret = true;
						
					}
				
				}
			
			}else{
				if(calendarData.current_view.m == calendarData.time_start.m){
					if(day >= calendarData.time_start.d && day <= calendarData.time_end.d){
						ret = true;
					}
				}
			
			}
			
			
		break;
		
		case 'month':
			
			if((calendarData.time_start.m == calendarData.current_view.m) &&
			   (calendarData.time_start.y == calendarData.current_view.y)){
			   		ret = true;
			   }
					
		break;
	
	}
	
	return ret;
	
}

function markupCalendar(m,y){
	
	var todaydate=new Date();
	(m == null) ? m = todaydate.getMonth()+1: m = m;
	(y == null) ? y = todaydate.getFullYear(): y = y;
	
	calendarData.current_view = {m: m, y: y};
	
	var mn=['January','February','March','April','May','June','July','August','September','October','November','December'];
	var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
	
	var oD = new Date(y, m-1, 1); //DD replaced line to fix date bug when current day is 31st
	oD.od=oD.getDay()+1; //DD replaced line to fix date bug when current day is 31st
		
	var scanfortoday=(y==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added
			
	dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
	
	var t='<div class="control_box"><a class="nav_left" onclick="swapMonth(-1);">Prev</a>';
	t+='<span class="title">'+mn[m-1]+' - '+y+'</span><a class="nav_right" onclick="swapMonth(1);">Next</a></div>';
	t+='<table class="calendar" cols="7" cellpadding="0" border="0" cellspacing="0"><tr align="center">';
	
	for(s=0;s<7;s++){
		t+='<td class="daysofweek">'+"SMTWTFS".substr(s,1)+'</td>';
	}
	
	
	t+='</tr><tr align="center">';
	
	var yA = calendarData["y_"+y];
	if(yA != undefined){
		var mA = yA["m_"+m];
	}
	
	//
	
	for(i=1;i<=42;i++){
		var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
		
		var onclick = "";
		var css_class = 'class="';
				
		
				
		t+= '<td ';
		
		
		//are we a day?
		if(x != '&nbsp;'){
			
			var href = "/calendar/?type=" + calendarData.type + "&start_date=" + y + "-" + addZero(m) + "-"+ addZero(x) + "&time_period=" + calendarData.time_period;
			
			css_class+= 'days ';
			
			var active = inRange(x);
			//are we active
			if(active){
				css_class+= 'active ';
			}			
			
			for(j=0;j<calendarData.events.length;j++){
		
				var evt = calendarData.events[j];
				if((evt[0] == y) && (evt[1] == m) && (evt[2] == x)){
					css_class+= 'event ';		
				}
			
			}
								
			//print out day information
			
			t+= css_class + '">';
			t+= '<a href="' + href + '">';
						
			//are we today
			if (x==scanfortoday){
				t+= '<span class="today">'+x+'</span>';
			}else{
				t+= x;
			}
			
			t+= '</a></td>';			
		
		}else{
			//we are a blank day
			t+= '>' + x + '</td>';
		}
		
		if(((i)%7==0)&&(i<36))t+= '</tr><tr align="center">';
	}
	t+= '</tr></table>';
	return t;

}

function renderCalendar(m, y){
	
	var t = markupCalendar(m,y);
		
	var mydiv = document.getElementById("event_calendar");
	mydiv.innerHTML = t;
	
}


YAHOO.util.Event.addListener(window, 'load', pageInit);
