cubensosgmail.com / Bankmanagergame - Beratung

// ==UserScript==
// @name          Bankmanagergame - Beratung
// @namespace     http://gelink.de/
// @description	  Erweitert die Berater und Beratungs Auswahlmöglichkeiten.
// @author        Georg J.P. Link
// @include       http://bankmanagergame.de/index.php?section=beratung*
// @include       http://www.bankmanagergame.de/index.php?section=beratung*
// ==/UserScript==

var $;
var wartendeberater;

// beratungsdauern = new Array;

// 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;
		beratung();
	 }
}

/**
 * Function : dump()
 * Arguments: The data - array,hash(associative array),object
 *    The level - OPTIONAL
 * Returns  : The textual representation of the array.
 * This function was inspired by the print_r function of PHP.
 * This will accept some data as the argument and return a
 * text that will be a more readable version of the
 * array/hash/object that is given.
 * Docs: http://www.openjs.com/scripts/others/dump_function_php_print_r.php
 */

function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
} 

// 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);
		return output;
	}
	// else return teile[0]+','+komma;
	else return teile[0];
}

// 
function beratung() {
wartendeberater = 0;
				$1('#content').append('<div id="abcd" style="position:fixed; top:20px; right:20px; width:200px; height:200px; overflow:auto; z-index:999;"><table width="100%"><tr><td id="beratungnext">Keine Beratung aktiv.</td></td></table></div>');

	/**
	// sortiert nachgefragte Beratungen standardm��ig nicht
	if (GM_getValue('sortFolgeBeratOben','null')=='asc'){
		$1(".tablesorter:first thead tr").children("th:contains('"+GM_getValue('sortBeratOben','Bezahlung')+"')").click();
	} else if (GM_getValue('sortFolgeBeratOben','null')=='desc') {
		$1(".tablesorter:first thead tr").children("th:contains('"+GM_getValue('sortBeratOben','Bezahlung')+"')").click().click(); 
	}
	
	// sortiere Berater standardm��ig nicht 
	if (GM_getValue('sortFolgeBeratUnten','null')=='asc'){
		$1(".tablesorter:last thead tr").children("th:contains('"+GM_getValue('sortBeratUnten','Level')+"')").click(); 
	} else if(GM_getValue('sortFolgeBeratUnten','null')=='desc') {
		$1(".tablesorter:last thead tr").children("th:contains('"+GM_getValue('sortBeratUnten','Level')+"')").click().click(); 
	} 
*/

	
	
		// Adding Heading for Rating column
	$1('.tablesorter:first thead tr').append('<th class="scriptRating">Rating</th>');
	
	
	
	// berechner fuer jede Anfrage
	$1('.tablesorter:first 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++
		});
		
		// Aufbereitung der Werte
		
		var dauer_eing = werte[1]
		var dauer_regex = /(\d+)/;
		if (dauer_regex.test(dauer_eing)){
			var dauer = parseInt(dauer_eing.match(dauer_regex,$1)[1]);		
		} else {
			var dauer = 0;
		}
		
		var bezahlung = parseFloat(werte[3].replace(/\./g, "").replace(/,/, "."));
		
		rating = Math.round(bezahlung/dauer)
		
		//trage Rating in tabelle ein.
		$1(this).append('<td class="scriptRating">'+Trenner(rating)+'&eur;/min</td>');
		
	});
	
	/** 
	// alert('Highscore')
	$1("tr:contains('"+GM_getValue('highscoreInteresse','TLB')+"')").children().attr('style','background-color:'+GM_getValue('highscoreFarbe','Yellow')+';');
*/

	$1('.tablesorter:last thead tr').append('<th class="header scriptErtrag">Blubb</th>');
	
	i=0;
	$1('.tablesorter:last > tbody > tr').each(function ( ) {
		werte = new Array;
		$1(this).children(":contains('Geldanlage')").each(function () {
			
			zwischenwerte = new Array();
			$1(this).find("tr").each(function(){
			zwischenwerte.push($1(this).children("td:first").text());
			zwischenwerte.push($1(this).children("td:last").text());
			// werte.push(dump(zwischenwerte));
			zwischenwerte.reverse()
			ganzezahl = /d+/;
			zwischenwerte[0] =  zwischenwerte[0].substr(0,zwischenwerte[0].length-1);
			// zwischenwerte.sort(sortierfunktion) // // Entry Point !!!!
			werte.push(zwischenwerte);
			zwischenwerte = new Array();
			// alert($1(this).text());			
			});
			//werte.push("1: ");
		});
		werte.sort(sortierfunktion);
		//werte = new Array("2","6");

		beraterid = 0;
		aktion = $1(this).children("td:last").html();
		beraterid_regex = /berater=(\d+)/;
		if(beraterid_regex.test(aktion)){
			beraterid = aktion.match(beraterid_regex)[1];
			//alert(beraterid);
		}
		
		
		zelleninhalt = $1(this).children("td:first").text();
		wartetaufeinsatz_regex = /Einsatz/;
		
		//trage Rating in tabelle ein.
		// $1(this).append('<td class="scriptErtrag"><pre style="font-size: 10pt;">'+ dump(werte)+ '</pre></td>');
		if(wartetaufeinsatz_regex.test(zelleninhalt)){
			Ausgabe = "<a href='javascript:void()' id='markberater"+i+"' blubb='"+ werte[0][1]+"' blubb2='"+beraterid+"'>Markiere: "+ werte[0][1]+"</a>";
			$1(this).append('<td class="scriptErtrag">'+ Ausgabe+ '</td>');
			addButtonListener(i,beraterid)
			wartendeberater++
		}
		else
		{
			Ausgabe = "steht nicht zur Auswahl";
			$1(this).append('<td class="scriptErtrag">'+ Ausgabe+ '</td>');
		}
		
		i++;
	});	

// markiereAngebote("Aktien");
	// window.setInterval("updateBeratungsdauern()", 1000);
	window.setTimeout(updateBeratungsdauern, 1000);
	// updateBeratungsdauern();
}

function sortierfunktion(a, b) {
// alert(a + '-' + b)
return parseInt(b[0]) - parseInt(a[0]); 
}

function markiereAngebote() {
// alert ($1(this).attr("blubb"));
	$1(".tablesorter:first tr").children().attr('style','');
	highlighting="YellowGreen";
	highlighting2=$1("#content").attr("highlighting");
	if(highlighting2 != ""){
		highlighting=highlighting2;
	}
	$1(".tablesorter:first tr:contains('"+$1(this).attr("blubb")+"')").children().attr('style','background-color:'+highlighting+';');
	$1("select.berater").attr('value',$1(this).attr("blubb2"));
	//$1(".tablesorter:first tr:contains('"+a+"')").children().attr('style','background-color:yellow;');
	return false;
}


function addButtonListener(i,a){
  var button = document.getElementById("markberater"+i);
  button.addEventListener('click',markiereAngebote,true);
  // var button = document.getElementById("showuebersicht");
  // button.addEventListener('click',showUebersicht,true);
} 

function updateBeratungsdauern() {
	neuertitle='';
	if(wartendeberater>0){
	neuertitle+='('+wartendeberater + ' bereit)';
	}
	kleinstedauer = new Array();
	kleinstedauer["min"] = 999
	stopp = false;
	erneutupdaten = false;
	$1('.tablesorter:last > tbody > tr').each(function ( ) {
		zelleninhalt = $1(this).children("td:first").html()
		min_regex = /(\d+) Min/;
		// alert($1(this).children("td:first").html());
		if (min_regex.test(zelleninhalt)){
			sek_regex = /(\d+) Sek/;
			var verblminuten = parseInt(zelleninhalt.match(min_regex,$1)[1]);		
			if(sek_regex.test(zelleninhalt)){
				var verblsekunden = parseInt(zelleninhalt.match(sek_regex,$1)[1]);
				verblsekunden--;
				//alert(verblminuten);
				if(verblsekunden<0){
					verblsekunden = 59;
					verblminuten--;
					//alert(verblminuten);
					zelleninhalt = zelleninhalt.replace(min_regex, verblminuten + " Min");
				}
				zelleninhalt = zelleninhalt.replace(sek_regex, verblsekunden + " Sek");
			}
			else
			{
				verblsekunden =29
				zelleninhalt += "<br>29 Sekunden";
				// var verblminuten = parseInt(zelleninhalt.match(min_regex,$1)[1]);		
				// verblminuten--;
				//alert(verblminuten);
				zelleninhalt = zelleninhalt.replace(min_regex, verblminuten + " Min");
			}
			if( kleinstedauer["min"] > verblminuten){
			// alert(1);
				kleinstedauer["min"] = verblminuten
				kleinstedauer["sek"] = verblsekunden
			}
		} else {
			return true;
		}
		if (verblminuten<1 && verblsekunden < 2){
			stopp = true;
			pfad = window.location.href;
			position = pfad.indexOf("/index.php");
			if((pfad.substr(position) == '/index.php?section=beratung') || (pfad.substr(position,26) == '/index.php?section=beratung#')) {
				location.reload();
				return false;
			} else {
				window.location.pathname = "/index.php?section=beratung";
				return false;
			}
			return true;
		}
		
		$1(this).children("td:first").html(zelleninhalt)
		erneutupdaten = true;
		
	});
	if(erneutupdaten && !stopp){
		window.setTimeout(updateBeratungsdauern, 995);
	} else {
	// alert("stopp");
	}
	// $1('#abcd').remove();
	if (kleinstedauer["min"]<999){
		neuertitle+=' next in '+kleinstedauer["min"]+' Min '+kleinstedauer["sek"]+' Sek';
		$1("#beratungnext").html(wartendeberater+' Berater bereit<br>Nächste Beratung in '+kleinstedauer["min"]+' Min '+kleinstedauer["sek"]+' Sek.');
	}
	document.title=neuertitle;
	
}