Twitter = new Class
({
	Implements: Options,
	
	element: null,
	request: null,
	
	options: {
		url: null,
		retries: 0,
		animate: false,
		errorID: 'twitter-error',
		autostart: true
	},
	
	initialize: function(elementID, options)
	{
		this.setOptions(options);
		options = this.options;
		var that = this;
		
		this.request = new Request.HTML({
			url: options.url,
			method: 'get',
			link: 'cancel',
			
			onRequest: function() {
				options.retries--;
				that.element.setStyle('opacity', 0);
			},
			
			onFailure: function() {
				if (options.retries >= 0) that.request.send();
			},
			
			onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
				var element = new Element('div', {
					id: that.element.id,
					styles: {
						opacity: 0
					},
					'html': responseHTML
				});
				element.replaces(that.element);
				that.element = element;
				
				if (document.id(options.errorID) != null) {
					if (options.retries >= 0) {
						that.request.send();
					} else {
						element.dispose();
					}
				} else {
					if (options.animate) {
						element.fade('in');
					} else {
						element.setStyle('opacity', 1);
					}
				}
			}
		});
		
		if (options.autostart) {
			window.addEvent('domready', function() {
				this.element = document.id(elementID);
				if (this.element != null && this.options.autostart) this.request.send();
			}.bind(this));
		}
	}
});
