var ajaxBox = Class.create({

	initialize: function(options){
		this.options = Object.extend({id: '', url: '', page: 0}, options);
		this.container = $(options.id);

		this.container.getElementsBySelector('a.prev')[0].observe('click', function(event){
			event.stop();
			this.sendRequest(-1);
		}.bind(this));

		this.container.getElementsBySelector('a.next')[0].observe('click', function(event){
			event.stop();
			this.sendRequest(1);
		}.bind(this));
	},

	sendRequest: function(delta){
		var container = this.container;
		new Ajax.Request(this.options.url, {
			method: 'get',
			parameters: {boxId: this.options.id, page: this.options.page += delta},
			onSuccess: function(transport){
				var boxData = Object.extend({title: '', body: '', prevEnabled: false, nextEnabled: false}, transport.responseText.evalJSON());

				var boxTitle = container.getElementsBySelector('.ajaxBoxTitle')[0],
					boxBody = container.getElementsBySelector('.ajaxBoxBody')[0],
					boxPrev = container.getElementsBySelector('a.prev')[0],
					boxNext = container.getElementsBySelector('a.next')[0];

				if (boxTitle) boxTitle.update(boxData.title);
				if (boxBody) boxBody.update(boxData.body);
				if (boxPrev) boxPrev[boxData.prevEnabled ? 'show' : 'hide']();
				if (boxNext) boxNext[boxData.nextEnabled ? 'show' : 'hide']();
			}
		});
	}
});
