function calendar(id,d,p){
	this.id = id;
	this.dateObject = d;
	this.pix = p;
	this.write = writeCalendar;
	this.length = getLength;
	this.month = d.getMonth();
	this.date = d.getDate();
	this.day = d.getDay();
	this.year = d.getFullYear();
	this.getFormattedDate = getFormattedDate;
	d.setDate(1);
	this.firstDay = d.getDay();
	d.setDate(this.date);
}

var days = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var months = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

function getFormattedDate(){
	return days[this.day] + ', ' + months[this.month] + ' ' + this.date + ', ' + this.year;
}

function writeCalendar(){
	var calString = '';
	calString += '<div id="calContainer">';
	calString += '<table id="cal' + this.id + '" class="tblCal" cellspacing="0" width="150">';
	calString += '<tr><th colspan="7" class="month">' + months[this.month] + ', ' + this.year + '</th></tr>';
	calString += '<tr>';

	for(i=0;i<days.length;i++){
		calString += '<th class="dayHeader">' + days[i].substring(0,1) + '</th>';
	}

	calString += '<tr>';

	if((this.length()+this.firstDay)>35){
		var calDays = 42;
	} else {
		var calDays = 35;
	}

	for(j=0;j<calDays;j++){
		var displayNum = (j-this.firstDay+1);
		var dayId = this.year+''+padStr(this.month+1)+''+padStr(displayNum);
		if(j<this.firstDay){
			calString += '<td class="empty">&nbsp;</td>\n';
		//}else if(displayNum==this.date){
		//	calString += '<td id="' + this.id +'selected" valign="center" align="center" class="date" onClick="javascript:changeDate(this,\'' + this.id + '\')">' + displayNum + '</td>\n';
		}else if(displayNum > this.length()){
			calString += '<td class="empty">&nbsp;</td>\n';
		}else{
			if(document.calDates["date_"+dayId] != undefined ){				
				calString += '<td id="date_'+dayId+'" valign="center" align="center" class="daysActive" onMouseOver="javascript:showInfo(\''+document.calDates["date_"+dayId]+'\')" onMouseOut="javascript:hideInfo()" ><a href="#">' + displayNum + '</a></td>\n';
			} else {
				calString += '<td id="date_'+dayId+'" valign="center" align="center" class="days">' + displayNum + '</td>\n';
			}
		}
		if(j%7==6){
			calString += '</tr>\n<tr>';
		}
	}
	calString += '</tr>';
	calString += '<tr>';
	calString += '<td class="nav" style="text-decoration:underline;" onClick="changeMonth(-12,\'' + this.id + '\')">&lt;</td>';
	calString += '<td class="nav" onClick="changeMonth(-1,\'' + this.id + '\')">&lt;</td>';
	calString += '<td class="month" colspan="3">&nbsp;</td>';
	calString += '<td class="nav" onClick="changeMonth(1,\'' + this.id + '\')">&gt;</td>';
	calString += '<td class="nav" style="text-decoration:underline;text-align:right;" onClick="changeMonth(12,\'' + this.id + '\')">&gt;</td>';
	calString += '</tr>';
	calString += '</table>';
	calString += '</div>';
	return calString;
}

function getLength(){
	switch(this.month){
		case 1:
			if((this.dateObject.getFullYear()%4==0&&this.dateObject.getFullYear()%100!=0)||this.dateObject.getFullYear()%400==0)
				return 29;
			else
				return 28;
		case 3:
			return 30;
		case 5:
			return 30;
		case 8:
			return 30;
		case 10:
			return 30
		default:
			return 31;
	}
}

function showInfo(value){
	document.getElementById("newsInfo").innerHTML = value;
	document.getElementById("newsInfo").className = "newsOn";		
}

function hideInfo(){
	document.getElementById("newsInfo").innerHTML = "&nbsp;";
	document.getElementById("newsInfo").className = "newsOff";		
}

function changeMonth(mo,cal){
	cal = eval(cal);
	cal.dateObject.setMonth(cal.dateObject.getMonth() + mo);
	cal = new calendar(cal.id,cal.dateObject,cal.pix);
	cal.formattedDate = cal.getFormattedDate();
	document.getElementById('calContainer').innerHTML = cal.write();
}

function padStr(str){
	if(str.toString().length < 2){
		return '0'+''+str;
	} else {
		return str;
	}
}
