function buildCal(m, y, events, active_events, prev_b, next_b, custom_f){

	var tmp = events.split(",");

	var date = Array();
	
	var link = Array();

	m = parseInt(m);
	y = parseInt(y);

	var n = 0;

	for (var i=0; i<tmp.length; i++)
	{
		if (i%2==0)
		{
			date[n] = tmp[i].split('-');
		}
		else
		{
			link[n] = tmp[i]
			
			n++;
		}
	}


	if (typeof prev_b == "undefined")
	{
		var prev_b = true;
	}

	if (typeof next_b == "undefined")
	{
		var next_b = true;
	}

	var prev_arrow = "<img src='"+webroot+"img/calendar_prev.gif' alt='prev' />";
	var next_arrow = "<img src='"+webroot+"img/calendar_next.gif' alt='next' />";

	var months=['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs','Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'];
	weekdays = Array('P','O','T','C','P','S','Sv');
	
	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
	oD.od=oD.getDay();

	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="main"><table class="months" cols="7" cellpadding="0" border="0" cellspacing="0"><tr align="center" class="month">';

	if (m == 1) { prev_m = 12; prev_y = y-1; } else { prev_m = m-1; prev_y = y; }
	if (m == 12) { next_m = 1; next_y = y+1; } else { next_m = m+1; next_y = y; }


	if (prev_b)
	{
		if (typeof custom_f == "undefined" || custom_f == false)
		{
			var prev_button = "<a href='#' onclick=\"insertContents(buildCal('"+prev_m+"', '"+prev_y+"', '"+events+"', '"+active_events+"', "+prev_b+", "+next_b+", "+custom_f+"), 'calendar'); return false;\">"+prev_arrow+"</a>";
		}
		else
		{
			var prev_button = "<a href='#' onclick=\"ch_calendar('"+m+"' ,'"+y+"', '"+events+"', '"+active_events+"'); return false;\">"+prev_arrow+"</a>";
		}
	}
	else
	{
		var prev_button = "";
	}

	if (next_b)
	{
		if (typeof custom_f == "undefined" || custom_f == false)
		{
			var next_button = "<a href='#' onclick=\"insertContents(buildCal('"+next_m+"', '"+next_y+"', '"+events+"', '"+active_events+"', "+prev_b+", "+next_b+", "+custom_f+"), 'calendar'); return false;\">"+next_arrow+"</a>";
		}
		else
		{
			var next_button = "<a href='#' onclick=\"ch_calendar('"+m+"' ,'"+y+"', '"+events+"', '"+active_events+"'); return false;\">"+next_arrow+"</a>";
		}
	}
	else
	{
		var next_button = "";
	}

	t += '<td class="month nav_prev">'+prev_button+'</td>'
	t += '<td colspan="5" align="center" class="month">'+months[m-1]+', '+y+'</td>'
	t += '<td class="month nav_next">'+next_button+'</td>'
	t += '</tr></table><table class="main" cols="7" cellpadding="0" border="0" cellspacing="0"><tr align="center">';
	
	for(i=0;i<7;i++)
	{
		t+='<th class="daysofweek">'+weekdays[i]+'</th>';
	}
	
	t+='</tr><tr align="center" class="day">';
	
	d = 0;
	
	
	if (typeof active_events != "string")
	{

		active_events = "";
	}
	
	var a_events = active_events.split(";");

	var active = false;

	for(i=1;i<=42;i++)
	{
		var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';

		for (var j=0; j<link.length; j++)
		{
		
			if (x<dim[m-1]+1)
			{
				active = false;
			
				// check if this date is active
				
				for (var z=0; z<a_events.length; z++)
				{
					var tmp = a_events[z].split("-");

					if (x==tmp[2] && m==tmp[1] && y==tmp[0])
					{
						active = true; break;
					}
				}

				// check if this date contains any events
				if (x==date[j][2] && m==date[j][1] && y==date[j][0])
				{
					if (active)
					{
						x = "<a class='event active' href='"+root+link[j]+"'>"+x+"</a>";
					}
					else
					{
						x = "<a class='event' href='"+root+link[j]+"'>"+x+"</a>";
					}
				}
			
			}
			
			
			

		}
		
		if (x==scanfortoday){
			x='<span id="today">'+x+'</span>'
		}
		d = (d < 7 ? d+1 : 1);
		
		if (d==6 || d==7)
		{
			t+='<td class="weekend">'+x+"</td>\n";	
		}
		else
		{
			t+='<td class="days">'+x+"</td>\n";
		}
		
		if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
	}
	
	return t+='</tr></table></div>';
}