monthlyCalendar = function ( id) {
	var this_ = this;
	this.id = id;
	this.days_links_url = "events.html?todo=get_days_links";
	var obj = document.getElementById( id);
	obj.calendar_obj = this;
	this.date = new Date();
	this.months = ["January","February","March","April","May","June","July","August","September","October","November","December"];

	this.draw = function() {
		var t = document.createElement('script');
		t.src = this.days_links_url.concat( "&obj_id=", this.id, "&date=", this.date.getFullYear(), "-", String(this.date.getMonth()+101).substr( 1, 2), "-", String(this.date.getDate()+100).substr( 1, 2), "&", (new Date()).getTime());
		t.type = 'text/javascript';
		document.getElementsByTagName( "HEAD")[0].appendChild( t);
	}

	this._draw_ = function( get_days_links) {
		var date = this.date;
		var m = date.getMonth();
		var y = date.getFullYear();
		var html = [];
		html.push(
			"<table>",
				"<tr>",
					'<th colspan="7" class="cur_month"><a href="./" onclick="return false" name="prev"><<</a>', this.months[m], ' ', date.getFullYear() , '<a href="./" onclick="return false" name="next">&gt;&gt;</a></th>',
				"</tr>",
				"<tr>",
					"<th>S</th><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th>"
		);
		var d = new Date( y, m, 1);
		d.setDate( -d.getDay()+1);
		while( 1 ) {
			if ( d.getDay() == 0 ) {
				if ( (d.getFullYear() == y && d.getMonth() > m) || d.getFullYear() > y) {
					break;
				}
				html.push( "</tr><tr>");
			}
			if ( d.getMonth() == m ) {
				if ( get_days_links[d.getDate()] ) {
					html.push( "<td>", '<a' + get_days_links[d.getDate()] + '>', d.getDate() ,"</a></td>");
				} else {
					html.push( "<td>", "<span>", d.getDate() ,"</span></td>");
				}

			} else {
				html.push( "<td></td>");
			}
			d.setDate( d.getDate()+1);
		}
		html.push(
				"</tr>",
			"<table>"
		);
		obj.innerHTML = html.join( "\n");
	}
	this.link_click = function(e) {
		var o = (e && e.target) || (event && event.srcElement);
		if ( o.tagName.toLowerCase() == "a" ) {
			if ( o.name == "prev" ) {
				this_.date.setDate( 1);
				this_.date = new Date( this_.date.getFullYear(), this_.date.getMonth()-1, 1);
				this_.draw();
			} else if ( o.name == "next" ) {
				this_.date = new Date( this_.date.getFullYear(), this_.date.getMonth()+1, 1);
				this_.draw();
			}
		}
	}
	document.all?obj.attachEvent( "onclick", this.link_click):obj.addEventListener( "click", this.link_click, false);

}