var Calendario = new Class({
	
	Implements: [Options, Events],
	
	options: {
		selectors: {
			clickableDays: '.has-event',
			previousMonth: '.previous-month',
			nextMonth: '.next-month'
		}
	},
	
	initialize: function(element, options){
		this.element = $(element);
		if(!this.element) return;
		this.setOptions(options);
		this.setEvents();
		this.fireEvent('init');
	},
	
	setEvents: function(){
		this.setUpClickEvent('previousMonth', 'monthChange', -1);
		this.setUpClickEvent('nextMonth', 'monthChange', +1);
		this.setUpClickEvent('clickableDays', 'dayClick');
	},
	
	setUpClickEvent: function(selector, fn, extraParam){
		this.element.getElements(this.options.selectors[selector] || selector).each(function(el, index){
			el.addEvent('click', (this[fn] || fn).bindWithEvent(this, [el, index, extraParam]));
		}, this);
	},
	
	dayClick: function(e){
		e.preventDefault();
		this.fireEvent('dayClick', arguments);
	},
	
	monthChange: function(e){
		e.preventDefault();
		this.fireEvent('monthChange', arguments);
	}
	
});
