$(function(){
	
	// Atalho para o box de comentários e o campo
	var comments = $('#comments');
	var comment_area = $('#comment_area', comments);
	
	// Cancela se o campo não existir
	if (comment_area.length == 0) {
		return;
	}
	
	// Limite máximo de caracteres no campo
	var limit = 250;
	// Atalho para o elemento que recebe a contagem
	var count_display = $('.form_footer > strong > span:eq(0)', comments);
	
	// Atualiza a contagem de caracteres do campo
	var update_count = function () {
		
		// Atalho para o valor original
		var val = comment_area.val();
		
		// Corta o texto se o valor ultrapassar o limite
		if (val.length > limit) {
			val = val.substr(0, limit);
			comment_area.val(val);
		}
		
		// Atualiza a contagem de caracteres restantes
		count_display.text(limit - val.length);
		
	};
	
	// Atribui eventos e executa a contagem inicial
	comment_area.bind('keyup keydown change blur input click', update_count);
	update_count();
	
	// Link de denúncia
	$('ul li a.abuse', comments).click(function(e){
		return confirm('Realmente deseja denunciar este comentário?');
	});
	
	// Rating dos comentários
	var rate_field = $('#rate_field');
	if (rate_field.length > 0) {
		
		rate_field.append( $('<input type="hidden" />') );
		var radios = $(':radio', rate_field);
		var rate_hidden = $(':hidden', rate_field).attr('name', radios.attr('name'));
		var rate_choices;
		
		radios.each(function(i){
			var radio = $(this);
			if (radio.val()) {
				var link = $('<a />').attr('href', '#' + radio.val()).text(radio.val()).click(function(){
					var val = radio.val();
					if (rate_hidden.val() == val) {
						rate_choices.removeClass('on');
						val = 0;
					}
					else {
						link.nextAll('a').removeClass('on');
						link.prevAll('a').add(link).addClass('on');
					}
					rate_hidden.val(val);
					return false;
				});
				rate_field.append(link);
			}
			radio.parent().remove();
		});
		
		rate_choices = $('a', rate_field);
		
		$('form', comments).submit(function(){
			if ((rate_hidden.val() <= 2) && (!comment_area.val())) {
				alert('É preciso incluir um comentário para esta avaliação!');
				return false;
			}
		});
	}
	
	var regras = $('#comment_rules', comments);
	var bt_regras = $('#bt_rules', comments).toggle(function(){
		regras.slideDown();
		return false;
	},
	function(){
		regras.slideUp();
		return false;
	});
	
});