// ==UserScript==
// @name		Monster Game Commander CO
// @namespace      http://zahlenzerkleinerer.de
// @description    A Script to manage the MMOG Monster Game tutorial
// @include        	*
// ==/UserScript==

var jetzt = new Date();

var BenchST = jetzt.getTime();
var Aktuell = jetzt.getTime()-1180200000000;// offset for GM_varz typ Int
var Aktuell = Math.floor(Aktuell/1000);

function NeuesElement(Tag, Inhalt) 											// Funktion um neue Elemente hinzufügen
{																			// habe mich bei dem oGame Script bedient
  var Neu = document.createElement(Tag);									// sehr nützlich auch mal über den Tellerrand
  if (Inhalt.indexOf("<") != -1 || Inhalt.indexOf("&") != -1) 				// zu schauen
  	Neu.innerHTML = Inhalt;
  else if (Inhalt.length > 0)
  	 	Neu.appendChild(document.createTextNode(Inhalt));
  if (NeuesElement.arguments.length > 2) {
  	for (var i = 2; i < NeuesElement.arguments.length-1; i += 2) {
  		if (!NeuesElement.arguments[i+1].length) continue;
  		Neu.setAttribute(NeuesElement.arguments[i], NeuesElement.arguments[i+1]);
  	}
  }
  return Neu;
}

var Prem = 1;							// Festlegen ob es ein Premium Account ist
var Server = 16;						// Legt den Server fest fals auf mehr als einem gespielt wird
var Para = window.location.search;		// Die Parameter der URL damit das Script weiß wo es ist
if(Para != "") {
	var SucheP = /=([a-z0-9]+)/gi;
	var UrPara = Para.match(SucheP);
} else { var UrPara = new Array(); }

var isCounter = document.getElementById('COUNTER');								// gibt es einen Counter
var isKaempfen = document.body.innerHTML.match(/alle [0-9]+ Minuten kämpfen/);	// war das ein Kampf


if(isCounter != null) {															// COUNTER gibt es im HTML Dokument
	var TheCounter = document.getElementById('COUNTER').firstChild.data;		// wir holen uns das DOM Objekt
	var TimeArr = TheCounter.match(/([0-9]+):([0-9]+):([0-9]+)/);				// Schneiden die Zahlen raus
	TimeArr[2] = parseInt(TimeArr[2]);											// Jagen die durch eine Intenger erkennung
	TimeArr[3] = parseInt(TimeArr[3]);											// --> zur weiteren Verarbeitung
	if(isKaempfen != null && UrPara[0] == "=raubzug") {							// es ist ein Kampf 
		if(Prem) { 																// Premium kann alle 5 min kämpfen == 300sec
			var MinusT = 300;	
		} else {																// die anderen nur alle 15 min == 900 sec
			var MinusT = 900;
		}	
		var PlusT = (TimeArr[2]*60)+TimeArr[3];									// errechnen der Sec
		var NextFight = (Aktuell+3600)-(MinusT-PlusT);							// addieren 60min und ziehen die verstrichende zeit wieder ab
		GM_setValue('NextFight'+Server,NextFight);								// schreiben des Wertes in die GM Variable
	}	
	
	if(isKaempfen == null && UrPara[0] == "=status") {							// der Counter vom Trank
		var TrankWirkt = (TimeArr[2]*60)+TimeArr[3];							// addieren der Sec. zur Aktuellen Zeit
		GM_setValue('TrankWirkt'+Server,TrankWirkt+Aktuell);					// schreiben in die GM Var
	}
}

function extra_infoz() {
	var newInfo = NeuesElement("div", "", "align", "center");					
	var Ihtml = '';														
	var NextFight = GM_getValue('NextFight'+Server,0);
	var NextFight = parseInt(NextFight);
	var TrankWirkt = GM_getValue('TrankWirkt'+Server,0);
	var TrankWirkt = parseInt(TrankWirkt);
	
	if(NextFight != 0 && NextFight>Aktuell) {
		var NFsec = NextFight-Aktuell;
		if(NFsec>5) {
			Ihtml += 'NEXT:<b>';
			jetzt.setTime(NFsec*1000);
			Ihtml += jetzt.getMinutes()+' M - ';
			Ihtml += jetzt.getSeconds()+' S ';
			Ihtml += '</b>';		
		}
	} else { Ihtml += "UNSAFE"; }
if(TrankWirkt != 0 && TrankWirkt>Aktuell) {
		var NTsec = TrankWirkt-Aktuell;
		if(NTsec>2) {
			Ihtml += ' __ Trank wirkt noch: <b>';
			jetzt.setTime(NTsec*1000);
			Ihtml += '0:'+jetzt.getMinutes()+':';
			Ihtml += jetzt.getSeconds()+'</b>';		
		}	
	} else { GM_setValue('TrankWirkt'+Server,0); }
	
	newInfo.innerHTML = Ihtml;
	document.getElementsByTagName("td")[QuickL].appendChild(newInfo,document.getElementsByTagName("td")[QuickL].firstChild);
}	

var all_tdz = document.getElementsByTagName("td");									// ein Array mit allen TD Elementen

var QuickL = 0;																		// setzten die var auf null um einen Default zu haben
for(a=0;a<all_tdz.length;a++) {
	if(all_tdz[a].innerHTML.match('Logout') != null) {								// man sucht sich die Zeile in der das Menu steht
				var QuickL = a;														// da wir den Baum komplett durchsuchen bleibt das letzte
		}																			// vorkommen die Richtige Zeile
}
if(QuickL != 0) {																	// Wenn ein TD gefunden wurde wird extra_infoz aufgerufen
	extra_infoz();																	// Einfühgen der Extra Infos	
}