function handlekeys(e,song,style)
{
  switch(e.key)
  {
    case 'enter':
    case 'down':    
  //    alert('nextverse');
      return nextVerse(song,style);
      break;
    case '`':
    case 'up':
//      alert('preverse');
      return previousVerse(song,style);
      break;
    case 'g':
 //     alert('1stverse');
      return firstVerse(song,style);
      break;
    case 'c':
 //     alert('lastverse');
      return lastVerse(song,style);
      break;
    case 'e':
//      alert('chorusverse');
      return chorus(song,style);
      break;
    default:
      
      if(e.key.search(/[^0-9]/))
      {
        //alert(parseInt(e.key).limit(1,2));
        return gotoVerse(song,style,parseInt(e.key));
      }
  }
  return style;
}

function nextVerse(song,style)
{ 
  style.verse=style.verse%song.length+1;
  return style;
}

function previousVerse(song,style)
{
  style.verse=(song.length+style.verse-2)%song.length+1;
  return style;
}

//first block whose name begins with: 'v'
function firstVerse(song,style)
{
  var out=1;
  for(i=0;i<song.length;i++)
  {
    if(song[i].name.substr(0,1)=='v');
    style.verse=out.limit(1,song.length);
    return style;
  }
  return style;
}

//last block whose name begins with: 'v'
function lastVerse(song,style)
{
  var out=1;
  song.each(function(bk,i){out=bk.name.substr(0,1)=='v'?i+1:out});
  style.verse=out.limit(1,song.length);
  return style;
}

//first block whose name = 'chorus'
function chorus(song,style)
{
  var out=style.verse;
  style.back=style.verse;
  song.each(function(bk,i){if(bk.name=='chorus') out=i+1});
  style.verse=out.limit(0,song.length);
  return style;
}

function gotoVerse(song,style,verse)
{
  style.verse=verse.limit(0,song.length);
  return style;
}