var RNCalendarURL= 'http://www.oberlinchamber.org/events/xml-';
var RNCalendarURLC= 'http://www.oberlinchamber.org/events.html?';
var RNCalendarEvents = {};
var RNCalendarNow=new Date();
var RNCalendarCM=RNCalendarNow.getMonth()+1;
var RNCalendarCY=RNCalendarNow.getFullYear();

function RNCalendarHTTPRequest() {
	try { return new XMLHttpRequest(); } catch(e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch(e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch(e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
	return null;
}

function RNCalendarResponse(h) {
	var d = h.responseXML;
	if(d) {
		var e=d.getElementsByTagName('Event');
		if(e) {
			RNCalendarEvents = {};
			for(var i = 0; i < e.length; i++) {
				RNCalendarEvents[e[i].firstChild.nodeValue] = e[i].getAttribute('count'); 
			}			
		}
	}
}

function RNCalendarSend(year) {
	var h=RNCalendarHTTPRequest();
	if(h) {
		h.open("GET", RNCalendarURL+year+".html", true);
		h.onreadystatechange = function() {
			if(h.readyState == 4 && h.status == 200) {
				RNCalendarResponse(h);
			}
		};
		h.send(null);		
	}
}

function RNCalendarDay(m, d, y) {	
	if(RNCalendarEvents[y+"-"+((m<10)?'0':'')+m+"-"+((d<10)?'0':'')+d]) {
		return true;
	}
	return false;
}

function RNCalendarFillYears() {
	var x=document.getElementById('rncalmYers');
	if(x) {
		var r='';
		for(var i=RNCalendarCY-2; i<RNCalendarCY+3; i++) {
			if(i==RNCalendarCY) {
				r+='		<div class="yearentry" style="border:#D9A899 3px solid; color:#000;">'+i+'</div>';
			} else {
				r+='		<div class="yearentry"><div><a href="#" onClick="return RNCalendarYClick(this, '+i+');">'+i+'</a></div></div>';
			}
		}
		x.innerHTML=r;
	}	
}

function RNCalendarFillDays() {

	var x=document.getElementById('rncalmDays');
	if(x) {
		var r='';
		var prvmonth = new Date(RNCalendarCY,RNCalendarCM-2,1);
		var prvmonthdays = new Date(RNCalendarCY,RNCalendarCM-2,0).getDate(); 
		var selmonth = new Date(RNCalendarCY,RNCalendarCM-1,1);
		//var selmonthdays = new Date(RNCalendarCY,RNCalendarCM-1,0).getDate();
		var selmonthdays = new Date(RNCalendarCY,RNCalendarCM, 0).getDate();
		var nextmonth = new Date(RNCalendarCY,RNCalendarCM,1);
				
		var e=0;
		var d=selmonth.getDay();

		var month = prvmonth.getMonth() + 1;
		var day = prvmonth.getDate();
		var year = prvmonth.getFullYear();
		var i=0;
		
		if(d>0) {
			for(i=prvmonthdays-d+1; i<prvmonthdays+1; i++) {
				if(RNCalendarDay(month,i,year)) {
					//r+='<div class="previous_month calendar_event"><a href="#" onClick="return RNCalendarDClick(this, '+month+' ,'+i+', '+year+')">'+i+'</a></div>';
					r+='<div class="previous_month">&nbsp;</div>';
				} else {
					//r+='<div class="previous_month">'+i+'</div>';					
					r+='<div class="previous_month">&nbsp;</div>';					
				}
				e++;
			}
		}
		
		var g=e;
		
		month = selmonth.getMonth() + 1;
		day = selmonth.getDate();
		year = selmonth.getFullYear();
		
		for(i=1; i<selmonthdays+1; i++) {
			if(RNCalendarDay(month,i,year)) {
				r+='<div class="'+((e==0)?'weekend ':'')+'calendar_event"><a href="#" onClick="return RNCalendarDClick(this, '+month+' ,'+i+', '+year+')">'+i+'</a></div>';
			} else {
				r+='<div'+((e==0)?' class="weekend"':'')+'>'+i+'</div>';					
			}
			
			if(e>=6) {
				e=0;
			} else {
				e++;
			}
			g++;
		}
		
		month = nextmonth.getMonth() + 1;
		day = nextmonth.getDate();
		year = nextmonth.getFullYear();
		
		if(g<42) {
			g = 42-g+1;
			for(i=1; i<g; i++) {
				if(RNCalendarDay(month,i,year)) {
					//'+((e==0)?'weekend ':'')+'
					//r+='<div class="calendar_event previous_month"><a href="#" onClick="return RNCalendarDClick(this, '+month+' ,'+i+', '+year+')">'+i+'</a></div>';
					//r+='<div class="calendar_event previous_month">&nbsp;</div>';
					r+='<div class="previous_month">&nbsp;</div>';
				} else {
					//r+='<div class="previous_month '+((e==0)?'weekend':'')+'">'+i+'</div>';					
					//r+='<div class="previous_month">'+i+'</div>';					
					r+='<div class="previous_month">&nbsp;</div>';					
				}
			
				if(e>=6) {
					e=0;
				} else {
					e++;
				}
			}
		}		
		x.innerHTML=r;
	}	
}

function RNCalendarM(month, sel) {
	var id='';
	if(month=='Jan' || month==1) {
		id+='Jan';		
	} else if(month=='Feb' || month==2) {
		id+='Feb';		
	} else if(month=='Mar' || month==3) {
		id+='Mar';		
	} else if(month=='Apr' || month==4) {
		id+='Apr';		
	} else if(month=='May' || month==5) {
		id+='May';		
	} else if(month=='Jun' || month==6) {
		id+='Jun';		
	} else if(month=='Jul' || month==7) {
		id+='Jul';		
	} else if(month=='Aug' || month==8) {
		id+='Aug';		
	} else if(month=='Sep' || month==9) {
		id+='Sep';		
	} else if(month=='Oct' || month==10) {
		id+='Oct';		
	} else if(month=='Nov' || month==11) {
		id+='Nov';		
	} else if(month=='Dec' || month==12) {
		id+='Dec';
	}

	var x=document.getElementById('rncalm'+id);
	if(x) {
		if(sel==2){
			x.className ="active_month";
			x.innerHTML=id;
		} else {
			x.className="";
			x.innerHTML='<a href="" onClick="return RNCalendarMClick(this, '+month+')">'+id+'</a>';
		}
	}
	
}

function RNCalendar(id) {
	var x=document.getElementById(id);
	if(x) {

		var r = '<div class="calendar_wrapper">';
		
		// Months
		r+='<div class="calendar_months">';
		r+='	<div id="rncalmJan"></div><div id="rncalmFeb"></div><div id="rncalmMar"></div><div id="rncalmApr"></div><div id="rncalmMay"></div><div id="rncalmJun"></div><div id="rncalmJul"></div><div id="rncalmAug"></div><div id="rncalmSep"></div><div id="rncalmOct"></div><div id="rncalmNov"></div><div id="rncalmDec"></div>';
		r+='</div>';

		// days
		r+='<div class="calendar_inner_border">';
		r+='<div class="calendar_weekname">';
		r+='	<div class="weekend">Sun</div><div>Mon</div><div>Tue</div><div>Wed</div><div>Thu</div><div>Fri</div><div>Sat</div>';
		r+='</div>';		
		r+='<div class="calendar_inner" id="rncalmDays">';

		r+='</div>';

		r+='</div>';
		
		r+='<div class="calendar_year_wrapper">';
		r+='	<div class="year_switcher">';
		r+='		<div class="yearentry year_up"><a href="#" onClick="return RNCalendarYUpClick(this)"><img src="images/year_up.gif" width="22" height="19" alt="year up" /></a></div>';
		
		r+='		<div id="rncalmYers">';
		r+='		</div>';
		
		r+='		<div class="yearentry year_down"><a href="#" onClick="return RNCalendarYDnClick(this)"><img src="images/year_down.gif" width="22" height="19" alt="year down" /></a></div>';
		r+='	</div>'; 
		r+='</div>';
		
		
		x.innerHTML = r;
		
		for(var i=1; i<13; i++) {
			RNCalendarM(i, ((RNCalendarCM==i)?2:0));
		}
		
		RNCalendarFillDays();
		RNCalendarFillYears();
		
	}	
}

function RNCalendarMClick(o, n) {
	
	RNCalendarM(RNCalendarCM, 0);
	RNCalendarM(n, 2);
	RNCalendarCM = n;
	RNCalendarFillDays();
	return false;
}

function RNCalendarDClick(o, m, d, y) {
	window.location = RNCalendarURLC+"m="+m+"&d="+d+"&y="+y;
	return true;
}

function RNCalendarYClick(o, year) {
	RNCalendarCY = year;
	RNCalendarSend(RNCalendarCY);
	RNCalendarM(RNCalendarCM, 0);
	RNCalendarM(1, 2);
	RNCalendarCM = 1;
	RNCalendarFillDays();
	for(var i=1; i<13; i++) {
		RNCalendarM(i, ((RNCalendarCM==i)?2:0));
	}
	RNCalendarFillYears();
	return false;
}

function RNCalendarYUpClick(o) {
	RNCalendarCY--;
	RNCalendarSend(RNCalendarCY);
	RNCalendarM(RNCalendarCM, 0);
	RNCalendarM(1, 2);
	RNCalendarCM = 1;
	RNCalendarFillDays();
	for(var i=1; i<13; i++) {
		RNCalendarM(i, ((RNCalendarCM==i)?2:0));
	}
	RNCalendarFillYears();
	return false;
}

function RNCalendarYDnClick(o) {
	RNCalendarCY++;
	RNCalendarSend(RNCalendarCY);
	RNCalendarM(RNCalendarCM, 0);
	RNCalendarM(1, 2);
	RNCalendarCM = 1;
	RNCalendarFillDays();
	for(var i=1; i<13; i++) {
		RNCalendarM(i, ((RNCalendarCM==i)?2:0));
	}
	RNCalendarFillYears();
	return false;
}

