var CtCalendar = Class.create(CtComponent_Abstract, {

	element: null,
	locker: null,
	id: null,
	buttons: [],

	initialize: function(htmlElement) {
		this.element = $(htmlElement);
		this.id = this.element.identify();
		this.locker = new CtComponent_BlockLocker(this.element);
		this.reassembly();

		CtPage.addComponent(this);
	},


	reassembly: function() {
		this.buttons = this.element.select('a.ctCalendar-button');
		for (var i = 0; i < this.buttons.length; i++) {
			this.buttons[i].observe('click', this.clickHandler.bindAsEventListener(this, this.buttons[i]))
		}
	},


	refresh: function(response) {
		if (response && response.content) {
			this.element.update(response.content);
			this.reassembly();
		}

		this.locker.hide();
	},


	clickHandler: function(event, button) {
		Event.stop(event);
		this.locker.show();

		var href = button.readAttribute('href');
		var url = href.substr(0, href.indexOf('?'));

		var params = href.toQueryParams();

		params.ajax = 1;

		var request = CtPage.getRequest(this.id, 'iframe');
		request.url = url + '?' + Hash.toQueryString(params);
		request.send();
	},

//	ajaxSuccessHandler: function(transport, json) {
//		if (json && json.ok) {
//			this.element.update(transport.responseText);
//			this.refresh();
//		}
//	},
//
//	ajaxFailureHandler: function(transport, json) {
//		console.log(transport, json);
//	},


	x: null

});

var CtCalendar_Manager = new (Class.create({

	initialize: function() {
		Event.observe(document, 'dom:loaded', function() {this.refresh()}.bindAsEventListener(this));
	},

	refresh: function() {
		var elements = $$('.ctCalendar');
		for (var i = 0; i < elements.length; i++) {
			new CtCalendar(elements[i]);
		}
	}

}));
CtPage.registerScript("CtCalendar");

