var SimpleTabs = Class.create({
	initialize: function() {
		this.a = a = $A(arguments);
		if (a.length < 1) {
			throw 'SimpleTabs: at least 1 object is required;'
		}
		a.each(function(config, i) {
			this.initTab(config, i);
		}.bind(this));
		this.activeTabIndex = 0;
		this.loadedTabs = $H();
		this.loadedTabs.set(this.activeTabIndex, 1);
	},
	
	initTab: function(c, i) {
		this.busy = false;
		Event.observe(c.triggerEl, 'click', function(e) {
			// предотвратим дефолтное событие по клику			
			e.preventDefault();
			
			// если идет загрузка конетента посредством аякс
			if (this.busy) {
				return false;
			}
			
			// если кликаем по уже открытому табу
			if (this.activeTabIndex == i) {
				return false;
			}
			
			// текущий открытый таб
			with (this.a[this.activeTabIndex]) {
				// прячем содержимое открытого таба
				contentEl.hide();
			
				// убираем со старого триггера активный класс
				triggerEl.removeClassName(activeClass);
			}
			
			// вешаем класс activeClass из конфига
			c.triggerEl.addClassName(c.activeClass);
			
			// обновляем текущий активный таб
			this.activeTabIndex = i;

			// если не указан url либо содержимое данного таба
			// уже было загружено динамически
			if (! c.url || this.loadedTabs.get(i)) {
				return c.contentEl.show();
			}

			new Ajax.Request(c.url, Object.extend({
				parameters: c.urlParams ? c.urlParams : {},
				onCreate: function() {
					this.busy = true;
				}.bind(this),
				onSuccess: function(r) {
					c.contentEl.update(r.responseText);
				},
				onComplete: function() {
					this.loadedTabs.set(i, 1);
					if (typeof c.onLoad == 'function') {
						c.onLoad(c);
					}
					c.contentEl.show();
					this.busy = false;
				}.bind(this)
			}, c.ajaxOptions ? c.ajaxOptions : {}));
			}.bind(this));
	}
});