Module_Event_CalendarMini = function(preset_id, page_id, page_url) {
	this.init(preset_id, page_id, page_url);
}

Module_Event_CalendarMini.__popupInited = false;
Module_Event_CalendarMini.initPopup = function() {
	if (Module_Event_CalendarMini.__popupInited)
		return
		
	Module_Event_CalendarMini.__popupInited = true;
	$('.m_eventsmini.popup-events').appendTo($(document.body));
	$(document).bind('click', function(evt) {
		if ($(evt.target).closest('.m_eventsmini.popup-events').length == 0)
			$('.m_eventsmini.popup-events').hide();
	});
}

Module_Event_CalendarMini.__instances = {};
Module_Event_CalendarMini.getInstance = function(preset_id) {	
	return Module_Event_CalendarMini.__instances[preset_id];
}

Module_Event_CalendarMini.prototype = {
	preset_id: null,
	page_id: null,
	page_url: null,
	events: null,
	
	init: function(preset_id, page_id, page_url) {
		this.preset_id = preset_id;
		this.page_id = page_id;
		this.page_url = page_url;
		this.events = {};
		
		Module_Event_CalendarMini.__instances[preset_id] = this;
		Module_Event_CalendarMini.initPopup();
	},
	
	load: function(month, year) {
		var self = this;
		var ajaxUrl = '/'+this.page_id+'/m/'+this.preset_id+'/op/load/month/'+month+'/year/'+year;
		
		$.get(ajaxUrl, function(response) {
			$('.m_eventsmini-'+self.preset_id).html(response);
		});			
	},
	
	add: function(events) {
		$.extend(this.events, events);
	},
	
	popup: function(evt, month, day) {
		evt.cancelBubble = true;
		evt.returnValue = false;
		
		if (evt.stopPropagation)
			evt.stopPropagation();
		
		var el = $('.m_eventsmini.popup-events .inner').empty();
		var hash = month+"_"+day;
		var evs = this.events[hash];
		var self = this;
		
		jQuery.each(evs, function(key, value) {
			var html = '<div class="item">\
	<div class="date-info">\
		<span class="normal">'+value.date+'</span>\
	</div>\
	<div class="time-info">\
		<div class="timewrapper">\
			<div class="time time-'+value.color+'">'+value.time_str+'</div>\
		</div>\
	</div>\
	<div class="event-info">\
		<div class="wr"><a onclick="$(this).closest(\'.element_popup\').hide();" href="'+self.page_url+'#op=detail/preset_id='+value.preset_id+'/event_id='+value.event_id+'/timestamp='+value.etime+'">'+value.name+'</a></div>\
	</div>\
	<div class="clearing"><!--  --></div>\
</div>';
	
			el.append(html);
		});
		
		Enjin_Core.prepareEvent(evt);
		
		var x = evt.pageX;
		var y = evt.pageY;		
		
		$('.m_eventsmini.popup-events').css('top', y+"px");
		$('.m_eventsmini.popup-events').css('left', x+"px");
		$('.m_eventsmini.popup-events').show();
	}
}
