function EventCalendar(id, calendars, activeTab,offset,num_items,timezone,blog_url,template,pagination) {
	//this.pagination = pagination;
	//this.activeTab = activeTab;
	this.showMore = showMore;
	function showMore() {
		jQuery(function ($) {
			$('#eventCalendar_'+id+' .pagination').hide();
			var offsetTab = 0;
			if (activeTab == 'current') offsetTab = offset.current;
			else if (activeTab == 'past') offsetTab = offset.past;
			$.ajax({
				dataType: "json",
				url: "/ajax/eventCalendar",
				data: { 'id':calendars,range:activeTab,'offset':offsetTab,'limit':num_items,'timezone':timezone,'cacheKill':Math.random(), 'accountID':adMacros.accountID }
			}).done(function(data) {
				if(activeTab==0){
					$('#eventCalendar_'+id+' .events.'+data.range).empty();
				}
				if ($('#eventCalendar_'+id+' .events.'+data.range+' .event').length == 0 && data.events.length > 0) {
					$('#eventCalendar_'+id+' .events.'+data.range).append(twoColumnLayout.getDefaultColumns());
				}
				for (var i=0;i<data.events.length;i++) {
					var event = template.replace(/{DATE}/g,data.events[i].date).replace(/{IMAGE}/g,data.events[i].img).replace(/{TITLE}/g,data.events[i].title).replace(/{EVENT_LINK}/g,data.events[i].url).replace(/{VENUE}/g,data.events[i].venue).replace(/{DESCRIPTION}/g,data.events[i].description).replace(/{SOCIAL}/g,'&nbsp;');
					//$('#eventCalendar_'+id+' .events.'+data.range).append(event);
					if(null!== data.events[i].custom_meta){
						var custom_meta = (data.events[i].custom_meta);
						for(tag in custom_meta) {
							var pattern= new RegExp('{meta.'+tag+'}',"g");
							event = event.replace( pattern,custom_meta[tag]);
						}
					}
					event = event.replace(/{[a-zA-Z.-_]+}/g, '');
					twoColumnLayout.add(event,$('#eventCalendar_'+id+' .events.'+data.range+' .tcl_left'),$('#eventCalendar_'+id+' .events.'+data.range+' .tcl_right'),195);
				}
				//loadAllSocialButtons();
				if (data.events.length > 0 && data.events.length >= num_items) {
					if (data.range == 'current') offset.current = offset.current + data.events.length;
					else if (data.range == 'past') offset.past = offset.past + data.events.length;
					if (data.range == activeTab) $('#eventCalendar_'+id+' .pagination').show();
				} else {
					if (data.range == activeTab) $('#eventCalendar_'+id+' .pagination').hide();
					if (data.range == 'current') pagination.current = false;
					else if (data.range == 'past') pagination.past = false;
				}
				if ($('#eventCalendar_'+id+' .events.'+data.range+' .event').length == 0) {
					if (data.range == 'current') $('#eventCalendar_'+id+' .events.'+data.range).html('No upcoming events');
					else $('#eventCalendar_'+id+' .events.'+data.range).html('No '+data.range+' events');
				}
			});
		});
	}
	this.showTab = showTab;
	function showTab(tab) {
		$('#eventCalendar_'+id+' .events').hide();
		$('#eventCalendar_'+id+' .'+tab).show();
		$('#eventCalendar_'+id+' .filter a').removeClass('activeFilter');
		$('#eventCalendar_'+id+' .filter .'+tab).addClass('activeFilter');
		activeTab = tab;
		$('#eventCalendar_'+id+' .pagination').hide();
		if ($('#eventCalendar_'+id+' .events.'+tab).html() == '') showMore();
		else {
			if (tab == 'current' && pagination.current) $('#eventCalendar_'+id+' .pagination').show();
			if (tab == 'past' && pagination.past) $('#eventCalendar_'+id+' .pagination').show();
		}
	}
}