// ==UserScript==
// @name OgameIt-UtilityRisorse
// @author Izcelion Traduttore: Pippo1985
// @description resources.php
// @language IT
// @include http://ogame*.de/game/resources.php*
// ==/UserScript==
var aaccentata = String.fromCharCode(224);
var eaccentata = String.fromCharCode(232); //č
var eaccentata2  = String.fromCharCode(233); //é
var iaccentata = String.fromCharCode(236);
var oaccentata = String.fromCharCode(242);
var uaccentata = String.fromCharCode(249);

function pourcentageCEF(tabResources){
	var NRJMineM = -1*10*tabResources[0][0]*Math.pow(1.1,tabResources[0][0]);
	var NRJMineC = -1*10*tabResources[1][0]*Math.pow(1.1,tabResources[1][0]);
	var NRJMineD = -1*20*tabResources[2][0]*Math.pow(1.1,tabResources[2][0]);
	var NRJCES = 20*tabResources[3][0]*Math.pow(1.1,tabResources[3][0]);
	var NRJCEF = 50*tabResources[4][0]*Math.pow(1.1,tabResources[4][0]);
	var NRJSat = tabResources[5][5];
	var poucentage = Math.ceil(10*(NRJMineM+NRJMineC+NRJMineD+NRJCES+NRJSat)/(-1*NRJCEF))*10;
	return poucentage;
}

function calcNRJ(tabResources,NivM,NivC,NivD,NivCES,NivCEF,NivSat){
	var NRJMineM = -1*10*(tabResources[0][0]+NivM)*Math.pow(1.1,tabResources[0][0]+NivM);
	var NRJMineC = -1*10*(tabResources[1][0]+NivC)*Math.pow(1.1,tabResources[1][0]+NivC);
	var NRJMineD = -1*20*(tabResources[2][0]+NivD)*Math.pow(1.1,tabResources[2][0]+NivD);
	var NRJCES = 20*(tabResources[3][0]+NivCES)*Math.pow(1.1,tabResources[3][0]+NivCES);
	var NRJCEF = 50*(tabResources[4][0]+NivCEF)*Math.pow(1.1,tabResources[4][0]+NivCEF);
	var NRJSat = 0;
	if (tabResources[5][0]>0) NRJSat = (tabResources[5][0]+1)*tabResources[5][5]/tabResources[5][0];
	var NRJTotal = NRJMineM+NRJMineC+NRJMineD+NRJCES+NRJCEF+NRJSat;
	return NRJTotal;
}

function getProdCons(thnode,flag){
	var tabResources = new Array();
	for(j=0;j<thnode.length;j++){
		// Recuperer le niveau
		if(j==0){
			var niveau = "";
			var sentenceIni = thnode[j].innerHTML;
			if (flag==2) var sentence1 = "(quantit"+aaccentata+" ";
			else var sentence1 = "(livello ";
			var sentence2 = ")";
			var pos1 = sentenceIni.indexOf(sentence1,0);
			if (pos1 >= 0 ){
				var pos2 = sentenceIni.indexOf(sentence2,pos1+sentence1.length);
				tabResources[j] = RemoveSpecialCharacters(sentenceIni.substring(pos1+sentence1.length,pos2));
			} else tabResources[j]=0;

		// Recupera la produzione
		} else if(j==1 || j==2 || j==3){
			var fontnode = thnode[j].getElementsByTagName('font');
			tabResources[j] = RemoveSpecialCharacters(fontnode[0].innerHTML);

		// Recupera l'energia
		} else if(j==4){
			var fontnode = thnode[j].getElementsByTagName('font');
			if (flag==0){
				var sentenceIni = fontnode[0].innerHTML;
				var tabTmp = sentenceIni.split("/");
				tabResources[j] = -1*RemoveSpecialCharacters(tabTmp[0]);
				tabResources[j+1] = -1*RemoveSpecialCharacters(tabTmp[1]);
			} else if (flag==1 || flag==2){
				tabResources[j] = RemoveSpecialCharacters(fontnode[0].innerHTML);
				tabResources[j+1] = RemoveSpecialCharacters(fontnode[0].innerHTML);
			}

		// Recupera le percentuali
		} else if(j==5){
			if (flag==0 || flag==1){
				var optionnode = thnode[j].getElementsByTagName('option');
				var k=0;
				while(optionnode[k].getAttribute("selected")!="") k++;
				tabResources[j+1] = optionnode[k].getAttribute("value");
			} else if (flag==2){
				tabResources[j+1] = 100;
			}
		}

	}
	return (tabResources);
}

function RemoveSpecialCharacters(Sentence){
	var SentenceModified = Sentence;
	var tabSpecialCharacters=new Array("\n","\r"," ");
	for(i=0;i<tabSpecialCharacters.length;i++){
		SentenceModified=SentenceModified.replace(tabSpecialCharacters[i],'');
		while (Sentence != SentenceModified){
			Sentence = SentenceModified;
			SentenceModified=SentenceModified.replace(tabSpecialCharacters[i],'');
		}
	}
	return (Sentence);
}

(function(){

var server = document.location.href.split("http://")[1].split("/game/")[0];;

//===========================
// Prende l'ID sessione
//===========================
var sessionID = document.URL.substr(document.URL.indexOf("session=") + 8,12);;
//===========================
// RRicostruisce il <FORM>
//===========================
var formnode = document.getElementsByTagName('form');
if (formnode.length == 1){
	var trnode = formnode[0].getElementsByTagName('tr');
	var i = 0;
	var status = true;
	while (i<trnode.length) {
		var trnodesentence = trnode[i].innerHTML;
		var expthprod = new RegExp("Risorse su","g");
		var expmetal = new RegExp("Metallo","g");
		var exprevenu = new RegExp("Produzione base","g");
		var expmine = new RegExp("Miniera di","g");
		var expsynth = new RegExp("Sintetizzatore","g");
		var expcentrale = new RegExp("Centrale","g");
		var expbase = new RegExp("Avamposto lunare","g");
		var expsat = new RegExp("Satellite solare","g");
		var expcapa = new RegExp("Capacit"+aaccentata+" di deposito","g");
		var exptotal = new RegExp("Somma:","g");

		if (!expthprod.test(trnodesentence) && !expmetal.test(trnodesentence) && !exprevenu.test(trnodesentence) && !expmine.test(trnodesentence) && !expsynth.test(trnodesentence) && !expcentrale .test(trnodesentence) && !expbase.test(trnodesentence) && !expsat.test(trnodesentence) && !expcapa.test(trnodesentence) &&!exptotal.test(trnodesentence)){
			//alert(trnode[i].innerHTML);
			trnode[i].parentNode.removeChild(trnode[i]);
			status = false;
		}

		if (status) i++;
		else {
			status = true;
			trnode = formnode[0].getElementsByTagName('tr');
		}
	}
}

//===========================
// Salva in un vettore
//===========================
var formnode = document.getElementsByTagName('form');
var tabResources=new Array();

for(var i=0;i<=7;i++){
	tabResources[i] = new Array();
	for(var j=0;j<=6;j++){
		tabResources[i][j]=0;
	}
}

if (formnode.length == 1){

	var trnode = formnode[0].getElementsByTagName('tr');

	var expMineM = new RegExp("Miniera di metallo","g");
	var expMineC = new RegExp("Miniera di cristalli","g");
	var expMineD = new RegExp("Sintetizzatore di deuterio","g");
	var expCES = new RegExp("Centrale solare","g");
	var expCEF = new RegExp("Centrale a fusione","g");
	var expSat = new RegExp("Satellite solare","g");
	var expBL = new RegExp("Avamposto lunare","g");
	var expTotal = new RegExp("Somma:","g");

	for(var i=0;i<trnode.length;i++){
		//var tdnode = formnode[0].getElementsByTagName('tr');

		var trnodesentence = trnode[i].innerHTML;

		//===========================
		// Miniera di metallo
		//===========================
		if (expMineM.test(trnodesentence)){
			var cpt = 0;
			var thnode = trnode[i].getElementsByTagName('th');
			tabResources[cpt] = getProdCons(thnode,0);
			//alert("MineM\nNiv=*"+tabResources[cpt][0]+"*\n"+"ProdM=*"+tabResources[cpt][1]+"*\n"+"ProdC=*"+tabResources[cpt][2]+"*\n"+"ProdC=*"+tabResources[cpt][3]+"*\n"+"ConsE1=*"+tabResources[cpt][4]+"*\n"+"ConsE2=*"+tabResources[cpt][5]+"*\n"+"Pourcentage=*"+tabResources[cpt][6]+"*\n");

		//===========================
		// Miniera di cristallo
		//===========================
		} else if (expMineC.test(trnodesentence)){
			var cpt = 1;
			var thnode = trnode[i].getElementsByTagName('th');
			tabResources[cpt] = getProdCons(thnode,0);
			//alert("MineC\nNiv=*"+tabResources[cpt][0]+"*\n"+"ProdM=*"+tabResources[cpt][1]+"*\n"+"ProdC=*"+tabResources[cpt][2]+"*\n"+"ProdC=*"+tabResources[cpt][3]+"*\n"+"ConsE1=*"+tabResources[cpt][4]+"*\n"+"ConsE2=*"+tabResources[cpt][5]+"*\n"+"Pourcentage=*"+tabResources[cpt][6]+"*\n");

		//===========================
		// Sintetizzatore di deuterio
		//===========================
		} else if (expMineD.test(trnodesentence)){
			var cpt = 2;
			var thnode = trnode[i].getElementsByTagName('th');
			tabResources[cpt] = getProdCons(thnode,0);
			//alert("MineD\nNiv=*"+tabResources[cpt][0]+"*\n"+"ProdM=*"+tabResources[cpt][1]+"*\n"+"ProdC=*"+tabResources[cpt][2]+"*\n"+"ProdC=*"+tabResources[cpt][3]+"*\n"+"ConsE1=*"+tabResources[cpt][4]+"*\n"+"ConsE2=*"+tabResources[cpt][5]+"*\n"+"Pourcentage=*"+tabResources[cpt][6]+"*\n");

		//===========================
		// Centrale solare
		//===========================
		} else if (expCES.test(trnodesentence)){
			var cpt = 3;
			var thnode = trnode[i].getElementsByTagName('th');
			tabResources[cpt] = getProdCons(thnode,1);
			//alert("CES\nNiv=*"+tabResources[cpt][0]+"*\n"+"ProdM=*"+tabResources[cpt][1]+"*\n"+"ProdC=*"+tabResources[cpt][2]+"*\n"+"ProdC=*"+tabResources[cpt][3]+"*\n"+"ConsE1=*"+tabResources[cpt][4]+"*\n"+"ConsE2=*"+tabResources[cpt][5]+"*\n"+"Pourcentage=*"+tabResources[cpt][6]+"*\n");

		//===========================
		// Centrale a fusione
		//===========================
		} else if (expCEF.test(trnodesentence)){
			var cpt = 4;
			var thnode = trnode[i].getElementsByTagName('th');
			tabResources[cpt] = getProdCons(thnode,1);
			//alert("CEF\nNiv=*"+tabResources[cpt][0]+"*\n"+"ProdM=*"+tabResources[cpt][1]+"*\n"+"ProdC=*"+tabResources[cpt][2]+"*\n"+"ProdC=*"+tabResources[cpt][3]+"*\n"+"ConsE1=*"+tabResources[cpt][4]+"*\n"+"ConsE2=*"+tabResources[cpt][5]+"*\n"+"Pourcentage=*"+tabResources[cpt][6]+"*\n");

		//===========================
		// Satellite solare
		//===========================
		} else if (expSat.test(trnodesentence)){
			var cpt = 5;
			var thnode = trnode[i].getElementsByTagName('th');
			tabResources[cpt] = getProdCons(thnode,2);
			//alert("Sat\nNiv=*"+tabResources[cpt][0]+"*\n"+"ProdM=*"+tabResources[cpt][1]+"*\n"+"ProdC=*"+tabResources[cpt][2]+"*\n"+"ProdC=*"+tabResources[cpt][3]+"*\n"+"ConsE1=*"+tabResources[cpt][4]+"*\n"+"ConsE2=*"+tabResources[cpt][5]+"*\n"+"Pourcentage=*"+tabResources[cpt][6]+"*\n");

		//===========================
		// Avamposto lunare
		//===========================
		} else if (expBL.test(trnodesentence)){
			var cpt = 6;
			var thnode = trnode[i].getElementsByTagName('th');
			tabResources[cpt] = getProdCons(thnode,1);
			//alert("Base lunaire\nNiv=*"+tabResources[cpt][0]+"*\n"+"ProdM=*"+tabResources[cpt][1]+"*\n"+"ProdC=*"+tabResources[cpt][2]+"*\n"+"ProdC=*"+tabResources[cpt][3]+"*\n"+"ConsE1=*"+tabResources[cpt][4]+"*\n"+"ConsE2=*"+tabResources[cpt][5]+"*\n"+"Pourcentage=*"+tabResources[cpt][6]+"*\n");

		//===========================
		// Somme
		//===========================
		} else if (expTotal.test(trnodesentence)){
			var cpt = 7;
			var fontnode = trnode[i].getElementsByTagName('font');
			var tabtmp = new Array();
			tabtmp[0]=0;
			tabtmp[5]=0;
			tabtmp[6]=0;
			tabResources[cpt] = tabtmp;
			for(k=0;k<fontnode.length;k++){
				tabtmp[k+1] = fontnode[k].innerHTML;
			}
			//alert("Total\nNiv=*"+tabResources[cpt][0]+"*\n"+"ProdM=*"+tabResources[cpt][1]+"*\n"+"ProdC=*"+tabResources[cpt][2]+"*\n"+"ProdC=*"+tabResources[cpt][3]+"*\n"+"ConsE1=*"+tabResources[cpt][4]+"*\n"+"ConsE2=*"+tabResources[cpt][5]+"*\n"+"Pourcentage=*"+tabResources[cpt][6]+"*\n");
		}
	}
}



//Converte in numeri ciņ che ha trovato
for(var i=0;i<=7;i++){
	for(var j=0;j<=6;j++){
		tabResources[i][j] = parseFloat(tabResources[i][j]);
	}
}

var ProdM = 20 ;
var ProdC = 10 ;
var ProdD = 0 ;
var E1 = 0;
var E2 = 0;

for(i=0;i<=6;i++){
	ProdM += parseInt(tabResources[i][1]);
	ProdC += parseInt(tabResources[i][2]);
	ProdD += parseInt(tabResources[i][3]);
	E1 += parseInt(tabResources[i][4]);
	E2 += parseInt(tabResources[i][5]);
}

//alert("total 1="+E1);
//alert("total 2="+tabResources[7][4]);

//http://ogame200.de/game/resources.php?last1=100&last2=100&last3=100&last4=100&last212=100

if(Math.abs((parseInt(tabResources[7][4])-parseInt(E1))) > 3) {
	//alert(document.forms[0].getAttribute("action"));
	//alert(document.forms[0].getAttribute("method"));
	document.body.innerHTML += "<center><font color=red>Le cifre non sono corrette, prego ricalcola</font></center>";
} else {

	if(calcNRJ(tabResources,1,0,0,0,0,0) >= 0) {
		document.body.innerHTML += "<center><font color=lime>Puoi costruire una <B>Miniera di metallo livello "+(tabResources[0][0]+1)+"</B> senza che l'energia diventi negativa</font></center>";
	}
	if(calcNRJ(tabResources,0,1,0,0,0,0) >= 0) {
		document.body.innerHTML += "<center><font color=lime>Puoi costruire una  <B>Miniera di cristallo livello "+(tabResources[1][0]+1)+"</B> senza che l'energia diventi negativa</font></center>";
	}
	if(calcNRJ(tabResources,0,0,1,0,0,0) >= 0) {
		document.body.innerHTML += "<center><font color=lime>Puoi costruire un <B>Sintetizzatore di deuterio livello "+(tabResources[2][0]+1)+"</B> senza che l'energia diventi negativa</font></center>";
	}

	if(calcNRJ(tabResources,1,0,0,0,0,0)<0 && calcNRJ(tabResources,0,1,0,0,0,0)<0 && calcNRJ(tabResources,0,0,1,0,0,0)<0) {
		document.body.innerHTML += "<center><font color=red>Devi costruire almeno una Centrale solare, una Centrale a fusione e un satellite solare</font></center>";
	}

	if(tabResources[4][0]>0) {
		var pourcentage = pourcentageCEF(tabResources);
		if(pourcentage != tabResources[4][6] && pourcentage>0){
			document.body.innerHTML += "<center><font color=red>La tua centrale a fusione puņ essere al "+pourcentage+"% per produrre energia a sufficienza</font></center>";
		}
	}
	//INIZIO Aggiunta pippo1985 per il calcolo dei satelliti
	if(tabResources[4][5]>0 && tabResources[5][0]>0){
		var satelli=Math.ceil(tabResources[4][5]/(tabResources[5][5]/tabResources[5][0]))	
		document.body.innerHTML += "<center><font color=red>Costruisci <b>"+satelli+"</b> satelliti solari per portare la centrale a fusione a consumo <b>0</b></font></center>";
	}
	//FINE aggiunta pippo1985
}

//alert("resources.php");

})();
