ImThatGuy / Poukav extension

// ==UserScript==
// @name         Poukav extension
// @author       ImThatGuy
// @description  Poukav Extension ajoute des tas de fonctionnalités à jeuxvideo.com !
// @include      http://www.jeuxvideo.com/*
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require      https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery.terminal/0.11.13/js/jquery.terminal.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery-modal/0.8.0/jquery.modal.min.js
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_notification
// @grant        GM_xmlhttpRequest
// @version      2.1
// @icon         http://image.noelshack.com/fichiers/2016/44/1478015517-pex.png
// @copyright    2016+, ImThatGuy
// ==/UserScript==

/*jshint multistr: true */
// VARIABLES IMPORTANTES
$('head').append('<link rel="stylesheet" href="https://ticki84.github.io/jquery.modal.min.css"/>'); // Modal css, merci ticki84
var version = '2.1';
var topic_poukav = GM_getValue('topicMod');
var couleur_high = 'yellow';
var data_modo = GM_getValue('modo');
var nbddb = GM_getValue('nombreDDB');
var liste_pseudos_recovery = GM_getValue('liste_psd');
var liste_topics_recovery = GM_getValue('listeTopic');
var date = new Date();
var nbConnectes = document.getElementsByClassName('nb-connect-fofo')[0].innerHTML.split(' ')[0];
var filtrePerso = GM_getValue('filtrePerso');

var newPseudo = document.createElement('div'); // Liste element

var pseudoCriminels = [];
var pseudo_to_stalk = GM_getValue('stalk-psd');
var lastTopic = GM_getValue('last-topic');
////////////////AUTRES/////////////////////////
var stickerPlus = GM_getValue('stickerplus');
if (stickerPlus === undefined) {
    stickerPlus = false;
}

var emojiBan = GM_getValue('emojiban');
if (emojiBan === undefined) {
    emojiBan = false;
}

var sticker = GM_getValue('sticker');
if (sticker === undefined) {
    sticker = false;
}

////

if (stickerPlus === false) {
    var stickerPlusText = '<i>Cette option est désactivée.</i>';
} else {
    var stickerPlusText = '<i>Cette option est activée.</i>';
}

if (emojiBan === false) {
    var emojiBanText = '<i>Cette option est désactivée.</i>';
} else {
    var emojiBanText = '<i>Cette option est activée.</i>';
}

if (sticker === false) {
    var stickerText = '<i>Cette option est désactivée.</i>';
} else {
    var stickerText = '<i>Cette option est activée.</i>';
}
//////////////////////////////////////////////

insultes = ['fdp', 'pute', ' pd ', 'va te faire foutre', 'connard', 'bouffon', 'gaucho', ' nique', ' niquer', 'dechet', 'petits bras', 'ta gueule', ' tg', 'couille', 'salope', 'nègre', 'negro', 'negre', 'bouffon', 'ntm', 'bougnoule', 'enculer', 'enculé', 'encule', ' creve', 'crève', 'fils de pute', 'hitler avait raison', 'gauchiasse', 'salaud', 'sale arabe', 'fils de chien', 'trou du cul', 'trouduc', 'ducon', 'sous-merde', 'pakpak', 'chinetok', 'mort aux', 'consanguin', 'batard', 'collabo', 'enfoiré', 'fiotte', 'tapette', 'tarlouze', 'tafiole', 'pédé', 'tantouze', 'merdeux', 'babtou', 'tocar', 'gouine', 'feuj', 'beurette', 'rosbyif', 'paddies', 'flamish', 'tutuch', 'rebeu', 'bicot', 'sous-être', 'goy', 'vive hitler', 'khokhol', 'rital', 'sale gay', 'sale blanc', 'sale noir'];
pyj = ['jerry', 'mdr', 'jpp', 'ptdr', ' xd', ' x)', ' :s', 'taggle', 'enfoiray', 'panachay', ' onch', 'norsh', 'kom t', 'prout', 'Prout', 'Taggle', 'Mdr', 'Jpp', 'Jerry', '^^', 'xD', 'XD'];
emojis = ['💎', '❤️', '💯', '🏻', '✌', '🍤', '🐵','🙈','🙉','💩','😀', '😬', '😁', '😂', '😃', '😄', '😅', '😆', '😇', '😉', '😊', '🙂', '🙃', '☺️', '😋', '😌', '😍', '😘', '😗', '😙', '😚', '😜', '😝', '😛', '🤑', '🤓', '😎', '🤗', '😏', '😶', '😐', '😑', '😒', '🙄', '🤔', '😳', '😞', '😟', '😠', '😡', '😔', '😕', '🙁', '☹️', '😣', '😖', '😫', '😩', '😤', '😮', '😱', '😨', '😰', '😯', '😦', '😧', '😢', '😥', '😪', '😓', '😭', '😵', '😲', '🤐', '😷', '🤒', '🤕', '😴', '💤', '💩', '😈', '👿', '👹', '👺', '💀', '👻', '👽', '🤖', '😺', '😸', '😹', '😻', '😼', '😽', '🙀', '😿', '😾', '🙌', '👏', '👋', '👍', '👊', '✊', '✌️', '👌', '✋', '💪', '🙏', '☝️', '👆', '👇', '👈', '👉', '🖕', '🤘', '🖖', '✍️', '💅', '👄', '👅', '👂', '👃', '👁', '👀', '👤', '🗣', '👶', '👦', '👧', '👨', '👩', '👱', '👴', '👵', '👲', '👳', '👮', '👷', '💂', '🕵', '🎅', '👼', '👸', '👰', '🚶', '🏃', '💃', '👯', '👫', '👬', '💋', '👠',  '👓',  '🕶', '💍', '🌂'];

topic_sensible = ['juif', 'babtou', 'athée', 'croyant', 'suicide', 'raciste', 'arabe', 'attentat', 'gauchiste', 'gaucho', 'petits bras', 'front nationnal', 'coran', 'islam', '6 milliard', 'consanguin', 'gauchiasse', 'négro', 'negro', 'rebeu', 'babtou', 'chinetok', 'beurette', 'goy', 'pakpak', 'islamo-gauchsite', 'rosbyif', 'sale noir', 'sale blanc', 'calmez vos frère', 'calmez vos soeur', 'migrant'];
topic_sensible_plus = ['bougnoule', 'bougnoules', 'bougnoul', 'feuj', 'hitler avait raison', 'négresse', 'nègre', 'negre', 'l\'odeur des noirs', 'gwer', 'vive hitler', 'heil hitler'];
topic_lien = ['http://', 'https://', 'www.'];
topic_perso = [filtrePerso];
topic_kikoo = [' ^^', ' xd', ' x)', ' mdr', 'je viens du 15-18', '> all', 'jerry', 'et je baise plus que vous', 'notez', '/10', '/20', ':rire:', ':peur:', ':hap:', ':noel:', 'taggle', 'hapiste', 'prout', 'je fais caca', ':)', ':content:', ':ok:', ':ouch:', ':cute:', ':bave:', ':malade:', ':up:', ':-(', 'onch', 'norsh', 'panachay', 'm+z', 'z+v', 'c+t', 'z+a', ':snif:'];
// LISTE STICKERS INEDITS //

stickers = [
    'http://image.noelshack.com/fichiers/2016/46/1479639726-1467231909-1466015251-esp.png',
    'http://image.noelshack.com/fichiers/2016/46/1479341130-risitasfroid6.png',
    'http://image.noelshack.com/fichiers/2016/46/1479465472-risitaspc.png',
    'http://image.noelshack.com/fichiers/2016/46/1479312809-1478385081-image.jpg',
    'http://image.noelshack.com/fichiers/2016/46/1479341443-issou.gif',
    'http://image.noelshack.com/fichiers/2016/46/1479294031-jesus.png',
    'http://image.noelshack.com/fichiers/2016/46/1479294037-jesus2.png',
    'http://image.noelshack.com/fichiers/2016/46/1479294203-issou.png',
    'http://image.noelshack.com/fichiers/2016/46/1479294534-rrrritas.png',
    'http://image.noelshack.com/fichiers/2016/28/1468626264-isssssou.png',
    'http://image.noelshack.com/fichiers/2016/29/1468890801-issou5.png',
    'http://image.noelshack.com/fichiers/2016/29/1468890807-issou7.png',
    'http://image.noelshack.com/fichiers/2016/46/1479340844-risitasfroid2.png',
    'http://image.noelshack.com/fichiers/2016/46/1479340845-risitasfroid4.png',
    'http://image.noelshack.com/fichiers/2016/46/1479336737-fishus3.png',
    'http://image.noelshack.com/fichiers/2016/46/1479334816-fishitas2.png',
    'http://image.noelshack.com/fichiers/2016/46/1479343463-risitastriste.png',
    'http://image.noelshack.com/fichiers/2016/46/1479343389-guss.png',
    'http://image.noelshack.com/fichiers/2016/46/1479343410-puco.png',
    'http://image.noelshack.com/fichiers/2016/46/1479343661-issou55mentons.png',
    'http://image.noelshack.com/fichiers/2016/46/1479336096-risitasmacdo.png',
    'http://image.noelshack.com/fichiers/2016/46/1479465061-risithumbs.png',
    'http://image.noelshack.com/fichiers/2016/46/1479465066-1470920801-jesus17.png',
    'http://image.noelshack.com/fichiers/2016/46/1479465079-risirocher.png',
    'http://image.noelshack.com/fichiers/2016/46/1479465083-jesusetrsitas.png',
    'http://image.noelshack.com/fichiers/2016/46/1479465091-majinrisitas.png',
    'http://image.noelshack.com/fichiers/2016/46/1479465162-risialien.png',
    'http://image.noelshack.com/fichiers/2016/46/1479465839-ataoy.png',
    'http://image.noelshack.com/fichiers/2016/46/1479466319-picsart-11-17-08-06-51.jpg',
    'http://image.noelshack.com/fichiers/2016/26/1467561112-isitas-demon.png',
    'http://image.noelshack.com/minis/2016/30/1469484509-cchhb.png',
    'http://image.noelshack.com/fichiers/2016/43/1477336267-risi-high.png',
    'http://image.noelshack.com/fichiers/2016/43/1477485527-rire-risi.png',
    'http://image.noelshack.com/fichiers/2016/46/1479414181-1471450455-1471294777-risitas-nb1.png',
    'http://image.noelshack.com/fichiers/2016/46/1479467038-belgitas.png',
    'http://image.noelshack.com/fichiers/2016/46/1479467027-risitasbescherelle.png',
    'http://image.noelshack.com/fichiers/2016/46/1479466977-risitaspoings.png',
    'http://image.noelshack.com/fichiers/2016/46/1479584051-risitas.gif',
    'http://image.noelshack.com/fichiers/2016/46/1479584063-risigif.gif',
    'http://image.noelshack.com/fichiers/2016/46/1479580973-la-chancla-feed.gif',
    'http://image.noelshack.com/fichiers/2016/41/1476532689-risitatriger.gif',
    'http://image.noelshack.com/fichiers/2016/41/1476532484-risitarsagif.gif',
    'http://image.noelshack.com/fichiers/2016/46/1479421013-issoudesecours.gif',
    'http://image.noelshack.com/fichiers/2016/46/1479642166-risitasdiable.gif',
    'http://image.noelshack.com/fichiers/2016/46/1479642493-yatangaki.png'
];

try {
    var stickersPerso = JSON.parse(GM_getValue("stickersPerso"));
} catch (err) {
    //debug.innerHTML += err;
    var stickersPerso = [];
}

//
GM_addStyle('.btn-poster-msg { width:100%; }'); // Bouton poster plus grand
GM_addStyle('#poukav-btn { color:red; }');
GM_addStyle('.textarea-class { width: 100%; height: 110px; max-width: 100%; min-width: 100%; border: 0 solid transparent; padding: 10px}'); // class 'area-editor' imcompatible avec les stickers
//GM_addStyle('* {border-radius: 0 !important;-moz-border-radius: 0 !important;}');

// VERIF POUR FONCTION SendModo //

if (window.location.href == topic_poukav) {document.getElementById('message_topic').value = data_modo; window.scrollTo(0,document.body.scrollHeight);}
///////////////////////
// Notifcation permission
if (Notification.permission !== "granted") {
    Notification.requestPermission();
}

function Ouverture(id_name) {
    var var_name = document.getElementById(id_name);
    if (var_name.style.display != "none") {
        var_name.style.display = "none";
    } else {
        var_name.style.display = "block";
    }
}

function upperCaseTest(str) {
    return str === str.toUpperCase();
}

function removeElementsByClass(className) {
    var elements = document.getElementsByClassName(className);
    while(elements.length > 0){
        elements[0].parentNode.removeChild(elements[0]);
    }
}

function listeSujet() {
    if (document.getElementsByName('search_in_forum').length === 0) {
        return false;
    } else {return true;}
}

function getDate() {
    var month = date.getMonth() + 1;
    var day = date.getDate();
    var year = date.getFullYear();
    return  day + "/" + month + "/" + year;
}

///////////////////////

function PoukavMain() {
    Ouverture('poukavmain');
}

function PoukavHelp() {
    Ouverture('poukavhelp');
}

function ContactModo() {
    Ouverture('contact-form-modo');
}

function showGrades() {
    Ouverture('grades');
}

function showCodeCouleur() {
    Ouverture('code-couleur');
}

function signalGouvOuverture() {
    Ouverture('signal-gouv');
}

function showFiltre() {
    Ouverture('filtre');
}

function showAutres() {
    Ouverture('autres');
}

function ddbSave() {
    nbddb += 1;
    setTimeout(function() {GM_setValue('nombreDDB', nbddb);}, 1000);
}

function resetDDB() {
    GM_setValue('nombreDDB', 0);
}

function changeTopic() {
    GM_setValue('topicMod', prompt('Nouveau lien: '));
    location.reload();
}

function SendModo() {
    var message_to_modo = document.getElementById('send-to-modo').value;
    GM_setValue('modo', message_to_modo);
    var newWin = window.open(topic_poukav);
}

function listePseudos() {
    Ouverture('liste-psd-debut');
    Ouverture('liste-psd');
}

function topicEx() {
    document.getElementById('titre_topic').value = "Respectez la charte !";
    document.getElementById('message_topic').value = "Petit rappel quotidien, la charte de jeuxvideo.com se trouve ici : http://www.jeuxvideo.com/forums_charte.htm N'oubliez-pas de la lire attentivement, on ne le répète jamais assez. [[sticker:p/1kkn]]";
}
/*
function topicListe(topicTitle, topicLink, pseudoC) {
    var bloc = document.getElementById('liste-topic');

    var newTopic = document.createElement('p');
    //newTopic.innerHTML = GM_getValue('listeTopic');
    //newTopic.className = '';
    //newTopic.id = 'topic';
    newTopic.innerHTML += '<p>'+pseudoC+'. <a href="'+topicLink+'">'+topicTitle+'</a></p>';
    GM_setValue('listeTopic', bloc.innerHTML);

    bloc.appendChild(newTopic);
}
*/

function addFiltre() {
    var newFiltre = prompt('Ajouter un filtre :');
    GM_setValue('filtrePerso', newFiltre);
    location.reload();
}

function stalkPseudo() {
    var stalk_psd = document.getElementsByName('stalk-psd');
    for (var i = 0; i < stalk_psd.length; i++) {
        stalk_psd[i].addEventListener('click', function() {
            pseudo_to_stalk = this.getAttribute('data-psd');
            GM_setValue('stalk-psd', pseudo_to_stalk.toLowerCase());
            location.reload();
        });
    }
}

function supprButtonPseudo() {
    var x = document.getElementsByName('suppr-btn');
    for (var i = 0; i < x.length; i++) {
        x[i].addEventListener('click', function() {
            $(this).parent().remove();
            GM_setValue('liste_psd', document.getElementById('liste-psd').innerHTML);
        });
    }
}

function addPseudo() {
    var pseudo_add = prompt('Pseudo:');
    var pseudo_raison = prompt('Raison:');

    if (pseudo_add.length === 0 || pseudo_raison.length === 0 || pseudo_add === null || pseudo_raison === null)
    {
        alert('Tu dois rentrer un pseudo et une raison khey');
    } else
    {
        newPseudo = document.createElement('div'); // create element
        if(document.getElementById('liste-psd').innerHTML === "") {
            newPseudo.innerHTML = '<br>';
        }
        newPseudo.innerHTML += '<p><b>'+pseudo_add + '</b> (<i>' + pseudo_raison + '</i>) ' + getDate() + ' <a class="btn btn-primary" style="font-size:10px;padding: 2px 8px;" href="http://www.jeuxvideo.com/messages-prives/nouveau.php?all_dest='+pseudo_add+'">Message privé</a> <a id="suppr-btn" name="suppr-btn" class="btn btn-danger" style="font-size:10px;padding: 2px 8px;" data-psd="'+pseudo_add+'">Supprimer</a> <a class="btn btn-info" name="stalk-psd" data-psd="'+pseudo_add+'" style="font-size:10px;padding: 2px 8px;">Suivre ce pseudo</a></p>';
        newPseudo.className = 'pseudo-liste';
        orginalId.appendChild(newPseudo);

        supprButtonPseudo(); // Initialise suppr btn
        stalkPseudo(); // Initialise stalk btn

        GM_setValue('liste_psd', document.getElementById('liste-psd').innerHTML);
    }
}

function resetListe() {
    removeElementsByClass('pseudo-liste');
    GM_setValue('liste_psd', '');
    GM_setValue('stalk-psd', ''); // reset aussi le pseudo à stalker
}

function resetStalk() {pseudo_to_stalk = "";GM_setValue("stalk-psd", "");location.reload();}

function resetListeTopics() {document.getElementById('liste-topic').innerHTML = '';GM_setValue('listeTopic', '');}

function resetFiltre() {GM_setValue('filtrePerso', null);location.reload();}

var grades = '<p><img height="70" width="70" src="http://image.noelshack.com/fichiers/2016/44/1478089468-apprenti.png"><b>0 DDB</b>, Apprenti poukav</p>';
function Grades() {
    if (nbddb >= 10) {
        grades += '<p><img height="70" width="70" src="http://image.noelshack.com/fichiers/2016/44/1478089635-basique.png"><b>10 DDB</b>, Poukav basique</p>';
    }

    if (nbddb >= 50) {
        grades += '<p><img height="70" width="70" src="http://image.noelshack.com/fichiers/2016/44/1478089701-inter.png"><b>50 DDB</b>, Poukav intermédiaire</p>';
    }

    if (nbddb >= 100) {
        grades += '<p><img height="70" width="70" src="http://image.noelshack.com/fichiers/2016/44/1478089733-vrai.png"><b>100 DDB</b>, Vrai poukav</p>';
    }

    if (nbddb >= 200) {
        grades += '<p><img height="70" width="70" src="http://image.noelshack.com/fichiers/2016/44/1478089719-avance.png"><b>200 DDB</b>, Poukav avancé</p>';
    }

    if (nbddb >= 500) {
        grades += '<p><img height="70" width="70" src="http://image.noelshack.com/fichiers/2016/44/1478089752-mitrailleur.png"><b>500 DDB</b>, Mitrailleur de DDB</p>';
    }

    if (nbddb >= 1000) {
        grades += '<p><img height="70" width="70" src="http://image.noelshack.com/fichiers/2016/44/1478089771-argent.png"><b> 1000 DDB</b>, Poukav d\'argent</p>';
    }

    if (nbddb >= 5000) {
        grades += '<p><img height="70" width="70" src="http://image.noelshack.com/fichiers/2016/44/1478089783-or.png"><b> 5000 DDB</b>, Poukav d\'or</p>';
    }
}

Grades();

function Notif(texte) {
    var notification = new Notification('Poukav extension', {
        body: texte,
    });
    notification.onclick = function () {
        window.open("http://www.jeuxvideo.com/forums/0-51-0-1-0-1-0-blabla-18-25-ans.htm");
    };
}

function scriptBloc() {
    var bloc = document.getElementsByClassName('panel panel-jv-forum')[1];
    var ddbpage = document.createElement('div');
    ddbpage.className = 'panel-heading';
    ddbpage.innerHTML = 'Script';

    var scrollable = document.createElement('div');
    scrollable.className = 'scrollable-content bloc-info-forum';
    scrollable.id = 'scrollable-script';
    scrollable.innerHTML = '<h4 class="titre-info-fofo">Poukav extension</h4> <p style="color:red;">Vous utilisez poukav extension [version ' + version + ']</p><pre>DDB effectuées: '+nbddb+'</pre><pre>Suivi du pseudo : <b>'+pseudo_to_stalk+'</b> <a class="btn btn-default" style="font-size:10px;padding: 2px 8px;" id="resetstalk">reset</a></pre><button id="resetddb" class="btn btn-danger" style="font-size:10px;color:black;">Reset nombre ddb</button> <button id="changetopic" class="btn btn-default" style="font-size:10px;color:black;">Changer lien topic mod</button>';

    bloc.appendChild(ddbpage);
    bloc.appendChild(scrollable);
}

//$('.jv-editor-toolbar').append('<a rel="modal:open" href="#modal">Poukav extension</a>');
var a = document.createElement('div');
a.id = 'modal';
a.style = 'display:none;';
a.innerHTML = '<h1><img src="http://image.noelshack.com/fichiers/2016/44/1478015517-pex.png"> Bienvenue sur Poukav Extension !</h1>\
<h3>'+version+'</h3>\
</div>\
<div id="poukavhelp" >\
   <p><a href="http://www.jeuxvideo.com/forums/42-51-49042843-1-0-1-0-script-ddb-poukav-extension-version-0-1-6.htm">Topic officiel ici</a></p>\
   <p>Bienvenue apprenti poucave !</p>\
   <p><b>Avant toute chose, il est recommandé de définir un lien vers le topic de mod\', il te suffit de cliquer sur « changer lien topic mod » dans la partie script et de définir le lien du topic de modération actuel.</b></p>\
   <p>Les ddb que tu effectues sont enregistrées, tu peux en consulter le nombre dans la partie « scripts ».</p>\
   <p>Les topics en majuscule seront surlignés en rouge sur la liste des sujets.</p>\
   <p>Un détecteur d\'insultes est mis en place, elles sont mis en évidence, ce qui te permet de detecter très facilement les insultes ou mots interdits postés sur le forum. Une autre liste de mot est ajoutée, elle contient des mots de pyj comme « mdr » ou « jpp », ces mots seront surlignés en rouge.</p>\
   <pre>Info: il y a '+insultes.length+' mots dans la liste d\'insultes/mots interdits.</pre>\
   <pre>Et '+pyj.length+' mots dans la liste de pyj.</pre>\
   <p><b>Version 0.1.4</b> : Fonction « Contacter rapidement un modo », fonction « Faire un topic exemplaire », correction de quelques mots dans la liste d\'insultes & pyj, Ajouts de liens.</p>\
   <p><b>Version 0.1.5</b> : Titre en MAJ surligné en rouge, ajout d\'une liste de pseudos personelle, ajout de mots aux listes, compteur de DDB fonctionnel.</p>\
   <p><b>Version 0.1.6</b> : Système de grade, système de notification (prototype), topic de différentes couleurs (voir l\'onglet « Code couleur »), petite modification de design, historique de ddb sur chaque topic.</p>\
   <p><b>Version 0.1.7</b> : Suivi d\'un pseudo personnel, améliorations de design, ajout d\'un filtre personnel.</p>\
   <p><b>Version 0.1.8</b> : Boîte d\'informations sur le karma et la sanction en fonction du mot concerné.</p>\
   <p><b>Version 0.1.9</b> : Emojis surlignés en vert sur le forum, onglet « autres fonctionnalités ».</p>\
   <p><b>Version 0.2.0</b> : Ajout de la fonction « stickers inédits ».</p>\
   <p><b>Version 0.2.1</b> : Ajout de la fonction « stickers personnels » & ajouts de stickers inédits.</p>\
</div>';
document.body.appendChild(a);

// JV EDITOR TOOLBAR APPENDS

$(".boutons-sondage-topic").append('<br></br><button id="topic-ex" class="btn btn-ajouter-sondage" type="button"><strong>Faire un topic exemplaire</strong></button>');
$(".jv-editor-toolbar").append( '<div class="btn-group">\
                               <button style="width:605px;" class="btn btn-jv-editor-toolbar" type="button" title="Poukav" id="poukav-btn">\
                               Poukav extension version '+version+'. <i>Cliquer pour ouvrir.</i>\
                               </button>\
                               </div>' );

$('.jv-editor-toolbar').append('<div id="poukavmain" style="display:none;">\
   <div class="btn-group"><a style="width:605px" class="btn btn-jv-editor-toolbar" title="Aide" rel="modal:open" href="#modal">Aide & Informations</a></div>\
   <div class="btn-group"><button class="btn btn-jv-editor-toolbar" type="button" title="Contact modos rapide" id="modo-rapide">Contacter rapidement les modérateurs</button></div>\
   <div class="btn-group"><button class="btn btn-jv-editor-toolbar" type="button" title="Liste pseudos" id="liste-psd-btn">Liste de pseudos</button></div>\
   <div class="btn-group"><button class="btn btn-jv-editor-toolbar" type="button" title="Grades" id="grade-btn">Grades</button></div>\
   <div class="btn-group"><button class="btn btn-jv-editor-toolbar" type="button" title="Code couleur" id="code-couleur-btn">Code couleur</button></div>\
   <div class="btn-group"><button class="btn btn-jv-editor-toolbar" type="button" title="Signal gouv" id="signal-gouv-btn">Signalement gouvernement</button></div>\
   <div class="btn-group"><button class="btn btn-jv-editor-toolbar" type="button" title="Filtre" id="filtre-btn">Ajouter un filtre personnel</button></div>\
   <div class="btn-group"><button class="btn btn-jv-editor-toolbar" style="width:192px;" type="button" title="Autres" id="autres-btn">Autres fonctionnalités</button></div>\
   <div id="contact-form-modo" style="display:none;"><textarea class="textarea-class" id="send-to-modo" placeholder="Écrire aux modérateurs..."></textarea><a class="btn btn-default" id="sendmodo">Envoyer vers le topic de mod</a></div>\
   <div id="liste-psd-debut" style="display:none;">\
      <p>Voici ta liste de forumeurs criminels. <img src="http://image.jeuxvideo.com/smileys_img/11.gif"></p>\
      <p style="color:red;"><b>Attention: la fonction « suivre ce pseudo » peut contenir des bugs.</b></p>\
      <a class="btn btn-primary" style="font-size:10px;" id="ajout-psd">Ajouter un pseudo à la liste</a> <a style="font-size:10px;" id="liste-reset" class="btn btn-warning">Reset liste</a>\
   </div>\
   <div id="liste-psd" style="display:none;"></div>\
   <div id="grades" style="display:none;">\
      <p>Voici tes grades khey. <img src="http://image.jeuxvideo.com/smileys_img/11.gif"></p>\
      <p><i>Comment gagner des grades ? Il y a en tout plus de 8 grades, tu les gagneras au fur et à mesure en faisant des DDB.</i></p>\
      '+grades+'\
   </div>\
   <div id="code-couleur" style="display:none;">\
      <p>Voici le code couleur des topics présents sur la liste des sujets.</p>\
      <p><img src="http://image.noelshack.com/fichiers/2016/44/1478302317-topic-orange.png"> <i>Les topics oranges sont les topics sensibles, ils contiennent des mots qui porte à polémique sur le forum 18-25.</i></p>\
      <p><img src="http://image.noelshack.com/fichiers/2016/44/1478221616-topic-black.png"> <i>Les topics noirs sont les topics à supprimer, ils contiennent des mots interdits punissables d\'un bannissement.</i></p>\
      <p><img src="http://image.noelshack.com/fichiers/2016/44/1478348497-topic-vert.png"> <i>Les topics verts sont les topics contenant un mot personnel (défini par vous-même). Voir « ajouter un filtre personnel ».</i></p>\
      <p><img src="http://image.noelshack.com/fichiers/2016/44/1478302321-topic-violet.png"> <i>Les topics violets sont les topics contenant potentiellement des liens.</i></p>\
      <p><img src="http://image.noelshack.com/fichiers/2016/44/1478302324-topic-dossier2.png"> <i>Les topics bleus sont les topics contenant des mots ou expression de gamins ou 15-18iens. Rappel: Tout topic contenant un smiley (:hap:, :noel:, :), xD etc.) est inclu dans les topics bleus.</i></p>\
   </div>\
   <div id="filtre" style="display:none;">\
      <p>Ajoute ton filtre personnel qui correspondra aux topics verts. <i>Tu peux ajouter qu\'un filtre à la fois.</i></p>\
      <p><b>Important: il faut écrire le filtre en minuscule.</b></p>\
      <a id="addfiltre" class="btn btn-primary">Ajouter/redéfinir un filtre</a> <a id="resetfiltre" class="btn btn-danger">Supprimer le filtre</a>\
      <pre>Filtre actuel : '+filtrePerso+'</pre>\
   </div>\
   <div id="autres" style="display:none;">\
      <h4>Autres fonctionnalités ou options.</h4>\
      <p>Car poukav extension ne profite pas qu\'aux poucaves. <img height="34" width="45" src="http://image.noelshack.com/fichiers/2016/38/1474719470-risitas626.png"></p>\
      <h5>Voici les autres fonctionnalités disponibles pour le moment.</h5>\
      <p><i>Agrandir les stickers:</i> Agrandi les stickers sur les forums.</p>\
      <p><i>Bannir les emojis:</i> Supprime les émojis sur les forums (tous les emojis ne sont pas pris compte).</p>\
      <p><i>Stickers inédits</i> : Vous permet d\'utiliser rapidement des stickers inédits/rares et de créer une liste de stickers personnels.</p>\
      <h5>Activer ou désactiver ces fonctionnalités</h5>\
      <p><i>1) Agrandir les stickers</i> <a class="btn btn-primary" style="font-size:10px;padding: 2px 8px;" id="active-stickerplus">Activer cette option</a> <a class="btn btn-danger" style="font-size:10px;padding: 2px 8px;" id="desa-stickerplus">Désactiver cette option</a> '+stickerPlusText+'</p>\
      <p><i>2) Bannir les emojis</i> <a class="btn btn-primary" style="font-size:10px;padding: 2px 8px;" id="active-emoji">Activer cette option</a> <a class="btn btn-danger" style="font-size:10px;padding: 2px 8px;" id="desa-emoji">Désactiver cette option</a> '+emojiBanText+'</p>\
      <p><i>3) Stickers inédits & personnels</i> <a class="btn btn-primary" style="font-size:10px;padding: 2px 8px;" id="active-sticker">Activer cette option</a> <a class="btn btn-danger" style="font-size:10px;padding: 2px 8px;" id="desa-sticker">Désactiver cette option</a> '+stickerText+'</p>\
      <div id="stickers-pk" style="display:none;">\
         <h5>Stickers inédits</h5>\
         <p>Clique sur le sticker de ton choix pour l\'ajouter à ton post. Stickers disponibles : <b>'+stickers.length+'</b>.</p>\
      </div>\
      <div id="stickers-perso" style="display:none;">\
          <h5>Stickers personnels</h5>\
          <a class="btn btn-info" id="sticker-perso" style="font-size:10px;padding: 2px 8px;">Ajouter un sticker personnel</a> <a class="btn btn-warning" id="sticker-perso-reset" style="font-size:10px;padding: 2px 8px;">Reset mes stickers personnels</a>\
          <p>Clique sur le sticker de ton choix pour l\'ajouter à ton post. Stickers disponibles : <b>'+stickersPerso.length+'</b></p>\
          <p>Double clique sur un sticker personnel pour l\'enlever.</p>\
      </div>\
   </div>\
   <div id="signal-gouv" style="display:none;">\
      <a class="btn btn-poster-msg datalayer-push" style="background-color:red;font-size:20px;" href="https://www.internet-signalement.gouv.fr/PortailWeb/planets/Accueil!input.action">Signal gouv</a>\
      <p><u>A savoir avant de faire votre signalement:</u> </p>\
      <p>Vous avez la possibilité de rester anonyme, mais vous pouvez aussi vous identifier.</p>\
      <p>Si vous choisissez de vous identifier, vous ne serez pas contacté (sauf cas particulier).</p>\
      <p>Votre identité sera conservée confidentiellement.</p>\
      <p>Votre signalement sera conservé 10 ans dans notre base de données, puis effacé.</p>\
      <p>Les signalements ne sont pas consultés la nuit, les week-ends et les jours fériés : ne signalez aucun contenu nécessitant une intervention urgente (par exemple, l\'annonce d\'un suicide).</p>\
      <p>Pour en savoir plus sur les suites données aux signalements, vous pouvez consulter notre mode d\'emploi du signalement.</p>\
      <p>La collecte des preuves est l\'affaire des services de l\'Etat.</p>\
      <p>Ne répondez pas à des annonces suspectes et ne cherchez pas activement de matériel illégal sur internet.</p>\
      <p>En outre, la seule possession de photographie de nature pédophile est interdite : ne faites aucune sauvegarde ni impression.</p>\
   </div>\
</div>\
');

$(".jv-editor-toolbar").append( '<a href="//www.jeuxvideo.com/messages-prives/nouveau.php?all_dest=[hush]2;Jean-Plagiat;Niyuh;KirikRung;L_Abaratien;Ramsay_Bolton;iPen;PsYs;Maxou-Strauss;AnotherDay;Prophase;Phoenux;Serial-Oncheur" target="_blank" class="xXx lien-jv" sl-processed="1">Contacter les modérateurs</a> - <a href="'+topic_poukav+'" target="_blank" class="xXx lien-jv" sl-processed="1">Topic de modération</a> - <a href="http://www.jeuxvideo.com/forums_charte.htm" target="_blank" class="xXx lien-jv" sl-processed="1">Charte de jeuxvideo.com</a> - <a target="_blank" class="xXx lien-jv" sl-processed="1" href="http://www.jeuxvideo.com/forums/42-51-49042843-1-0-1-0-script-ddb-poukav-extension-version-0-1-6.htm">Topic du script</a> - <a target="_blank" class="xXx lien-jv" sl-processed="1" href="http://www.jeuxvideo.com/messages-prives/nouveau.php?all_dest=imthatguy">Signaler un bug</a>' );
scriptBloc();

var orginalId = document.getElementById('liste-psd');
//
try { // Parti codé comme de la merde mais flemme de changer
    var poukav_btn = document.getElementById('poukav-btn');
    poukav_btn.addEventListener('click', PoukavMain);
/*
    var poukav_btn_help = document.getElementById('poukav-btn-help');
    poukav_btn_help.addEventListener('click', PoukavHelp);
*/

    var signal_btn = document.getElementById('signal-gouv-btn');
    signal_btn.addEventListener('click', signalGouvOuverture);

    var contact_modo = document.getElementById('modo-rapide');
    contact_modo.addEventListener('click', ContactModo);

    try {
        var ddb_btn = document.getElementsByClassName('picto-msg-exclam');
        for (var i = 0; i < ddb_btn.length; i++) {
            ddb_btn[i].addEventListener('click', ddbSave);
        }
    } catch (err){
        //alert(err.message);
    }

    var reset_ddb = document.getElementById('resetddb');
    reset_ddb.addEventListener('click', resetDDB);

    var change_topic = document.getElementById('changetopic');
    change_topic.addEventListener('click', changeTopic);
    //
    var send_modo = document.getElementById('sendmodo');
    send_modo.addEventListener('click', SendModo);
    // Liste pseudos
    var liste = document.getElementById('liste-psd-btn');
    liste.addEventListener('click', listePseudos);
    var reset_liste = document.getElementById('liste-reset');
    reset_liste.addEventListener('click', resetListe);
    var add_psd = document.getElementById('ajout-psd');
    add_psd.addEventListener('click', addPseudo);
    //
    var grade_btn = document.getElementById('grade-btn');
    grade_btn.addEventListener('click', showGrades);
    // Filtres
    var filtre_btn = document.getElementById('code-couleur-btn');
    filtre_btn.addEventListener('click', showCodeCouleur);
    //
    document.getElementById('resetstalk').addEventListener('click', resetStalk);
    //
    document.getElementById('filtre-btn').addEventListener('click', showFiltre);
    document.getElementById('addfiltre').addEventListener('click', addFiltre);
    document.getElementById('resetfiltre').addEventListener('click', resetFiltre);
    // autres btn
    document.getElementById('autres-btn').addEventListener('click', showAutres);
    //reset stickers
    document.getElementById('sticker-perso-reset').addEventListener('click', function() {GM_setValue('stickersPerso', '[]');location.reload();});

    /////////////////////////////////////////////////////////////////////////////
    /////////////////////////////AUTRES OPTIONS/////////////////////////////////

    /////////////////////////////stickerPlus///////////////////////////////////
    document.getElementById('active-stickerplus').addEventListener('click', function(){
        GM_setValue('stickerplus', true);
        location.reload();
    });
    document.getElementById('desa-stickerplus').addEventListener('click', function(){
        GM_setValue('stickerplus', false);
        location.reload();
    });
    /////////////////////////////////////EMOJI BAN////////////////////////////////////
    document.getElementById('active-emoji').addEventListener('click', function(){
        GM_setValue('emojiban', true);
        location.reload();
    });
    document.getElementById('desa-emoji').addEventListener('click', function(){
        GM_setValue('emojiban', false);
        location.reload();
    });
    /////////////////////////////////////STICKERS///////////////////////////////////
    document.getElementById('active-sticker').addEventListener('click', function(){
        GM_setValue('sticker', true);
        location.reload();
    });
    document.getElementById('desa-sticker').addEventListener('click', function(){
        GM_setValue('sticker', false);
        location.reload();
    });
    /////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////

    try {
        var topic_ex = document.getElementById('topic-ex');
        topic_ex.addEventListener('click', topicEx);
    } catch (err) {
        // Nothing
    }

    document.getElementById('message_topic').placeholder = "Respecter la charte, signaler beaucoup de mauvais forumeurs, tel est ton devoir.";

} catch (err) {}

// Cherche insultes
var node;
function highlightWord(word, couleur_high) {
    var xpath = "//text()[contains(., '" + word + "')]";
    var texts = document.evaluate(xpath, document.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
    for (n = 0; n < texts.snapshotLength; n++) {
        var textNode = texts.snapshotItem(n);
        var p = textNode.parentNode;
        var a = [];
        var frag = document.createDocumentFragment();
        textNode.nodeValue.split(word).forEach(function(text, i) {
            if (i) {
                node = document.createElement('span');
                if (emojis.indexOf(word) >= 0) {
                    node.className = 'emoji';
                } else {
                    node.className = 'motinterdit';
                }
                node.style.backgroundColor = couleur_high;
                node.appendChild(document.createTextNode(word));
                frag.appendChild(node);
            }
            if (text.length) {
                frag.appendChild(document.createTextNode(text));
            }
            return a;
        });
        p.replaceChild(frag, textNode);
    }
}

for(var i= 0; i < insultes.length; i++) {
    highlightWord(insultes[i], couleur_high);
}

for(var i= 0; i < pyj.length; i++) {
    highlightWord(pyj[i], 'red');
}

for(var i= 0; i < emojis.length; i++) {
    highlightWord(emojis[i], 'lime');
}

// Titre maj
try {
    var topic = document.getElementsByClassName('lien-jv topic-title');
    for(var i= 0; i < topic.length; i++) {
        if (upperCaseTest(topic[i].title) === true) {topic[i].style.backgroundColor = 'red'; topic[i].style.color = 'white';}
    }
} catch (err) {}

// Load list
try { // Si pas de textbox
    if (liste_pseudos_recovery === undefined) {} else {
        document.getElementById('liste-psd').innerHTML = liste_pseudos_recovery;
    }
    if (liste_topics_recovery === undefined) {} else {
        document.getElementById('liste-topic').innerHTML = liste_topics_recovery;
    }
} catch (err) {}
// Initialize le bouton suppr
supprButtonPseudo();
// Stalk
stalkPseudo(); // Initialize stalk button

// Notif si nb connectés dépasse 2000
if (listeSujet() === true) {
    if (nbConnectes > 2000) {
        GM_notification('Le 18-25 a dépassé les 2000 connectés, il se passe peut-être quelque chose !');
    }
}
// Topic sensibles
var topics_img = document.getElementsByClassName('topic-img');
var topics = document.getElementsByClassName('lien-jv topic-title');

function topicCouleur(liste_name, img_src) {
    for(var i= 0; i < topics_img.length; i++) {
        for(var x= 0; x < liste_name.length; x++) {
            if (topics[i].title.toLowerCase().indexOf(liste_name[x]) >= 0) {
                topics_img[i].src = img_src;
            }
        }
    }
}

topicCouleur(topic_kikoo, 'http://image.noelshack.com/fichiers/2016/44/1478302324-topic-dossier2.png');
topicCouleur(topic_perso, 'http://image.noelshack.com/fichiers/2016/44/1478348497-topic-vert.png');
topicCouleur(topic_lien, 'http://image.noelshack.com/fichiers/2016/44/1478302321-topic-violet.png');
topicCouleur(topic_sensible, 'http://image.noelshack.com/fichiers/2016/44/1478302317-topic-orange.png');
topicCouleur(topic_sensible_plus, 'http://image.noelshack.com/fichiers/2016/44/1478302323-topic-black.png');

// Topics ddb couleur
var ddbparpage = 0;

function callbackReq(result) {
    var tempDiv = document.createElement('div');
    tempDiv.innerHTML = result;
    tempDiv.style.display = "none";
    document.body.appendChild(tempDiv);
    if (result.indexOf('Ce contenu a déjà été signalé par un utilisateur.') >= 0) {
        ddbparpage += 1;
        var motif = tempDiv.getElementsByClassName('col-md-10')[0];
        $('#scrollable-script').append('<p id="ddb-hist"><i>'+ddbparpage+'. <b>Motif :</b> '+motif.innerHTML+'.</i></p>');
    }
}

function mainDdbCount(callback) {
    if (listeSujet() === false) {
        for (var i = 0; i < ddb_btn.length; i++) {
            var data_selector = ddb_btn[i].getAttribute('data-selector');
            // DO GET REQUEST
            GM_xmlhttpRequest({
                method: "GET",
                url: 'http://www.jeuxvideo.com' + data_selector,
                onload: function (response) {
                    callback(response.responseText);
                }
            });
        }
        $('#scrollable-script').append('<h5>Historique de DDB de cette page</h5>');
        setTimeout(function() {
            if (document.getElementById('ddb-hist') === null) {
                $('#scrollable-script').append('<p>Aucune ddb est en cours sur cette page.</p>');
            }
        }, 1000); // Timeout pour ddb
    }
}
mainDdbCount(callbackReq);

// Notif by pseudo
var sp1;
var sp2;

var topic_stalk;
var topic_auteur = document.querySelectorAll('.text-admin,.text-user,.text-modo');

var notifDetails = {
    text: pseudo_to_stalk+' a posté un topic.',
    //title: 'Alerte',
    onclick: function () {
        window.location.href = topic_stalk;
    }

};

function searchPseudoLS() {

    setTimeout(function() {
        if (listeSujet() === true) {
            console.log('POUKAV EXTENSION: Cherche dans la liste des sujets pour : ' + pseudo_to_stalk);
            for (var i = 0; i < topic_auteur.length; i++) {
                sp1 = topic_auteur[i].href.split('/')[4];
                sp2 = sp1.split('?')[0];
                if (pseudo_to_stalk == sp2.toLowerCase()) {
                    topic_stalk_ = document.getElementsByClassName('lien-jv topic-title');
                    if (lastTopic == topic_stalk_[i].title) {
                        // ne pas envoyer la notif
                    } else {
                        topic_stalk = topic_stalk_[i].href;
                        GM_notification(notifDetails);
                        topicListe(topic_stalk_[i].title, topic_stalk, pseudo_to_stalk); // ajoute à la liste des topics enregistrés
                        GM_setValue('last-topic', topic_stalk_[i].title);
                    }
                }
            }
        }
    }, 1000);
}

function searchPseudoByGet() {

    setTimeout(function() {
        if (listeSujet() === false) {
            console.log('POUKAV EXTENSION: Cherche dans la liste des sujets pour : ' + pseudo_to_stalk);
            GM_xmlhttpRequest({
                method: "GET",
                url: 'http://www.jeuxvideo.com/forums/0-51-0-1-0-1-0-blabla-18-25-ans.htm',
                onload: function (response) {
                    var getData = document.createElement('div');
                    getData.innerHTML = response.responseText;
                    getData.style.display = "none";
                    document.body.appendChild(getData);
                    var topic_auteur_get = getData.querySelectorAll('.text-admin,.text-user,.text-modo');
                    //console.log(getData);
                    for (var i = 0; i < topic_auteur_get.length; i++) {
                        sp2 = topic_auteur_get[i].innerHTML.replace(/\s/g, "");
                        if (pseudo_to_stalk == sp2.toLowerCase()) {
                            topic_stalk_ = getData.getElementsByClassName('lien-jv topic-title');
                            if (lastTopic == topic_stalk_[i].title) {
                                // ne pas envoyer la notif
                            } else {
                                topic_stalk = topic_stalk_[i].href;
                                GM_notification(notifDetails);
                                topicListe(topic_stalk_[i].title, topic_stalk, pseudo_to_stalk); // ajoute à la liste des topics enregistrés
                                GM_setValue('last-topic', topic_stalk_[i].title);
                            }
                        }
                    }
                }
            });
        }
    }, 1000);

}

if (pseudo_to_stalk === '') {} else {
    searchPseudoLS(); //1st time call
    searchPseudoByGet(); //1st time call
    setInterval(searchPseudoLS, 30000);
    setInterval(searchPseudoByGet, 30000);
}

// modal infos karma

insultes_box = ['batard', 'fdp', 'pute', 'va te faire foutre', 'connard', 'bouffon', ' nique', 'dechet', 'ta gueule', 'salope', 'bouffon', 'ntm', 'enculer', 'enculé', 'fils de pute', 'fils de chien', 'trou du cul', 'trouduc', 'ducon', 'sous-merde', 'consanguin', 'enfoiré', 'merdeux', 'tocar', 'sous-être'];
racistes_box = ['bougnoul', 'goy', 'feuj', 'nègre', 'negro', 'negre', 'hitler avait raison', 'sale arabe', 'sale blanc', 'sale noir', 'pakpak', 'chinetok', 'rosbyif', 'paddies', 'flamish', 'tutuch', 'bicot', 'vive hitler'];
homophobe_box = ['tarlouze', 'sale gay', 'tapette', 'tantouze', 'pédé', 'fiotte', 'tafiole'];
pyj_box = ['xD', 'jerry', 'ptdr', 'mdr', 'jpp', 'kom t', ' onch', 'norsh', 'prout', 'taggle', 'enfoiray'];
autres_box = ['beurette', 'petits bras', 'gaucho', 'gauchiasse', 'babtou'];
diff_box = ['collabo'];

dicoInsultes = {
    insultes: ': Insulte. <p>Risque : <b style="color:orange;">moyen</b>.</p> <p>Avertissement ou banissement temporaire (selon le karma actuel).</p> <b>Karma: +3.</b>',
    racisme: ': Racisme. <p>Risque : <b style="color:red;">élevé</b>.</p> <p>Banissemment 30 jours ou banissement définitif (selon le karma actuel).</p> <b>Karma +10</b>',
    homophobe: ': Homophobie. <p>Risque : <b style="color:red;">élevé</b>.</p> <p>Banissemment 30 jours ou banissement définitif (selon le karma actuel).</p> <b>Karma +10</b>',
    regles: ': Règles spécifiques au 18-25. <p>Risque : <b style="color:lime;">faible</b>.</p> <p>Avertissement.</p> <b>Karma +1</b>',
    diffamation: ' : Diffamations, menaces. <p>Risque : <b style="color:red;">élevé</b>.</p> <p>Avertissement.</p> <b>Karma +10</b>'
};

var modalInfoKarma;
var mousePos;
var p = [];
var b = document.getElementsByClassName('motinterdit');

if (listeSujet() === false) {

    modalInfoKarma = document.createElement('div');
    modalInfoKarma.id = 'modalInfoKarma';

    for (var i = 0; i < b.length; i++) {

        b[i].onmousemove = function (event) {
            var dot, eventDoc, doc, body, pageX, pageY;

            event = event || window.event;

            if (event.pageX === null && event.clientX !== null) {
                eventDoc = (event.target && event.target.ownerDocument) || document;
                doc = eventDoc.documentElement;
                body = eventDoc.body;

                event.pageX = event.clientX +
                    (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
                    (doc && doc.clientLeft || body && body.clientLeft || 0);
                event.pageY = event.clientY +
                    (doc && doc.scrollTop  || body && body.scrollTop  || 0) -
                    (doc && doc.clientTop  || body && body.clientTop  || 0 );
            }

            mousePos = {
                x: event.pageX,
                y: event.pageY
            };
            var pos = mousePos;
            if (!pos) {
                // nothing
            }
            else {
                modalInfoKarma.style = 'background:#f4f6f7;color:#000000;display:block;position:absolute;width:280px;height:160px;border:2px solid #000000;left:'+pos.x + 'px'+';top:'+pos.y + 'px'+';';
                if (insultes_box.indexOf(this.innerHTML.toLowerCase()) >= 0) {

                    modalInfoKarma.innerHTML = "<br>'"+ this.innerHTML + "' " + dicoInsultes.insultes;

                } else if (racistes_box.indexOf(this.innerHTML.toLowerCase()) >= 0) {

                    modalInfoKarma.innerHTML = "<br>'"+ this.innerHTML + "' " + dicoInsultes.racisme;

                } else if (homophobe_box.indexOf(this.innerHTML.toLowerCase()) >= 0) {

                    modalInfoKarma.innerHTML = "<br>'"+ this.innerHTML + "' " + dicoInsultes.homophobe;

                } else if (pyj_box.indexOf(this.innerHTML.toLowerCase()) >= 0) {

                    modalInfoKarma.innerHTML = "<br>'"+ this.innerHTML + "' " + dicoInsultes.regles;

                } else if (autres_box.indexOf(this.innerHTML.toLowerCase()) >= 0) {

                    modalInfoKarma.innerHTML = "<br>'"+ this.innerHTML + "' " + dicoInsultes.regles;

                } else if (diff_box.indexOf(this.innerHTML.toLowerCase()) >= 0) {

                    modalInfoKarma.innerHTML = "<br>'"+ this.innerHTML + "' " + dicoInsultes.diffamation;

                } else {

                    modalInfoKarma.innerHTML = "<br>'" + this.innerHTML + "' : Non défini.";
                }
                document.body.appendChild(modalInfoKarma);
            }
        };

        b[i].onmouseout = function() {
            modalInfoKarma.style = 'display:none;';
        };
    }

}

// stickers & images plus grands
if (stickerPlus === true) {
    var l = document.getElementsByClassName('img-shack');
    for (var i = 0; i < l.length; i++) {
        var h = parseInt(l[i].height);
        var w = parseInt(l[i].width);
        l[i].height = h * 1.3;
        l[i].width = w * 1.3;
    }
}
// Emoji ban
if (emojiBan === true) {
    $('.emoji').remove(); // delete tous les emojis
}

// stickers inédits
function addSticker(id) {
    document.getElementById('message_topic').value = document.getElementById('message_topic').value + stickers[id] + ' ';
}
function addStickerPerso(id) {
    document.getElementById('message_topic').value = document.getElementById('message_topic').value + stickersPerso[id] + ' ';
}
if (sticker === true)
{
    document.getElementById('stickers-pk').style.display = 'block';
    document.getElementById('stickers-perso').style.display = 'block';
    for (var i = 0; i < stickers.length; i++) {
        $('#stickers-pk').append('<img code="'+i+'" class="sticker-pk" style="max-height:66px;max-width:66px" src="'+stickers[i]+'">');
    }
    for (var i = 0; i < stickersPerso.length; i++) {
        $('#stickers-perso').append('<img code="'+i+'" class="sticker-perso" style="max-height:66px;max-width:66px" src="'+stickersPerso[i]+'">');
    }

    $( ".sticker-pk" ).click(function() {
        addSticker(this.getAttribute('code'));
        $( "#message_topic" ).focus();
    });
    $( ".sticker-perso" ).click(function() {
        addStickerPerso(this.getAttribute('code'));
        $( "#message_topic" ).focus();
    });

    $('.sticker-perso').dblclick(function(){
        this.remove();
        var stickerPersoDel = stickersPerso.indexOf(this.getAttribute('src'));
        if (stickerPersoDel > -1) {
            stickersPerso.splice(stickerPersoDel, 1);
        }
        GM_setValue("stickersPerso", JSON.stringify(stickersPerso));
    });

    document.getElementById('sticker-perso').addEventListener('click', function() {
        var stLink = prompt('Lien du sticker');
        if (stLink !== null)
        {
            stickersPerso.push(stLink);
        }
        GM_setValue("stickersPerso", JSON.stringify(stickersPerso));
    });
}