var RozovCheckboxList = new Class({
	/**
	 * @type Element
	 * @private
	 */
	_list : null,
	/**
	 * @type Element[]
	 * @private
	 */
	_options : [],
	/**
	 * @type Element[]
	 * @private
	 */
	_hidden_options : [],
	/**
	 * @type Boolean
	 * @private
	 */
	_OPTIONS_VISIBLE : false,
	/**
	 * @constructor
	 * @param {Element}
	 *            list_element
	 * @public
	 */
	initialize : function(list_element) {
		this._list = $(list_element);

		var lis = this._list.getElements('li');
		$each(lis, function(/* Element */item) {
			if (!item.hasClass('more')) {
				this._options.push(item);
				item.addEvent('click', this._optionClickEvt)
			}
			if (item.hasClass('hide')) {
				this._hidden_options.push(item);
			}
			if (item.hasClass('more')) {
				item.store('original_phrase', item.getElement('a').getFirst().get('html'));
				item.addEvent('click', this._toggleOptionsVisibility
								.bindWithEvent(item, this))
			}
		}, this);
	},
	_optionClickEvt : function(e) {
		var evt = new Event(e);
		var target = $(e.target);

		if (target.get('tag').toLowerCase() == 'a' || target.get('tag').toLowerCase() == 'span') {
			evt.stop();
		}

		if (this.hasClass('selected')) {
			this.getElement('input').checked = false;
			this.removeClass('selected')
		} else {
			this.getElement('input').checked = true;
			this.addClass('selected')
		}
	},
	_toggleOptionsVisibility : function(e, obj) {
		var evt = new Event(e);
		var target = $(e.target);

		if (target.get('tag').toLowerCase() == 'a' || target.get('tag').toLowerCase() == 'span') {
			evt.stop();
		}

		if (obj._OPTIONS_VISIBLE) {
			this.getElement('a').getFirst().set('html', this.retrieve('original_phrase'));
		} else {
			this.getElement('a').getFirst().set('html', '&laquo;cкрыть');
		}

		$each(obj._hidden_options, function(item) {
					if (obj._OPTIONS_VISIBLE) {
						item.hide();
					} else {
						item.show();
					}
				});
		obj._OPTIONS_VISIBLE = !obj._OPTIONS_VISIBLE;
	}
});
