
/*
	(c) Harald Blazy
*/

//================================================================================================================
/*
	Für: 	1) PH - Risslehrgang
			2) JB - Rissliste
	
	INPUG:	alle_Wege
*/
/*
	vorsteiger[0] = 'Gisbert Ludewig';
	vorsteiger[1] = 12;
	vorsteiger[2] = 'Ludewig, Gisbert';
*/

//================================================================================================================

function schreibe_Statistik_Boxen() {

	setze_Grundvariablen( hell);
	setze_Boxen_Hintergrund( hell);
	
	schreibe_Box_Vorsteiger();
	schreibe_Box_Grade();
	schreibe_Box_Gebiete();
}

function schreibe_Statistik() {

	schreibe_Gebiete();
	schreibe_Grade();
	schreibe_Vorsteiger( true);
}

//================================================================================================================

function schreibe_Box_Gebiete() {

	schreibe_Box_Start( 'Gebiete <span id="ID_stat_Anzahl_Gebiete" class="nb"><\/span>', false);

	setze_Box_Abstand();
	document.write('<div id="ID_gebiete"><\/div>');
	setze_Box_Abstand();
	
	schreibe_Box_Ende();
}

function schreibe_Gebiete() {
	
	var anzahl_Gebiete = 0;

	// Array fuer Anzahl
	var anzahl = [];
	for(var i=0;  i<KLETTERGEBIETE.length;  i++) {
		anzahl[i] = 0;
	}

	var WEGE = alle_Wege;
	for(var i=0;  i<WEGE.length;  i++) {
		anzahl = zaehle_Gebiet( anzahl, WEGE[i].gipfel.gebiet);
	}
	
	var summe = 0;
	for(var i=0;  i<anzahl.length;  i++) {
		summe += anzahl[i];
		if(anzahl[i] > 0) anzahl_Gebiete++
	}
	document.getElementById('ID_stat_Anzahl_Gebiete').innerHTML = '#'+anzahl_Gebiete;
	
	// Generiere Tabelle
	var s = '<table class="platz" style="margin:auto">';
	s += '<tr><th>Gebiet<\/th><th>Wege<\/th><th style="text-align:right">%<\/th><\/tr>';
	for(var i=0;  i<KLETTERGEBIETE.length;  i++) {
	if(anzahl[i] > 0) {
		s += '<tr><td style="padding-left:5px; padding-right:5px">';
		
		// Klettergebiet
//		var gebiet = schreibe_Gebiet_als_Link( KLETTERGEBIETE[i].name, false, false);
		var gebiet = schreibe_Gebiet_ZELLE( KLETTERGEBIETE[i].name);
		s += 	gebiet;
		s += '<\/td><td style="text-align:right">';
		
		// Anzahl der Wege
		s += 	anzahl[i];
		s += '<\/td><td class="schwacherText" style="text-align:right">';
		
		// Prozent
		var prozent = ''+(Math.round(10*100*anzahl[i]/summe)/10);
		prozent = prozent.replace('.',',');
		// 3  =>  3,0
		if(prozent.indexOf(',') < 0) {
			prozent += ',0';
		}
		s += 	prozent;
		s += '<\/td><\/tr>';
	}}
//	s += '<tr><td><\/td><td style="text-align:right; font-weight:bold">'+summe+'<\/td><td><\/td><\/tr>';
	s += '<tr><th><\/th><th style="text-align:right; font-weight:normal">'+summe+'<\/th><th><\/th><\/tr>';
	s += '<\/table>';
	
	// Output
	document.getElementById('ID_gebiete').innerHTML = s;
}

function zaehle_Gebiet( anzahl, gebiet) {
	
	for(var i=0;  i<KLETTERGEBIETE.length;  i++) {
		if(KLETTERGEBIETE[i].name == gebiet) {
			anzahl[i]++;
			return anzahl;
		}
	}
	// Gebiet der Steine
	for(var i=0;  i<KLETTERGEBIETE.length;  i++) {
		if(KLETTERGEBIETE[i].name == GEBIET_DER_STEINE) {
			anzahl[i]++;
			return anzahl;
		}
	}

	return anzahl;
}

//================================================================================================================

function schreibe_Box_Grade() {

	schreibe_Box_Start( 'Schwierigkeitsgrade', false);

	setze_Box_Abstand();
	document.write('<div id="ID_grade"><\/div>');
	setze_Box_Abstand();
	
	schreibe_Box_Ende();
}

function schreibe_Grade() {

	// Was ist der höchste Grad?
	var max = 0;
	var WEGE = alle_Wege;
	for(var i=0;  i<WEGE.length;  i++) {
		max = Math.max( max, WEGE[i].grad_arab);
	}

	// Array fuer Anzahl
	var anzahl = [];
	for(var i=0;  i<1+max;  i++) {
		anzahl[i] = 0;
	}

	// Ermittle Verteilung
	for(var i=0;  i<WEGE.length;  i++) {
		max = Math.max( max, WEGE[i].grad_arab);
		var grad = nenne_Grad_arabisch( WEGE[i].grade);
		if(-1 < grad  &&  grad < anzahl.length) {
			anzahl[grad]++;
		}
	}

	var summe = 0;
	var rekord = 0;
	for(var i=0;  i<anzahl.length;  i++) {
		summe += anzahl[i];
		rekord = Math.max( rekord, anzahl[i]);
	}
	
	// Generiere Tabelle
	var s = '<table class="platz" style="margin:auto">';
	s += '<tr><th>Grad<\/th><th style="text-align:center">#<\/th><th style="text-align:left">Verteilung<\/th><\/tr>';
	for(var i=0;  i<anzahl.length;  i++) {
		s += '<tr><td style="padding-left:5px; padding-right:5px">';
		
		// Grad
//		s += 	schreibe_Grad_als_Link( GRADE_LATEIN[i]);
		s += 	schreibe_Grad_ZELLE( GRADE_LATEIN[i]);
		s += '<\/td><td style="text-align:right">';
		
		// Anzahl der Wege
		s += 	anzahl[i];
		s += '<\/td><td class="schwacherText" style="text-align:right">';

		var max_breite = 180;
		var breite = max_breite*anzahl[i]/rekord;
		s += '<div style="width:'+breite+'px; background:'+FARBE_text+'; height:2px"><\/div>';

		s += '<\/td><\/tr>';
	}
//	s += '<tr><td><\/td><td style="text-align:right; font-weight:bold">'+summe+'<\/td><td><\/td><\/tr>';
	s += '<tr><th><\/th><th style="text-align:right; font-weight:normal">'+summe+'<\/th><th><\/th><\/tr>';
	s += '<\/table>';

	// Output
	document.getElementById('ID_grade').innerHTML = s;
}

//================================================================================================================

function schreibe_Box_Vorsteiger() {

	schreibe_Box_Start( 'Vorsteiger <span id="ID_stat_Anzahl_Vorsteiger" class="nb"><\/span>', false);

	setze_Box_Abstand();
	document.write('<div id="ID_vorsteiger"><\/div>');
	setze_Box_Abstand();
	
	schreibe_Box_Ende();
}

var statistik_VOR_NACHNAME = true;

function schreibe_Vorsteiger( nach_Anzahl) {

	// Ermittle Vorsteiger
	var WEGE = alle_Wege;
	var vorsteiger = [];
	for(var i=0;  i<WEGE.length;  i++) {
//		liste.speichere_Bersteiger( WEGE[i].vorsteiger[0]);
		vorsteiger = speichere_Vorsteiger( vorsteiger, WEGE[i].vorsteiger[0]);
	}
	document.getElementById('ID_stat_Anzahl_Vorsteiger').innerHTML = '#'+vorsteiger.length;
	
	// Sortiere nach Anzahl
	if(nach_Anzahl) {
		vorsteiger = sortiere_Vorsteiger( vorsteiger);
		vorsteiger = sortiere_Vorsteiger_nach_Paketen( vorsteiger);
	} else {
		vorsteiger = sortiere_Vorsteiger_Name( vorsteiger);
	}

	// Generiere Tabelle
	var summe = 0;
	var mem_anzahl = -1;
	var s = '<table class="platz" style="margin:auto">';
	s += '<tr><th style="text-align:center">Wege<\/th><th>Vorsteiger<\/th><\/tr>';

	s += '<tr>';
	s += 	'<td>';
	var klasse = nach_Anzahl ? 'sortieren-aus' : 'sortieren';
	s += 		'<button class="'+klasse+'" onclick="schreibe_Vorsteiger(true)" title="Sortiere nach Anzahl der Wege"><span><\/span><\/button> ';
	s += 	'<\/td>';
	s += 	'<td>';
	var klasse = nach_Anzahl ? 'sortieren' : 'sortieren-aus';
	s += 		'<button class="'+klasse+'" onclick="schreibe_Vorsteiger(false)" title="Sortiere nach Namen"><span><\/span><\/button> ';
	var klasse = statistik_VOR_NACHNAME ? 'wort-komma-wort' : 'wort-wort';
	var titel = statistik_VOR_NACHNAME ? 'Nachname, Vorname' : 'Vorname Nachname';
	s += 		'<button class="'+klasse+'" onclick="aendere_Namen_Stat()" title="'+titel+'"><span><\/span><\/button> ';
	s += 	'<\/td>';
	s += '<\/tr>';
	
	for(var i=0;  i<vorsteiger.length;  i++) {
		var anzahl = vorsteiger[i][1];
		if(mem_anzahl != vorsteiger[i][1]) {
			if(i>0) {
				// Balken
//				s += '<tr style="height:5px"><th colspan="2" style="height:5px"><\/th><\/tr>';
			}
			mem_anzahl = vorsteiger[i][1];
		} else {
			if(nach_Anzahl) {
				anzahl = '<span class="schwacherText">'+anzahl+'<\/span>';
			}
		}
		summe += Number(vorsteiger[i][1]);
		s += '<tr><td style="text-align:right">';
		
		// Anzahl der Wege
		s += 	anzahl;
		s += '<\/td><td style="text-align:left">';
		
		// Vorsteiger
//		s += 	vorsteiger[i][0];
		var person = vorsteiger[i][0];
		s += 	schreibe_Vorsteiger_mit_Links( [person], false, statistik_VOR_NACHNAME);
		s += addiere_Info_DB_Perfekt_Vorsteiger( person);
		s += '<\/td><\/tr>';
	}
	// Balken
//	s += '<tr><th colspan="2" style="height:5px"><\/th><\/tr>';
	// Summe
//	s += '<tr><td><\/td><td style="text-align:center; font-weight:bold">'+summe+'<\/td><\/tr>';
	s += '<tr><th style="text-align:right; font-weight:normal">'+summe+'<\/th><th><\/th><\/tr>';
	s += '<\/table>';

	// Output
	document.getElementById('ID_vorsteiger').innerHTML = s;
}

function aendere_Namen_Stat() {

	statistik_VOR_NACHNAME = !statistik_VOR_NACHNAME;
	
	schreibe_Vorsteiger(false);
}

function sortiere_Vorsteiger( vorsteiger) {
	
	for(var i=0;  i<vorsteiger.length-1;  i++) {
	for(var j=i;  j<vorsteiger.length;  j++) {
		
		if( vorsteiger[i][1] < vorsteiger[j][1]) {
			var mem = vorsteiger[i];
			vorsteiger[i] = vorsteiger[j];
			vorsteiger[j] = mem;
		}
	}}
	
	return vorsteiger;
}


function sortiere_Vorsteiger_Name( vorsteiger) {
/*
	vorsteiger[0] = 'Gisbert Ludewig';
	vorsteiger[1] = 12;
	vorsteiger[2] = 'Ludewig, Gisbert';
*/
	var nr = statistik_VOR_NACHNAME ? 0 : 2;

	for(var i=0;  i<vorsteiger.length-1;  i++) {
	for(var j=i;  j<vorsteiger.length;  j++) {
		
		if( vorsteiger[i][nr] > vorsteiger[j][nr]) {
			var mem = vorsteiger[i];
			vorsteiger[i] = vorsteiger[j];
			vorsteiger[j] = mem;
		}
	}}
	
	return vorsteiger;
}

function sortiere_Vorsteiger_nach_Paketen( vorsteiger) {

	// Untersortierung
	var sortiert = [];
	
	// Sammle gleiche Anzahl => dann dieses Paket sortieren
	// Start:
	var paket = [vorsteiger[0]];
	var mem_anzahl = vorsteiger[0][1];
	
	for(var i=1;  i<vorsteiger.length;  i++) {
		var anzahl = vorsteiger[i][1];
		if(mem_anzahl != anzahl) {
			mem_anzahl = anzahl;
			// Unterpaket sortieren
			paket = sortiere_Vorsteiger_Name( paket);
			// Speichern
			sortiert = sortiert.concat( paket);
			// Neues Paket
			paket = [];
		}
		paket[paket.length] = vorsteiger[i];
	}
	
	//Letztes Paket:
	paket = sortiere_Vorsteiger_Name( paket);
	// Speichern
	sortiert = sortiert.concat( paket);
	
	return sortiert;
}

function speichere_Vorsteiger( vorsteiger, name) {
	
	if(name == null)  return vorsteiger;
	
	// Vorsteiger suchen  =>  Anzahl seiner Wege um 1 erhoehen
	for(var i=0;  i<vorsteiger.length;  i++) {
		if(vorsteiger[i][0] == name) {
			vorsteiger[i][1]++;
			return vorsteiger;
		}
	}
	
	// Neuer Vorsteiger
	vorsteiger[vorsteiger.length] = [];
	vorsteiger[vorsteiger.length-1][0] = name;						// Gisbert Ludewig
	vorsteiger[vorsteiger.length-1][1] = 1;
	name = entferne_Zeilenumbrueche( name);	// 'Hand Joachim <br>Scholz'
	vorsteiger[vorsteiger.length-1][2] = nenne_Nach_Vorname(name);	// Ludewig, Gisbert

	return vorsteiger;
}

//================================================================================================================
