function buildCal(m, y, cM, cH, cDW, cD, brdr){
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 todaydate=new Date() //DD added
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="'+cM+'"><table class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="0"><tr">';
	t+='<td colspan="7" class="'+cH+'">'+mn[m-1]+' - '+y+'</td></tr><tr>';
	
	//Days of week
	var day=new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

	for(s=0;s<7;s++) t+='<td class="'+cDW+'" align="center" >'+day[s]+'</td>';

	t+='</tr><tr>';

		for(i=1;i<=42;i++){
			
			var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
			if (x==scanfortoday) //DD added
				x='<span id="today">'+x+'</span>' //DD added
					if((i%7)==0){ var specialId = 'id="saturday"'; } else { var specialId = ''; }
					t+='<td class="'+cD+'" '+specialId+'>'+x+'</td>';
					if(((i)%7==0)&&(i<36)) t+='</tr><tr valign="top">';
		}
	return t+='</tr></table></div>';
}

//http://www.dynamicdrive.com/dynamicindex7/basiccalendar.htm for details on modification