// ==UserScript==
// @name OgameIt-Modifica Riepilogo
// @author Izcelion Traduttore: Pippo1985 e AlexDiste
// @description Modifica la visualizzazione del riepilogo
// @language IT
// @include http://ogame*.de/game/overview.php*
// ==/UserScript==
//Questo script e' la fusione dello script elaborato da pippo1985 e AlexDiste
//Da adesso in avanti lo script sarư UNICO

//INIZIO ZONA MODIFICABILE
var UsoFoxGame=true;
var LarghezzaTabella=700;
var SeiQuiCliccabile=false;
var ColoreSeiQui="red";
var CoordinateCliccabili=true;
 
//FINE ZONA MODIFICABILE
//modifica alex
var session = document.URL.substr(document.URL.indexOf("session=") + 8,12);
(function(){

function CalcTime(TimeLeft){
	v = new Date();
	var time = v.getTime();
	var ar_time = new Date(time+TimeLeft*1000);
	var h = ar_time.getHours()+'';
	var m = ar_time.getMinutes()+'';
	var s = ar_time.getSeconds()+'';
	if (v.getDate()!=ar_time.getDate()){
		arrival = ar_time.getDate()+''+"/"+(ar_time.getMonth()+1)+''+" "+h+":"+((m.length == 1)? "0"+m:m)+":"+((s.length == 1)? "0"+s:s);
	}
	else{
		arrival = h+":"+((m.length == 1)? "0"+m:m)+":"+((s.length == 1)? "0"+s:s);
	}
	return arrival;
}
//===========================================
//Modifica per ritoccare con il CSS (pippo1985)
//===========================================
var css = new Array();
function writeStyle(css) {
    var style = document.createElement('style');
    style.type = 'text/css';
    if (document.getElementsByTagName) {
        document.getElementsByTagName('head')[0].appendChild(style);
        if (style.sheet && style.sheet.insertRule) {
            for (var i = 0; i < css.length; i++) {
                style.sheet.insertRule(css[i], 0);
            }
        }
    }
}
function addStyle(style) {
    css[css.length] = style;
}
//SKIN USATA DALL'UTENTE
function GetSkin(){
   var skin=document.getElementsByTagName("link")[document.getElementsByTagName("link").length-1].href;
   if(skin.indexOf("formate.css")<0){skin=document.getElementsByTagName("link")[1].href;}
   return skin.replace("//","/");
}
oraattuale = new Date()
oraattuale= parseInt(Date.parse (oraattuale))
ultimoaggiornamento=parseInt(GM_getValue("lastaggiornamento", 0))
if(ultimoaggiornamento < (oraattuale-604800000) || GM_getValue("skinattuale","")!=GetSkin())
{
	GM_xmlhttpRequest({
    		method: 'GET',
    		url: GetSkin(),
    		headers: {
        		'User-agent': '',
        		'Accept': 'application/atom+xml,application/xml,text/xml',
    		},
    		onload: function(responseDetails)   {
				formatecss = responseDetails.responseText;
				if (formatecss.indexOf('table[width="519"] td a[title')!=-1){
				posx = formatecss.replace("~=\"Seleziona\"]","]").replace("~=\"Seleziona\"]","]").split('table[width="519"] td a[title')
				var stringa = posx[1].split('}')[0] + '}'
				for (var i=2; i<posx.length-1; i++){
					stringa += "|" + posx[i].split('}')[0] + '}';
					}
				stringa += '|'+posx[posx.length-1].split('}')[0] + '}'
				var usat=stringa.split('|')
				for(i=0; i<usat.length; i++){
					addStyle("table[width=\""+LarghezzaTabella+"\"] td a[title"+usat[i]);
				}
				GM_setValue("rules", stringa)
				GM_setValue("skinattuale",GetSkin())
				GM_setValue("lastaggiornamento", oraattuale + " ")
				GM_setValue("attivafunzione","si")
				writeStyle(css);
				}
				else {GM_setValue("attivafunzione","no")}
		}
	})
}
else
{
	if (GM_getValue("attivafunzione","no")=="si"){
	var stringa = GM_getValue("rules");
	var usat=stringa.split('|');
	for(i=0; i<usat.length; i++){ addStyle("table[width=\""+LarghezzaTabella+"\"] td a[title"+usat[i]); }
	writeStyle(css);
	}
}


//==========================================================
// Get/Save Planet/Moon list
//==========================================================
//tabAllPlanet[CptPlanet][0]=Nom
//tabAllPlanet[CptPlanet][1]=xyz
//tabAllPlanet[CptPlanet][2]=URL
//tabAllPlanet[CptPlanet][3]=Construction en cours
//tabAllPlanet[CptPlanet][4]=URL
//tabAllPlanet[CptPlanet][5]=Construction en cours
var optionnode = document.getElementsByTagName('option');
var tabAllPlanet = new Array();
var CptPlanet = 0;
for(var i=0;i<optionnode.length;i++){
	tabAllPlanet[CptPlanet] = new Array();
	tabtmp = (optionnode[i].text).split("["); 
	tabtmp[1] = (tabtmp[1].replace("[","")).replace("]","");
	if(CptPlanet==0){
		tabAllPlanet[CptPlanet][0] = tabtmp[0];
		tabAllPlanet[CptPlanet][1] = tabtmp[1];
		tabAllPlanet[CptPlanet][2] = ((optionnode[i].getAttribute("value")).replace("/game/","")).replace("&mode=&gid=&messageziel=&re=0","");
		if (SeiQuiCliccabile==false){ tabAllPlanet[CptPlanet][3] = "<font color="+ColoreSeiQui+">sono qui</font>";}
		//modifica alex
		else {tabAllPlanet[CptPlanet][3] = "<a href=b_building.php?session="+session+"><font color="+ColoreSeiQui+">sono qui</font></a>";}
		tabAllPlanet[CptPlanet][4] = "";
		tabAllPlanet[CptPlanet][5] = "-";
		CptPlanet++;
	} else {
		var PlanetFind = false;
		var v=0;
		while(v<CptPlanet && PlanetFind==false){
			if(tabAllPlanet[v][1]==tabtmp[1]) PlanetFind = true;
			v++;
		}

		if(PlanetFind==true) v=v-1;
		else {
			v=CptPlanet;
			CptPlanet++;
		}

		//alert(CptPlanet+"/"+PlanetFind+"/"+v);
		//alert(tabtmp[0]);
		if (tabtmp[0]=="Luna" | PlanetFind==true){
			tabAllPlanet[v][1] = tabtmp[1];
			tabAllPlanet[v][4] = ((optionnode[i].getAttribute("value")).replace("/game/","")).replace("&mode=&gid=&messageziel=&re=0","");
			tabAllPlanet[v][6] = tabtmp[0].replace("- ","").replace("(Luna)","");
			tabAllPlanet[v][6] = tabAllPlanet[v][6].substring(0,tabAllPlanet[v][6].length-2);
			var sel=document.getElementsByTagName('select');
			var index=sel[0].options.selectedIndex;
			var element=sel[0].options[index].innerHTML;
			if (element.search(tabtmp[1])!=-1 && (element.search('(Luna)')!=-1 || tabtmp[0].replace("- ","")=="Luna")){
						if (SeiQuiCliccabile==false){ tabAllPlanet[v][5] = "<font color="+ColoreSeiQui+">sono qui</font>";}
						//modifica alex
						else {tabAllPlanet[v][5] = "<a href=b_building.php?session="+session+"><font color="+ColoreSeiQui+">sono qui</font></a>";}
			}
		} else {
			tabAllPlanet[v][0] = tabtmp[0];
			tabAllPlanet[v][1] = tabtmp[1];
			tabAllPlanet[v][2] = ((optionnode[i].getAttribute("value")).replace("/game/","")).replace("&mode=&gid=&messageziel=&re=0","");
			if (SeiQuiCliccabile==false){ tabAllPlanet[v][3] = "<font color="+ColoreSeiQui+">sono qui</font>";}
			//modifica alex
			else {tabAllPlanet[v][3] = "<a href=b_building.php?session="+session+"><font color="+ColoreSeiQui+">sono qui</font></a>";}
			tabAllPlanet[v][4] = "";
			tabAllPlanet[v][5] = "-";
		}

	}
}

//alert(CptPlanet);
//for(var i=0;i<CptPlanet;i++){
//	alert(tabAllPlanet[i][0]+"\n"+tabAllPlanet[i][1]+"\n"+tabAllPlanet[i][2]+"\n"+tabAllPlanet[i][3]+"\n"+tabAllPlanet[i][4]+"\n"+tabAllPlanet[i][5]);
//}


//==========================================================
// Resize table  at
//==========================================================
var tablenode = document.getElementsByTagName('table');
for(var i=0;i<tablenode.length;i++){
	//MODIFICARE AL FONDO DELLA RIGA SUCCESSIVA PER CAMBIARE LA DIMENSIONE DELLA PAGINA RIEPILOGO
	if(tablenode[i].getAttribute("width")=="519" && (tablenode[i].innerHTML).indexOf("Ora del server",0)) tablenode[i].setAttribute("width",LarghezzaTabella);
}
//==========================================================
// Add arrival datetime - fleet
//==========================================================
if (UsoFoxGame==false){
	var trnode = document.getElementsByTagName('tr');
	alert('qui');
	for(var i=0;i<trnode.length;i++){
		if(trnode[i].getAttribute("class")=="flight" || trnode[i].getAttribute("class")=="return"){
			var divnode = trnode[i].getElementsByTagName('div');
			TimeLeft = CalcTime(divnode[0].getAttribute("title"));
			var thnode = trnode[i].getElementsByTagName('th');
			thnode[0].innerHTML += "<small>( <font color=orange>"+TimeLeft+"</font> )</small>";
		}
	}
}
//==========================================================
//Aggiunge il tempo di fine alla costruzione in corso nel riepilogo
//==========================================================
var thnode = document.getElementsByTagName('th');
for(var i=0;i<thnode.length;i++){
	if(thnode[i].getAttribute("colspan")=="2" && thnode[i].innerHTML.search('cntneu2')!=-1 && thnode[i].innerHTML.search('Fermo')==-1){
		var divnode = thnode[i].getElementsByTagName('div');
		var TimeLeft = CalcTime(divnode[0].getAttribute("title"));
		thnode[i].innerHTML += " <em><small>( <font color=orange>"+TimeLeft+"</font> )</small></em><br>";
	}
	
}
//==========================================================
// Save characteristics of planet selected
//==========================================================
var trnode = document.getElementsByTagName('tr');
var i = 0;
var status = true;
var tabPlanetCharacteristics = new Array();
var cpt = 0;
while (i<trnode.length) {
	var thnode = trnode[i].getElementsByTagName('th');
	if(thnode.length==2) {
		if((thnode[0].innerHTML).indexOf("Diametro",0)>=0 || (thnode[0].innerHTML).indexOf("Temperatura",0)>=0 || (thnode[0].innerHTML).indexOf("Coordinate",0)>=0 || (thnode[0].innerHTML).indexOf("Punteggio",0)>=0) {
			tabPlanetCharacteristics[cpt] = new Array();
			tabPlanetCharacteristics[cpt][0] = thnode[0].innerHTML;
			tabPlanetCharacteristics[cpt][1] = thnode[1].innerHTML;
			status = false;
			cpt++;
		}
	}
	if (status) i++;
	else {
		trnode[i].parentNode.removeChild(trnode[i]);
		trnode = document.getElementsByTagName('tr');
		status = true;
	}
}

//==========================================================
// Put/write planet characteristics
//==========================================================
var thnode = document.getElementsByTagName('th');
var tableConstruct="";
for(var i=0;i<thnode.length;i++){
	if(thnode[i].getAttribute("colspan")=="2"){
		var imgnode = thnode[i].getElementsByTagName('img');
		if(imgnode.length==1){
			if(imgnode[0].getAttribute("height")=="200" && imgnode[0].getAttribute("width")=="200"){
				imgnode[0].setAttribute("height","150");
				imgnode[0].setAttribute("width","150");
				for(u=0;u<4;u++){
					tableConstruct += "<tr>";
					tableConstruct += "<td class=\"c\">"+tabPlanetCharacteristics[u][0]+"</td>";
					tableConstruct += "<th>"+tabPlanetCharacteristics[u][1]+"</th>";
					tableConstruct += "</tr>";
				}
				tableConstruct ="<table width=\"100%\">"+tableConstruct+"</table>";
				thnode[i].innerHTML += tableConstruct;
			}
		}
	}
}

//==========================================================
// Rebuild planets list with construction
//==========================================================
var tablenode = document.getElementsByTagName('table');
var construction = "";
for(var i=0;i<tablenode.length;i++){
	if(tablenode[i].getAttribute("class")=="s" && tablenode[i].getAttribute("align")=="top" && tablenode[i].getAttribute("border")=="0"){
		var trnode = tablenode[i].getElementsByTagName('tr');
		var j = 0;
		var status = true;
		var cpt = 0;
		while (j<trnode.length) {
			var thnode = trnode[j].getElementsByTagName('th');
			//if(thnode.length==2){
				for(g=0;g<thnode.length;g++){
					var ahrefnode = thnode[g].getElementsByTagName('a');
					var centernode = thnode[g].getElementsByTagName('center');
					if ((centernode[0].innerHTML).indexOf("Fermo",0)>=0) construction="-";
					else construction = centernode[0].innerHTML;
					for(s=0;s<CptPlanet;s++){
						if(tabAllPlanet[s][2]==ahrefnode[0].getAttribute("href")) tabAllPlanet[s][3]=construction;
						if(tabAllPlanet[s][4]==ahrefnode[0].getAttribute("href")) tabAllPlanet[s][5]=construction;
					}
					status = false;
					cpt++;
				}
		//	}

			if (status) j++;
			else {
				trnode[j].parentNode.removeChild(trnode[j]);
				trnode = tablenode[i].getElementsByTagName('tr');
				status = true;
			}
		}

		//=======================================================
		// Write new tag <table></table
		//=======================================================
		tablenode[i].setAttribute("width","100%");
		tablenode[i].innerHTML = "";
		tablenode[i].innerHTML += "<tr><td class=\"c\">[G:S:P]</td><td class=\"c\">Pianeta</td><td class=\"c\">In corso</td><td class=\"c\">Luna</td><td class=\"c\">In Corso</td></tr>";
		for(s=0;s<CptPlanet;s++){
			if (CoordinateCliccabili==false){
				if(tabAllPlanet[s][4].length>0) tablenode[i].innerHTML += "<tr><td class=\"c\">"+tabAllPlanet[s][1]+"</td><td class=\"c\"><a href='"+tabAllPlanet[s][2]+"'>"+tabAllPlanet[s][0]+"</a></td><th>"+tabAllPlanet[s][3]+"</th><td class=\"c\"><a href='"+tabAllPlanet[s][4]+"'>"+tabAllPlanet[s][6]+"</a></td><th>"+tabAllPlanet[s][5]+"</th></tr>";
				else tablenode[i].innerHTML += "<tr><td class=\"c\">"+tabAllPlanet[s][1]+"</td><td class=\"c\"><a href='"+tabAllPlanet[s][2]+"'>"+tabAllPlanet[s][0]+"</a></td><th>"+tabAllPlanet[s][3]+"</th><td class=\"c\">&nbsp;-&nbsp;</td><th>&nbsp;-&nbsp;</th></tr>";
			}
			else{
				var testo=tabAllPlanet[s][1];
				var GT1 = testo.match(/\d{1,3}:\d{1,3}:\d{1,3}/g);
				for(var j=0; j<GT1.length; j++) {
					GT = GT1[j].match(/\d{1,3}/);
					ST1 = GT1[j].match(/:\d{1,3}/);
					ST =ST1[0].match(/\d{1,3}/);
					url = 'galaxy.php?session='+session +'&p1='+GT+'&p2='+ST+'&p3=1';
				}
				if(tabAllPlanet[s][4].length>0) tablenode[i].innerHTML += "<tr><td class=\"c\"><a href='"+ url +"'>"+tabAllPlanet[s][1]+"</a></td><td class=\"c\"><a href='"+tabAllPlanet[s][2]+"'>"+tabAllPlanet[s][0]+"</a></td><th>"+tabAllPlanet[s][3]+"</th><td class=\"c\"><a href='"+tabAllPlanet[s][4]+"'>"+tabAllPlanet[s][6]+"</a></td><th>"+tabAllPlanet[s][5]+"</th></tr>";
				else tablenode[i].innerHTML += "<tr><td class=\"c\"><a href='"+ url +"'>"+tabAllPlanet[s][1]+"</a></td><td class=\"c\"><a href='"+tabAllPlanet[s][2]+"'>"+tabAllPlanet[s][0]+"</a></td><th>"+tabAllPlanet[s][3]+"</th><td class=\"c\">&nbsp;-&nbsp;</td><th>&nbsp;-&nbsp;</th></tr>";
			}
		}
	}
}
})();
