DSdyeBHvalues

By Heinzel Last update Mar 7, 2010 — Installed 62,134 times.

There are 4 previous versions of this script.

// ==UserScript==
// @name				DSdyeBHvalues
// @namespace			none
// @author				Heinzel
// @description			Dieses Script ferrbt die Bauernhoefe nach Prozentzahl gruen oder rot ein
// @include			http://de*.die-staemme.de/game.php?*
// ==/UserScript==



// Config
var Cconfig = function() {
	// wenn man fuer oldStyle den Wert "true" setzt, erreicht man, dass nur 100% volle BHs rot und ueber 90% volle BHs orange eingefaerbt werden
	this.oldStyle = false;
}


function _evaluate(path, context) {
	if(!context) {
		var context = document;
	}
	
	var XPath = document.evaluate(path, context, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
	var nodes = [];
	for(var x = 0; x < XPath.snapshotLength; x++) {
		nodes.push(XPath.snapshotItem(x));
	}
	
	return nodes;
}

function isPA() {
	if(document.body.innerHTML.match(/village\.php|group|Rekrutieren/) || document.getElementsByClassName("menu nowrap quickbar").length > 0) {
		var isPA = true;
	} else {
		var isPA = false;
	}
}

function getColor(percentage) {
	if(percentage > 100) {
		var color = 255;
	} else {
		var color = Math.floor(parseInt(percentage, 10)*2.55)
	}
	
	return color;
}

function dye(element) {
	var set = element.innerHTML.split("/")[0];
	var all = element.innerHTML.split("/")[1];
	var percentage = parseInt(parseInt(set, 10)/parseInt(all, 10)*100, 10);
	
	if(config.oldStyle === false) {
		var red = getColor(percentage);
		var green = 255-red;
		
		element.style.color = "rgb(" + red + ", " + green + ", 0)";
	} else {
		if(percentage >= 100) {
			element.style.color = "red";
		} else if(percentage >= 90) {
			element.style.color = "orange";
		}
	}
}

(function main() {
	// ermitteln ob PA vorhanden ist
	var pa = isPA();
	
	// config laden
	config = new Cconfig();
	
	if(location.href.match(/[?&]screen=overview_villages($|\&)/)) {
		// Falls man nicht in der Produktionsuebersicht ist, das Script beenden
		if(pa && document.getElementById("overview").value != "prod")  {
			return;
		}
		
		// Herausfinden, in der wievielten Zelle die Daten zum Bauernhof stehen
		var headCells = _evaluate('//th[.="Bauernhof"]/parent::tr/th');
		var index = 4;
		for(var x = 0; x < headCells.length; x++) {
			if(headCells[x].textContent == "Bauernhof") {
				index = x;
				break;
			}
		}
		
		// Die Bauernhoefe einfaerben
		var rows = _evaluate('//tr[contains(@class, "row_")]');
		for(var x = 0; x < rows.length; x++) {
			var cells = rows[x].getElementsByTagName("td");
			dye(cells[index]);
		}
	}
	
	// Ueberall die Bauernhofanzeige einfaerben
	var cell = _evaluate('//img[@title="Arbeiter"]/parent::a/parent::td/following::td')[0];
	dye(cell);
})();