joyreactor.cc (reactor.cc) Comment Colorizer

Colorizes comments by rating

// ==UserScript==
// @name            joyreactor.cc (reactor.cc) Comment Colorizer
// @description     Colorizes comments by rating
// @author          Sanya_Zol (Alexander Zolotarev)
// @license         Public domain
// @icon            http://reactor.cc/favicon.ico
// @homepageURL     https://greasyfork.org/en/scripts/518-joyreactor-cc-comment-colorizer
// @namespace       Sanya_Zol
// @version         0.2.0
// @include         http://joyreactor.cc/*
// @include         https://joyreactor.cc/*
// @include         http://reactor.cc/*
// @include         https://reactor.cc/*
// @include         http://*.reactor.cc/*
// @include         https://*.reactor.cc/*
// @run-at          document-end
// @grant           none
// ==/UserScript==

// old homepage: http://userscripts.org/scripts/show/485580

(function(){
	var f = function($){
		// var ZolCalcColor = function(r){var sub = (255-Math.min( Math.round( Math.abs(r)*10 ), 255 )+256).toString(16).substr(1); return '#'+( (r>0)?(sub+'ff'+sub):('ff'+sub+sub) );};
		var ZolCalcColor_max = 255/Math.log(300);
		var ZolCalcColor = function(r){
			r=Math.round(r*10);
			// var sub = (255-Math.min( Math.round( Math.log(Math.abs(r)+1)*ZolCalcColor_max ), 255 )+256).toString(16).substr(1);
			var sub = (255-Math.min( Math.round( Math.log(Math.abs(r)+1)*ZolCalcColor_max ), 255 ) );
			// return '#'+( (r>0)?(sub+'ff'+sub):('ff'+sub+sub) );
			return ( (r>0)?(sub+',255,'+sub):('255,'+sub+','+sub) );
		};
		var ZolGradient = function(a,gr){
			a.css({background:'linear-gradient(to right, rgba('+gr+',0) 0%,rgba('+gr+',0) 1%,rgba('+gr+',1) 80%,rgba('+gr+',1) 100%)',borderRadius:'5px'});
		};
		var RX = /^\s*(-?\d+\.\d+)\s*$/;
		var processFunc = function(){
			// $(this).find('div.vote-plus').css({borderRadius:'20px',border:'2px rgb(0,255,0) solid',height:'12px',marginTop:'-5px'});
			// $(this).find('div.vote-minus').css({borderRadius:'20px',border:'2px rgb(255,0,0) solid',height:'12px',marginTop:'-5px'});
			$(this).find('span.comment_rating').css({"float":'right',fontWeight:'bold',color:'#000'});
			
			$(this).find('div.txt').each(function(){
				if( !$(this).data('zol_colorized') ){
					$(this).data('zol_colorized',true);
					var cr = $(this).find('span.comment_rating > span');
					var r = RX.exec( cr.text() );
					if( !r ){return;}
					r=parseFloat(r[1]);
					if(isNaN(r)){return;}
					ZolGradient($(this),ZolCalcColor(r));
					
					// $(this).find('div.vote-plus').css({outline:'2px #000 solid',background:'#0F0',fontSize:'16px'}).html('+');
					// $(this).find('div.vote-minus').css({outline:'2px #000 solid',background:'#F00',fontSize:'16px'}).html('-');
				}
			});
		};
		
		$(document).on('DOMUpdate','.post_comment_list',function(e){
			processFunc.call(e.target);
		});
		// $('div.comment_list_post').each(processFunc);
		$('.post_comment_list').each(processFunc);
	};
	var f2;
	f2 = function(){
		if( window.jQuery ){
			// jQuery(f);
			setTimeout(function(){
				jQuery(f);
			},200);
		} else {
			setTimeout(f2,500);
		}
	};
	f2();
})();