var Gi_Multipage_Block = new Class({
	pages: null, // Массив страниц внутри мультиблока
	block: null, // id самого блока
	current_index: null, // текущая страница
	
	initialize: function( blockId ) { this.block = blockId; this.pages = new Array(); },
	addPage: function(page) {
		this.pages[this.pages.length] = page;
	},
	
	run: function() {
		this.i = 0;
		for (var i = 0; i < this.pages.length; i++) {
			$(this.block).getElement("#" + this.pages[i].sheet).addEvent('click', (function(event, i) {
				new Event(event).stop();
				this.selectPage( i );
			}).bindWithEvent(this, i));
			
			if ( this.pages[i].active ) {
				this.selectPage( i );
			}
		}
	},
	
	selectPage: function(index) {
		for (var i = 0; i < this.pages.length; i++) {
			if ( i == index ) {
				$(this.block).getElement("#" + this.pages[i].sheet).addClass('active');
				$(this.block).getElement(this.pages[i].page).setStyle('display', 'block');
			} else {
				$(this.block).getElement("#" + this.pages[i].sheet).removeClass('active');
				$(this.block).getElement(this.pages[i].page).setStyle('display', 'none');
			}
		}
	}
});

var Gi_Multipage_Block_Page = new Class({
	sheet: null, // id ссылки
	page: null, // id страницы
	active: false,
	
	initialize: function(el, pg, active) {
		this.sheet = el;
		this.page = pg;
		this.active = active;
	}
});

// Ajax multipage block

var Gi_Dynamic_Multipage_Block = new Class({
	pages: null, // Массив страниц внутри мультиблока
	page_content: null, // элемент, внутрь которого загружаем динамические данные
	block: null, // id самого блока
	datasource: null,
	current_index: null, // текущая страница
	page_callback: function() {},
	
	initialize: function( blockId, content, url ) { this.block = blockId; this.page_content = content; this.datasource = url; this.pages = new Array(); },
	addPage: function( sheetId ) {
		this.pages[this.pages.length] = sheetId;
	},
	
	run: function() {
		this.i = 0;
		for (var i = 0; i < this.pages.length; i++) {
			$(this.block).getElement("#" + this.pages[i]).addEvent('click', (function(event, i) {
				new Event(event).stop();
				this.selectPage( i );
			}).bindWithEvent(this, i));
		}
	},
	
	selectPage: function(index) {
	    var container = $(this.block).getElement(this.page_content);
	    var loader = $(this.block).getElement(".loader"); // блок loader

	    loader.setStyle('display', 'block');
		for (var i = 0; i < this.pages.length; i++) {
			if ( i == index ) {
				$(this.block).getElement("#" + this.pages[i]).addClass('active');
			    var req = new Request.HTML({
			        url: this.datasource,
			        encoding: 'Cp1251',
			        onFailure: function() {
			            container.set('html', 'Ошибка динамического запроса.');
			            loader.setStyle('display', 'none');
			        },
			        onCancel: function() {
			            container.set('html', 'Динамический запрос отменен.');
			            loader.setStyle('display', 'none');
			        }
			    });
			    req.addEvent("onSuccess", function(elem, arr, html) {
		            container.set('html', html);
		            loader.setStyle('display', 'none');
				    this.current_index = i;
		            this.page_callback ();
			    }.bind(this));
			    req.post({"sheet_id": this.pages[i], "sheet_index": i+1});
			} else {
				$(this.block).getElement("#" + this.pages[i]).removeClass('active');
			}
		}
	},
	
	selectTempPage: function(address, new_callback) {
	    var container = $(this.block).getElement(this.page_content);
	    var loader = $(this.block).getElement(".loader"); // блок loader

	    loader.setStyle('display', 'block');
	    var req = new Request.HTML({
	        url: this.datasource,
	        encoding: 'Cp1251',
	        onFailure: function() {
	            container.set('html', 'Ошибка динамического запроса.');
	            loader.setStyle('display', 'none');
	        },
	        onCancel: function() {
	            container.set('html', 'Динамический запрос отменен.');
	            loader.setStyle('display', 'none');
	        }
	    });
	    req.addEvent("onSuccess", function(elem, arr, html) {
            container.set('html', html);
            loader.setStyle('display', 'none');
            if (new_callback !== false) new_callback ();
	    }.bind(this));
	    req.post({"sheet_id": address});
	},
	
	setPageCallback: function(fn) {
		this.page_callback = fn;
	},
	
	getCurrentPageIndex: function() {
		return this.current_index;
	}
});


