
// **	**	**	**	**	**	**	**	**	**	**	**	**	**	**
// **		Rate Class by Skuba Vasiliy
// **		updated by Petrenko Yuri (fix IE problem)
// **		Copyright (C) 2010 by 3SunS
// **	**	**	**	**	**	**	**	**	**	**	**	**	**	**

$(document).ready(function(){
	
	var count = 5;
	var def_val = 0;
	var title_txt = "Поставить ";
	
	
	$('div.rate').each(function(){
		var id_prod = 0;
		var param = $(this).attr('name').split(',');							
//		alert(param);
		for(q in param){
			var data = param[q].split('.');				   
			if (data[0] == 'count') count = data[1];
			if (data[0] == 'def_val') def_val = data[1];
			if (data[0] == 'id_prod') id_prod = data[1];
		}
	
		render($(this),count,def_val,id_prod);
	});
	



function render(elem,c,v,id_prod){
	$(elem).html('');
	
	var color;
	
	if (v<0) {
		color = 'red';
		$('span[name=rate_'+id_prod+']').html(v);
	} else {
		color = 'green';
		$('span[name=rate_'+id_prod+']').html('+'+v);
	}
	
	var pos = position_start(c,v);

	var counter = Math.abs(v);
	for(var x=0;x<(c*2);x++){
		var css_class = "passive";
//alert("x:"+x+" counter:"+counter+" pos:"+(pos-1))
		if (x >= pos && counter > 0) {
			css_class = color;
			counter--;
		} else css_class = "passive";
		
		var pos_rate = ((x-c) >= 0)?"+"+(x-c+1):x-c;

		css_class = ((x % 2 == 1)? css_class+'2' : css_class+'1');
		var otstup = ((x % 2 == 1)? '&nbsp;' : '');
		$(elem).append('<a class="'+css_class+'" name="a_rate" lang="'+pos_rate+':'+id_prod+'"></a>');

	}
	
	bind_stars(id_prod);
}

function position_start(count_stars,rate){
	count_stars = parseInt(count_stars);
	if (rate < 0) {
		var result = count_stars-Math.abs(rate);
		if (result > 0) return result; else return 0;
	} else {
		return count_stars;
	}
}


function paint_stars(pos_start,length,id_prod,color,curr_css_class){
	var current_arr_stars = Array(0);
	var arr_stars = $('div#rate_'+id_prod+' a[name=a_rate]');
	for(var x=pos_start;x<(parseInt(pos_start)+parseInt(length));x++){
		var css_class;
		if (color != '') {		
			css_class = ((x % 2 == 1)? color+'2' : color+'1');
		} else {
			css_class = (curr_css_class != '')?curr_css_class:'';
		} 
		current_arr_stars[x] = $(arr_stars[x]).attr('class');
//		window.status = current_arr_stars[x];
		$(arr_stars[x]).removeClass().addClass(css_class);// attr('class', css_class);
	}
	return current_arr_stars;
}


function bind_stars(id_prod){
	$('div#rate_'+id_prod+' a[name=a_rate]').each(function(){
		
		var data = $(this).attr('lang').split(':');
		if (parseInt(data[0]) == 0 || parseInt(data[1]) == 0) return 0;
		
		$(this).attr('title',title_txt+data[0]);
		
		var current_arr_stars = Array(0);
		
		$(this).bind('mouseover',function(){
			var rate = $(this).attr('lang').split(':');
			if (parseInt(rate[0]) == 0) return 0;
			
			var color;var pos;
			if (rate[0]<0) {
				color = 'red';
				pos = (Math.abs(rate[0])<count)?count-Math.abs(rate[0]):0;
			} else {
				color = 'green';
				pos = count;
			}
			current_arr_stars = paint_stars(pos,Math.abs(rate[0]),data[1],color,'');
		});
		
		$(this).bind('mouseout',function(){
			if (current_arr_stars.length > 0){
				for (q in current_arr_stars){
					paint_stars(q,1,data[1],'',current_arr_stars[q]);
				}
			}
		});
		
		
		
		$(this).bind('click',function(){
			
			var id = data[1];
			
			JsHttpRequest.query(
				'hr_gate.php?test=500&r='+Math.random(),
				{
					'sp': "rate",
					'id': id,
					'abs':data[0]
				},
				function(result, errors) {
					if (errors) alert(errors);
					if (result) {
						if (result.yet_voting>0) {alert('Вы уже голосовали!');return;}
						if (result.not_registered>0) {alert('Чтобы проголосовать Вам необходимо зарегистрироваться!');return;}
						if (result.new_data) render($('div#rate_'+id),result.new_data.count,result.new_data.rate,id);					
					}
				},
				true  //disable caching
			);
			
		})
		
	});
	
}










});
