/**
 * Плагин для сворачивания/разворачивания списков (например сортировка в adlist)
 * Разворачивается по клику на переданный объект.
 * Сворачивается при потере фокуса
 *
 * Пример: $('.sliderShowLink').listSlider();
 *
 * @author Vital Leshchyk
 * @since sprint11
 */
(function($) {

	/**
	 * Опции по умолчанию
	 */
	var defaultOptions = {
		popUpSelector: false,
		show: false
	};

	/**
	 * Клик и разворачивание
	 */
	var showPopUp = function(options) {
		var $popUp;
		if(options.popUpSelector) {
			$popUp = $(options.popUpSelector);
			if(!$popUp.length) {
				return;
			}
		} else {
			$popUp = $(this).next();
		}

		$popUp.stop(true, true)
			.css('left', $(this).position().left)
			.css('top', $(this).position().top)
			.attr('tabindex', '0');

		if(typeof options.show === 'function') {
			options.show($popUp, $(this));
		}

		$popUp.fadeIn(200).focus().focusout(out);
	};

	/**
	 * Потеря фокуса
	 */
	var out = function() {
		$(this).fadeOut();
	};

	/**
	 * Создание плагина
	 */
	$.fn.listSlider = function(userOptions) {
		/**
		 * Массив с опциями
		 */
		var options = $.extend({}, defaultOptions, userOptions);

		return this.each(function() {
			$(this).click(function() {
				showPopUp.apply(this, [options]);
			});
		});
	};
})(jQuery);
