zogre / Thaanis-Luxe

// ==UserScript==
// @name        Thaanis-Luxe
// @namespace   Thaanis-luxe.com
// @description Thaanis-Luxe : script pour identifier facilement les caractéristiques luxes d'un objet (Contactez Ulysse in game)
// @include     http://www.monde-de-thaanis.com/jeu/perso/profil.php?cat=equip
// @include     http://www.monde-de-thaanis.com/jeu/perso/profil.php?cat=bazar
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js
// @downloadURL https://openuserjs.org/install/zogre/Thaanis-Luxe.user.js
// @version     1.3.2
// @grant none
// ==/UserScript==
//var childrent = document.getElementsByTagName("a");
var childrenbr;
var childrentd = document.getElementsByTagName("td");
var tmp='';
var used='';
var lienmenu=0;

var tabLux = new Array();

//Tête 
var BAN = {match: "Bandeau (", Poids: "3", ARM: "3", Vue: "1"};
var BDM = {match: "Bandeau de magie", Poids: "10", ARM: "1", PM: "9", Vue: "0"};
var CAC = {match: "Casque à cornes", Poids: "15", ATT: "-1", DEF: "-2", DEG: "7", ARM: "9", Vue: "-2"};
var CDC = {match: "Casque de chevalier", Poids: "15", ARM: "13", Vue: "-5", Cycle: "5"};
var CEC = {match: "Casque en cuir", Poids: "5", ARM: "6", Vue: "-1", Cycle: "2"};
var CEM = {match: "Casque en métal", Poids: "10", ARM: "9", Vue: "-2", Cycle: "2"};
var CAO = {match: "Casque en os", Poids: "15", ATT: "7", DEF: "-2", ARM: "7", Vue: "-1"};
var CDM = {match: "Chapeau de mage", Poids: "10", ATT: "-2", DEF: "1", PM: "8", DM: "6", Vue: "-2"};
var HTC = {match: "Heaume à tête de crapaud", Poids: "26", DEF: "-5", ARM: "15", Vue: "-5"};
var JUM = {match: "Jumelles", Poids: "5", ATT: "0", DEF: "-1", Vue: "4"};

//Cou
var PLM = {match: "Amulette \"pare-la-mort\"", Poids: "3", PM: "-2", DM: "-1", Comp: "-2", Magie: "-5"};
var ATT = {match: "Amulette terre à terre", Poids: "2", PM: "-2", DM: "-2", Comp: "3", Magie: "-1"};
var COL = {match: "Colletin (", Poids: "5", ARM: "3"};
var CRE = {match: "Colletin renforcé", Poids: "8", ATT: "-1", DEF: "-1", ARM: "5"};
var CAN = {match: "Collier anticyclownique", Poids: "2", PM: "-2", DM: "0", Comp: "-1", Magie: "-1"};
var CPS = {match: "Collier psychique", Poids: "5", ARM: "-2", PM: "5", DM: "5"};
var TAL = {match: "Talisman", Poids: "3", PM: "3", DM: "3"};

//Bras droit
var DAG = {match: "Dague", Poids: "7", ATT: "2", DEF: "2", ARM: "0", DEG: "3"};
var ECO = {match: "Epée courte", Poids: "20", ATT: "-5", DEF: "2", DEG: "12"};
var ELO = {match: "Epée longue", Poids: "25", ATT: "-15", DEF: "-4", DEG: "20"};
var FLE = {match: "Fleuret", Poids: "15", ATT: "9", DEF: "9", DEG: "-8", ARM: "-1"};
var GAN = {match: "Gantelet", Poids: "14", ATT: "-5", DEF: "6", DEG: "3", ARM: "6", Comp: "-1"};
var HCT = {match: "Hachette", Poids: "20", ATT: "5", DEF: "-5", DEG: "10"};
var LEV = {match: "Levantine", Poids: "14", ATT: "4", DEF: "4", DEG: "4"};
var RAP = {match: "Rapière", Poids: "20", ATT: "-8", DEF: "0", DEG: "15"};
var SIC = {match: "Sica", Poids: "10", ATT: "1", DEF: "2", DEG: "5"};

//Bras gauche
var ASP = {match: "Aspis", Poids: "35", ATT: "-5", DEF: "-1", DEG: "-8", ARM: "20"};
var BNO = {match: "Bouclier normand", Poids: "20", ATT: "-7", DEF: "5", DEG: "-5", ARM: "12"};
var ECU = {match: "Ecu", Poids: "10", ATT: "-2", DEF: "2", DEG: "2", ARM: "3"};
var KDP = {match: "Kit du piégeur", Poids: "10"};
var KDR = {match: "Kit du réparateur", Poids: "10"};
var MGA = {match: "Main-gauche", Poids: "5", ATT: "3", DEF: "3", DEG: "3", ARM: "-4"};
var PAV = {match: "Pavois", Poids: "25", ATT: "-7", DEF: "-7", ARM: "15"};
var RON = {match: "Rondache", Poids: "12", ATT: "-4", DEF: "4", DEG: "-3", ARM: "7"};
var TAR = {match: "Targe", Poids: "4", DEF: "5"};

//Bras droit et gauche
var BEC = {match: "Banc en chêne", Poids: "80", ATT: "-20", DEF: "-20", DEG: "45", ARM: "7", Vue: "0"};
var BAT = {match: "Bâton magique", Poids: "20", ATT: "-8", DEF: "5", DM: "8",PM: "12",DEG: "-8",ARM: "5"}; 
var CLA = {match: "Claymore", Poids: "35", ATT: "-15", DEF: "-7", DEG: "25"};
var GJU = {match: "Griffes jumelles", Poids: "17", ATT: "7", DEF: "-5", DEG: "7", ARM: "-4"};
var GUI = {match: "Guisarme", Poids: "50", ATT: "-20", DEF: "-10", DEG: "35"};
var HAC = {match: "Hache", Poids: "40", ATT: "-20", DEF: "-5", DEG: "30"};
var TGP = {match: "Très grand pavois", Poids: "50", ATT: "-16", DEF: "6", DEG: "-16", ARM: "30", Vue: "0"};

//Corps
var ADC = {match: "Armure de cuir", Poids: "20", ATT: "1", DEF: "-10", ARM: "10"};
var ACB = {match: "Armure de cuir bouilli", Poids: "9", ATT: "-6", DEF: "2", ARM: "5"};
var ADP = {match: "Armure de plates", Poids: "60", ATT: "-20", DEF: "-20", ARM: "35"};
var AET = {match: "Armure éthérée", Poids: "1", ATT: "-6", DEF: "-6", DEG: "-6", ARM: "-6", PM: "13", DM: "13", Cycle: "-15", Reg: "-6"};
var ASY = {match: "Armure symbiotique", Poids: "30", PM: "15", DM: "10"};
var BRI = {match: "Brigantine", Poids: "30", ATT: "0", DEF: "-12", ARM: "15"};
var CUI = {match: "Cuirasse", Poids: "50", ATT: "-16", DEF: "-16", ARM: "30"};
var HAM = {match: "Hamata", Poids: "35", ATT: "-10", DEF: "-10", ARM: "20"};
var HAU = {match: "Haubert", Poids: "40", ATT: "-13", DEF: "-13", ARM: "26"};
var JAQ = {match: "Jaque", Poids: "9", ATT: "2", DEF: "-6", ARM: "5"};
var RMB = {match: "Robe de mage balancé", Poids: "10", PM: "5", DM: "5"};
var RMP = {match: "Robe de mage prudent", Poids: "10", PM: "-6", DM: "13"};
var RMT = {match: "Robe de mage téméraire", Poids: "10", PM: "12", DM: "-6"};
var TDM = {match: "Tunique de mailles", Poids: "30", ATT: "-12", DEF: "0", ARM: "15"};
var VES = {match: "Veste", Poids: "5", DEF: "2", ARM: "2"};

//Bijoux
var BACC = {match: "Bague à chaton creux", Poids: "1", Reg: "-2"};
var BAE = {match: "Bague d'Eau", Poids: "1", DEF: "6", DEG: "-5"};
var BAF = {match: "Bague de Feu", Poids: "1", DEG: "6", Reg: "-5"};
var BAM = {match: "Bague de mage", Poids: "1", ATT: "-2", DEG: "-2", PM: "3", DM: "3", Comp: "-1", Magie: "1"};
var BAR = {match: "Bague de Roc", Poids: "1", ARM: "6", Depla: "-2"};
var BAA = {match: "Bague en air", Poids: "1", ATT: "6", ARM: "-5"};
var ALL = {match: "Alliance", Poids: "1", PM: "-5"};
var BAG = {match: "Bague de guerrier", Poids: "1", ATT: "3", DEG: "3", PM: "-2", DM: "-2", Comp: "1", Magie: "-1"};

//Jambes 
var CEG = {match: "Cuissard et grève", Poids: "20", ATT: "-2", DEF: "-2", ARM: "10"};
var CUIS = {match: "Cuissot", Poids: "25", ATT: "-3", DEF: "-3", ARM: "12"};
var GAP = {match: "Genouillères à pointes", Poids: "5", ATT: "2", DEF: "-1", DEG: "2", ARM: "1"};
var JDM = {match: "Jambières de mailles", Poids: "10", DEF: "-1", ARM: "5"};
var JDP = {match: "Jambières de plates", Poids: "15", DEF: "-3", ARM: "7"};
var JCB = {match: "Jambières en cuir bouilli", Poids: "5", DEF: "1", ARM: "3"};
var PAN = {match: "Pantalon", Poids: "3", DEF: "2", ARM: "1"};

//Pieds
var BMA = {match: "Bottes de marche", Poids: "15", ATT: "0", DEF: "0", Cycle: "-10", Depla: "12"};
var CMA = {match: "Chausses de mailles", Poids: "8", ATT: "2", DEF: "2", ARM: "4", Cycle: "10"};
var CEL = {match: "Chaussettes en laine", Poids: "3", ATT: "-1", DEF: "-1", Cycle: "2", Reg: "5"};
var CHP = {match: "Chaussettes puantes", Poids: "3", ATT: "-3", DEF: "-3", Cycle: "8", Reg: "-17"};
var SAN = {match: "Sandales", Poids: "5", ATT: "2", DEF: "2", Reg: "-1"};
var SOL = {match: "Soleret", Poids: "20", ATT: "5", DEF: "5", ARM: "5", Cycle: "12"};


var lTab = tabLux.push(BAN,BDM,CAC,CDC,CEC,CEM,CAO,CDM,HTC,JUM,//Tête
                       PLM,ATT,COL,CRE,CAN,CPS,TAL,//Cou
                       DAG,ECO,ELO,FLE,GAN,HCT,LEV,RAP,SIC,//Bras droit
                       ASP,BNO,ECU,KDP,KDR,MGA,PAV,RON,TAR,//Bras gauche
                       BEC,BAT,CLA,GJU,GUI,HAC,TGP,//Bras droit et gauche
                       ADC,ACB,ADP,AET,ASY,BRI,CUI,HAM,HAU,JAQ,RMB,RMP,RMT,TDM,VES,//Corps
                       BACC,BAE,BAF,BAM,BAR,BAA,ALL,BAG,//Bijoux
                       CEG,CUIS,GAP,JDM,JDP,JCB,PAN,//Jambes
                       BMA,CMA,CEL,CHP,SAN,SOL);//Pied

var tabMatch = new Array();

var match = {ARM: "[Arm :",Vue: "[Vue :",REG: "[Rég :",DEF: "[Def :",ATT: "[Att :",PM: "[Puis Mag :",DM: "[Def Mag :",DEG: "[Deg :"
,CYC: "[Cycle :",PDS: "minutes)",MAG: "Magie :",COM: "Comp :",DEP: "Dépla :"};

tabMatch.push(match);

// Coloration
var SUP_LUX='purple';
var EQ_LUX='blue';
var INF1_LUX='green'; // inferieur d'1 point
var INFX_LUX='red'; // inférieurs...

var tmp_val_lux;

// on parcourt tous les td de la page
for(j=0;j<childrentd.length;j++){
  // on traite que les TD de class type1 :> contient les items
  if(childrentd[j].getAttribute("class") == 'type1'){

// on parcourt la liste des items qu'on connait
  for(z=0;z<lTab;z++){
     
  // GENERIQUE
      if (childrentd[j].textContent.indexOf(tabLux[z].match) > -1){
      // on match avec un des items du tableau des items luxe que l'on connait
	  coloritem(tabMatch[0].Vue,tabLux[z].Vue,tabLux[z].match);
      coloritem(tabMatch[0].ATT,tabLux[z].ATT,tabLux[z].match);
	  coloritem(tabMatch[0].DM,tabLux[z].DM,tabLux[z].match);
	  coloritem(tabMatch[0].PM,tabLux[z].PM,tabLux[z].match);
 	  coloritem(tabMatch[0].REG,tabLux[z].REG,tabLux[z].match);
      coloritem(tabMatch[0].DEG,tabLux[z].DEG,tabLux[z].match);
      coloritem(tabMatch[0].DEF,tabLux[z].DEF,tabLux[z].match);
      coloritem(tabMatch[0].ARM,tabLux[z].ARM,tabLux[z].match);
      coloritem(tabMatch[0].CYC,tabLux[z].Cycle,tabLux[z].match);
      coloritem(tabMatch[0].PDS,tabLux[z].Poids,tabLux[z].match);
      coloritem(tabMatch[0].MAG,tabLux[z].Magie,tabLux[z].match);
      coloritem(tabMatch[0].COM,tabLux[z].Comp,tabLux[z].match);
      coloritem(tabMatch[0].DEP,tabLux[z].Depla,tabLux[z].match);

	} // if match GENERIQUE	

	} // liste z tab Luxe

  } // test class=type1
} // for sur les td

// vLuxe mouahaha : valeur Luxe
// match : chaine qui match  la caractéristique
function coloritem(match,vLuxe,item){
var tmp_val_lux=0;
var val,avant,apres,ifVal,newV;
var color;
var typCarac;
      var iVal = childrentd[j].innerHTML.indexOf(match);
      if (iVal>-1){
      // la carac est présente sur l'item
      
      if (typeof vLuxe != 'undefined'){
       // la ref luxe porte cette caracteristique
      tmp_val_lux = vLuxe;
      }
    
    if(match == 'minutes)' || match == 'Cycle :'){
        typCarac = '-';
    }else{
        typCarac = '+';
    }

    // minutes est recuperes différemment la valeur est avant la string de match
      if (match == 'minutes)'){
        var d = childrentd[j].innerHTML.search(/([0-9]* minutes)/i);
        var f = childrentd[j].innerHTML.search(/minutes/i);
        val = childrentd[j].innerHTML.substr(d,eval(f-d-1));
        avant = childrentd[j].innerHTML.substr(0,d);
        apres = childrentd[j].innerHTML.substr(f-1,childrentd[j].innerHTML.length);   
    // fin bloc minutes
      } else {
        ifVal = childrentd[j].innerHTML.indexOf(']',iVal);
        val = childrentd[j].innerHTML.substr(iVal+match.length,ifVal-iVal-match.length);
          if(match == 'Magie :' || match == 'Comp :' || match == 'Dépla :'){
            val = childrentd[j].innerHTML.substr(iVal+match.length,ifVal-iVal-match.length-1);
          }
        // valeur récupérée on compare, on cherche dans quelle situation on est
        avant = childrentd[j].innerHTML.substr(0,iVal);
        apres = childrentd[j].innerHTML.substr(iVal+match.length+val.length+1,childrentd[j].innerHTML.length);         
        }//cas autre que minutes
        
        if (typCarac == '-'){
        // gestion de la couleur en fonction des cas
        // Bloc Moins c'est mieux : minutes, Cycle
      if (eval(val) == eval(tmp_val_lux)){
          // flaggé luxe
          color = EQ_LUX;
        } else if (eval(val)-1 == eval(tmp_val_lux)) {
           // 36->luxe  item=38 -1=37 > luxe -> bad
          // flag inférieur luxe          
          color = INF1_LUX;
        } else if (eval(val)-2 >= eval(tmp_val_lux)) {
        //        36 luxe 39-2=37
          // flag inférieur luxe          
          color = INFX_LUX;
       } else {
          // superieur luxe vLuxe
          // inferieur en minutes...
       color = SUP_LUX;
       }
        }else if (typCarac == '+'){
      // gestion de la couleur en fonction des cas
      // Bloc Plus c'est mieux : la plupart des caractéristiques
      if (eval(val) == eval(tmp_val_lux)){
          // flaggé luxe
          color = EQ_LUX;
        } else if (eval(val)+1 == eval(tmp_val_lux)) {
          // flag inférieur luxe          
          color = INF1_LUX;
        } else if (eval(val)+2 == eval(tmp_val_lux)) {
          // flag inférieur luxe          
          color = INFX_LUX;
       } else {
          // superieur luxe vLuxe
       color = SUP_LUX;
       }
       }
       if (match == 'minutes)'){
        newV = avant + '<font color="'+color+'"><b>'+val+'</b></font>' + apres;    
        }else{
         newV = avant + '<font color="'+color+'"><b>'+match+val+']</b></font>' + apres;
        }
       // reconstruction de la chaine de caractère avec la modif couleur        
        childrentd[j].innerHTML = newV;
      }
}
//alert(tmp);