Informator

Dodatkowe informacje o zgłoszeniach w panelu naruszeń portalu Wykop.pl.

נכון ליום 11-05-2017. ראה הגרסה האחרונה.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name        	Informator
// @namespace   	http://www.wykop.pl/ludzie/Deykun
// @description 	Dodatkowe informacje o zgłoszeniach w panelu naruszeń portalu Wykop.pl.
// @author      	Deykun
// @icon        	http://x3.cdn03.imgwykop.pl/c3201142/comment_bWVFKhjLOfg5B1xNe08BMxJTQF4qMS8V.gif
// @include	    	htt*wykop.pl/naruszenia/*
// @version     	3.51
// @grant       	none
// @run-at			document-end
//
// ==/UserScript==

$(document).ready(function() {
	var wersjainformatora = '3.50';
	console.info('Informator '+wersjainformatora);
	// Style CSS - kolory można podmienić na własne
	var dziennynocny = $('.rbl-block').css('background-color');

	/* Matowa paleta kolorów */
	var kolory = ['#8aa380', '#b3868f', '#d4cbad', '#62a2b1', '#8cb1ba', '#717171'];

	/* Kontrastowa paleta kolorów */
	if (localStorage.getItem('informator.lo-o(2)') === '1') {kolory = ['#54a145', '#bb4751', '#c7ca85', '#4da0c5', '#8cb1ba', '#717171'];}

	// Jeśli niżej własne kolory i usuniesz "//" przed "kolory = " dodatek użyje Twojej palety
	// kolory = ['#prawidlowe', '#nieprawidlowe', '#zmieniony', '#konsultacji', '#nowe', '#rozpatrywane'];

	if (dziennynocny !== 'rgb(255, 255, 255)'){kolory[5] = '#717171';}
	$('head').append('<style>\
		@import https://fonts.googleapis.com/css?family=Rubik:300,500;\
		*{box-sizing:border-box}\
		#informator *{font-family:\'Rubik\',Arial,sans-serif;text-align:center;font-weight:300;padding:0;margin:0}\
		#informator h2,#informator h3,#informator strong,#informator .bold{font-weight:500}\
		#informator h2{font-size:2.5em;margin:20px auto}\
		#informator h3{font-size:1.3em;margin-top:5px auto}\
		#informator p{margin-bottom:5px}\
		.prawidlowe,.infMod{background-color:#8aa380}\
		.nieprawidlowe,.infUst{background-color:#b3868f}\
		.zmieniony,.infPow{background-color:#d4cbad}\
		.konsultacji{background-color:#62a2b1}\
		.nowe,.infNag{background-color:#8cb1ba}\
		.rozpatrywane{background-color:#383838}\
		.tlo{background-color:#fff}\
		.infNag,.infPow{color:#383838}\
		.infMod,.infUst,.infUst a,.infUst a:hover{color:#fff}\
		#informator .infUst span{margin-left:10px;cursor:pointer}\
		#informator > div{padding:5px 25px;display:flex;flex-flow:row wrap;justify-content:space-between}\
		#informator > .infNag > div{align-self:flex-end}\
		#informator > div > div{flex:1 1 250px;margin:15px 0}\
		#informator > div > h2{flex:1 1 100%}\
		#informator > div > p{flex:1 1 100%}\
		#informator table,#informator tr,#informator tr:hover,#informator td{background:none;border:none}\
		#informator table{margin:0 auto;max-width:360px}\
		#informator td{padding:2px 5px;vertical-align:middle}\
		#informator td:last-child{text-align:left;width:42%}\
		#informator td:first-child{text-align:right;width:42%}\
		#informator .white{position:relative;background-color:#fff;border-color:#fff;width:2em;height:2em;margin:0 auto;padding:3px;border-radius:5px}\
		#informator .white .infoBox{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}\
		.infoBox{width:1.2em;border-radius:3px}\
		.infoBar,.infoBox{display:inline-block;vertical-align:middle;height:1.2em}\
		.infoLeft{border-top-left-radius:3px;border-bottom-left-radius:3px}\
		.infoRigth{border-top-right-radius:3px;border-bottom-right-radius:3px}\
		[tooltip]:before{content:attr(tooltip);position:absolute;opacity:0;transition:all .2s ease;padding:10px}\
		[tooltip]:hover:before{opacity:1;margin-top:50px}\
		[tooltip]:not([tooltip-persistent]):before{pointer-events:none}\
		\
		#informator .divChart{margin:0 auto;margin-bottom:10px;background-color:#fff;height:190px;width:190px;padding:5px;border-radius:10px;color:#383838}\
		#informator .chartBase{position:relative;height:180px;width:180px;border-radius:50%;cursor:help}\
		#informator .infPow .chartBase,#informator #infSuma .chartBase{cursor:pointer}\
		#informator .chartPie{position:absolute;height:100%;width:100%;border-radius:50%}\
		#informator .charPieSmall{position:absolute;height:90%;width:90%;border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%)}\
		#informator .clipPie{position:absolute;height:100%;width:100%;clip:rect(0,90px,180px,0)}\
		#informator .chartCenter{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);height:50%;width:50%;border-radius:50%;background-color:rgba(255,255,255,0.8);z-index:1000}\
		#informator .chartCenter span{position:absolute;padding:0;margin:0;top:55%;left:50%;transform:translate(-50%,-50%);text-align:center}\
		#informator .chartBase p{font-size:80%;line-height:1.2em}\
		#informator .chartBase .detalils{position:absolute;width:100%;height:100%;z-index:666;opacity:0;text-align:center}\
		#informator .detalils span{font-size:80%;position:absolute}\
		#informator .detalils .leftChart{left:0}\
		#informator .detalils .rightChart{right:0}\
		#informator .detalils .topChart{top:0}\
		#informator .detalils .bottomChart{bottom:0}\
		#informator .chartBase:hover .detalils{opacity:1;transition:1s}\
		\
		.prawidlowe, .infMod {background-color: '+kolory[0]+';}\
		.nieprawidlowe, .infUst {background-color: '+kolory[1]+';}\
		.zmieniony, .infPow {background-color: '+kolory[2]+';}\
		.konsultacji {background-color: '+kolory[3]+';}\
		.nowe, .infNag {background-color: '+kolory[4]+';}\
		.rozpatrywane {background-color: '+kolory[5]+';}\
		.tlo {background-color: #fff;}\
		.infoBox { width: 1.2em; border-radius: 3px;}\
		.infoBar, .infoBox { display:inline-block;	vertical-align:middle; height: 1.2em;}\
		.infoLeft { border-top-left-radius: 3px; border-bottom-left-radius: 3px;}\
		.infoRigth { border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\
		[tooltip]:before { content: attr(tooltip);\
			position: absolute;\
			opacity: 0;\
			background-color: '+dziennynocny+';\
			transition: all 0.25s ease;\
			padding: 10px;}\
		[tooltip]:hover:before { opacity: 1; margin-top: 50px; z-index:100;}\
		[tooltip]:not([tooltip-persistent]):before { pointer-events: none;}\
		</style>');

	/* Strona z naruszeniami */
	if (document.location.pathname.match('/naruszenia/moje')){
		// Liczba zgłoszeń z określonymi ocenami:
		var prawidlowe, dprawidlowe, nieprawidlowe, dnieprawidlowe, zmieniony, dzmieniony, konsultacja, dkonsultacja, nowe, dnowe, rozpatrywane, i;
		prawidlowe = nieprawidlowe = zmieniony = konsultacja = nowe = rozpatrywane = 0;
		dprawidlowe = dnieprawidlowe = dzmieniony = dkonsultacja = dnowe = 0;

		// Ukrywanie miniaturek w panelu zgłoszeń
		if (localStorage.getItem('informator.lo-o(1)') === '1') {$('div[class="media-content m-reset-float"]').remove();}

		/*
	    	Dane localStorage:
	    	lm - lista znanych moderatorów
			lp - lista znanych powodów

			los - lista tagów ostatnio sprawdzonych
			lds - lista tagów do sprawdzenia
			nlos, nlds - listy wyżej do zapisania
		*/

		var lm = [], lp = [], los = [], lds = [], nlos = [], nlds = [];

		for(i = 0 ; localStorage.getItem('informator.lm-m('+i+')') ; i++){
			lm[i] = localStorage.getItem('informator.lm-m('+i+')');}

		for(i = 0 ; localStorage.getItem('informator.lp-p('+i+')') ; i++){
			lp[i] = localStorage.getItem('informator.lp-p('+i+')');}

		for(i = 0 ; localStorage.getItem('informator.los-t('+i+')') ; i++){
			los[i] = localStorage.getItem('informator.los-t('+i+')');}

		for(i = 0 ; localStorage.getItem('informator.lds-t('+i+')') ; i++){
			lds[i] = localStorage.getItem('informator.lds-t('+i+')');}

		if (lm.length != ''){ console.log('Moderatorzy ('+lm.length+'): '+lm);}
		if (lp.length != ''){ console.log('Powody ('+lp.length+'): '+lp);}
		if (los.length != ''){ console.log('Ostatnio rozpatrzone zgłoszenia ('+los.length+'): '+los);}
		if (lds.length != ''){ console.log('Zgłoszenia wymagające ponownego rozpatrzenia ('+lds.length+'): '+lds);}
		console.log(' ');

		// Funkcja zajmująca się rozpatrzonymi zgłoszeniami
		function analizuj(tag, werdykt, moderator, powod){
			switch (werdykt) {
				case 'Prawidłowe': prawidlowe++; break;
				case 'Nieprawidłowe': nieprawidlowe++; break;
				case 'Zmieniony powód': zmieniony++; break;
				case 'W konsultacji': konsultacja++; break;}

			if (los.indexOf(tag) === -1 ) {
				//Nowe rozpatrzone zgłoszenie
				zapisz(werdykt, moderator, powod);
				zmiana(werdykt);
			} else if (lds.indexOf(tag) !== -1 && werdykt !== 'W konsultacji'){
				//Zgłoszenie rozpatrzone ponownie po trafieniu do konsultacji
				zapisz(werdykt, moderator, powod);
				zmiana(werdykt);
			}

			nlos.push(tag);
			if (werdykt === 'W konsultacji') {nlds.push(tag);}
		}

		// Funkcja zapisywania zgłoszenia w pamięci
		function zapisz(werdykt, moderator, powod) {
			if (lm.indexOf(moderator) === -1){
				//Nieznany moderator
				console.info('Dodano moderatora '+moderator+'.');
				localStorage.setItem('informator.lm-m('+lm.length+')', moderator);
				lm[lm.length] = moderator;
			}
			if (lp.indexOf(powod) === -1) {
				//Nieznany powod
				console.info('Dodano powód "'+powod+'".');
				localStorage.setItem('informator.lp-p('+lp.length+')', powod);
				lp[lp.length] = powod;
			}

			//Zapis
			var werdykt = werdykt.toLowerCase().charAt(0);
			if (werdykt === 'w'){werdykt = 'k';}

			var zapis = localStorage.getItem('informator.lo-'+werdykt) || 0; zapis++;
			localStorage.setItem('informator.lo-'+werdykt, zapis);
			zapis = localStorage.getItem('informator.lm-m('+lm.indexOf(moderator)+')-'+werdykt) || 0; zapis++;
			localStorage.setItem('informator.lm-m('+lm.indexOf(moderator)+')-'+werdykt, zapis);
			zapis = localStorage.getItem('informator.lp-p('+lp.indexOf(powod)+')-'+werdykt) || 0; zapis++;
			localStorage.setItem('informator.lp-p('+lp.indexOf(powod)+')-'+werdykt, zapis);
			zapis = localStorage.getItem('informator.lm-m('+lm.indexOf(moderator)+')-p('+lp.indexOf(powod)+')-'+werdykt) || 0; zapis++;
			localStorage.setItem('informator.lm-m('+lm.indexOf(moderator)+')-p('+lp.indexOf(powod)+')-'+werdykt, zapis);
		}

		function zmiana(werdykt){
			switch (werdykt) {
				case 'Prawidłowe': dprawidlowe++; break;
				case 'Nieprawidłowe': dnieprawidlowe++; break;
				case 'Zmieniony powód': dzmieniony++; break;
				case 'W konsultacji': dkonsultacja++; break;
				case 'Nowe': dnowe++; break;
			}
		}

		/*
			Pobranie listy zgłoszeń z tabeli:
			t - tag,
			w - werdykt,
			m - moderator
			p - powod
		*/

	    var t, w, m, p;
	    $('#violationsList > tbody > tr').each(
	      function() {
	        t = $(this).find('td:eq(2) > p').text().split(':').reverse().pop();
	        w = $(this).find('td:eq(3) > strong').text();
			p = $(this).find('td:eq(2) > p > span').text();

	        if (w === 'Prawidłowe' || w === 'Nieprawidłowe' || w === 'Zmieniony powód' || w === 'W konsultacji'){
				//Rozpatrzone zgłoszenia
				m = $(this).find('td:eq(3) > span').text().split('przez').pop().trim();
				console.log('#'+t+' rozpatrzone przez moderatora '+m+': '+w+' (powód zgłoszenia "'+p+'").');
				analizuj(t,w,m,p);
	        } else if (w === 'Nowe' || w === ''){
				//Nierozpatrzone zgłoszenia
				switch (w) {
					case 'Nowe':
						nowe++;
						var test = (lds.indexOf(t) !== -1);
						if (lds.indexOf(t) === -1){ zmiana(w);}
						break;
					case '': rozpatrywane++; break;}
				nlds.push(t);
				console.log('#'+t+' oczekuje na rozpatrzenie (powód zgłoszenia "'+p+'").');
	        }
	    });


		/* Aktualizacja list sprawdzonych i do sprawdzenia*/
		for (i = 0 ; i <= nlos.length ; i++) {
			if (i !== nlos.length){localStorage.setItem('informator.los-t('+i+')', nlos[i]);
			} else {localStorage.removeItem('informator.los-t('+i+')');}}
		for (i = 0 ; i <= nlds.length ; i++) {
			if (i !== nlds.length){localStorage.setItem('informator.lds-t('+i+')', nlds[i]);
			} else {localStorage.removeItem('informator.lds-t('+i+')');}}

		/* Podanie podsumowania w konsoli */
		console.log(' ');
		console.info('Prawidłowe : '+prawidlowe+' | Nieprawidłowe : '+nieprawidlowe+' | Zmieniony powód : '+zmieniony+' | W konsultacji : '+konsultacja+' | Nowe : '+nowe+' | Rozpatrywane : '+rozpatrywane);

		/* Panel statystyk na pasku */
		if (prawidlowe === 0 && nieprawidlowe === 0 && zmieniony === 0 && konsultacja === 0 && nowe === 0 && rozpatrywane === 0){
			$('.bspace > ul:nth-child(3) > li:nth-child(3)').after('<li><a href="http://www.wykop.pl/naruszenia/informator">Statystyki</a></liv>');
		} else {
			var przycisk = '<li><a href="http://www.wykop.pl/naruszenia/informator">';
			if (prawidlowe !== 0 || nieprawidlowe !== 0){
				var suma = prawidlowe + nieprawidlowe;
				if(dprawidlowe !== 0){przycisk += '(+'+dprawidlowe+') ';}
				przycisk += prawidlowe+' <div class="infoBar infoLeft prawidlowe" tooltip="Prawidłowe zgłoszenia ('+prawidlowe+' - '+Math.round((prawidlowe/suma)*100)+'%)" style="width:'+(5+Math.round((prawidlowe/suma)*100))+'px"></div><div class="infoBar infoRigth nieprawidlowe" tooltip="Nieprawidłowe zgłoszenia ('+nieprawidlowe+' - '+Math.round((nieprawidlowe/suma)*100)+'%)" style="width:'+(5+Math.round((nieprawidlowe/suma)*100))+'px"></div> '+nieprawidlowe;
				if(dnieprawidlowe !== 0){przycisk += ' (+'+dnieprawidlowe+')';}}
			if (zmieniony !== 0){
				przycisk += ' <div class="infoBox zmieniony" tooltip="Zgłoszenia w których powód został zmieniony ('+zmieniony+')"></div> '+zmieniony;
				if(dzmieniony !== 0){przycisk += ' (+'+dzmieniony+')';}}
			if (konsultacja !== 0){
				przycisk += ' <div class="infoBox konsultacji" tooltip="Zgłoszenia które zostały przekazane do konsultacji ('+konsultacja+')"></div> '+konsultacja;
				if(dkonsultacja !== 0){przycisk += ' (+'+dkonsultacja+')';}}
			if (nowe !== 0){
				przycisk += ' <div class="infoBox nowe" tooltip="Zgłoszenie czekające na rozpatrzenie ('+nowe+')"></div> '+nowe;
				if(dnowe !== 0){przycisk += ' (+'+dnowe+')';}}
			if (rozpatrywane !== 0){
				przycisk += ' <div class="infoBox rozpatrywane" tooltip="Zgłoszenia które w tym momencie przegląda moderator ('+rozpatrywane+')"></div> '+rozpatrywane;}
			przycisk += '</a></li>';
			$('.bspace > ul:last-child').append(przycisk);}
		}

	/* Strona wyświetlająca szczegółowe statystyki */
	else if (document.location.pathname.match('/naruszenia/informator')){
		$('.bspace > ul:last-child').append('<li class="active"><a href="http://www.wykop.pl/naruszenia/informator">Informator</a></liv>');
		var infkomunikat = 'Witaj w zakładce ustawień dodatku Informator!</p><p>Jeśli uważasz dodatek za użyteczny i wart polecenia pamiętaj, że zawsze <strong>możesz go ocenić</strong> <a href="http://www.wykop.pl/dodatki/pokaz/409/">tutaj</a>. :)';
		var panelmoderatorow = '', panelpowodow = '', panelustawien = '', panelustawienmod = '', i;
		var lh = '', lhls = [];

		/* Pobieranie danych liczbowych do wykresu */
		function informatorGetLS(indeks){
			var output = [];
			output[0] = Number(localStorage.getItem('informator.'+indeks+'-p') || 0);
			output[1] = Number(localStorage.getItem('informator.'+indeks+'-z') || 0);
			output[2] = Number(localStorage.getItem('informator.'+indeks+'-k') || 0);
			output[3] = Number(localStorage.getItem('informator.'+indeks+'-n') || 0);
			return output;}

		/* Rysowanie wykresu */
		function informatorPieChart(prawidlowe, zmieniony, konsultacja, nieprawidlowe){
			var suma = prawidlowe+zmieniony+konsultacja+nieprawidlowe;
			var deg = 0, charArea = 0, procent = '';
			var colorClass = ['prawidlowe', 'zmieniony ', 'konsultacji ', 'nieprawidlowe '];
			var html = '';
			if (suma !== 0){
				html = '<div class="divChart"><div class="chartBase"><div class="info">';
				for (var i = 0; i < arguments.length ; i++){
					if(arguments[i] === 0){continue;}

					charArea = Math.round((arguments[i]/suma)*360);
					if(charArea < 120){
						html += '<div class="clipPie" style="transform: rotate('+deg+'deg);"><div class="chartPie clipPie" style="transform: rotate('+(charArea - 180)+'deg);"><div class="charPieSmall '+colorClass[i]+'"></div></div></div>';
						deg += charArea;
						charArea = 0;
					}
					if(charArea > 180){
						html += '<div class="clipPie" style="transform: rotate('+deg+'deg);"><div class="chartPie clipPie '+colorClass[i]+'" style="transform: rotate(0deg);"></div></div><div class="clipPie" style="transform: rotate('+(deg+179)+'deg);"><div class="chartPie clipPie '+colorClass[i]+'" style="transform: rotate(-178deg);"></div></div>';
						deg += 180;
						charArea -= 180;
						}
					if(charArea > 0){
					html += '<div class="clipPie" style="transform: rotate('+deg+'deg);"><div class="chartPie clipPie '+colorClass[i]+'" style="transform: rotate('+(charArea - 180)+'deg);"></div></div>';
				deg += charArea;}}


				if (prawidlowe !== 0){procent = '<h3>'+(parseFloat(((prawidlowe)/suma)*100).toFixed(1))+'%</h3><p>prawidłowych z <strong>'+suma+'</strong></p>';
				} else if (zmieniony !== 0 || konsultacja !== 0){procent = '<h3>'+(parseFloat(((zmieniony+konsultacja)/suma)*100).toFixed(1))+'%</h3><p>uzasadnionych z <strong>'+suma+'</strong></p>';
				} else {procent = '<h3>100.0%</h3><p>nieprawidłowych z <strong>'+suma+'</strong></p>';}

				html += '<div class="chartCenter"><span>'+procent+'</span></div></div><div class="detalils"><span class="topChart leftChart"><div class="infoBox prawidlowe"></div> '+prawidlowe+'</span><span class="topChart rightChart">'+nieprawidlowe+' <div class="infoBox nieprawidlowe"></div></span><span class="bottomChart leftChart"><div class="infoBox zmieniony"></div> '+zmieniony+'</span><span class="bottomChart rightChart">'+konsultacja+' <div class="infoBox konsultacji"></div></span></div></div></div>';
			}

			var output = [html,suma];
			return output;
		}

		//Sortowanie wykresów
		function informatorSort(a,b){
			var zamiana; do {
				zamiana = false;
				for (i = 0 ; i < a.length-1 ; i++) {
					if (a[i] < a[i+1]) {
						var temp = a[i];
						a[i] = a[i+1];
						a[i+1] = temp;

						temp = b[i];
						b[i] = b[i+1];
						b[i+1] = temp;
						zamiana = true;}}
			} while (zamiana);}

		/* Rekacja na wybór powodu */
		function informatorPowody(){
			var id = this.id;
			var panelmoderatorowdetale = '';
			if (id === ''){panelmoderatorowdetale = panelmoderatorow;
			} else {
			id = Number(id.split('_').pop()); //id powodu
			var nazwapowod = localStorage.getItem('informator.lp-p('+id+')');

			/* Pobieranie danych do wykresu moderatorów */
			var sorta = [], sortb = [];
			for(var i = 0 ; localStorage.getItem('informator.lm-m('+i+')') ; i++){
				if (localStorage.getItem('informator.lm-m('+i+')-o(1)') !== '1'){
					lh = localStorage.getItem('informator.lm-m('+i+')');
					lhls = informatorGetLS('lm-m('+i+')-p('+id+')');
					sorta[i] = informatorPieChart(lhls[0],lhls[1],lhls[2],lhls[3])[1];
					if (sorta[i] !== 0) { sortb[i] = '<div>'+informatorPieChart(lhls[0],lhls[1],lhls[2],lhls[3])[0]+'<h3>'+lh+'</h3></div>';}
					else {sortb[i] = '';}}
				else {sorta[i] = 0; sortb[i] = '';}}

			/* Wykres sumaryczny */
			lhls = informatorGetLS('lp-p('+id+')');
			panelmoderatorowdetale += '<p>Statystyki dla powodu "'+nazwapowod+'".<p><div>'+informatorPieChart(lhls[0],lhls[1],lhls[2],lhls[3])[0]+'<h3>Razem</h3></div>';
			informatorSort(sorta,sortb);	for(var i = 0 ; i < sorta.length ; i++){panelmoderatorowdetale += sortb[i];}}

			var dtime = 400;
			$('.infMod').slideUp( dtime, function() { $('.infMod').empty().append('<h2>Moderatorzy</h2>'+panelmoderatorowdetale).slideDown((dtime/2));});}

		/* Rekacja panelu ustawień */
		function informatorUstawienia(){
			var id = this.id;
			if (id == 'ustMin'){
				var temp = localStorage.getItem('informator.lo-o(1)') || 0;
				if (temp === '1') {
					temp = 0; var check = '✗ Ukryj miniaturki znalezisk w panelu.';
				} else {
					temp = 1; var check = '✔ Miniaturki znalezisk są ukrywane w panelu.';}
				localStorage.setItem('informator.lo-o(1)', temp);
				$('#ustMin').empty().append(check);
			} else if (id == 'ustKont'){
				var temp = localStorage.getItem('informator.lo-o(2)') || 0;
				if (temp === '1') {
					temp = 0; var check = 'Większy kontrast kolorów dodatku.';
					$('.prawidlowe, .infMod').css('background-color', '#8aa380');
					$('.nieprawidlowe, .infUst').css('background-color', '#b3868f');
					$('.zmieniony, .infPow').css('background-color', '#d4cbad');
					$('.konsultacji').css('background-color', '#62a2b1');
					$('.nowe, .infNag').css('background-color', '#8cb1ba');
				} else {
					temp = 1; var check = 'Mniejszy kontrast kolorów dodatku.';
					$('.prawidlowe, .infMod').css('background-color', '#6aa25d');
					$('.nieprawidlowe, .infUst').css('background-color', '#b8606a');
					$('.zmieniony, .infPow').css('background-color', '#c7ca85');
					$('.konsultacji').css('background-color', '#4da0c5');
					$('.nowe, .infNag').css('background-color', '#8cb1ba');}
				localStorage.setItem('informator.lo-o(2)', temp);
				$('#ustKont').empty().append(check);
			} else {
				id = Number(id.split('_').pop()); //id moderatora
				var temp = localStorage.getItem('informator.lm-m('+id+')-o(1)');
				if (temp === '1'){
					temp = 0; var check = localStorage.getItem('informator.lm-m('+id+')')+' ✔ ';
				} else {
					temp = 1; var check = localStorage.getItem('informator.lm-m('+id+')')+' ✗ ';}}
			localStorage.setItem('informator.lm-m('+id+')-o(1)', temp);
			$('#infoIDM_'+id).empty().append(check);}


				// kolory = ['#prawidlowe', '#nieprawidlowe', '#zmieniony', '#konsultacji', '#nowe', '#rozpatrywane'];


		/* Pobieranie danych dla moderatorów */
		var sorta = [], sortb = [];
		for(i = 0 ; localStorage.getItem('informator.lm-m('+i+')') ; i++){
			if (localStorage.getItem('informator.lm-m('+i+')-o(1)') !== '1'){
				lh = localStorage.getItem('informator.lm-m('+i+')');
				lhls = informatorGetLS('lm-m('+i+')');
				sorta[i] = informatorPieChart(lhls[0],lhls[1],lhls[2],lhls[3])[1];
				sortb[i] = '<div>'+informatorPieChart(lhls[0],lhls[1],lhls[2],lhls[3])[0]+'<h3>'+lh+'</h3></div>';}
			else {sorta[i] = 0; sortb[i] = '';} }

		informatorSort(sorta,sortb);	for(var i = 0 ; i < sorta.length ; i++){panelmoderatorow += sortb[i];}

		/* Pobieranie danych dla powodów */
		sorta = []; sortb = [];
		for(i = 0 ; localStorage.getItem('informator.lp-p('+i+')') ; i++){
			lh = localStorage.getItem('informator.lp-p('+i+')');
			lhls = informatorGetLS('lp-p('+i+')');
			sorta[i] = informatorPieChart(lhls[0],lhls[1],lhls[2],lhls[3])[1];
			sortb[i] = '<div id="infoIDP_'+i+'">'+informatorPieChart(lhls[0],lhls[1],lhls[2],lhls[3])[0]+'<p>"<em>'+lh+'</em>"</p></div>';}

		informatorSort(sorta,sortb);	for(var i = 0 ; i < sorta.length ; i++){panelpowodow += sortb[i];}

		/* Panel ustawień */
		if (localStorage.getItem('informator.lo-o(1)') === '1'){
			panelustawien += '<p><span id="ustMin">✔ Miniaturki znalezisk są ukrywane w panelu.</span></p>';
		} else {
			panelustawien += '<p><span id="ustMin">✗ Ukryj miniaturki znalezisk w panelu.</span></p>';}


		if (localStorage.getItem('informator.lo-o(2)') === '1'){
			panelustawien += '<p><span id="ustKont">Mniejszy kontrast kolorów dodatku.</span></p>';
		} else {
			panelustawien += '<p><span id="ustKont">Większy kontrast kolorów dodatku.</span></p>';}

		panelustawienmod += '<p>Widoczność moderatorów : ';
		for(i = 0 ; localStorage.getItem('informator.lm-m('+i+')') ; i++){
			if (localStorage.getItem('informator.lm-m('+i+')-o(1)') === '1'){
				panelustawienmod += ' <span id="infoIDM_'+i+'">'+localStorage.getItem('informator.lm-m('+i+')')+' ✗ </span>';
			} else {
				panelustawienmod += ' <span id="infoIDM_'+i+'">'+localStorage.getItem('informator.lm-m('+i+')')+' ✔ </span>';
		}}
		panelustawienmod += '</p>';

		/* Wykres sumaryczny */
		lhls = informatorGetLS('lo');

		/* Wyświetlenie panelu - jeśli są jakieś dane, i jeśli ich nie ma */
		if (lhls[0]+lhls[1]+lhls[2]+lhls[3] !== 0){
			$('.error-page').replaceWith('<div id="informator"><div class="infNag"><div><table>\
			<tr><td class="bold">'+lhls[0]+'</td><td><div class="white"><div class="infoBox prawidlowe"></div></div></td><td class="bold">Prawidłowe</td></tr>\
			<tr><td class="bold">'+lhls[3]+'</td><td><div class="white"><div class="infoBox nieprawidlowe"></div></div></td> <td class="bold">Nieprawidłowe</td> </tr>\
			<tr><td>'+lhls[1]+'</td><td><div class="white"><div class="infoBox zmieniony"></div></div></td><td>Zmieniony powód</td></tr>\
			<tr><td>'+lhls[2]+'</td><td><div class="white"><div class="infoBox konsultacji"></div></div></td><td>W konsultacji</td></tr>\
			<tr><td></td><td><div class="white"><div class="infoBox nowe"></div></div></td> <td>Nowe</td></tr>\
			<tr><td></td><td><div class="white"><div class="infoBox rozpatrywane"></div></div></td><td>Obecnie rozpatrywane</td></tr></table><h2>Legenda</h2></div>\
			<div id="infSuma">'+informatorPieChart(lhls[0],lhls[1],lhls[2],lhls[3])[0]+'<h2>Razem</h2></div></div>\
			<div class="infMod"><h2>Moderatorzy</h2>'+panelmoderatorow+'</div>\
			<div class="infPow"><h2>Powody zgłoszeń</h2><p>Po wybraniu powodu pojawi się więcej informacji.</p>'+panelpowodow+'</div>\
			<div class="infUst"><div><h2>Ustawienia</h2>'+panelustawien+panelustawienmod+'</div><div><h2>O dodatku</h2><p>Jeśli uważasz dodatek za użyteczny i wart polecenia pamiętaj, że zawsze <strong>możesz go ocenić</strong> <a href="http://www.wykop.pl/dodatki/pokaz/409/">tutaj</a>. :)</p><p>Błędy w jego działaniu możesz zgłosić w <a href="http://www.wykop.pl/wiadomosc-prywatna/konwersacja/Deykun/">prywatnej wiadomości</a>.</p></div></div></div>');
		} else {
			$('.error-page').replaceWith('<div id="informator"><div class="infNag"><div><table>\
			<tr><td class="bold">'+lhls[0]+'</td><td><div class="white"><div class="infoBox prawidlowe"></div></div></td><td class="bold">Prawidłowe</td></tr>\
			<tr><td class="bold">'+lhls[3]+'</td><td><div class="white"><div class="infoBox nieprawidlowe"></div></div></td> <td class="bold">Nieprawidłowe</td> </tr>\
			<tr><td>'+lhls[1]+'</td><td><div class="white"><div class="infoBox zmieniony"></div></div></td><td>Zmieniony powód</td></tr>\
			<tr><td>'+lhls[2]+'</td><td><div class="white"><div class="infoBox konsultacji"></div></div></td><td>W konsultacji</td></tr>\
			<tr><td></td><td><div class="white"><div class="infoBox nowe"></div></div></td> <td>Nowe</td></tr>\
			<tr><td></td><td><div class="white"><div class="infoBox rozpatrywane"></div></div></td><td>Obecnie rozpatrywane</td></tr></table><h2>Legenda</h2></div>\
			<div id="infSuma"><p><strong>Brak danych</strong> do wyświetlenia.</p><h2>Informator</h2></div></div>\
			<div class="infUst"><div><h2>Ustawienia</h2>'+panelustawien+'</div><div><h2>O dodatku</h2><p>Jeśli uważasz dodatek za użyteczny i wart polecenia pamiętaj, że zawsze <strong>możesz go ocenić</strong> <a href="http://www.wykop.pl/dodatki/pokaz/409/">tutaj</a>. :)</p><p>Błędy w jego działaniu możesz zgłosić w <a href="http://www.wykop.pl/wiadomosc-prywatna/konwersacja/Deykun/">prywatnej wiadomości</a>.</p></div></div></div>');
		}

		/* Obsługa akcji */
		$('.infPow > div, #infSuma > div').click(informatorPowody);
		$('.infUst span').click(informatorUstawienia);

		}
	else if (document.location.pathname.match('/naruszenia/')){
		$('.bspace > ul:last-child').append('<li><a href="http://www.wykop.pl/naruszenia/informator">Statystyki</a></liv>');
		}
	});