function addEvent(obj,type,fn) {
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}

function showEventData(e) {
	if (window.event) {
		window.event.cancelBubble=true;
		window.event.returnValue=false;
	}
	if (e.preventDefault) e.preventDefault();
	if (e.stopPropagation) e.stopPropagation();
	var targ=this.parentNode;
	while ((targ) && (targ.nodeName.toLowerCase() != 'td')) targ=targ.parentNode;

	if (targ) {
		var calendardata=document.getElementById('calendardata').getElementsByTagName('td');
		for (var i=0;i<calendardata.length;i++) {
			if (calendardata[i] != targ) {
				if (calendardata[i].className=='active') {
					calendardata[i].className='';
				}
			} else {
				calendardata[i].className='active';
			}
		}

		var day=this;
		while ((day) && (day.nodeType !=3) && (day.hasChildNodes())) {
			day=day.firstChild;
		}
		if ((day) && (day.nodeType==3) && (days[day.nodeValue])) {
			var calendardetail=document.getElementById('minicaldetail');
			while (calendardetail.hasChildNodes()) calendardetail.removeChild(calendardetail.firstChild);

			var h2=document.createElement('h2');
			h2.appendChild(document.createTextNode(days[day.nodeValue]['title']));
			calendardetail.appendChild(h2);
			var p=document.createElement('p');
			for (i=0;i<days[day.nodeValue]['links'].length;i++) {
				var p=document.createElement('p');
				p.innerHTML=days[day.nodeValue]['links'][i];
				calendardetail.appendChild(p);
			}
		}
	}
}

addEvent(window,'load',function() {	var url={};
	if (window.location.search != '') {
		var s=window.location.search.substr(1).split(/&/);
		for (i=0;i<s.length;i++) {
			var t=s[i].split(/=/);
			if (t.length==2) {
				url[t[0]]=t[1];
			}
		}
	}

	var d=new Date();
	var today=d.getDate();
	d=new Date(d.getFullYear(),d.getMonth(),1);
	var target=new Date(d.valueOf());
	if (url.date) {
		var newdate=url.date.split(/-/);
		if (newdate.length==3) {
			var y=parseInt(newdate[0]);
			var m=parseInt(newdate[1]);
			if ((!isNaN(y)) && (!isNaN(m))) {
				target=new Date(y,m,1);
			}
		}
	}
	var thismonth=((d.getFullYear()==target.getFullYear()) && (d.getMonth()==target.getMonth()));

	var calendardata=document.getElementById('calendardata').getElementsByTagName('a');
	for (var i=0;i<calendardata.length;i++) {
		addEvent(calendardata[i],'click',showEventData);
		if (thismonth) {
			el=calendardata[i];
			while (el.firstChild) el=el.firstChild;
			if (el.nodeValue==today) {
				showEventData.call(calendardata[i],{});
			}
		}
	}
});