// ==UserScript==
// @name           OGame Screen of Resources
// @namespace      http://www.midgar.com.ar/grease/ogame/
// @description    OGame GreaseMonkey Suite. Screen of Resources.
//@author         pippo1985, con modifiche di Lolli
// @include        http://ogame*.de/game/*
// @include        http://*.gfsrv.net/game/*
// ==/UserScript==

//******************************
// ***  INIZIO Valori da editare***
//******************************

// Variabili Colori editato da Lillo
var ColM = "#B5B5B5"; // Colore Metallo
var ColC = "#95DBF9"; // Colore Cristallo
var ColD = "##00CC00"; // Colore Deuterio
var ColCP = "#FFFF00"; //Colore Cargo Pesanti
var ColCL = "#FFFF00"; //Colore Cargo Leggeri
var ColAlert = "#FC0000" // Colore per deposito pieno su Stima risorse
// Fine varialbili colori

// Variabile per il calcolo Ore
var Ora1c = 12;  	// Orario della prima colonna in ore
var Ora2c = 24; 	// Orario della seconda colonna in ore
var Ora3c = 24*30; 	// Orario della terza colonna in ore

//******************************
// ***  FINE Valori da editare      ***
//******************************
function formatNmb(numero)
   {
	  var nNmb = String(numero); 
    var sRes = "";
    for (var j, i = nNmb.length - 1, j = 0; i >= 0; i--, j++)
     sRes = nNmb.charAt(i) + ((j > 0) && (j % 3 == 0)? ".": "") + sRes;
   return sRes;
   }

function formatOra(Ore) { // Trasforma il numero tempo in gg-hh-mm
	var StrOre = Ore;
	var GG = Math.floor(StrOre / 24);
	var H = Math.floor(StrOre - (GG * 24));
	var m = Math.floor((StrOre - (GG * 24)- H)*60)
	StrOre = ""
	if (GG > 0) { StrOre =  GG+'g ';}
	if (H > 0) { StrOre = StrOre+ H+ 'h ';}
	if (m > 0 ) { StrOre= StrOre+ m+ 'm';}
	return StrOre
	}
   
if (document.location.href.indexOf('/game/resources.php') == -1) return;
//GM_log('Init: '+document.location.href);



var T_Recursos = document.getElementsByTagName("td");
var Metal = T_Recursos[18].innerHTML.replace(/\./,'');
var Crystal = T_Recursos[19].innerHTML.replace(/\./,'');
var Deut = T_Recursos[20].innerHTML.replace(/\./,'');

Metal = Metal.replace(/\./g,'');
Crystal = Crystal .replace(/\./g,'');
Deut = Deut.replace(/\./g,'');




var PMetal = T_Recursos[40].innerHTML.replace(/\./g,'');
var PCrystal = T_Recursos[41].innerHTML.replace(/\./g,'');
var PDeut = T_Recursos[42].innerHTML.replace(/\./g,'');

PMetal = PMetal.replace(/\./g,'');
PCrystal = PCrystal .replace(/\./g,'');
PDeut = PDeut.replace(/\./g,'');

var AlmM = T_Recursos[35].innerHTML.replace(/\./g,'');
var AlmC = T_Recursos[36].innerHTML.replace(/\./g,'');
var AlmD = T_Recursos[37].innerHTML.replace(/\./g,'');

AlmM = AlmM.replace(/k/,'000');
AlmC = AlmC.replace(/k/,'000');
AlmD = AlmD.replace(/k/,'000');

AlmM = AlmM.replace(/\./g,'');
AlmC = AlmC.replace(/\./g,'');
AlmD = AlmD.replace(/\./g,'');


if (Metal.indexOf('<font color')!=-1) {
	Metal = Metal.substring(22, Metal.indexOf('</font'));
}
if (Crystal.indexOf('<font color')!=-1) {
	Crystal = Crystal.substring(22, Crystal.indexOf('</font'));
}
if (Deut.indexOf('<font color')!=-1) {
	Deut = Deut.substring(22, Deut.indexOf('</font'));
}

if (PMetal.indexOf('<font color')!=-1) {
	PMetal = PMetal.substring(22, PMetal.indexOf('</font'));
}
if (PCrystal.indexOf('<font color')!=-1) {
	PCrystal = PCrystal.substring(22, PCrystal.indexOf('</font'));
}
if (PDeut.indexOf('<font color')!=-1) {
	PDeut = PDeut.substring(22, PDeut.indexOf('</font'));
}

if (AlmM.indexOf('<font color')!=-1) {
	AlmM = AlmM.substring(22, AlmM.indexOf('</font'));
}
if (AlmC.indexOf('<font color')!=-1) {
	AlmC = AlmC.substring(22, AlmC.indexOf('</font'));
}
if (AlmD.indexOf('<font color')!=-1) {
	AlmD = AlmD.substring(22, AlmD.indexOf('</font'));
}
	
var XMetal = new Array(3);
var XCrystal = new Array(3);
var XDeut = new Array(3);
var XTot = new Array(3);

// Calcolo produzione per materia e totali
XMetal[0] = PMetal * Ora1c;
XCrystal[0] = PCrystal * Ora1c;
XDeut[0] = PDeut * Ora1c;
XTot[0]= XMetal[0] + XCrystal[0] + XDeut[0];

XMetal[1] = PMetal * Ora2c;
XCrystal[1] = PCrystal * Ora2c;
XDeut[1] = PDeut * Ora2c;
XTot[1]= XMetal[1] + XCrystal[1] + XDeut[1];

XMetal[2] = PMetal * Ora3c;
XCrystal[2] = PCrystal * Ora3c;
XDeut[2] = PDeut * Ora3c;
XTot[2]= XMetal[2] + XCrystal[2] + XDeut[2];

// Calcolo Residuo deposito
var DepM=(AlmM-Metal) // Residuo deposito Metallo
var DepC=(AlmC-Crystal) // Residuo deposito Cristallo
var DepD=(AlmD-Deut) // Residuo deposito Deuterio




// Buscar Formulario de Recursos

var ResFormC, T_Form, ResForm;
ResFormC = document.getElementsByTagName('table');

for (var i = 0; i < ResFormC.length; i++) {
	
	T_Form = ResFormC[i];
	if (T_Form.getAttribute('width') == '550') {
		ResForm = T_Form;
	}
}

// Buscar Factor de Produccion
var T_Factor = /Fattore di produzione(.)*\:(.)*[0-9.]/gi.exec(document.body.innerHTML);

var Factor, FactorPorc;
if (T_Factor.length) {
	Factor=T_Factor[0].split(":");
	Factor=parseFloat(Factor[1]) * 100;
	FactorPorc=parseInt(parseFloat(Factor) * 2.5);
}

// Agregar tabla de factor de produccion
if (ResForm) {
	// Buscar Produccion Real

	

	// Procesar Tablas
	var ProdFact = document.createElement('div');

	ProdFact.innerHTML = '<table width="500"><tr>'+
'<th>Fattore di produzione</th>'+
'<th>'+Factor+'%</th>'+
'<th width="250"><div style="border: 1px solid #FFFFFF; width: 250px;"><div style="background-color: '+(Factor < 100 ? '#C00000' : '#00C000' )+'; width: '+FactorPorc+'px;">&nbsp;</div></div></th>'+
'</tr></table><br />';
	
	var CuentaRec = document.createElement('div');

	CuentaRec.innerHTML = '<br /><table width="500">'+
'<tr><td class="c" colspan="4">Produzione Stimata ( <font color='+ColCL+'> Cargo leggeri </font> : <font color='+ColCP+'> Cargo pesanti</font> )</td></tr>'+
'<tr>'+
'<td class="c">&nbsp;</td>'+
'<th>'+formatOra(Ora1c)+'</th>'+
'<th>'+formatOra(Ora2c)+'</th>'+
'<th>'+formatOra(Ora3c)+'</th>'+
'</tr>'+
'<tr>'+
'<td class="c"><font color='+ColM+'>Metallo</font></td>'+
'<th><font color='+(XMetal[0] > DepM ? ColAlert : ColM )+'>'+formatNmb(XMetal[0])+'</font> (<font color='+ColCL+'>'+formatNmb(Math.ceil(XMetal[0]/5000))+'</font>:<font color='+ColCP+'>'+formatNmb(Math.ceil(XMetal[0]/25000))+'</font>)</th>'+
'<th><font color='+(XMetal[1] > DepM ? ColAlert : ColM )+'>'+formatNmb(XMetal[1])+'</font> (<font color='+ColCL+'>'+formatNmb(Math.ceil(XMetal[1]/5000))+'</font>:<font color='+ColCP+'>'+formatNmb(Math.ceil(XMetal[1]/25000))+'</font>)</th>'+
'<th><font color='+(XMetal[2] > DepM ? ColAlert : ColM )+'>'+formatNmb(XMetal[2])+'</font> (<font color='+ColCL+'>'+formatNmb(Math.ceil(XMetal[2]/5000))+'</font>:<font color='+ColCP+'>'+formatNmb(Math.ceil(XMetal[2]/25000))+'</font>)</th>'+
'</tr>'+
'<tr>'+
'<td class="c"><font color='+ColC+'>Cristallo</font></td>'+
'<th><font color='+(XCrystal[0] > DepC ? ColAlert : ColC )+'>'+formatNmb(XCrystal[0])+'</font> (<font color='+ColCL+'>'+formatNmb(Math.ceil(XCrystal[0]/5000))+'</font>:<font color='+ColCP+'>'+formatNmb(Math.ceil(XCrystal[0]/25000))+'</font>)</th>'+
'<th><font color='+(XCrystal[1] > DepC ? ColAlert : ColC )+'>'+formatNmb(XCrystal[1])+'</font> (<font color='+ColCL+'>'+formatNmb(Math.ceil(XCrystal[1]/5000))+'</font>:<font color='+ColCP+'>'+formatNmb(Math.ceil(XCrystal[1]/25000))+'</font>)</th>'+
'<th><font color='+(XCrystal[2] > DepC ? ColAlert : ColC )+'>'+formatNmb(XCrystal[2])+'</font> (<font color='+ColCL+'>'+formatNmb(Math.ceil(XCrystal[2]/5000))+'</font>:<font color='+ColCP+'>'+formatNmb(Math.ceil(XCrystal[2]/25000))+'</font>)</th>'+
'</tr>'+
'<tr>'+
'<td class="c"><font color='+ColD+'>Deuterio</font></td>'+
'<th><font color='+(XDeut[0] > DepD ? ColAlert : ColD )+'>'+formatNmb(XDeut[0])+'</font> (<font color='+ColCL+'>'+formatNmb(Math.ceil(XDeut[0]/5000))+'</font>:<font color='+ColCP+'>'+formatNmb(Math.ceil(XDeut[0]/25000))+'</font>)</th>'+
'<th><font color='+(XDeut[1] > DepD ? ColAlert : ColD )+'>'+formatNmb(XDeut[1])+'</font> (<font color='+ColCL+'>'+formatNmb(Math.ceil(XDeut[1]/5000))+'</font>:<font color='+ColCP+'>'+formatNmb(Math.ceil(XDeut[1]/25000))+'</font>)</th>'+
'<th><font color='+(XDeut[2] > DepD ? ColAlert : ColD )+'>'+formatNmb(XDeut[2])+'</font> (<font color='+ColCL+'>'+formatNmb(Math.ceil(XDeut[2]/5000))+'</font>:<font color='+ColCP+'>'+formatNmb(Math.ceil(XDeut[2]/25000))+'</font>)</th>'+
'</tr>'+
'<tr>'+
'<td class="c">Totale</td>'+
'<th><font size=3>'+formatNmb(XTot[0])+'</font></th>'+
'<th><font size=3>'+formatNmb(XTot[1])+'</font></th>'+
'<th><font size=3>'+formatNmb(XTot[2])+'</font></th>'+
'</tr>'+
'<tr>'+
'<td class="c">Cargo Totali</td>'+
'<th><font color='+ColCL+'> Cl:'+formatNmb(Math.ceil(XTot[0]/5000))+'</font><font color='+ColCP+'>  Cp:'+formatNmb(Math.ceil(XTot[0]/25000))+'</font></th>'+
'<th><font color='+ColCL+'> Cl:'+formatNmb(Math.ceil(XTot[1]/5000))+'</font><font color='+ColCP+'>  Cp:'+formatNmb(Math.ceil(XTot[1]/25000))+'</font></th>'+
'<th><font color='+ColCL+'> Cl:'+formatNmb(Math.ceil(XTot[2]/5000))+'</font><font color='+ColCP+'>  Cp:'+formatNmb(Math.ceil(XTot[2]/25000))+'</font></th>'+
'</tr>'+
'</table><br />';

	var EAlmM=(Metal / AlmM) * 100;
	var EAlmMPorc=parseInt((Metal / AlmM) * 200);
	var EAlmC=(Crystal / AlmC) * 100;
	var EAlmCPorc=parseInt((Crystal / AlmC) * 200);
	var EAlmD=(Deut / AlmD) * 100;
	var EAlmDPorc=parseInt((Deut / AlmD) * 200);

	EAlmM = Math.round(EAlmM);
	EAlmC = Math.round(EAlmC);
	EAlmD = Math.round(EAlmD);

	//var OraDep = new Array(3);

// Calcolo tempo per riempire il deposito	
if ((DepM > 0)&&(PMetal != 0)) {OraDepM = (AlmM - Metal)/ PMetal;}
else {OraDepM = 0;}

if ((DepC > 0)&&(PCrystal != 0)) {OraDepC = (AlmC - Crystal)/ PCrystal;}
else{ OraDepC = 0; }

if ((DepD>0)&&(PDeut != 0)) {OraDepD = (AlmD - Deut)/ PDeut;}
else{ OraDepD = 0; }

	CuentaRec.innerHTML += '<table width="500">'+
'<tr><td class="c" colspan="5">Livello depositi</td></tr>'+
'<tr>'+
'<th></th>'+
'<th></th>'+
'<th></th>'+
'<th>Residuo deposito</th>'+
'<th>Tempo</th>'+
'</tr>'+
'<tr>'+
'<th>Metallo</th>'+
'<th>'+EAlmM+'%</th>'+
'<th width="200"><div style="border: 1px solid #FFFFFF; width: 200px;"><div style="background-color: '+(EAlmM > 100 ? '#C00000' : ColM )+'; width: '+(EAlmMPorc > 200 ? 200 : EAlmMPorc)+'px;">&nbsp;</div></div></th>'+
'<th>'+formatNmb(DepM)+'</th>'+
'<th>'+formatOra(OraDepM)+'</th>'+
'</tr>'+
'<tr>'+
'<th>Cristallo</th>'+
'<th>'+EAlmC+'%</th>'+
'<th width="200"><div style="border: 1px solid #FFFFFF; width: 200px;"><div style="background-color: '+(EAlmC > 100 ? '#C00000' : ColC )+'; width: '+(EAlmCPorc > 200 ? 200 : EAlmCPorc)+'px;">&nbsp;</div></div></th>'+
'<th>'+formatNmb(DepC)+'</th>'+
'<th>'+formatOra(OraDepC)+'</th>'+
'</tr>'+
'<tr>'+
'<th>Deuterio</th>'+
'<th>'+EAlmD+'%</th>'+
'<th width="200"><div style="border: 1px solid #FFFFFF; width: 200px;"><div style="background-color: '+(EAlmD > 100 ? '#C00000' : ColD )+'; width: '+(EAlmDPorc > 200 ? 200 : EAlmDPorc)+'px;">&nbsp;</div></div></th>'+
'<th>'+formatNmb(DepD)+'</th>'+
'<th>'+formatOra(OraDepD)+'</th>'+
'</tr>'+
'</table><br />';


	ResForm.parentNode.insertBefore(CuentaRec, ResForm.nextSibling);
	ResForm.parentNode.insertBefore(ProdFact, ResForm);
	//document.body.innerHTML = document.body.innerHTML.replace(/Fattore di produzione(.)+n\:(.)*[0-9.]/gi,'');

}