/*
	AJAX
*/

var Ajax = new Class ({
	initialize: function(url, params) {
		this.url = url;
		this.viewLoading = true;
		
		if (params == undefined) {
			this.method = 'get';
		}
		else {
			this.method = params.method || 'get';
			this.data = $(params.data) || params.data || {};
			this.response = params.response || function(){};
			if (params.viewLoading != undefined) {
				this.viewLoading = params.viewLoading;
			}
		}
	},
	
	// Установка параметров
	setData: function(data) {
		this.data = $(data) || data;
	},
	
	// Установка ф-и с обработкой ответа
	setResponse: function(response) {
		this.response = response;
	},
	
	// Отправка
	request: function() {
		this.loading();
		
		new Request.JSON({
			method: this.method,
			url: this.url + '?json',
			data: this.data,
			onComplete: this.responseDefault.bind(this)
		}).send();
	},
	
	// Ответ
	responseDefault: function(data) {
		this.loading();
		if (data != null) {
			this.response(data);
		}
		else {
			alert('AJAX-запрос вернул пустой результат.');
		}
	},
	
	// Загрузка...
	loading: function() {
		if (this.viewLoading) {
			$$('.loading').toggleClass('none');
		}
	},
	
	// Ошибка
	error: function(text) {
		$('error').set('text', text);
		$('error').setStyle('display', 'block');
	}
});
