cubensosgmail.com / Bankmanagergame - Konto-Ertragsaussicht

// ==UserScript==
// @name          Bankmanagergame - Konto-Ertragsaussicht
// @namespace     http://scripte.georglink.de/
// @description	  Bewertet die Konto-Ertragsaussichten.
// @author        Georg J.P. Link
// @include       http://bankmanagergame.de/index.php?section=konten*
// @include       http://www.bankmanagergame.de/index.php?section=konten*
// ==/UserScript==

var $;

// Add jQuery
(function(){
	if (typeof unsafeWindow.jQuery == 'undefined') {
		var GM_Head = document.getElementsByTagName('head')[0] || document.documentElement,
			GM_JQ = document.createElement('script');

		GM_JQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
		GM_JQ.type = 'text/javascript';
		GM_JQ.async = true;

		GM_Head.insertBefore(GM_JQ, GM_Head.firstChild);
	}
	GM_wait();
})();

// Check if jQuery's loaded
function GM_wait() {
	if (typeof unsafeWindow.jQuery == 'undefined') {
		window.setTimeout(GM_wait, 100);
	} else {
		$1 = unsafeWindow.jQuery;
		rating();
	 }
}

// formatiert die Ertragsaussicht mit Tausender Trennzeichen
function Trenner(number) {
	// Info: Die '' sind zwei Hochkommas
	number = '' + number;
	teile = number.split(".");
	ganze = teile[0];
	if (teile[1]){
		komma = teile[1];
	} else {
		komma = "00";
	}
	while(komma.length <2) {
		komma += "0";
	}
	komma = komma.substr(0,2);
	if (ganze.length > 3) {
		var mod = ganze.length % 3;
		var output = (mod > 0 ? (ganze.substring(0,mod)) : '');
		for (i=0 ; i < Math.floor(ganze.length / 3); i++) {
			if ((mod == 0) && (i == 0))
				output += ganze.substring(mod+ 3 * i, mod + 3 * i + 3);
			else
				// hier wird das Trennzeichen festgelegt mit '.'
				output+= '.' + ganze.substring(mod + 3 * i, mod + 3 * i + 3);
		}
		return (output+','+komma);
	}
	else return teile[0]+','+komma;
}

// calculate Rating and insert into Table
function rating() {
	// Adding Heading for Ertragserwartungs column
	$1('#listOfAccounts thead tr').append('<th class="header scriptErtrag">Ertragserwartung</th>');
	$1('#tablesorter thead tr').append('<th class="header scriptErtrag">Ertragserwartung</th>');
	
	// berechne fuer jedes Konto-Angebot
	$1('#listOfAccounts tbody tr').each(function ( ) {
		werte = new Array;
		i=0;
		test = "";
		$1(this).children().each(function () {
			werte[i] = $1(this).text();
			test += werte[i] + "\n";
			i++;
			if (i>5) return true;
		});
		
		// Aufbereitung der Werte
		var geldfluss = parseFloat(werte[1].replace(" k", "000").replace(/\./g, "").replace(/,/, "."));
		var ueberweisungen = parseFloat(werte[2].replace(/\./g, ""));
		var gebuehr = parseFloat(werte[3].replace(/\./g, "").replace(/,/, "."));
		var dispo_limit = parseFloat(werte[4].replace(" k", "000").replace(/\./g, "").replace(/,/, "."));
		var dispo_zins = parseFloat(werte[5].replace(/,/, "."))/100;
		
        
		// Errechne das Rating
		var rating = (ueberweisungen*gebuehr + Math.min(geldfluss,dispo_limit)*dispo_zins);
		rating = Math.round(rating*100)/100
		
		//trage Rating in tabelle ein.
		$1(this).append('<td class="scriptErtrag">'+ Trenner(rating) + '&euro;</td>');
	});	
	
	// Ertrag pro Tag von allen Konten
	var gesamt_tagesertrag = 0;
	// berechne fuer jedes bestehende Konto
	$1('#tablesorter tbody tr').each(function ( ) {
		// extrahiere alle Werte aus Tabelle
		werte = new Array;
		i=0;
		$1(this).children().each(function () {
			werte[i] = $1(this).text();
			i++
			if (i>5) return true;
		});
		
                
		// Aufbereitung der Werte
		var geldfluss = parseFloat(werte[1].replace(" k", "000").replace(/\./g, "").replace(/,/, "."));
		var ueberweisungen = parseFloat(werte[2].replace(/\./g, ""));
		var gebuehr = parseFloat(werte[3].replace(/\./g, "").replace(/,/, "."));
		var dispo_limit = parseFloat(werte[4].replace(" k", "000").replace(/\./g, "").replace(/,/, "."));
		var dispo_zins = parseFloat(werte[5].replace(/,/, "."))/100;
        
        
		
		// Errechne das Rating
		var rating = (ueberweisungen*gebuehr + Math.min(geldfluss,dispo_limit)*dispo_zins);
		rating = Math.round(rating*100)/100;
		gesamt_tagesertrag += rating;
		//trage Rating in tabelle ein.
		$1(this).append('<td class="scriptErtrag">'+ Trenner(rating) + '&euro;</td>');
	});
	var newNode = document.createElement("div");
	newNode.textContent = "tt"; //;	
	newNode.setAttribute("style" , "margin: 5px 0;");
	newNode.setAttribute("id" , "gesamtertrag");
	var beforeMe = document.getElementById("tablesorter");
	beforeMe.parentNode.insertBefore( newNode, beforeMe )
	$1("#gesamtertrag").html('Gesamtertrag pro Tag: <span style="color:green;font-weight:bold;">' + Trenner(gesamt_tagesertrag) + ' &euro;</span>');
	//document.head.insertBefore(script, beforeMe);
		// window.setTimeout(sortiere_nach_bewertung, 800);
}

/* // set correct sorting
function sortiere_nach_bewertung() {
	// sortiert Kontenangebote nach Beste zuerst
	$1('#listOfAccounts th:last-child').click().click();
	
	// sortiert betehende Konten nach Schlechteste zuerst
	$1("#tablesorter th:last-child").click(); 
}; */

$1('#listOfAccounts th:contains("Überweis. p. Tag")').text("Überweis.");
$1('#listOfAccounts th:contains("Gebühr p. Überweis.")').text("Gebühr");