// JavaScript Document
/*
* Rating star
* 15/12/2007
* autor Antonio Alves Neto  
* Customizado Rating jQuery para correto funcionamento, adaptando para as necessidades do BlogTV 
*/

jQuery.montaRating = function(divName, idHidden, funcao, media){
    var divs = jQuery('#' + divName);
    for(var i=0; i<divs.length; i++){
        var inputs = '<input type="radio" name="score" value="1" />';
        inputs += '<input type="radio" name="score" value="2" />';
        inputs += '<input type="radio" name="score" value="3" />';
        inputs += '<input type="radio" name="score" value="4" />';
        inputs += '<input type="radio" name="score" value="5" />';
        
        divs[i].innerHTML = inputs;
    }
    jQuery('#'+ divName +' input[@type=radio]').rating(divName,idHidden,funcao,media); 
}

jQuery.fn.rating = function(divName,idHidden, funcao, media, settings) {
	settings = jQuery.extend({
		 cancel:'Cancel Rating',
		 currentValue:''
	}, settings);			
	var prevElem = null;
	var valueElem = null;
	var container = jQuery(this);
	var CancelElem = null;
	var event = {
		fill: function(el){ // fill to the current mouse position.
			var stars = jQuery(valueElem).siblings('.star');
			var index = stars.index(el) + 1;
			jQuery(stars)
				.children('a').css('width', '100%').end()
				.lt(index).addClass('star_on').end();
		},
		drain: function() { // drain all the stars.
			var stars = jQuery(valueElem).siblings('.star');
			jQuery(stars)
				.filter('.star_on').removeClass('star_on').end()
				.filter('.star_hover').removeClass('star_hover').end();
		},
		reset: function(){ // Reset the stars to the default index.
			var stars = jQuery(valueElem).siblings('.star');
			jQuery(stars).lt(settings.currentValue).addClass('star_on').end();
		}
	};
	return this.each(function (i)
		{
			if(i == 0)//prepend cancel option at the begining
			{					
				valueElem = jQuery('<input type="hidden" name="' + idHidden + '" id="' + idHidden + '" value="" />');
				jQuery(this).before(valueElem);
				
				//adicionado
				prevElem = valueElem;		
			}
			var elemento = '<div class="star';
			//media é usada para definir o valor inicial das estrelas
			if (this.value <= media)
			    elemento += ' star_on';
			elemento += '"><a href="javascript:void(0)" title="' + this.value + '" >' + this.value + '</a></div>';    
			
			preElemTemp  = jQuery(elemento);
			
			jQuery(prevElem).after(preElemTemp);
			jQuery(preElemTemp)
					.mouseover(function(){
								event.drain();
								event.fill(this);
						})
						.mouseout(function(){
								//event.drain(); somente esse deve ser descomentado para voltar ao normal
								jQuery.montaRating(divName, idHidden, funcao, media);
						});			
				jQuery(preElemTemp).click(function(){
						
						//alert(jQuery(this).children('a').attr('title'));
						settings.currentValue = jQuery(this).children('a').attr('title');
						//alert(jQuery(this).children('a').attr('title'));
						jQuery(valueElem).val(settings.currentValue);
						eval(funcao);
						
						jQuery('star').removeClass('star_on');
						return;
				});						
					prevElem = preElemTemp;
					preElemTemp = null;
					//remove o checkbox
					jQuery(this).remove();
					if(i + 1 == this.length)
					{    
						event.reset();									
					}
							
				}								
				
		    );

};
