﻿function GalleryTabs (holder) {

	this.holder		= null;
	this.tabs		= [];
	this.buttons	= [];
	
	this.selected	= null;
	
	
	// private methods
	
	this.addBehaivor = function () {
		for (var i = 0; i < this.buttons.length; i++) {
			this.buttons[i].attachEvent('onclick', this.click.bindEventListener(this, i));
		}
	}
	
	
	// event handlers
	
	this.click = function (idx) {
		if (idx == this.selected) return;
		
		Object.removeClass(this.tabs[this.selected], 'selected');
		Object.removeClass(this.buttons[this.selected], 'selected');
		
		this.selected = idx;
		
		Object.appendClass(this.tabs[this.selected], 'selected');
		Object.appendClass(this.buttons[this.selected], 'selected');
	}
	
	// ctor
	
	this.holder = holder;
	if (!this.holder) throw new Error('Ошибка инициализации GalleryTabs');
	
	var idx = 0;
	for (var i = 0; i < holder.childNodes.length; i++)
	{
		var node = holder.childNodes[i];
		if (node.tagName == 'DIV' && Object.hasClass(node, 'tab')) {
			this.tabs.push(node);
			
			if (Object.hasClass(node, 'selected'))
				this.selected = idx;

			idx++;
		}
		
		if (node.tagName == 'UL' && Object.hasClass(node, 'buttons')) {
			Object.removeClass(node, 'hidden');
			
			for (var j = 0; j < node.childNodes.length; j++)
				this.buttons.push(node.childNodes[j]);
		}
	}
	
	if (this.buttons.length * this.tabs.length == 0)
		throw new Error('Ошибка инициализации GalleryTabs');
		
	this.addBehaivor();
}