/**
* Рейтинг на jQuery "Без заебов"© by Cooler. 
* ICQ#: 4-835-172
* itahmea@gmail.com
*/
jQuery.fn.rater = function(url, options)
{
	//если не определен URL не инициализируемся
	if (url == null) return false;
	//дефолтные настройки
	var settings = {
		url       : url,		//адрес по которому отправлять запрос
		maxvalue  : 10,			//количество звезд
		curvalue  : 0,			//количество уже выбранных звезд
		disabled  : false,		//отключено или нет
		fields    : {},			//поля для сабмита, сюда можно добавить id товара или статьи, сюда добавится параметр rating определяющий выбранный рейтинг
		callback  : null		//функция которая выполнится по завершению ajax запроса с отправкой рейтинга
	};
	//переопределяем настройки, если они были заданы
	if (options) jQuery.extend(settings, options);
	//рисуем теги для звездочек, и перенос
	for(i=0; i<settings.maxvalue; i++)
		this.append('<span index="'+(i+1)+'" title="Баллов '+(i+1)+'"></span>');
	this.append('<br class="break">');
	//определяем нужные переменные
	var container = this;		//текущий контейнер
	var selected_rating = 0;	//текущий выбранный рейтинг
	//функция перерисовки звездочек
	function redraw(selection, other, index)
	{
		$('span:lt('+index+')', container).attr('class', other);
		$('span:gt('+(index-1)+')', container).attr('class', selection);
	}
	//если включено, то рисуем текущее и продолжаем, если нет - рисуем выбор и прерываемся
	if (!settings.disabled)
		redraw('rating', 'rating-current', settings.curvalue);
	else
	{
		redraw('rating', 'rating-selected', settings.curvalue);
		return this;
	}
	//вешаем события
	
	$('span', this).mouseover(function(node) {		//курсор над звездочкой
		var rating = this.getAttribute('index');
		if ((!settings.disabled) && (selected_rating != rating))
		{
			redraw('rating', 'rating-selected', rating);
			selected_rating = rating;
		}
	});
	$('span', this).mouseout(function() {						//курсор ушел
		if (!settings.disabled)
		{
			redraw('rating', 'rating-current', settings.curvalue);
			selected_rating = 0;
		}
	});
	$('span', this).click(function() {							//кликнули
		if (!settings.disabled)
		{
			var rating = this.getAttribute('index');
			settings.disabled = true;						//выключаем, чтобы больше не кликали
			redraw('rating', 'rating-selected', rating);	//прорисовываем 
			settings.fields.rating = rating;				//дособачиваем в массив рейтинг
			//выполняем запрос
			$.post(settings.url, settings.fields, settings.callback);
		}
	});
	
	return this;
}