// Переключает элементы документа, делая их видимыми или нет.
/*class*/ Switcher = function (elements/*:Array*/, activeElements/*:Array*/, type/*:String*/) {
	this._type = type || "block";
	this._elements = {};

	if (elements) {
		for (var i = 0; i < elements.length; i++) {
			this.addElement(elements[i]);
		}
	}

	if (activeElements) {
		for (var i = 0; i < activeElements.length; i++) {
			this.setActive(activeElements[i], true);
		}
	}
}

// Добавляет элемент в переключатель.
Switcher.prototype.addElement = function (id/*:String*/)/*:Void*/ {
	this._elements[id] = {
		active: false,
	    element: document.getElementById(id)
	};
}


Switcher.prototype.setActive = function (id/*:String*/, value/*:Boolean*/)/*:Void*/ {
	this._elements[id].active = value;
	this._elements[id].element.style.display = (value ? this._type : "none");
}

// Делает элемент видимым.
Switcher.prototype.on = function (id/*:String*/)/*:Void*/ {
	this.setActive(id, true);
}

// Делает элемент невидимым.
Switcher.prototype.off = function (id/*:String*/)/*:Void*/ {
	this.setActive(id, false);
}

// Переключает видимость элемента.
Switcher.prototype.toggle = function (id/*:String*/)/*:Void*/ {
	this.setActive(id, !this._elements[id].active);
}

// Делает элемент видимым, а все остальные невидимыми.
Switcher.prototype.over = function (id/*:String*/)/*:Void*/ {
	for (var key in this._elements) {
		this.setActive(key, false);
	}
	this.setActive(id, true);
}