__libs = [];

Ajax = Ajax.extend({

	initialize: function(url, options){
		this.setOptions(options);
		if (options.method == 'get')
			url = url + (url.contains('?') ? '&' : '?') + '_=' + $time();
		this.parent(url, options);
	},

	request: function(data){

		var data = data || this.options.data;

		if (typeof nsPrgsBar != "undefined" && this.options.prgsMsg) {

			this.addEvent('onRequest', function() {
				nsPrgsBar.show(this.options.prgsMsg, this);
			});

			this.addEvent('onSuccess', function(){
				nsPrgsBar.hide();
			});

			this.addEvent('onFailure', function(){
				nsPrgsBar.hide();
			});

		}

		//if(arguments.length)
		//	this.options.data = arguments;
		
		this.parent(data);
/*
		if (this.options.timeout) {
			this.timeoutTimer=window.setTimeout(this.callTimeout.bindAsEventListener(this), this.options.timeout);
			this.addEvent('onComplete', this.removeTimer);
		}
*/
	},

	callTimeout: function () {
		this.removeTimer();
		if (typeof nsPrgsBar == "undefined") {
//			this.transport.abort();
//			this.onFailure();
			this.cancel();
			if (this.options.onTimeout) {
				this.options.onTimeout();
			}
		} else
			nsPrgsBar.onTimeout();
	},

	removeTimer: function() {
		$clear(this.timeoutTimer);
	},

	cancel: function(){
		this.parent();
	}
	
});

var nsBase = new Class({

	initialize: function(options) 
	{
		if(!options.url)
		{
			dbug.log('При инициализации класса произошла ошибка. Не задан url в опциях.');
			return;
		}
			
		this.url = options.url;
		this.options = options;
	},

	request : function (options) 
	{
		if($type(options.data) == 'object')	
			options.data._enc="utf-8";
		else
			options.data += "&_enc=utf-8";

		return new Ajax(this.url, options).request();
	},

	submit : function (frm, options) {
		if (!frm)
			return;
		if ($type(options.data) == 'object')
			options.data = Object.toQueryString(options.data);

		if(options.data)
			options.data +='&';
		options.data += frm.toQueryString();
		return this.request(options);
	},

	load : function(libs) {
		libs.each(function(lib) {
			if ($type($(lib.id)) == 'element')
				return;
			switch(lib.type) {
				case 'css': new Asset.javascript(lib.src, {id: lib.id}); break;
				case 'js': new Asset.css(lib.src, {id: lib.id}); break;
			}
		});
	}
});