function buildCal(m, y, cM, cH, cDW, cD, brdr, events, NumOfEntriesPerPage)
{
	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 align="center">';
	//table decleration
	t+='<td colspan="7" align="center" class="'+cH+'"><div id="cal_nav"><a href="javascript:void(0)" id="prevButton" class="cal_buttons" onclick=\'prevmonth()\'></a>&nbsp;'+mn[m-1]+'&nbsp;-&nbsp;'+y+'&nbsp;<a href="javascript:void(0)" id="nextButton" class="cal_buttons" onclick=\'nextmonth()\'>next&nbsp;>></a></div></td></tr><tr align="center">';
	//month and year part
	
	for(var s=0;s<7;s++)t+='<td class="'+cDW+'">'+"SMTWTFS".substr(s,1)+'</td>';
	t+='</tr><tr align="center">';
	//days of the week
	
	
	// { this will need to be in both .js files, the other one to calculate links
	var count_entries_for_this_month = 0;
	var num_of_pages_for_this_month = 0;
	var array_of_indexs_for_this_month = new Array();
	
	//calculate the number of pages required for this month
	for(var j=0;j<(event_dates.length);j++)
		{
			if((todaydate.getMonth()+1)==event_dates[j].slice(4,6))
			{
				array_of_indexs_for_this_month[count_entries_for_this_month]=j;
				count_entries_for_this_month++;
			}
		}
		
	var count = 0;	
	//divide - remainder
	num_of_pages_for_this_month = ((count_entries_for_this_month/NumOfEntriesPerPage)-(count_entries_for_this_month%NumOfEntriesPerPage));
	//if remainder is > 0 add one page
	if((count_entries_for_this_month%NumOfEntriesPerPage)>0)
	{num_of_pages_for_this_month++;}
	// { this will need to be in both .js files, the other one to calculate links}
	
	
	for(var 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)
		{
			x='<span id="today">'+x+'</span>'; //DD added
		}
		else
		{
		for(var j=0;j<=(events.length-1);j++)
			{
				//if today is an event add 1 to count
				if (event_dates[j]==scanfortoday){count++;}
				
				var z=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
				var test_day = z;
				var test_month = m;
				if(z<10)
				{test_day = 0+''+z;}
				if(m<10)
				{test_month = 0+''+m;}
				
				
				var test_event = (y+''+test_month+''+test_day);
				if (test_event==event_dates[j])
				{
					if(count<NumOfEntriesPerPage){var pageNumber=0;}
					if(count>=NumOfEntriesPerPage && count<(NumOfEntriesPerPage*2)){var pageNumber=1;}
					if(count>=(NumOfEntriesPerPage*2) && count<(NumOfEntriesPerPage*3)){var pageNumber=2;}
					if(count>=(NumOfEntriesPerPage*3) && count<(NumOfEntriesPerPage*4)){var pageNumber=3;}
					if(count>=(NumOfEntriesPerPage*4) && count<(NumOfEntriesPerPage*5)){var pageNumber=4;}
					if(count>=(NumOfEntriesPerPage*5) && count<(NumOfEntriesPerPage*6)){var pageNumber=5;}
					if(count>=(NumOfEntriesPerPage*6) && count<(NumOfEntriesPerPage*7)){var pageNumber=6;}
					if(count>=(NumOfEntriesPerPage*7) && count<(NumOfEntriesPerPage*8)){var pageNumber=7;}
					if(count>=(NumOfEntriesPerPage*8) && count<(NumOfEntriesPerPage*9)){var pageNumber=8;}
					if(count>=(NumOfEntriesPerPage*9) && count<(NumOfEntriesPerPage*10)){var pageNumber=9;}
					
					if(m<10){twoM=(0+''+m);}
					else{twoM=m;}

					x='<span id="event"><a href="javascript:void(0)" num="'+count+'" class="cal_buttons" onclick="thisdate('+pageNumber+','+y+''+twoM+')">'+z+'</a></span>';
					count++;
				}
			}
		}
		
		
		t+='<td class="'+cD+'">'+x+'</td>';
		
		if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';//end of line
		
	}
	return t+='</tr></table></div>';
}


