/* Projekt Note finden
 * Alle Rechte: Uwe Fritz, Rommerskirchen
 * http://gitarrenstart.de
 * Ein Lernprogramm für Noten auf der Gitarre.
 * notefinden.js ist die Scriptbibliothek für das gesamte Programm.
 */


function printform(anzahl) {
	// Erstellt ein leeres Spielbrett und die Spielsteuerung
	frets = anzahl;
	stop = false;
	auswahl = new Array();
	var ausgabe ='';
	var notenwert='';
	ausgabe += '<table style="border-collapse:collapse; margin: 10px auto;">';
	for (var j=1; j<=6 ; j++) {
		ausgabe +='<tr style="">';
		for (var i=0; i<=anzahl; i++) {
			ausgabe +='<td id="tab'+i+j+'" style="padding: 2; padding-left: 8px; margin: 0px; '
			if (i==0) { ausgabe += 'border-right: solid 5px #888 '; }
			else { ausgabe += 'border-right: solid 3px #aa0 '; }
			ausgabe +='" >'
			ausgabe += '<input type="button" id="but'+i+j+'" onclick="setbutton(\'but'+i+j+'\')" ';
			ausgabe += ' style="background-color: #CCCCCC;" />';
			ausgabe += '</td>';
		}
		ausgabe +='</tr>';
	}
	ausgabe +='<tr>';
	for (var i=0; i<=anzahl; i++) {
		ausgabe +='<th style="text-align: right;">'+i+'</th>';
	}
	ausgabe +='</tr></table>';
	document.getElementById('spielbrett').innerHTML = ausgabe;

	ausgabe = '';
	note = Math.round(Math.random()*16);
	ausgabe += '<b>Markiere alle Positionen der Note ';
	if (frets==5) {
		notenwert = noten5bund[note][0];
	} else {
		notenwert = noten12bund[note][0];
	}
	if (notenwert.length>1) {
		ausgabe += notenwert.substr(0,1)+'<sup>'+notenwert.substr(1)+'</sup>';
	} else {
		ausgabe += notenwert;
	}
	ausgabe += '</b>!';
	ausgabe += '<br /><input type="button" onclick="spielende()" value="Fertig" />';
	ausgabe += '<br />Die Zeit l&auml;uft: <span id="spielzeit">';
	ausgabe += '00:00:00</span>';
	document.getElementById('spielsteuerung').innerHTML = ausgabe;
	var jetzt = new Date();
	start = jetzt.getTime();
	setTimeout("updatetimer()",275);
}

function setbutton (buttonid) {
	var index = -1;
	for (var i=0; i<auswahl.length; i++) {
		if (auswahl[i]==buttonid.substr(3)) {index = i;}
	}
	if (index >= 0) {
		auswahl.splice(index , 1);
		document.getElementById(buttonid).style.backgroundColor='#CCCCCC';
	} else {
		auswahl.push(buttonid.substr(3));
		document.getElementById(buttonid).style.backgroundColor='#0000FF';
	}
}

function elapsedtime () {
  var jetzt = new Date();
  var absMilliSekunden = Math.round((jetzt.getTime() - start) / 10)
  var absSekunden = Math.round(absMilliSekunden / 100);
  var relMilliSekunden = absMilliSekunden % 100;
  var relSekunden = absSekunden % 60;
  var absMinuten = Math.abs(Math.round((absSekunden - 30) / 60));
  var anzMilliSekunden = "" + ((relMilliSekunden > 9) ? relMilliSekunden : "0" + relMilliSekunden);
  var anzSekunden = "" + ((relSekunden > 9) ? relSekunden : "0" + relSekunden);
  var anzMinuten = "" + ((absMinuten > 9) ? absMinuten : "0" + absMinuten);
  return ( anzMinuten + ":" + anzSekunden + ":" + anzMilliSekunden);
}

function updatetimer() {
  if (stop == false) {
	document.getElementById('spielzeit').innerHTML = elapsedtime();
	setTimeout("updatetimer()",275);
	}
}

function spielende () {
	stop = true;
	var gestoppteZeit = elapsedtime();
	for (var j=1; j<=6 ; j++) {
		for (var i=0; i<=frets; i++) {
			document.getElementById('but'+i+j).disabled="disabled";
		}
	}
	// Pruefung
	var fehler = 0;
	var gefunden = false;
	if (frets==5) {
		// richtige Positionen gruen markieren
		for (var i=1; i<noten5bund[note].length; i++) {
			document.getElementById('tab'+noten5bund[note][i]).style.backgroundColor="#00ff00";
			gefunden = false;
			for (var j=0; j<auswahl.length; j++) {
				if (auswahl[j]==noten5bund[note][i]) {gefunden = true;}
			}
			if (gefunden==false) {fehler++;}
		}
		//falsche Antwort-Buttons rot markieren
		for (var i=0; i<auswahl.length; i++) {
			gefunden = false;
			for (var j=1; j<noten5bund[note].length; j++) {
				if (auswahl[i]==noten5bund[note][j]) {gefunden = true;}
			}
			if (gefunden==false) {
				document.getElementById('but'+auswahl[i]).style.backgroundColor="#ff0000";
				fehler++;
			}
		}
	}else{
		// richtige Positionen gruen markieren
		for (var i=1; i<noten12bund[note].length; i++) {
			document.getElementById('tab'+noten12bund[note][i]).style.backgroundColor="#00ff00";
			gefunden = false;
			for (var j=0; j<auswahl.length; j++) {
				if (auswahl[j]==noten12bund[note][i]) {gefunden = true; }
			}
			if (gefunden==false) {fehler++;}
		}
		for (var i=0; i<auswahl.length; i++) {
			gefunden = false;
			for (var j=1; j<noten12bund[note].length; j++) {
				if (auswahl[i]==noten12bund[note][j]) {gefunden = true;}
			}
			if (gefunden==false) {
				document.getElementById('but'+auswahl[i]).style.backgroundColor="#ff0000";
				fehler++;
			}
		}
	}
	var ausgabe =""
	if (fehler>0) {
		ausgabe += 'Leider nicht geschafft: Du hast noch Fehler in Deiner Antwort.<br />';
		ausgabe += 'Nicht aufgeben! Nochmal versuchen: ';
	} else {
		ausgabe += 'Gut gemacht! Alles richtig in '+gestoppteZeit+'!<br /> Kannst Du das noch schneller?  ';
	}
	ausgabe += '<input type="button" onclick="printform('+frets+')" value="Neustart!" />';
	document.getElementById('spielsteuerung').innerHTML = ausgabe;
}

var auswahl = new Array();
var note = 0;
var frets = 5;
var start;
var stop = false;

var noten5bund = new Array(16);
noten5bund[0]= new Array ('A', '51', '23', '05', '56');
noten5bund[1]= new Array ('A#', '33', '15');
noten5bund[2]= new Array ('B', '33', '15');
noten5bund[3]= new Array ('H', '02', '25', '43');
noten5bund[4]= new Array ('C', '12', '53', '35');
noten5bund[5]= new Array ('C#', '22', '45');
noten5bund[6]= new Array ('Db', '22', '45');
noten5bund[7]= new Array ('D', '32', '04', '55');
noten5bund[8]= new Array ('D#', '42', '14');
noten5bund[9]= new Array ('Eb', '42', '14');
noten5bund[10]= new Array ('E', '01', '52', '24', '06');
noten5bund[11]= new Array ('F', '11', '34', '16');
noten5bund[12]= new Array ('F#', '21', '44', '26');
noten5bund[13]= new Array ('Gb', '21', '44', '26');
noten5bund[14]= new Array ('G', '31', '03', '54', '36');
noten5bund[15]= new Array ('G#', '41', '13', '46');
noten5bund[16]= new Array ('Ab', '41', '13', '46');

var noten12bund = new Array(16);
noten12bund[0]= new Array ('A', '51', '102', '23', '74', '05', '125', '56');
noten12bund[1]= new Array ('A#', '61', '112', '33', '84', '15', '66');
noten12bund[2]= new Array ('B', '61', '112', '33', '84', '15', '66');
noten12bund[3]= new Array ('H', '71', '02', '122', '94', '25', '76', '43');
noten12bund[4]= new Array ('C', '81', '12', '53', '104', '35', '86');
noten12bund[5]= new Array ('C#', '91', '22', '63', '114', '45', '96');
noten12bund[6]= new Array ('Db', '91', '22', '63', '114', '45', '96');
noten12bund[7]= new Array ('D', '101', '32', '73', '04', '124', '55', '106');
noten12bund[8]= new Array ('D#', '111','42', '83', '14', '65', '116');
noten12bund[9]= new Array ('Eb',  '111','42', '83', '14', '65', '116');
noten12bund[10]= new Array ('E', '01', '121', '52', '93','24', '75', '06', '126');
noten12bund[11]= new Array ('F', '11', '62', '103', '34', '85', '16');
noten12bund[12]= new Array ('F#', '21', '72', '113', '44', '95', '26');
noten12bund[13]= new Array ('Gb', '21', '72', '113', '44', '95', '26');
noten12bund[14]= new Array ('G', '31', '82', '03', '123', '54', '105', '36');
noten12bund[15]= new Array ('G#', '41', '92', '13', '64', '115', '46');
noten12bund[16]= new Array ('Ab', '41', '92', '13', '64', '115', '46');

