var g_playingFiles = {};

function getAudioIdFromKey(keyCode) {
  var audioId = -1;
  switch(keyCode) {
  case 65: //a
      audioId = 0;
      break;
  case 87: //w
      audioId = 1;
      break;
  case 83: //s
      audioId = 2;
      break;
  case 69: //e
      audioId = 3;
      break;
  case 68: //d
      audioId = 4;
      break;
  case 70: //f
      audioId = 5;
      break;
  case 84: //t
      audioId = 6;
      break;
  case 71: //g
      audioId = 7;
      break;
  case 89: //y
      audioId = 8;
      break;
  case 72: //h
      audioId = 9;
      break;
  case 85: //u
      audioId = 10;
      break;
  case 74: //j
      audioId = 11;
      break;
  case 75: //k
      audioId = 12;
      break;
  }
  return audioId;
}

// TODO make pressed keys look pressed
// Put more than one octave
// Use wavs in addition to oggs
// If the shift key is held down, record the note

function keyDownHandler( event ) {
  if (event.altKey || event.ctrlKey || event.metaKey) {
    return true;
  }
  var code = event.keyCode;
  var audioId = getAudioIdFromKey(code);
  if (audioId > -1) {
      document.getElementsByTagName("audio")[audioId].play();
      g_playingFiles[audioId] = true;
      drawPic(true);
      if (event.shiftKey) {
	      var field = document.getElementById("recording-field");
	      field.value = field.value + " " + audioId;
      }
  }
  return false;
}

function keyUpHandler(event) {
  var code = event.keyCode;
  var audioId = getAudioIdFromKey(code);
  if (audioId > -1) {
      if (g_playingFiles[audioId]) {
	      document.getElementsByTagName("audio")[audioId].pause();
	      g_playingFiles[audioId] = false;
        drawPic(false);
      }
  }
  return false;
}

function keyClickHandler( audioId ) {
  if (audioId > -1) {
      document.getElementsByTagName("audio")[audioId].play();
      g_playingFiles[audioId] = true;
      drawPic(true);
  }
  return false;
}

function keyReleaseHandler( audioId ) {
  if (audioId > -1) {
    if (g_playingFiles[audioId]) {
      document.getElementsByTagName("audio")[audioId].pause();
      g_playingFiles[audioId] = false;
      drawPic(false);
    }
  }
  return false;
}

