Element.implement({
	fadeAndDestroy: function(duration) {
		duration = duration || 600;
		this.set('tween', {
			duration: duration,
			onComplete: this.destroy.bind(this)
		});
		this.fade('out');
	}
});

Element.implement({
	
	addAjaxSending: function(options) {
		
		if(this.get('tag') != "form")
		{
			console.error("Trying to send an AJAX request on a non-form element.");
			return;
		}
		
		var responseContainer = options.responseContainer || $("response");
		
		if(!responseContainer)
		{
			console.error("Empty response container.");
			return;
		}
		
		this.addEvent('submit', function(e){
			
			new Event(e).stop();
			
			new Request.JSON({
				'method': this.getProperty('method'),
				'url': this.getProperty('action'),
				'onComplete': function(response){
					if(response.error == 1)		responseContainer.removeClass('success').addClass('error').removeClass('hidden').set('text', response.errorText);
					else
					{
						responseContainer.removeClass('error').addClass('success');
						options.successFunction(response);
					}
				}
			}).send(this);
		});
	}

});