var JSONRequest = new Class({
	Extends: Request.JSON,
	Version:3.0,
	Implements: [Events,Options],
	initialize: function(options)
	{
		newOptions = {
			errorDiv:$('response'),
			onSuccess:function(ajaxResponse,errorBus){
				newOptions.errorDiv.addClass('hidden');
				if($type(ajaxResponse)!='object')
					this.fireEvent('onFailure',errorBus);
				else
				{
					if(ajaxResponse.error==1)
						this.fireEvent('onFailure',ajaxResponse.errorText);
					else
						this.fireEvent('onReady',ajaxResponse);	
				}
			},
			onFailure:function(errorMessage)
			{
				if($type(errorMessage)=='object')
					errorMessage = errorMessage.responseText;
				newOptions.errorDiv.set('html','Erreur lors de la requete AJAX :'+errorMessage);
				newOptions.errorDiv.removeClass('hidden');
			}
		};

		// si on précise un formulaire, url et method seront automatiquement définis
		
		if($chk(options.form))
		{
			$extend(newOptions,{
				url:options.form.getProperty('action'),
				method:options.form.getProperty('method')
			});
			if($chk(options.data))
			{options.data = options.data + '&' + options.form.toQueryString();}
			else
			{options.data = options.form.toQueryString();}
		}
		this.parent($extend(newOptions,options));
	}
});
